Class: Daifuku::Column

Inherits:
Object
  • Object
show all
Defined in:
lib/daifuku/models.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, type, descriptions, is_obsolete = false) ⇒ Column

Returns a new instance of Column.



70
71
72
73
74
75
# File 'lib/daifuku/models.rb', line 70

def initialize(name, type, descriptions, is_obsolete = false)
  @name = name
  @type = type
  @descriptions = descriptions
  @is_obsolete = is_obsolete
end

Instance Attribute Details

#descriptionsString (readonly)

Returns:

  • (String)


64
65
66
# File 'lib/daifuku/models.rb', line 64

def descriptions
  @descriptions
end

#nameObject (readonly)

Returns String.

Returns:

  • String



60
61
62
# File 'lib/daifuku/models.rb', line 60

def name
  @name
end

#typeObject (readonly)

Returns Type.

Returns:

  • Type



62
63
64
# File 'lib/daifuku/models.rb', line 62

def type
  @type
end

Class Method Details

.parse(descriptor, descriptions) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/daifuku/models.rb', line 77

def self.parse(descriptor, descriptions)
  # column_name: !bigint
  # column_name: !bigint?
  # column_name: !string 256
  # column_name: !string? 256
  # column_name: CustomType
  # [obsolete] column_type: !bigint
  if descriptor =~ /(\[obsolete\])?\s*(\w+):\s*(!?\w+\??(?:\s(\d+))?)/
    obsolete = $1 != nil
    name = $2
    type = Type.parse($3)
    Column.new(name, type, descriptions, obsolete)
  else
    raise "Could not parse column '#{descriptor}'"
  end
end

Instance Method Details

#dumpObject



104
105
106
# File 'lib/daifuku/models.rb', line 104

def dump
  {'name' => name, 'type' => type.dump, 'descriptions' => descriptions}
end

#obsolete?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/daifuku/models.rb', line 66

def obsolete?
  @is_obsolete
end

#strdefObject



94
95
96
97
98
99
100
101
102
# File 'lib/daifuku/models.rb', line 94

def strdef
  if type.name == 'string' && type.str_length
    "#{name}: !#{type.name} #{type.str_length}"
  elsif !type.custom?
    "#{name}: !#{type.name}"
  else
    "#{name}: #{type.name}"
  end
end