forester 4.2.0 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f4bb170effc47626daaea911274299fb1ad6dcb
4
- data.tar.gz: f16441506f8ef3111ba831e3ec487088c3e44e6d
3
+ metadata.gz: 074b7d10b4541bc5b2e70d3013990b687ad32e7c
4
+ data.tar.gz: 99fd514939cd284d71b6388f167d7bc5226a2ce0
5
5
  SHA512:
6
- metadata.gz: f38b5a46f316eb0fa0be20d350159cba296db9f1a7a8a1cfd52299ff7b88ca3333e5789719c4f9dd6f2964f1196752dd7d452f941a8ff1fb581d3a2fa8cfa4c7
7
- data.tar.gz: 045cb745b6d6a868a9689f04764494cbc52e1babe42ea8eed2e33933c5aa9a79dabad37642fc9d06d77bc7c6a2b7b0e9f73b46f0d91273acbcb7b42d3f9902d1
6
+ metadata.gz: 19320bf3a2d4dbe72f192d0ad370cb0f082206e572371e8013ce036e0f645062025300420ae10e25ab1e368300bf45ced1223dfc973e040f53d759be1b5d025f
7
+ data.tar.gz: 202fe5a6556f0df1fe6f12b9c547da61d835151ca23e0bbfb5261aa1505828a6a4fe0feb09dfb42341ff7769f1213cbc5e38f602a6980144ebe2c32cda8ddb24
data/forester.gemspec CHANGED
@@ -6,12 +6,12 @@ require 'forester/version'
6
6
  Gem::Specification.new do |s|
7
7
  s.name = 'forester'
8
8
  s.version = Forester::Version
9
- s.date = '2016-10-01'
9
+ s.date = '2017-02-26'
10
10
  s.summary = "A gem to represent and interact with tree data structures"
11
11
  s.description = "Based on rubytree, this gem lets you build trees and run queries against them."
12
12
  s.authors = ["Eugenio Bruno"]
13
13
  s.email = 'eugeniobruno@gmail.com'
14
- s.homepage = 'http://rubygems.org/gems/forester'
14
+ s.homepage = 'https://github.com/eugeniobruno/forester'
15
15
  s.license = 'MIT'
16
16
 
17
17
  s.files = `git ls-files`.split($/)
@@ -4,21 +4,10 @@ module Forester
4
4
  class << self
5
5
 
6
6
  def from_yaml_file(file, options = {})
7
- default_options = {
8
- max_level: :last
9
- }
10
- options = default_options.merge(options)
11
-
12
- from_hash_with_root_key(YAML.load_file(file))
7
+ from_hash_with_root_key(YAML.load_file(file), options)
13
8
  end
14
9
 
15
10
  def from_root_hash(hash, options = {})
16
- default_options = {
17
- max_level: :last,
18
- children_key: :children
19
- }
20
- options = default_options.merge(options)
21
-
22
11
  from_hash_with_root_key({ root: hash }, options)
23
12
  end
24
13
 
@@ -46,10 +46,6 @@ module Forester
46
46
  end
47
47
  end
48
48
 
49
- def name
50
- content.get(:name, super)
51
- end
52
-
53
49
  def contents
54
50
  each_node.map(&:content)
55
51
  end
@@ -65,5 +61,11 @@ module Forester
65
61
  true
66
62
  end
67
63
 
64
+ protected
65
+
66
+ def as_array(object)
67
+ [object].flatten(1)
68
+ end
69
+
68
70
  end
69
71
  end
@@ -4,7 +4,7 @@ module Forester
4
4
  def own_and_descendants(field, &if_missing)
5
5
  if_missing = -> (node) { [] } unless block_given?
6
6
 
7
- flat_map { |node| Array(node.get(field, &if_missing)) }
7
+ flat_map { |node| as_array(node.get(field, &if_missing)) }
8
8
  end
9
9
 
10
10
  def nodes_with(field, values, options = {})
@@ -15,10 +15,10 @@ module Forester
15
15
 
16
16
  method = options[:single] ? :find : :select
17
17
  found_nodes = each_node.public_send(method) do |node|
18
- not ( Array(node.get(field) { :no_match }) & Array(values) ).empty?
18
+ not ( as_array(node.get(field) { :no_match }) & as_array(values) ).empty?
19
19
  end
20
20
 
21
- Array(found_nodes)
21
+ as_array(found_nodes)
22
22
  end
23
23
 
24
24
  def with_ancestry(options = {})
@@ -29,9 +29,9 @@ module Forester
29
29
  }
30
30
  options = default_options.merge(options)
31
31
 
32
- ancestors = self.parentage || []
33
- ancestors = ancestors[0...-1] unless options[:include_root]
34
- ancestors = ancestors.unshift(self) if options[:include_self]
32
+ ancestors = self.parentage || []
33
+ ancestors = ancestors[0...-1] unless options[:include_root]
34
+ ancestors = ancestors.unshift(self) if options[:include_self]
35
35
 
36
36
  options[:descending] ? ancestors.reverse : ancestors
37
37
  end
@@ -46,12 +46,12 @@ module Forester
46
46
  }
47
47
  options = default_options.merge(options)
