Class: Libis::Tools::Metadata::FieldFormat

Inherits:
Object
  • Object
show all
Defined in:
lib/libis/tools/metadata/field_format.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*parts) ⇒ FieldFormat



14
15
16
17
# File 'lib/libis/tools/metadata/field_format.rb', line 14

def initialize(*parts)
  @parts = []
  self[*parts]
end

Instance Attribute Details

#joinObject

Returns the value of attribute join.



11
12
13
# File 'lib/libis/tools/metadata/field_format.rb', line 11

def join
  @join
end

#partsObject

Returns the value of attribute parts.



9
10
11
# File 'lib/libis/tools/metadata/field_format.rb', line 9

def parts
  @parts
end

#postfixObject

Returns the value of attribute postfix.



12
13
14
# File 'lib/libis/tools/metadata/field_format.rb', line 12

def postfix
  @postfix
end

#prefixObject

Returns the value of attribute prefix.



10
11
12
# File 'lib/libis/tools/metadata/field_format.rb', line 10

def prefix
  @prefix
end

Class Method Details

.from(*h) ⇒ Object



49
50
51
# File 'lib/libis/tools/metadata/field_format.rb', line 49

def self.from(*h)
  self.new(*h)
end

Instance Method Details

#[](*parts) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/libis/tools/metadata/field_format.rb', line 41

def [](*parts)
  options = parts.last.is_a?(Hash) ? parts.pop : {}
  add parts
  x = options.delete(:parts)
  add x if x
  add_options options
end

#add(part) ⇒ Object



66
67
68
69
70
71
72
73
74
75
# File 'lib/libis/tools/metadata/field_format.rb', line 66

def add(part)
  case part
    when Hash
      @parts << Libis::Tools::::FieldFormat::from(part)
    when Array
      part.each { |x| add x }
    else
      @parts << part
  end
end

#add_default_options(options = {}) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/libis/tools/metadata/field_format.rb', line 33

def add_default_options(options = {})
  options.delete(:prefix) if @prefix
  options.delete(:postfix) if @postfix
  options.delete(:fix) if @prefix or @postfix
  options.delete(:join) if @join
  add_options options
end

#add_options(options = {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/libis/tools/metadata/field_format.rb', line 19

def add_options(options = {})
  if options[:fix]
    if options[:fix].size == 2
      @prefix, @postfix = options[:fix].split('')
    else
      @prefix, @postfix = options[:fix].split('|')
    end
  end
  @join = options[:join] if options[:join]
  @prefix = FieldFormat::from(options[:prefix]) if options[:prefix]
  @postfix = FieldFormat::from(options[:postfix]) if options[:postfix]
  self
end

#to_sObject



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/libis/tools/metadata/field_format.rb', line 53

def to_s
  @parts.delete_if { |x|
    x.nil? or
        (x.is_a? String and x.empty?) or
        (x.is_a? Libis::Tools::::FieldFormat and x.to_s.empty?)
  }
  result = @parts.join(@join)
  unless result.empty?
    result = (@prefix || '').to_s + result + (@postfix || '').to_s
  end
  result
end