tfg_support 0.0.2 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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