lspace 0.10 → 0.11

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