Class: Onoma::PropertyNature

Inherits:
Object
  • Object
show all
Defined in:
lib/onoma/property_nature.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nomenclature, name, type, options = {}) ⇒ PropertyNature

New item



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/onoma/property_nature.rb', line 6

def initialize(nomenclature, name, type, options = {})
  @nomenclature = nomenclature
  @name = name.to_sym
  @type = type
  raise "Invalid type: #{@type.inspect}" unless Onoma::PROPERTY_TYPES.include?(@type)

  @fallbacks = options[:fallbacks] if options[:fallbacks]
  @default = options[:default] if options[:default]
  @required = !!options[:required]
  @source = options[:choices] if reference? && options[:choices]
end

Instance Attribute Details

#defaultObject (readonly)

Returns the value of attribute default.



3
4
5
# File 'lib/onoma/property_nature.rb', line 3

def default
  @default
end

#fallbacksObject (readonly)

Returns the value of attribute fallbacks.



3
4
5
# File 'lib/onoma/property_nature.rb', line 3

def fallbacks
  @fallbacks
end

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/onoma/property_nature.rb', line 3

def name
  @name
end

#nomenclatureObject (readonly)

Returns the value of attribute nomenclature.



3
4
5
# File 'lib/onoma/property_nature.rb', line 3

def nomenclature
  @nomenclature
end

#sourceObject (readonly)

Returns the value of attribute source.



3
4
5
# File 'lib/onoma/property_nature.rb', line 3

def source
  @source
end

#typeObject (readonly)

Returns the value of attribute type.



3
4
5
# File 'lib/onoma/property_nature.rb', line 3

def type
  @type
end

Instance Method Details

#<=>(other) ⇒ Object



92
93
94
# File 'lib/onoma/property_nature.rb', line 92

def <=>(other)
  name <=> other.name
end

#choicesObject

Returns list of choices for a given property



67
68
69
70
71
72
73
# File 'lib/onoma/property_nature.rb', line 67

def choices
  if inline_choices?
    @source || []
  elsif item_reference?
    @nomenclature.sibling(@source).all.map(&:to_sym)
  end
end

#choices_nomenclatureObject



62
63
64
# File 'lib/onoma/property_nature.rb', line 62

def choices_nomenclature
  @source
end

#human_nameObject Also known as: humanize

Return human name of property



86
87
88
# File 'lib/onoma/property_nature.rb', line 86

def human_name
  I18n.t("nomenclatures.#{nomenclature.name}.property_natures.#{name}", default: ["nomenclatures.#{nomenclature.name}.properties.#{name}".to_sym, "properties.#{name}".to_sym, "enumerize.#{nomenclature.name}.#{name}".to_sym, "labels.#{name}".to_sym, name.humanize])
end

#inline_choices?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/onoma/property_nature.rb', line 46

def inline_choices?
  choice? || choice_list?
end

#item_reference?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/onoma/property_nature.rb', line 50

def item_reference?
  item? || item_list?
end

#list?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/onoma/property_nature.rb', line 58

def list?
  choice_list? || item_list? || string_list?
end

#reference?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/onoma/property_nature.rb', line 54

def reference?
  choice_list? || item_list? || string_list? || choice? || item?
end

#required?Boolean

Returns if property is required

Returns:

  • (Boolean)


42
43
44
# File 'lib/onoma/property_nature.rb', line 42

def required?
  @required
end

#selectionObject



75
76
77
78
79
80
81
82
83
# File 'lib/onoma/property_nature.rb', line 75

def selection
  if inline_choices?
    choices.collect do |c|
      ["nomenclatures.#{@nomenclature.name}.choices.#{name}.#{c}".t, c]
    end
  elsif item_reference?
    @nomenclature.sibling(@source).selection
  end
end

#to_xml_attrsObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/onoma/property_nature.rb', line 24

def to_xml_attrs
  attrs = {}
  attrs[:name] = @name.to_s
  attrs[:type] = @type.to_s
  if @source
    attrs[:choices] = if inline_choices?
                        @source.join(', ')
                      else
                        @source.to_s
                      end
  end
  attrs[:required] = 'true' if @required
  attrs[:fallbacks] = @fallbacks.join(', ') if @fallbacks
  attrs[:default] = @default.to_s if @default
  attrs
end