Class: Arrow::Field

Inherits:
Object
  • Object
show all
Defined in:
lib/arrow/field.rb

Instance Method Summary collapse

Constructor Details

#initialize(name, data_type) ⇒ Field #initialize(description) ⇒ Field

Creates a new Arrow::Field.

Overloads:

  • #initialize(name, data_type) ⇒ Field

    Examples:

    Create a field with DataTypes

    Arrow::Field.new("visible", Arrow::BooleanDataType.new)

    Create a field with data type description

    Arrow::Field.new("visible", :boolean)

    Create a field with name as ‘Symbol`

    Arrow::Field.new(:visible, :boolean)

    Parameters:

    • name (String, Symbol)

      The name of the field.

    • data_type (Arrow::DataType, Hash, String, Symbol)

      The data type of the field.

      You can specify data type as a description by ‘Hash`.

      See DataType.resolve how to specify data type description.

  • #initialize(description) ⇒ Field

    Examples:

    Create a field with DataTypes

    Arrow::Field.new(name: "visible",
                     data_type: Arrow::BooleanDataType.new)

    Create a field with data type description

    Arrow::Field.new(name: "visible", data_type: {type: :boolean}

    Create a field with shortcut form

    Arrow::Field.new(name: "visible", type: :boolean)

    Parameters:

    • description (Hash)

      The description of the field.

      Field description is a raw ‘Hash`. Field description must have `:name` and `:data_type` values. `:name` is the name of the field. `:data_type` is the data type of the field. You can use DataType or data type description as `:data_type` value.

      See DataType.resolve how to specify data type description.

      There is a shortcut for convenience. If field description doesn’t have ‘:data_type`, all keys except `:name` are processes as data type description. For example, the following field descriptions are the same:

      “‘ruby “visible”, data_type: {type: :boolean} “visible”, type: :boolean # Shortcut version “`

    Options Hash (description):

    • :name (String, Symbol)

      The name of the field.

    • :data_type (Arrow::DataType, Hash)

      The data type of the field. You can specify data type description by ‘Hash`.

      See DataType.resolve how to specify data type description.



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/arrow/field.rb', line 87

def initialize(*args)
  n_args = args.size
  case n_args
  when 1
    description = args[0]
    name = nil
    data_type = nil
    data_type_description = {}
    description.each do |key, value|
      key = key.to_sym
      case key
      when :name
        name = value
      when :data_type
        data_type = DataType.resolve(value)
      else
        data_type_description[key] = value
      end
    end
    data_type ||= DataType.resolve(data_type_description)
  when 2
    name = args[0]
    data_type = DataType.resolve(args[1])
  else
    message = "wrong number of arguments (given #{n_args}, expected 1..2)"
    raise ArgumentError, message
  end

  initialize_raw(name, data_type)
end