Sha256: 2f8a886db59ef92bf0ec11251d9507f12802647064138dbc28f62e7ae436f122

Contents?: true

Size: 1.03 KB

Versions: 30

Compression:

Stored size: 1.03 KB

Contents

module ASIR
  module Description
    def describe obj, indent = "", more = nil
      case obj
      when nil, ASIR::Coder::Identity
        s = ""; more = nil
      when ASIR::Transport
        s = "#{describe(obj.encoder, indent, "->\n")}#{indent}#{obj.class.name}"
        opts = [ :file, :uri ].
          select { | x | obj.respond_to?(x) && obj.send(x) != nil }.
          map { | x | "#{x}: #{obj.send(x).inspect}" } * ","
        s << "(" << opts << ")" unless opts.empty?
        case
        when obj.respond_to?(:transports)
          s << "->[\n"
          s << obj.transports.map { | x | describe(x, indent + "  ") } * ",\n"
          s << "]"
        when obj.respond_to?(:transport)
          s << "->\n" << describe(obj.transport, indent + "  ")
        end
      when ASIR::Coder::Chain
        s = "#{indent}Chain(\n"
        s << obj.encoders.map { | x | describe(x, indent + "  ") } * "->\n"
        s << ")"
      else
        s = "#{indent}#{obj.class.name}"
      end
      s << more if more
      s
    end

    extend self
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
asir-1.2.11 lib/asir/description.rb
asir-1.2.10 lib/asir/description.rb
asir-1.2.9 lib/asir/description.rb
asir-1.2.8 lib/asir/description.rb
asir-1.2.7 lib/asir/description.rb
asir-1.2.6 lib/asir/description.rb
asir-1.2.5 lib/asir/description.rb
asir-1.2.3 lib/asir/description.rb
asir-1.2.2 lib/asir/description.rb
asir-1.2.1 lib/asir/description.rb
asir-1.2.0 lib/asir/description.rb
asir-1.1.12 lib/asir/description.rb
asir-1.1.11 lib/asir/description.rb
asir-1.1.10 lib/asir/description.rb
asir-1.1.9 lib/asir/description.rb
asir-1.1.8 lib/asir/description.rb
asir-1.1.7 lib/asir/description.rb
asir-1.1.6 lib/asir/description.rb
asir-1.1.5 lib/asir/description.rb
asir-1.1.4 lib/asir/description.rb