<?php
namespace nur\mapper\item;

use nur\A;
use nur\mapper\base\Consumer;
use nur\msg;

class LoggerConsumer extends Consumer {
  function section(string $title) {
    msg::section($title);
  }

  static function to_string($item): string {
    if (A::is_assoc($item)) {
      $parts = [];
      foreach ($item as $key => $part) {
        $parts[] = "$key => ".self::to_string($part);
      }
      return "{ ".implode(", ", $parts)." }";
    } elseif (A::is_seq($item)) {
      $parts = [];
      foreach ($item as $key => $part) {
        $parts[] = self::to_string($part);
      }
      return implode(", ", $parts);
    } elseif (is_string($item)) {
      return $item;
    } else {
      return var_export($item, true);
    }
  }

  function cook($item) {
    msg::info(self::to_string($item));
  }
}