Class: DBF::Column

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

Defined Under Namespace

Classes: InvalidNameError, LengthError

Constant Summary collapse

NameError =

Deprecated alias, kept for backward compatibility. It shadowed ::NameError (without being one), so it was renamed.

InvalidNameError
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)


43
44
45
46
47
48
49
50
51
52
# File 'lib/dbf/column.rb', line 43

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

  validate_length
  validate_name
end

Instance Attribute Details

#decimalObject (readonly)

Returns the value of attribute decimal.



16
17
18
# File 'lib/dbf/column.rb', line 16

def decimal
  @decimal
end

#lengthObject (readonly)

Returns the value of attribute length.



16
17
18
# File 'lib/dbf/column.rb', line 16

def length
  @length
end

#nameObject (readonly)

Returns the value of attribute name.



16
17
18
# File 'lib/dbf/column.rb', line 16

def name
  @name
end

#typeObject (readonly)

Returns the value of attribute type.



16
17
18
# File 'lib/dbf/column.rb', line 16

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



66
67
68
# File 'lib/dbf/column.rb', line 66

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

#encodingObject



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

def encoding = @table.encoding

#to_hashHash

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

Returns:

  • (Hash)


73
74
75
# File 'lib/dbf/column.rb', line 73

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

#type_cast(value) ⇒ Object

Parameters:

  • value (String)


57
58
59
# File 'lib/dbf/column.rb', line 57

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)


83
84
85
# File 'lib/dbf/column.rb', line 83

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