callable_tree 0.2.1 → 0.2.2

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
  SHA256:
3
- metadata.gz: 23417eaf997718c6d0e9b5fc52dea3fe4923ca9b426d9d41e57b5e27015d239a
4
- data.tar.gz: 34be74baf1014e41efbe0073fedfdf76dc02444c927bea2b089d9457842c04b8
3
+ metadata.gz: 8e5f087271cbaf840a0cb6557126331b67487c4f87e5843e3bcf900c54dc6e84
4
+ data.tar.gz: d1d1e0ac4a085dc26d1a2f6bec141ea92ea80efbfb43c8738e34d9ae9280836c
5
5
  SHA512:
6
- metadata.gz: 686e18552c5decad326d7bd0775a2be0b3726245edea1ccf2dbdf0ca3e264ec88883bf79cea5af873b074feff1b63e49b59522b5f3b7fc00e06122d494277cea
7
- data.tar.gz: 7db8a88a1bc19677f453237dd15137da05f3fdb2ddb25aeedd11df82e6afd7c769d3da3c61e9905c40285d35ea54059c6749b4f32a354fc542d7bd26fdd8992f
6
+ metadata.gz: 0a342b5fff3ce51c36bd4e4e1977f2023db7045bab0f19e794bc8a1c48442c184cedfcadad5a0b9956fe146a0904aaca584a6d23c5ac23c063dc53d8d260978a
7
+ data.tar.gz: 6fd3e33d25e549774488967d600ef236bff9e74bc750741eff9e5c6d3e5c59b15f2c956c1f25b97f5e9cd16becb7004e6df298adf04c01844aa300dc1e2e42b3
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.0
1
+ 3.0.2
data/CHANGELOG.md CHANGED
@@ -1,7 +1,11 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.2] - 2021-10-24
4
+ - Add `CallableTree::Node::Internal#reject` to return a new node instance without rejected child nodes.
5
+ - Add `CallableTree::Node::Internal#reject!` to destructively reject child nodes.
6
+
3
7
  ## [0.2.1] - 2021-07-24
4
- - Add `CallableTree::Node::root?`.
8
+ - Add `CallableTree::Node#root?`.
5
9
  - Add `CallableTree::Node::Internal#seek!` that make destructive change.
6
10
  - Add `CallableTree::Node::Internal#broadcast!` that make destructive change.
7
11
  - Add `CallableTree::Node::Internal#compose!` that make destructive change.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- callable_tree (0.2.1)
4
+ callable_tree (0.2.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -32,4 +32,4 @@ DEPENDENCIES
32
32
  rspec (~> 3.0)
33
33
 
34
34
  BUNDLED WITH
35
- 2.2.17
35
+ 2.2.22
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021  
3
+ Copyright (c) 2021 jsmmr
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # CallableTree
2
2
 
3
+ [![build](https://github.com/jsmmr/ruby_callable_tree/actions/workflows/build.yml/badge.svg)](https://github.com/jsmmr/ruby_callable_tree/actions/workflows/build.yml)
4
+
3
5
  ## Installation
4
6
 
5
7
  Add this line to your application's Gemfile:
@@ -6,7 +6,8 @@ module CallableTree
6
6
  include Node
7
7
 
8
8
  def children
9
- @children ||= []
9
+ # TODO: Change to return a new array instance.
10
+ child_nodes
10
11
  end
11
12
 
12
13
  def append(*callables)
@@ -18,17 +19,28 @@ module CallableTree
18
19
  def append!(*callables)
19
20
  callables
20
21
  .map { |callable| nodeify(callable) }
21
- .tap { |nodes| children.push(*nodes) } # Use Array#push for Ruby 2.4
22
+ .tap { |nodes| child_nodes.push(*nodes) } # Use Array#push for Ruby 2.4
22
23
 
23
24
  self
24
25
  end
25
26
 
27
+ def reject(&block)
28
+ clone.tap do |node|
29
+ node.reject!(&block)
30
+ end
31
+ end
32
+
33
+ def reject!(&block)
34
+ child_nodes.reject!(&block)
35
+ self
36
+ end
37
+
26
38
  def match?(_input = nil, **_options)
27
- !children.empty?
39
+ !child_nodes.empty?
28
40
  end
29
41
 
30
42
  def call(input = nil, **options)
31
- strategy.call(children, input: input, options: options)
43
+ strategy.call(child_nodes, input: input, options: options)
32
44
  end
33
45
 
34
46
  def seek
@@ -78,7 +90,11 @@ module CallableTree
78
90
 
79
91
  private
80
92
 
81
- attr_writer :children, :strategy
93
+ attr_writer :child_nodes, :strategy
94
+
95
+ def child_nodes
96
+ @child_nodes ||= []
97
+ end
82
98
 
83
99
  def nodeify(callable)
84
100
  if callable.is_a?(Node)
@@ -96,7 +112,7 @@ module CallableTree
96
112
  def initialize_copy(_node)
97
113
  super
98
114
  self.parent = nil
99
- self.children = children.map do |node|
115
+ self.child_nodes = child_nodes.map do |node|
100
116
  node.clone.tap { |new_node| new_node.send(:parent=, self) }
101
117
  end
102
118
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CallableTree
4
- VERSION = '0.2.1'
4
+ VERSION = '0.2.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: callable_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - jsmmr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-24 00:00:00.000000000 Z
11
+ date: 2021-10-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Builds a tree by linking callable nodes. The nodes that match the conditions
14
14
  are called in a chain from the root node to the leaf node. These are like nested
@@ -60,7 +60,7 @@ licenses:
60
60
  metadata:
61
61
  homepage_uri: https://github.com/jsmmr/ruby_callable_tree
62
62
  source_code_uri: https://github.com/jsmmr/ruby_callable_tree
63
- changelog_uri: https://github.com/jsmmr/ruby_callable_tree/blob/v0.2.1/CHANGELOG.md
63
+ changelog_uri: https://github.com/jsmmr/ruby_callable_tree/blob/v0.2.2/CHANGELOG.md
64
64
  post_install_message:
65
65
  rdoc_options: []
66
66
  require_paths:
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  requirements: []
79
- rubygems_version: 3.2.16
79
+ rubygems_version: 3.2.22
80
80
  signing_key:
81
81
  specification_version: 4
82
82
  summary: Builds a tree by linking callable nodes. The nodes that match the conditions