Module: Kamakura

Defined in:
lib/kamakura.rb,
lib/kamakura/version.rb,
lib/kamakura/attribute.rb,
lib/kamakura/value_type.rb,
lib/kamakura/collection_type.rb

Defined Under Namespace

Modules: ClassMethods Classes: Attribute, CollectionType, ValueType

Constant Summary collapse

VERSION =
"0.1.0"
TRUE_VALUES =
[true, "true", 1, "1"].freeze
DATE_FORMATS =
{
  httpdate:   ->(value) { Date.httpdate(value) },
  iso8601:    ->(value) { Date.iso8601(value) },
  jd:         ->(value) { Date.jd(value) },
  jisx8601:   ->(value) { Date.jisx8601(value) },
  rfc2822:    ->(value) { Date.rfc2822(value) },
  rfc3339:    ->(value) { Date.rfc3339(value) },
  rfc822:     ->(value) { Date.rfc822(value) },
  xmlschema:  ->(value) { Date.xmlschema(value) },
}
DATETIME_FORMATS =
{
  httpdate:   ->(value) { DateTime.httpdate(value) },
  iso8601:    ->(value) { DateTime.iso8601(value) },
  jd:         ->(value) { DateTime.jd(value) },
  jisx8601:   ->(value) { DateTime.jisx8601(value) },
  rfc2822:    ->(value) { DateTime.rfc2822(value) },
  rfc3339:    ->(value) { DateTime.rfc3339(value) },
  rfc822:     ->(value) { DateTime.rfc822(value) },
  xmlschema:  ->(value) { DateTime.xmlschema(value) },
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.define_value_type(name, &block) ⇒ Object



19
20
21
# File 'lib/kamakura/value_type.rb', line 19

def define_value_type(name, &block)
  value_type_registory[name] = ValueType.new(&block)
end

.included(klass) ⇒ Object



36
37
38
# File 'lib/kamakura.rb', line 36

def self.included(klass)
  klass.extend(ClassMethods)
end

.lookup_value_type(name) ⇒ Object



23
24
25
# File 'lib/kamakura/value_type.rb', line 23

def lookup_value_type(name)
  value_type_registory[name]
end

.value_type_registoryObject



15
16
17
# File 'lib/kamakura/value_type.rb', line 15

def value_type_registory
  @value_type_registory ||= {}
end

Instance Method Details

#[](name) ⇒ Object



48
49
50
# File 'lib/kamakura.rb', line 48

def [](name)
  @__attributes[name.to_sym]
end

#attributesObject



44
45
46
# File 'lib/kamakura.rb', line 44

def attributes
  @__attributes
end

#initialize(attributes = {}) ⇒ Object



40
41
42
# File 'lib/kamakura.rb', line 40

def initialize(attributes = {})
  @__attributes = parse_attributes(attributes).freeze
end