pattern_matchable 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: 8232bcf22e17e7d55079ab42f11af82f9f612a55f8e9c2506a796bcd67da1116
4
- data.tar.gz: f45d869e1679fe340a5f8e73139ed3de6f00038c9813fae20bb5e0d3d7b510d5
3
+ metadata.gz: d273be1d68edacc564b26f61dca88747cad7610ec4511479bc8b4ddb4a2232c3
4
+ data.tar.gz: 60780107cb09fdd8455bb916bcd2fb4813614144f2a335a3aa003028edaa28eb
5
5
  SHA512:
6
- metadata.gz: 01c18ccf82903a74f7346f6858668ffb4d5a33d23b829cba43ade37dbce0be91c7c85515c1e7115b8af2346c5bd6064d02d6bdd72a48a424537966b7e5f00713
7
- data.tar.gz: f21aa128c4329d7ec59978cba5ce931f47cbac4a29e6927e11351e3f5f1bd02ab1dacbebc363db9f2eac995fa9aef088cffdc75ff69a50a4993a679b9558c258
6
+ metadata.gz: eed4b370842bea8aeed8f63cb1208d07f2c06aa11040a14735ebe5887262aa8a9ebf8cdeb292f30604055ded4a0648a82cb8e5ac8d17115bfce9fffc1b169630
7
+ data.tar.gz: 314a2aed9892d024b9625e671f8a389e010aa5106f6c844de36b22f81b230db59f5eaa446680e91b7efb0ecc1d52259085d62d3d8a8f134b1c27a35ade3af404
data/README.md CHANGED
@@ -73,12 +73,17 @@ class Array
73
73
  include PatternMatchable
74
74
  end
75
75
 
76
- [1, 2, 3, 4, 5] in { first:, last: }
76
+ # OK: assigned `first` `last` variables
77
+ case [1, 2, 3, 4, 5]
78
+ in { first:, last: }
79
+ end
77
80
  p first # => 1
78
81
  p last # => 5
79
82
 
80
83
  # error: NoMatchingPatternError
81
- "Homu" in { downcase:, upcase: }
84
+ case "Homu"
85
+ in { downcase:, upcase: }
86
+ end
82
87
  ```
83
88
 
84
89
  ### 2. `using PatternMatchable`
@@ -91,11 +96,15 @@ require "pattern_matchable"
91
96
  # defined Object#deconstruct_keys
92
97
  using PatternMatchable
93
98
 
94
- [1, 2, 3, 4, 5] in { first:, last: }
99
+ case [1, 2, 3, 4, 5]
100
+ in { first:, last: }
101
+ end
95
102
  p first # => 1
96
103
  p last # => 5
97
104
 
98
- "Homu" in { downcase:, upcase: }
105
+ case "Homu"
106
+ in { downcase:, upcase: }
107
+ end
99
108
  p downcase # => "homu"
100
109
  p upcase # => "HOMU"
101
110
  ```
@@ -110,12 +119,16 @@ require "pattern_matchable"
110
119
  # define Array#deconstruct_keys
111
120
  using PatternMatchable.refining Array
112
121
 
113
- [1, 2, 3, 4, 5] in { first:, last: }
122
+ case [1, 2, 3, 4, 5]
123
+ in { first:, last: }
124
+ end
114
125
  p first # => 1
115
126
  p last # => 5
116
127
 
117
128
  # error: NoMatchingPatternError
118
- "Homu" in { downcase:, upcase: }
129
+ case "Homu"
130
+ in { downcase:, upcase: }
131
+ end
119
132
  ```
120
133
 
121
134
  ### 4. `using PatternMatchable::#{class name}`
@@ -128,7 +141,9 @@ require "pattern_matchable"
128
141
  # define Array#deconstruct_keys
129
142
  using PatternMatchable::Array
130
143
 
131
- [1, 2, 3, 4, 5] in { first:, last: }
144
+ case [1, 2, 3, 4, 5]
145
+ in { first:, last: }
146
+ end
132
147
  p first # => 1
133
148
  p last # => 5
134
149
 
@@ -136,12 +151,36 @@ p last # => 5
136
151
  # defined Enumerator::Lazy
137
152
  using PatternMatchable::Enumerator::Lazy
138
153
 
139
- (1..10).lazy.map { _1 * 2 } in { first:, count: }
154
+ case (1..10).lazy.map { _1 * 2 }
155
+ in { first:, count: }
156
+ end
140
157
  p first # => 2
141
158
  p count # => 10
142
159
 
143
160
  # error: NoMatchingPatternError
144
- "Homu" in { downcase:, upcase: }
161
+ case "Homu"
162
+ in { downcase:, upcase: }
163
+ end
164
+ ```
165
+
166
+ ### 5. `using PatternMatchable {class name}`
167
+
168
+ ```ruby
169
+ require "pattern_matchable"
170
+
171
+ # define Array#deconstruct_keys
172
+ using PatternMatchable Array
173
+
174
+ case [1, 2, 3, 4, 5]
175
+ in { first:, last: }
176
+ end
177
+ p first # => 1
178
+ p last # => 5
179
+
180
+ # error: NoMatchingPatternError
181
+ case "Homu"
182
+ in { downcase:, upcase: }
183
+ end
145
184
  ```
146
185
 
147
186
 
@@ -25,3 +25,7 @@ module PatternMatchable
25
25
  self.refining(Object.const_get(klass_name))
26
26
  end
27
27
  end
28
+
29
+ def PatternMatchable(klass)
30
+ PatternMatchable.refining klass
31
+ end
@@ -1,3 +1,3 @@
1
1
  module PatternMatchable
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pattern_matchable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - manga_osyo
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-11 00:00:00.000000000 Z
11
+ date: 2020-11-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: call method with pattern match.
14
14
  email:
@@ -31,7 +31,7 @@ files:
31
31
  homepage: ''
32
32
  licenses: []
33
33
  metadata: {}
34
- post_install_message:
34
+ post_install_message:
35
35
  rdoc_options: []
36
36
  require_paths:
37
37
  - lib
@@ -47,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  version: '0'
48
48
  requirements: []
49
49
  rubygems_version: 3.1.2
50
- signing_key:
50
+ signing_key:
51
51
  specification_version: 4
52
52
  summary: call method with pattern match.
53
53
  test_files: []