class ONIX::ElementParser

for class DSL

Attributes

cardinality[RW]
klass_name[RW]
name[RW]
short[RW]
type[RW]

Public Class Methods

inflectors() click to toggle source
# File lib/onix/subset.rb, line 104
def self.inflectors
  [['ox', 'oxes'],
   ['us', 'uses'],
   ['', 's'],
   ['ero', 'eroes'],
   ['rf', 'rves'],
   ['af', 'aves'],
   ['ero', 'eroes'],
   ['man', 'men'],
   ['ch', 'ches'],
   ['sh', 'shes'],
   ['ss', 'sses'],
   ['ta', 'tum'],
   ['ia', 'ium'],
   ['ra', 'rum'],
   ['ay', 'ays'],
   ['ey', 'eys'],
   ['oy', 'oys'],
   ['uy', 'uys'],
   ['y', 'ies'],
   ['x', 'xes'],
   ['lf', 'lves'],
   ['ffe', 'ffes'],
   ['afe', 'aves'],
   ['ouse', 'ouses']]
end
new(name, type, options = {}) click to toggle source
# File lib/onix/subset.rb, line 131
def initialize(name, type, options = {})
  @name = name
  @type = type
  @pluralize = true
  @short = false
  @array = false
  @parse_lambda = nil
  @serialize_lambda = nil
  if options[:array]
    @array = true
  end
  if options[:pluralize] == false
    @pluralize = false
  end

  @parse_lambda = options[:parse_lambda]
  @serialize_lambda = options[:serialize_lambda]
  @shortcut = options[:shortcut]
  @cardinality = options[:cardinality]
  @cardinality = nil if @cardinality == 0..n # no need to check if 0..n

  if options[:klass]
    @klass_name = options[:klass]
  else
    @klass_name = name
  end
end

Public Instance Methods

_underscore_name() click to toggle source
# File lib/onix/subset.rb, line 175
def _underscore_name
  if @array and @pluralize
    pluralize(underscore(@name))
  else
    underscore(@name)
  end
end
class_name() click to toggle source
# File lib/onix/subset.rb, line 187
def class_name
  @klass_name
end
is_array?() click to toggle source
# File lib/onix/subset.rb, line 171
def is_array?
  @array
end
parse_lambda(v) click to toggle source
# File lib/onix/subset.rb, line 163
def parse_lambda(v)
  @parse_lambda ? @parse_lambda.call(v) : v
end
serialize_lambda(v) click to toggle source
# File lib/onix/subset.rb, line 167
def serialize_lambda(v)
  @serialize_lambda ? @serialize_lambda.call(v) : v
end
shortcut() click to toggle source
# File lib/onix/subset.rb, line 159
def shortcut
  @shortcut
end
to_instance() click to toggle source
# File lib/onix/subset.rb, line 195
def to_instance
  @instance ||= "@" + self.underscore_name
end
to_sym() click to toggle source
# File lib/onix/subset.rb, line 191
def to_sym
  @sym ||= self.underscore_name.to_sym
end
underscore_name() click to toggle source
# File lib/onix/subset.rb, line 183
def underscore_name
  @underscore_name ||= _underscore_name
end

Private Instance Methods

pluralize(str) click to toggle source
# File lib/onix/subset.rb, line 201
def pluralize(str)
  rex = /(#{self.class.inflectors.map { |si, pl| si }.join('|')})$/i
  hash = Hash[*self.class.inflectors.flatten]
  str.sub(rex) { |m| hash[m] }
end
underscore(str) click to toggle source
# File lib/onix/subset.rb, line 207
def underscore(str)
  word = str.to_s.dup
  word.gsub!('::', '/')
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  word.tr!("-", "_")
  word.downcase!
  word
end