Class: DBF::Column

Inherits:
Object
  • Object
show all
Defined in:
lib/dbf/column.rb

Defined Under Namespace

Classes: LengthError, NameError

Constant Summary collapse

TYPE_CAST_CLASS =

rubocop:disable Style/MutableConstant

{
  N: ColumnType::Number,
  I: ColumnType::SignedLong,
  F: ColumnType::Float,
  Y: ColumnType::Currency,
  D: ColumnType::Date,
  T: ColumnType::DateTime,
  L: ColumnType::Boolean,
  M: ColumnType::Memo,
  B: ColumnType::Double,
  G: ColumnType::General,
  :+ => ColumnType::AutoIncrement
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(table, name, type, length, decimal) ⇒ Column

Initialize a new DBF::Column

Parameters:

  • table (String)
  • name (String)
  • type (String)
  • length (Integer)
  • decimal (Integer)


38
39
40
41
42
43
44
45
46
47
# File 'lib/dbf/column.rb', line 38

def initialize(table, name, type, length, decimal)
  @table = table
  @name = clean(name)
  @type = type
  @length = length
  @decimal = decimal

  validate_length
  validate_name
end

Instance Attribute Details

#decimalObject (readonly)

Returns the value of attribute decimal.



11
12
13
# File 'lib/dbf/column.rb', line 11

def decimal
  @decimal
end

#lengthObject (readonly)

Returns the value of attribute length.



11
12
13
# File 'lib/dbf/column.rb', line 11

def length
  @length
end

#nameObject (readonly)

Returns the value of attribute name.



11
12
13
# File 'lib/dbf/column.rb', line 11

def name
  @name
end

#typeObject (readonly)

Returns the value of attribute type.



11
12
13
# File 'lib/dbf/column.rb', line 11

def type
  @type
end

Instance Method Details

#decode(raw) {|raw| ... } ⇒ Object

Decodes a raw column value, handling memo, blank, and type cast cases

Parameters:

  • raw (String)

Yields:

  • (raw)

    for memo column resolution

Returns:

  • decoded value



61
62
63
# File 'lib/dbf/column.rb', line 61

def decode(raw, &memo_handler)
  type_cast_class.decode(raw, &memo_handler)
end

#encodingObject



49
# File 'lib/dbf/column.rb', line 49

def encoding = @table.encoding

#to_hashHash

Returns a Hash with :name, :type, :length, and :decimal keys

Returns:

  • (Hash)


68
69
70
# File 'lib/dbf/column.rb', line 68

def to_hash
  {name:, type:, length:, decimal:}
end

#type_cast(value) ⇒ Object

Parameters:

  • value (String)


52
53
54
# File 'lib/dbf/column.rb', line 52

def type_cast(value)
  type_cast_class.type_cast(value)
end

#underscored_nameString

Underscored name

This is the column name converted to underscore format. For example, MyColumn will be returned as my_column.

Returns:

  • (String)


78
79
80
# File 'lib/dbf/column.rb', line 78

def underscored_name
  @underscored_name ||= name.gsub(/([a-z\d])([A-Z])/, '\1_\2').tr('-', '_').downcase
end