Sha256: 1933a63a6742d7e793c3719feae17b88698625fbc6e1bce6f75b341db8427b3a

Contents?: true

Size: 1.67 KB

Versions: 9

Compression:

Stored size: 1.67 KB

Contents

require 'hammer_cli/output/dsl'

module Fields

  class Field

    attr_reader :label
    attr_reader :path

    def initialize(options={})
      @hide_blank = options[:hide_blank].nil? ? false : options[:hide_blank]
      @path = options[:path] || []
      @label = options[:label]
      @options = options
    end

    def hide_blank?
      @hide_blank
    end

    def display?(value)
      if not hide_blank?
        true
      elsif value.nil?
        false
      else
        true
      end
    end

    def parameters
      @options
    end

  end


  class ContainerField < Field

    def initialize(options={}, &block)
      super(options)
      dsl = HammerCLI::Output::Dsl.new
      dsl.build &block if block_given?

      self.output_definition.append dsl.fields
    end

    def output_definition
      @output_definition ||= HammerCLI::Output::Definition.new
      @output_definition
    end

    def fields
      @output_definition.fields
    end

    def display?(value)
      if not hide_blank?
        true
      elsif value.nil? || value.empty?
        false
      else
        true
      end
    end
  end

  class Date < Field
  end

  class Id < Field
  end

  class List < Field
  end

  class LongText < Field
  end

  class KeyValue < Field
  end

  class Label < ContainerField

    def display?(value)
      return true if not hide_blank?

      fields.any? do |f|
        f.display?(HammerCLI::Output::Adapter::Abstract.data_for_field(f, value))
      end
    end

  end

  class Collection < ContainerField

    def initialize(options={}, &block)
      options[:numbered] = true if options[:numbered].nil?
      super(options, &block)
    end

  end

  class Boolean < Field
  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
hammer_cli-0.9.0 lib/hammer_cli/output/fields.rb
hammer_cli-0.8.0 lib/hammer_cli/output/fields.rb
hammer_cli-0.7.0 lib/hammer_cli/output/fields.rb
hammer_cli-0.6.1 lib/hammer_cli/output/fields.rb
hammer_cli-0.6.0 lib/hammer_cli/output/fields.rb
hammer_cli-0.5.1 lib/hammer_cli/output/fields.rb
hammer_cli-0.4.0 lib/hammer_cli/output/fields.rb
hammer_cli-0.3.0 lib/hammer_cli/output/fields.rb
hammer_cli-0.2.0 lib/hammer_cli/output/fields.rb