Sha256: 11fe8120f258c88d310036f76c0fd6e6f6e488695fd29ff1237cc6e86f0e96bb

Contents?: true

Size: 1.18 KB

Versions: 6

Compression:

Stored size: 1.18 KB

Contents

module HammerCLI::Output::Adapter

  class Abstract

    def tags
      []
    end

    def initialize(context={}, formatters={})
      @context = context
      @formatters = HammerCLI::Output::Formatters::FormatterLibrary.new(filter_formatters(formatters))
    end

    def print_message(msg, msg_params={})
      puts msg.format(msg_params)
    end

    def print_error(msg, details=nil, msg_params={})
      details = details.split("\n") if details.kind_of? String

      if details
        indent = "  "
        msg += ":\n"
        msg += indent + details.join("\n"+indent)
      end

      $stderr.puts msg.format(msg_params)
    end

    def print_record(fields, record)
      raise NotImplementedError
    end

    def print_collection(fields, collection)
      raise NotImplementedError
    end

    private

    def filter_formatters(formatters_map)
      formatters_map ||= {}
      formatters_map.inject({}) do |map, (type, formatter_list)|
        # remove incompatible formatters
        filtered = formatter_list.select { |f| f.match?(tags) }
        # put serializers first
        map[type] = filtered.sort_by { |f| f.tags.include?(:flat) ? 0 : 1 }
        map
      end
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hammer_cli-0.0.18 lib/hammer_cli/output/adapter/abstract.rb
hammer_cli-0.0.16 lib/hammer_cli/output/adapter/abstract.rb
hammer_cli-0.0.15 lib/hammer_cli/output/adapter/abstract.rb
hammer_cli-0.0.14 lib/hammer_cli/output/adapter/abstract.rb
hammer_cli-0.0.13 lib/hammer_cli/output/adapter/abstract.rb
hammer_cli-0.0.12 lib/hammer_cli/output/adapter/abstract.rb