boost_info 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cdfc1661e71790bb7a549521e9256e492d96fd55
4
- data.tar.gz: 9fdfdaa42ad4708167679eb19de1ca8848632636
3
+ metadata.gz: 123f64675e502c834fd8e3da88dec08c1923b069
4
+ data.tar.gz: 242e6216e15f08427d38f340fe67b74802232ea9
5
5
  SHA512:
6
- metadata.gz: 9b89951ae0b4c451733a3fb052bf95df412db61fed9a0496d9f28490ff796bfcede008624038a127c424ceb64b5551389ee914e24ce9fa34c0ffa83960a31885
7
- data.tar.gz: 92c231b5b1ba6212414263119528c0a7b8b12c86a5051a83cebd2725f661ed6c49a2503d417e747a663169704f1792c911ec555125aaead9105a64b02fd6c452
6
+ metadata.gz: 978953088fe0fa1dc93e75655a7643f4ccece59abdbc8599fa7df437015adbe2ca6ce680a6b9f8243bb8cf8635fb5e5c0863b4e8510b531b90fb91d12c525013
7
+ data.tar.gz: 33f8f954473185f38f8ae89af56108857a650bac3dddd82de4a75fc305b9ae68c1ed6631584a9a42eccd5039b7b216a12b10a85641da0c3f6a3d8fdec7dda2dd
@@ -72,24 +72,37 @@ module BoostInfo
72
72
  parent_childrens.reject { |c| c == self }
73
73
  end
74
74
 
75
- def auto_insert(path, value, params={})
76
- params[:force] ||= true
77
- if params[:force]
78
- params[:delete_if] = ->(node) { node.childrens.nil? }
79
- end
75
+ def create_path(path, params={})
76
+ return self if path.empty?
77
+
78
+ params[:force] = true unless params.key?(:force)
80
79
 
81
80
  current_node = self
82
81
  path.each do |new_key|
83
- existing_node = current_node.get(new_key).first
84
- current_node = if existing_node && existing_node.childrens
85
- existing_node
86
- else
87
- current_node.insert(new_key, value, params)
88
- end
82
+ existing_nodes = current_node.get(new_key)
83
+ unless existing_nodes.empty?
84
+ if params[:force]
85
+ current_node.childrens.delete_if do |node|
86
+ node.key == new_key.to_s
87
+ end
88
+ end
89
+ end
90
+ current_node = current_node.insert(new_key, nil, params)
89
91
  end
90
92
  current_node
91
93
  end
92
94
 
95
+ def auto_insert(path, value, params={})
96
+ last_node = create_path(path, params)
97
+ new_node = if value.is_a?(BoostInfo::Node)
98
+ last_node.insert_node(value, params)
99
+ else
100
+ last_node.value = value
101
+ last_node
102
+ end
103
+ new_node
104
+ end
105
+
93
106
  def insert(key, value, params={})
94
107
  node = Node.new(key: key, value: value)
95
108
  insert_node(node, params)
@@ -99,7 +112,6 @@ module BoostInfo
99
112
  def insert_node(node, params={})
100
113
  node.parent = self
101
114
  @childrens ||= []
102
- @childrens.delete_if(&params[:delete_if]) if params[:delete_if]
103
115
 
104
116
  if params[:after]
105
117
  insert_node_after(params[:after], node)
@@ -107,6 +119,8 @@ module BoostInfo
107
119
  insert_node_before(params[:before], node)
108
120
  elsif params[:prepend]
109
121
  @childrens.unshift(node)
122
+ elsif params[:append]
123
+ @childrens.push(node)
110
124
  else
111
125
  @childrens << node
112
126
  end
@@ -1,3 +1,3 @@
1
1
  module BoostInfo
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boost_info
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Vetrov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-06 00:00:00.000000000 Z
12
+ date: 2015-08-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler