lab42_base 0.0.1 → 0.0.2

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: 70215f98b0f9d02e89481cef4f32c60303cd32a250811e598ed9f7c3450db406
4
- data.tar.gz: f58b989f2e61a94c425f29b02872df2c9cf0b4339e6c8de450176fce504f97f4
3
+ metadata.gz: f01586c6cbf17e0206ce32fb7a0d8547047bf2e4a5feec254249f3576690348c
4
+ data.tar.gz: 580a6da8b14fb33cbf5c8875a4ddd4445f09796a558d5b30091eac21df84837c
5
5
  SHA512:
6
- metadata.gz: 42039c92840839406231e002f7be6bb5d35928fc39892b01edf009187d28a20d54250f9435a64220c08952877a8149779724b576fedb9f94b6d18e5a198fe89f
7
- data.tar.gz: a2913e120c68104a84ff7143cdca784ed4c7b2b3dbf3d3be26b0d59491d22c75dc4974205d32df5899ef06f82916057c92a0ff75cd3c55bd4c1ea6e79fe9bbbd
6
+ metadata.gz: 9f564d175eb398a8350f5e35a4ed6e1af16fd5714dfd59c9ed380c64800eac5d86eac239b3622c0f1e45f1d9796ab383a93c873de57bb9447bd1eb7377b6032b
7
+ data.tar.gz: 35f7f9241466fb1f797875b6a8e2174c65b6735cc6a52a5d7cf6d8bfce8c3a7711fd2ad9c52cb2f658c1d573737ec81a11a81c73bd236dd0c61f4ee427c0ca47
data/lib/lab42/base.rb CHANGED
@@ -2,4 +2,6 @@
2
2
 
3
3
  require_relative 'open_struct'
4
4
  require_relative 'closed_struct'
5
+
6
+ require_relative 'iterator'
5
7
  # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -3,4 +3,5 @@
3
3
  require_relative 'base'
4
4
 
5
5
  ClosedStruct = Lab42::ClosedStruct
6
+ Iterator = Lab42::Iterator
6
7
  # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lab42
4
+ class Iterator
5
+ include Enumerable
6
+
7
+ attr_reader :advancer, :value
8
+
9
+ def drop(n=1)
10
+ n.times do
11
+ @value = @advancer.(value)
12
+ end
13
+ self
14
+ end
15
+ def drop_fn = -> (n=1) { drop n }
16
+
17
+
18
+ def each
19
+ loop do
20
+ yield value
21
+ drop
22
+ end
23
+ end
24
+ def take_fn = -> (n) { take n }
25
+
26
+ private
27
+ def initialize(value, &advancer)
28
+ @value = value
29
+ @advancer = advancer
30
+ end
31
+
32
+ end
33
+ end
34
+ # SPDX-License-Identifier: AGPL-3.0-or-later
data/lib/lab42/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lab42
4
- VERSION = "0.0.1"
4
+ VERSION = "0.0.2"
5
5
  end
6
6
  # SPDX-License-Identifier: AGPL-3.0-or-later
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lab42_base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -38,6 +38,7 @@ files:
38
38
  - lib/lab42/closed_struct/hash_api.rb
39
39
  - lib/lab42/forwardable.rb
40
40
  - lib/lab42/import_base.rb
41
+ - lib/lab42/iterator.rb
41
42
  - lib/lab42/open_struct.rb
42
43
  - lib/lab42/open_struct/hash_api.rb
43
44
  - lib/lab42/version.rb