tfg_support 0.0.2 → 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.
data/README.md CHANGED
@@ -37,6 +37,29 @@ also works for setting. New hashes will be created for missing keys.
37
37
  hash
38
38
  => {:foo=>{:bar=>{:baz=>:frob}, :missing_key=>{:baz=>:frob}}}
39
39
 
40
+ ### TfgSupport::Sequence
41
+
42
+ An object which can be used to generate an infinite sequence.
43
+
44
+ sequence = TfgSupport::Sequence.new(1) { |previous| previous * 2 }
45
+ sequence.next
46
+ => 1
47
+ sequence.next
48
+ => 2
49
+ sequence.next
50
+ => 4
51
+
52
+ #### self.new
53
+
54
+ **Sequence.new(initial_value, &generator)**
55
+
56
+ Returns a new `Sequence` object.
57
+
58
+ #### next
59
+ *this method is not thread safe*
60
+
61
+ Applies the generator block provided during construction to the previous result.
62
+
40
63
 
41
64
  ## Contributing
42
65
 
@@ -0,0 +1,16 @@
1
+ module TfgSupport
2
+ class Sequence
3
+
4
+ def initialize(args, &block)
5
+ @current_value, @generator = args, block
6
+ end
7
+
8
+ # return the next element in the sequence
9
+
10
+ def next
11
+ @current_value = @generator.call(@current_value) if @called
12
+ @called = true
13
+ @current_value
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module TfgSupport
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/tfg_support.rb CHANGED
@@ -2,6 +2,7 @@ require "tfg_support/version"
2
2
 
3
3
  module TfgSupport
4
4
  autoload :DeepHashAccessor, "tfg_support/deep_hash_accessor"
5
+ autoload :Sequence, "tfg_support/sequence"
5
6
  end
6
7
 
7
8
  class Hash
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe TfgSupport::Sequence do
4
+
5
+ let(:sequence) do
6
+ TfgSupport::Sequence.new(1) do |previous|
7
+ previous * 2
8
+ end
9
+ end
10
+
11
+ describe "#next" do
12
+
13
+ it "returns the starting value the first time it's called" do
14
+ sequence.next.should eq 1
15
+ end
16
+
17
+ it "returns the result of the generator for successive calls" do
18
+ sequence.next
19
+ sequence.next.should eq 2
20
+ end
21
+
22
+ it "passes the result of the previous invocation of the generator, to the generator" do
23
+ sequence.next
24
+ sequence.next
25
+ sequence.next.should eq 4
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tfg_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.1
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Courtney de Lautour
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-05-23 00:00:00.000000000 Z
12
+ date: 2013-05-24 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,29 +30,33 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  description: A collection of helper methods / extensions for Ruby
@@ -66,34 +73,38 @@ files:
66
73
  - Rakefile
67
74
  - lib/tfg_support.rb
68
75
  - lib/tfg_support/deep_hash_accessor.rb
76
+ - lib/tfg_support/sequence.rb
69
77
  - lib/tfg_support/version.rb
70
78
  - spec/hash_spec.rb
79
+ - spec/sequence_spec.rb
71
80
  - spec/spec_helper.rb
72
81
  - tfg_support.gemspec
73
82
  homepage: https://github.com/Amerdrix/TFG-support
74
83
  licenses:
75
84
  - MIT
76
- metadata: {}
77
85
  post_install_message:
78
86
  rdoc_options: []
79
87
  require_paths:
80
88
  - lib
81
89
  required_ruby_version: !ruby/object:Gem::Requirement
90
+ none: false
82
91
  requirements:
83
- - - '>='
92
+ - - ! '>='
84
93
  - !ruby/object:Gem::Version
85
94
  version: '0'
86
95
  required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
87
97
  requirements:
88
- - - '>='
98
+ - - ! '>='
89
99
  - !ruby/object:Gem::Version
90
100
  version: '0'
91
101
  requirements: []
92
102
  rubyforge_project:
93
- rubygems_version: 2.0.3
103
+ rubygems_version: 1.8.25
94
104
  signing_key:
95
- specification_version: 4
105
+ specification_version: 3
96
106
  summary: A collection of helper methods / extensions for Ruby
97
107
  test_files:
98
108
  - spec/hash_spec.rb
109
+ - spec/sequence_spec.rb
99
110
  - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 5d2e74fe149cb3556dbb7838fcd794b6c366f20d
4
- data.tar.gz: 69d75ea4414ca09562bed2a9b9c1d145af312c6f
5
- SHA512:
6
- metadata.gz: 8b537908f2b2a0dd8bf02398c7a1a6c21c438ce75fd06d2810655925cfeef978786765012c124bcdb4efa15e93c29f779dbcc44cc0ec4e88a9ae16d1b30d04b9
7
- data.tar.gz: 5682ca8fde01317c4480373c635c2c4414809f70d419e56ed11a93837567d91056d03bb5fbce2a2083eba434ccc891aec7074d86f38894be10c5182f120a92aa