48
48
 
49
- found_nodes = nodes_with(options[:by_field], options[:keywords], { single: options[:single_node] } )
49
+ found_nodes = nodes_with(options[:by_field], options[:keywords], single: options[:single_node] )
50
50
 
51
51
  return found_nodes if options[:then_get] == :nodes
52
52
 
53
53
  found_nodes.flat_map do |node|
54
- node.get(options[:then_get], { subtree: options[:subtree] })
54
+ node.get(options[:then_get], subtree: options[:subtree])
55
55
  end
56
56
  end
57
57
 
@@ -69,7 +69,7 @@ module Forester
69
69
  nodes_of_level(options[:level]).each_with_object({}) do |node, hash|
70
70
  key =
71
71
  if options[:ancestry_in_keys]
72
- nodes_for_key = node.with_ancestry({ include_root: options[:with_root] })
72
+ nodes_for_key = node.with_ancestry(include_root: options[:with_root])
73
73
  nodes_for_key.map { |n| get_or_id(n, options[:group_field]) }
74
74
  else
75
75
  get_or_id(node, options[:group_field])
@@ -44,9 +44,9 @@ module Forester
44
44
 
45
45
  new_value =
46
46
  if percolate
47
- current_value & Array(values)
47
+ current_value & as_array(values)
48
48
  else
49
- current_value - Array(values)
49
+ current_value - as_array(values)
50
50
  end
51
51
 
52
52
  put!(field, new_value)
@@ -23,7 +23,7 @@ module Forester
23
23
  if max_level == 0
24
24
  []
25
25
  else
26
- next_options = options.merge({ max_level: max_level - 1 })
26
+ next_options = options.merge(max_level: max_level - 1)
27
27
  children.map { |node| node.as_root_hash(next_options) }
28
28
  end
29
29
 
@@ -2,7 +2,7 @@ module Forester
2
2
  class Version
3
3
  MAJOR = 4
4
4
  MINOR = 2
5
- PATCH = 0
5
+ PATCH = 1
6
6
  PRE = nil
7
7
 
8
8
  class << self
@@ -27,7 +27,7 @@ class TestTreeFactory < Minitest::Test
27
27
  protected
28
28
 
29
29
  def new_with_max_level(hash, max_level)
30
- Forester::TreeFactory.from_root_hash(hash['root'], { max_level: max_level })
30
+ Forester::TreeFactory.from_root_hash(hash['root'], max_level: max_level)
31
31
  end
32
32
 
33
33
  end
@@ -19,13 +19,13 @@ class TestTreeNode < Minitest::Test
19
19
 
20
20
  assert_equal expected, actual
21
21
 
22
- assert_equal values, @@tree.get('value', { subtree: true })
22
+ assert_equal values, @@tree.get('value', subtree: true)
23
23
  end
24
24
 
25
25
  def test_missing_values
26
26
  assert_equal 0, @@tree.get('value')
27
- assert_equal 'no', @@tree.get('whatever', { default: 'no' })
28
- assert_equal 'no', @@tree.get('whatever', { default: 'missing' }) { 'no' }
27
+ assert_equal 'no', @@tree.get('whatever', default: 'no')
28
+ assert_equal 'no', @@tree.get('whatever', default: 'missing') { 'no' }
29
29
  assert_equal 'no', @@tree.get('whatever') { 'no' }
30
30
  assert_equal 'no', @@tree.get('whatever') { |n| 'no' }
31
31
  assert_equal 1, @@tree.get('whatever') { |n| n.get('value') + 1 }
data/test/test_views.rb CHANGED
@@ -12,7 +12,7 @@ class TestViews < Minitest::Test
12
12
  add_empty_children_keys(hash['root'])
13
13
 
14
14
  expected = hash['root']
15
- actual = @@tree.as_root_hash({ stringify_keys: true })
15
+ actual = @@tree.as_root_hash(stringify_keys: true)
16
16
 
17
17
  assert_equal expected, actual
18
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forester
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugenio Bruno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-01 00:00:00.000000000 Z
11
+ date: 2017-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubytree
@@ -28,42 +28,42 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '11.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '11.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '5.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.9'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry-byebug
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.4'
69
69
  description: Based on rubytree, this gem lets you build trees and run queries against
@@ -98,7 +98,7 @@ files:
98
98
  - test/test_validators.rb
99
99
  - test/test_views.rb
100
100
  - test/trees/simple_tree.yml
101
- homepage: http://rubygems.org/gems/forester
101
+ homepage: https://github.com/eugeniobruno/forester
102
102
  licenses:
103
103
  - MIT
104
104
  metadata: {}
@@ -108,17 +108,17 @@ require_paths:
108
108
  - lib
109
109
  required_ruby_version: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">="
111
+ - - '>='
112
112
  - !ruby/object:Gem::Version
113
113
  version: 2.0.0
114
114
  required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ">="
116
+ - - '>='
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  requirements: []
120
120
  rubyforge_project:
121
- rubygems_version: 2.5.1
121
+ rubygems_version: 2.4.8
122
122
  signing_key:
123
123
  specification_version: 4
124
124
  summary: A gem to represent and interact with tree data structures