Class: WebTranslateIt::Safe::Config::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/web_translate_it/safe/config/builder.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node, data = {}) ⇒ Builder

Returns a new instance of Builder.



9
10
11
12
# File 'lib/web_translate_it/safe/config/builder.rb', line 9

def initialize(node, data = {})
  @node = node
  data.each { |k, v| send k, v }
end

Class Method Details

.collection(*names) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/web_translate_it/safe/config/builder.rb', line 59

def collection(*names)
  names.each do |m|
    define_method(m) do |id, data = {}, &block|
      raise "bad collection id: #{id.inspect}" unless id

      ensure_hash(m, data)

      name = "#{m}s"
      collection = @node.get(name) || @node.set(name, Node.new(@node, {}))
      collection.set id, Node.new(collection, data, &block)
    end
  end
end

.hash_value(*names) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/web_translate_it/safe/config/builder.rb', line 35

def hash_value(*names)
  names.each do |m|
    define_method(m) do |data = {}, &block|
      ensure_uniq(m)
      ensure_hash(m, data)
      @node.set m, Node.new(@node, data || {}, &block)
    end
  end
end

.mixed_value(*names) ⇒ Object

rubocop:todo Metrics/MethodLength



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/web_translate_it/safe/config/builder.rb', line 45

def mixed_value(*names) # rubocop:todo Metrics/MethodLength
  names.each do |m|
    define_method(m) do |data = {}, &block|
      ensure_uniq(m)
      if data.is_a?(Hash) || block
        ensure_hash(m, data) if block
        @node.set m, Node.new(@node, data, &block)
      else
        @node.set m, data
      end
    end
  end
end

.multi_value(*names) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/web_translate_it/safe/config/builder.rb', line 26

def multi_value(*names)
  names.each do |m|
    define_method(m) do |value|
      value = value.map(&:to_s) if value.is_a?(Array)
      @node.set_multi m, value
    end
  end
end

.simple_value(*names) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/web_translate_it/safe/config/builder.rb', line 17

def simple_value(*names)
  names.each do |m|
    define_method(m) do |value|
      ensure_uniq(m)
      @node.set m, value
    end
  end
end