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



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

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

Returns the value of attribute default.



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

def default
  @default
end

#fallbacksObject

Returns the value of attribute fallbacks.



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

def fallbacks
  @fallbacks
end

#nameObject

Returns the value of attribute name.



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

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

Returns the value of attribute source.



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

def source
  @source
end

#typeObject

Returns the value of attribute type.



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

def type
  @type
end

Instance Method Details

#<=>(other) ⇒ Object



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

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

#choicesObject

Returns list of choices for a given property



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

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

#choices_nomenclatureObject



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

def choices_nomenclature
  @source
end

#human_nameObject Also known as: humanize

Return human name of property



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

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)


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

def inline_choices?
  choice? || choice_list?
end

#item_reference?Boolean

Returns:

  • (Boolean)


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

def item_reference?
  item? || item_list?
end

#list?Boolean

Returns:

  • (Boolean)


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

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

#reference?Boolean

Returns:

  • (Boolean)


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

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

#required?Boolean

Returns if property is required

Returns:

  • (Boolean)


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

def required?
  @required
end

#selectionObject



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

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



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

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