lspace 0.10 → 0.11

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/lib/lspace.rb CHANGED
@@ -82,6 +82,18 @@ class LSpace
82
82
  hash[key] = value
83
83
  end
84
84
 
85
+ # Return the list of keys in the current LSpace or its parents.
86
+ #
87
+ # @example
88
+ # parent = LSpace.new(:user_id => 5)
89
+ # child = LSpace.new(:friend_id => 7, parent)
90
+ # child.keys == [:user_id, :friend_id]
91
+ #
92
+ # @return [Array]
93
+ def keys
94
+ hierarchy.flat_map{ |lspace| lspace.hash.keys }.uniq
95
+ end
96
+
85
97
  # Add an around_filter to this LSpace.
86
98
  #
87
99
  # Around filters are blocks that take a block-parameter. They are called whenever
@@ -121,6 +121,13 @@ class LSpace
121
121
  current[key] = value
122
122
  end
123
123
 
124
+ # Find all the keys currently in LSpace
125
+ #
126
+ # @see LSpace#keys
127
+ def self.keys
128
+ current.keys
129
+ end
130
+
124
131
  # Add an around filter to the current LSpace
125
132
  #
126
133
  # @see LSpace#around_filter
data/lspace.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "lspace"
3
- s.version = "0.10"
3
+ s.version = "0.11"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.author = "Conrad Irwin"
6
6
  s.email = "conrad.irwin@gmail.com"
data/spec/lspace_spec.rb CHANGED
@@ -136,6 +136,22 @@ describe LSpace do
136
136
  end
137
137
  end
138
138
 
139
+ describe "#keys" do
140
+ it "should return keys in the current LSpace" do
141
+ @lspace.keys.should == [:foo]
142
+ end
143
+
144
+ it "should return keys from the parents" do
145
+ child = LSpace.new({:bar => 7}, @lspace)
146
+ child.keys.should == [:bar, :foo]
147
+ end
148
+
149
+ it "should not contain duplicates" do
150
+ child = LSpace.new({:foo => 7}, @lspace)
151
+ @lspace.keys.should == [:foo]
152
+ end
153
+ end
154
+
139
155
  describe "#hierarchy" do
140
156
  it "should return [self] if there is no parent" do
141
157
  @lspace.hierarchy.should == [@lspace]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lspace
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.10'
4
+ version: '0.11'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,120 +9,120 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-23 00:00:00.000000000 Z
12
+ date: 2013-04-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- type: :development
15
+ name: rspec
16
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
17
18
  requirements:
18
19
  - - ! '>='
19
20
  - !ruby/object:Gem::Version
20
21
  version: '0'
21
- none: false
22
+ type: :development
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
26
29
  version: '0'
27
- none: false
28
- prerelease: false
29
- name: rspec
30
30
  - !ruby/object:Gem::Dependency
31
- type: :development
31
+ name: pry-rescue
32
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
33
34
  requirements:
34
35
  - - ! '>='
35
36
  - !ruby/object:Gem::Version
36
37
  version: '0'
37
- none: false
38
+ type: :development
39
+ prerelease: false
38
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
39
42
  requirements:
40
43
  - - ! '>='
41
44
  - !ruby/object:Gem::Version
42
45
  version: '0'
43
- none: false
44
- prerelease: false
45
- name: pry-rescue
46
46
  - !ruby/object:Gem::Dependency
47
- type: :development
47
+ name: pry-stack_explorer
48
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
49
50
  requirements:
50
51
  - - ! '>='
51
52
  - !ruby/object:Gem::Version
52
53
  version: '0'
53
- none: false
54
+ type: :development
55
+ prerelease: false
54
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
55
58
  requirements:
56
59
  - - ! '>='
57
60
  - !ruby/object:Gem::Version
58
61
  version: '0'
59
- none: false
60
- prerelease: false
61
- name: pry-stack_explorer
62
62
  - !ruby/object:Gem::Dependency
63
- type: :development
63
+ name: eventmachine
64
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
65
66
  requirements:
66
67
  - - ! '>='
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
69
- none: false
70
+ type: :development
71
+ prerelease: false
70
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
71
74
  requirements:
72
75
  - - ! '>='
73
76
  - !ruby/object:Gem::Version
74
77
  version: '0'
75
- none: false
76
- prerelease: false
77
- name: eventmachine
78
78
  - !ruby/object:Gem::Dependency
79
- type: :development
79
+ name: celluloid
80
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
81
82
  requirements:
82
83
  - - ! '>='
83
84
  - !ruby/object:Gem::Version
84
85
  version: '0'
85
- none: false
86
+ type: :development
87
+ prerelease: false
86
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
87
90
  requirements:
88
91
  - - ! '>='
89
92
  - !ruby/object:Gem::Version
90
93
  version: '0'
91
- none: false
92
- prerelease: false
93
- name: celluloid
94
94
  - !ruby/object:Gem::Dependency
95
- type: :development
95
+ name: yard
96
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
97
98
  requirements:
98
99
  - - ! '>='
99
100
  - !ruby/object:Gem::Version
100
101
  version: '0'
101
- none: false
102
+ type: :development
103
+ prerelease: false
102
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
103
106
  requirements:
104
107
  - - ! '>='
105
108
  - !ruby/object:Gem::Version
106
109
  version: '0'
107
- none: false
108
- prerelease: false
109
- name: yard
110
110
  - !ruby/object:Gem::Dependency
111
- type: :development
111
+ name: redcarpet
112
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
113
114
  requirements:
114
115
  - - ! '>='
115
116
  - !ruby/object:Gem::Version
116
117
  version: '0'
117
- none: false
118
+ type: :development
119
+ prerelease: false
118
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
119
122
  requirements:
120
123
  - - ! '>='
121
124
  - !ruby/object:Gem::Version
122
125
  version: '0'
123
- none: false
124
- prerelease: false
125
- name: redcarpet
126
126
  description: Provides the convenience of global variables, without the safety concerns.
127
127
  email: conrad.irwin@gmail.com
128
128
  executables: []
@@ -155,20 +155,20 @@ rdoc_options: []
155
155
  require_paths:
156
156
  - lib
157
157
  required_ruby_version: !ruby/object:Gem::Requirement
158
+ none: false
158
159
  requirements:
159
160
  - - ! '>='
160
161
  - !ruby/object:Gem::Version
161
162
  version: '0'
162
- none: false
163
163
  required_rubygems_version: !ruby/object:Gem::Requirement
164
+ none: false
164
165
  requirements:
165
166
  - - ! '>='
166
167
  - !ruby/object:Gem::Version
167
168
  version: '0'
168
- none: false
169
169
  requirements: []
170
170
  rubyforge_project:
171
- rubygems_version: 1.8.25
171
+ rubygems_version: 1.8.23
172
172
  signing_key:
173
173
  specification_version: 3
174
174
  summary: Provides local global storage