Sha256: 1fc9dceead328b80e3d7e0415824bd554da4f21326f4a2f66ed4911967d86bcc

Contents?: true

Size: 1.13 KB

Versions: 30

Compression:

Stored size: 1.13 KB

Contents

module HammerCLI::Output

  class Dsl

    def initialize(options={})
      @current_path = options[:path] || []
    end

    def fields
      @fields ||= []
      @fields
    end

    def build(&block)
      self.instance_eval &block
    end

    protected

    def field(key, label, type=nil, options={}, &block)
      options[:path] = current_path.clone
      unless key.nil?
        options[:path] << key
        options[:key] = key
      end
      options[:label] = label
      type ||= Fields::Field
      custom_field type, options, &block
    end

    def custom_field(type, options={}, &block)
      self.fields << type.new(options, &block)
    end

    def label(label, options={}, &block)
      options[:path] = current_path.clone
      options[:label] = label
      custom_field Fields::Label, options, &block
    end

    def from(key)
      self.current_path.push key
      yield if block_given?
      self.current_path.pop
    end

    def collection(key, label, options={}, &block)
      field key, label, Fields::Collection, options, &block
    end


    def current_path
      @current_path ||= []
      @current_path
    end

  end

end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
hammer_cli-3.5.1 lib/hammer_cli/output/dsl.rb
hammer_cli-3.6.0 lib/hammer_cli/output/dsl.rb
hammer_cli-3.5.0 lib/hammer_cli/output/dsl.rb
hammer_cli-3.4.0 lib/hammer_cli/output/dsl.rb
hammer_cli-3.3.0 lib/hammer_cli/output/dsl.rb
hammer_cli-3.2.0 lib/hammer_cli/output/dsl.rb
hammer_cli-3.1.1 lib/hammer_cli/output/dsl.rb
hammer_cli-3.0.2 lib/hammer_cli/output/dsl.rb
hammer_cli-3.1.0 lib/hammer_cli/output/dsl.rb
hammer_cli-3.0.1 lib/hammer_cli/output/dsl.rb
hammer_cli-3.0.0 lib/hammer_cli/output/dsl.rb
hammer_cli-2.5.1 lib/hammer_cli/output/dsl.rb
hammer_cli-2.5.0 lib/hammer_cli/output/dsl.rb
hammer_cli-2.3.1 lib/hammer_cli/output/dsl.rb
hammer_cli-2.4.0 lib/hammer_cli/output/dsl.rb
hammer_cli-2.3.0 lib/hammer_cli/output/dsl.rb
hammer_cli-2.2.1 lib/hammer_cli/output/dsl.rb
hammer_cli-2.1.2 lib/hammer_cli/output/dsl.rb
hammer_cli-2.2.0 lib/hammer_cli/output/dsl.rb
hammer_cli-2.1.1 lib/hammer_cli/output/dsl.rb