Sha256: 1ce4f25a1c1d90b23aa4d83989abe15dc45cd21c4e0a7401da40f6d912806013

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 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
  end

  class Collection < ContainerField
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hammer_cli-0.1.0 lib/hammer_cli/output/fields.rb