petroglyph 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - rbx-19mode
6
+
7
+ script: rspec spec
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  A simple, terse, and unsurprising ruby dsl to create json views.
4
4
 
5
+ [![Build Status](https://secure.travis-ci.org/kytrinyx/petroglyph.png?branch=master)](http://travis-ci.org/kytrinyx/petroglyph)
6
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/kytrinyx/petroglyph)
7
+
5
8
  ## Usage
6
9
 
7
10
  Add a node with a simple value:
@@ -85,13 +88,18 @@ In your controller:
85
88
 
86
89
  Support for partials is non-standard at this time: create a subdirectory in the directory that your template lives in and call it `partials`.
87
90
 
91
+ ## Sinatra
92
+
93
+ This works with version 1.3 of Sinatra. It may work with earlier versions.
94
+
95
+ There is a known incompatibility in Sinatra versions prior to 1.3 where a local variable named `post` will crash with Sinatra's HTTP `post` action.
96
+ The same goes for `get`, `head`, `put`, etc, but these are less likely to be resources in your application.
97
+
88
98
 
89
99
  ## Caveat
90
100
 
91
101
  There is currently no support for instance variables in Sinatra and Rails 3.
92
102
 
93
- Avoid using `post` as a local variable name in sinatra. Since the template context in sinatra is the controller, calling `post` from your template will call the http `post` action. Same goes for `get`, `head`, `put`, etc, but these are less likely to be resources in your application.
94
-
95
103
  ## Related Projects
96
104
 
97
105
  Other json templating libraries exist, some of which also generate XML.
@@ -1,3 +1,3 @@
1
1
  module Petroglyph
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/petroglyph.gemspec CHANGED
@@ -20,6 +20,6 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_runtime_dependency "tilt"
22
22
  s.add_development_dependency "rspec"
23
- s.add_development_dependency "sinatra"
23
+ s.add_development_dependency "sinatra", ">= 1.3"
24
24
  s.add_development_dependency "rack-test"
25
25
  end
data/spec/engine_spec.rb CHANGED
@@ -1,24 +1,24 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Petroglyph::Engine do
4
- specify "#to_hash" do
5
- engine = Petroglyph::Engine.new('node :whatever => thing')
6
- engine.to_hash({:thing => 'stuff'}).should eq({:whatever => 'stuff'})
4
+ specify "#to_hash takes local variables and passes them to the template" do
5
+ engine = Petroglyph::Engine.new('node :beverage => drink')
6
+ engine.to_hash({:drink => 'espresso'}).should eq({:beverage => 'espresso'})
7
7
  end
8
8
 
9
9
  it "takes a template" do
10
- engine = Petroglyph::Engine.new('node :whatever => "nevermind"')
11
- engine.render.should eq({:whatever => "nevermind"}.to_json)
10
+ engine = Petroglyph::Engine.new('node :beverage => "no, thanks"')
11
+ engine.render.should eq({:beverage => "no, thanks"}.to_json)
12
12
  end
13
13
 
14
14
  it "takes a block" do
15
15
  Petroglyph::Engine.new.render do
16
- node :whatever => "nevermind"
17
- end.should eq({:whatever => "nevermind"}.to_json)
16
+ node :beverage => "hot chocolate"
17
+ end.should eq({:beverage => "hot chocolate"}.to_json)
18
18
  end
19
19
 
20
20
  it "passes the locals" do
21
- engine = Petroglyph::Engine.new('node :whatever => thing')
22
- engine.render(nil, {:thing => 'stuff'}).should eq({:whatever => 'stuff'}.to_json)
21
+ engine = Petroglyph::Engine.new('node :beverage => drink')
22
+ engine.render(nil, {:drink => 'bai mu cha'}).should eq({:beverage => 'bai mu cha'}.to_json)
23
23
  end
24
24
  end
@@ -1 +1 @@
1
- partial :the_partial, :thing => 'stuff'
1
+ partial :the_partial, :drink => 'stuff'
@@ -1 +1 @@
1
- node :thing => thing
1
+ node :beverage => drink
@@ -1,3 +1,3 @@
1
1
  node :root do
2
- partial :the_partial, :thing => 'stuff'
2
+ partial :the_partial, :drink => 'stuff'
3
3
  end
data/spec/scope_spec.rb CHANGED
@@ -2,223 +2,227 @@ require 'spec_helper'
2
2
 
3
3
  describe Petroglyph::Scope do
4
4
 
5
- it "takes a simple string value" do
5
+ it 'takes a simple string value' do
6
6
  scope = Petroglyph::Scope.new
7
- scope.node :whatever => "nevermind"
8
- scope.value.should eq(:whatever => "nevermind")
7
+ scope.node :beverage => 'soda pop'
8
+ scope.value.should eq(:beverage => 'soda pop')
9
9
  end
10
10
 
11
- it "merges in a hash" do
12
- tea = {:tea => {:temperature => 'hot', :type => 'wulong'}}
11
+ it 'merges in a hash' do
12
+ tea = {:tea => {:type => 'wulong', :temperature => 'hot'}}
13
13
 
14
14
  scope = Petroglyph::Scope.new
15
15
  scope.merge tea
16
- scope.value.should eq({:tea => {:temperature => "hot", :type => 'wulong'}})
16
+ scope.value.should eq({:tea => {:type => 'wulong', :temperature => 'hot'}})
17
17
  end
18
18
 
19
- it "merges within a block" do
19
+ it 'merges within a block' do
20
20
  scope = Petroglyph::Scope.new
21
- scope.node :whatever do
22
- merge(:stuff => {:no => :way})
21
+ scope.node :beverage do
22
+ merge('espresso' => {:shots => 2})
23
23
  end
24
24
 
25
- scope.value.should eq({:whatever => {:stuff => {:no => :way}}})
25
+ scope.value.should eq({:beverage => {'espresso' => {:shots => 2}}})
26
26
  end
27
27
 
28
- it "lets you process what you merge in a block" do
28
+ it 'lets you process what you merge in a block' do
29
29
  scope = Petroglyph::Scope.new
30
- scope.node :whatever do
31
- merge(10) do
32
- attributes :to_s
30
+ drink = 'Zombie Driver'
31
+ def drink.tagline
32
+ 'Take your mind off the apocalypse!'
33
+ end
34
+ scope.node :beverage do
35
+ merge(drink) do
36
+ attributes :tagline
33
37
  end
34
38
  end
35
39
 
36
- scope.value.should eq({:whatever => {:to_s => '10'}})
40
+ scope.value.should eq({:beverage => {:tagline => 'Take your mind off the apocalypse!'}})
37
41
  end
38
42
 
39
- it "handles sibling nodes" do
43
+ it 'handles sibling nodes' do
40
44
  scope = Petroglyph::Scope.new
41
- scope.node :whatever => "nevermind"
42
- scope.node :stuff => "awesome"
45
+ scope.node :beverage => 'bubble milk tea'
46
+ scope.node :price => 2.5
43
47
 
44
- scope.value.should eq({:whatever => "nevermind", :stuff => "awesome"})
48
+ scope.value.should eq({:beverage => 'bubble milk tea', :price => 2.5})
45
49
  end
46
50
 
47
- it "handles sibling nodes as blocks" do
51
+ it 'handles sibling nodes as blocks' do
48
52
  scope = Petroglyph::Scope.new
49
- scope.node :whatever => "nevermind"
50
- scope.node :stuff do
51
- merge(:too => :cool)
53
+ scope.node :beverage => 'root beer float'
54
+ scope.node :ingredients do
55
+ merge(:ice_cream => 'vanilla', :root_beer => 'to taste')
52
56
  end
53
57
 
54
- scope.value.should eq({:whatever => "nevermind", :stuff => {:too => :cool}})
58
+ scope.value.should eq({:beverage => 'root beer float', :ingredients => {:ice_cream => 'vanilla', :root_beer => 'to taste'}})
55
59
  end
56
60
 
57
- it "nests nodes" do
61
+ it 'nests nodes' do
58
62
  scope = Petroglyph::Scope.new
59
- scope.node :whatever do
60
- node :stuff => "awesome"
63
+ scope.node :beverage do
64
+ node :tea => 'black'
61
65
  end
62
66
 
63
- scope.value.should eq({:whatever => {:stuff => 'awesome'}})
67
+ scope.value.should eq({:beverage => {:tea => 'black'}})
64
68
  end
65
69
 
66
- it "nests stuff arbitrarily deeply with complex values" do
70
+ it 'nests stuff arbitrarily deeply with complex values' do
67
71
  scope = Petroglyph::Scope.new
68
72
  scope.node :drink do
69
73
  node :tea do
70
74
  node :temperature do
71
- merge(:really => :hot)
75
+ merge(:really => 'hot')
72
76
  end
73
77
  end
74
78
  end
75
79
 
76
- scope.value.should eq({:drink => {:tea => {:temperature => {:really => :hot}}}})
80
+ scope.value.should eq({:drink => {:tea => {:temperature => {:really => 'hot'}}}})
77
81
  end
78
82
 
79
- it "uses regular ruby" do
83
+ it 'uses regular ruby' do
80
84
  scope = Petroglyph::Scope.new
81
- scope.node :drink do
85
+ scope.node :beverage do
82
86
  if false
83
- "cold"
87
+ 'hot'
84
88
  else
85
89
  node(:tea) do
86
- merge(:temperature => "hot".upcase)
90
+ merge(:temperature => 'iced'.upcase)
87
91
  end
88
92
  end
89
93
  end
90
94
 
91
- scope.value.should eq({:drink => {:tea => {:temperature => "HOT"}}})
95
+ scope.value.should eq({:beverage => {:tea => {:temperature => 'ICED'}}})
92
96
  end
93
97
 
94
- context "with locals" do
95
- let(:scope) { Petroglyph::Scope.new(nil, {:thing => 'stuff'}) }
98
+ context 'with locals' do
99
+ let(:scope) { Petroglyph::Scope.new(nil, {:drink => 'strawberry daikiri'}) }
96
100
 
97
101
  before(:each) do
98
102
  scope.instance_eval do
99
- node :thing => thing
103
+ node :beverage => drink
100
104
  end
101
105
  end
102
106
 
103
- it "resolves values" do
104
- scope.value.should eq({:thing => 'stuff'})
107
+ it 'resolves values' do
108
+ scope.value.should eq({:beverage => 'strawberry daikiri'})
105
109
  end
106
110
 
107
- it "responds to existing locals" do
108
- scope.respond_to?(:thing).should == true
111
+ it 'responds to existing locals' do
112
+ scope.respond_to?(:drink).should == true
109
113
  end
110
114
 
111
115
  it "doesn't respond to missing locals" do
112
116
  scope.respond_to?(:not_a_thing).should == false
113
117
  end
114
118
 
115
- it "doesn't clobber :respond_to?" do
119
+ it "doesn't clobber :respond_to? for existing methods" do
116
120
  scope.respond_to?(:value).should == true
117
121
  end
118
122
  end
119
123
 
120
- describe "within a context" do
121
- it "has access to methods" do
124
+ describe 'within a context' do
125
+ it 'has access to methods' do
122
126
  context = Object.new
123
- def context.thing
124
- 'stuff'
127
+ def context.drink
128
+ 'tisane'
125
129
  end
126
130
 
127
131
  scope = Petroglyph::Scope.new(context)
128
132
  scope.instance_eval do
129
- node :thing => thing
133
+ node :beverage => drink
130
134
  end
131
- scope.value.should eq({:thing => 'stuff'})
135
+ scope.value.should eq({:beverage => 'tisane'})
132
136
  end
133
137
 
134
- it "lets local variables take precedence over methods" do
138
+ it 'lets local variables take precedence over methods' do
135
139
  context = Object.new
136
- def context.thing
137
- 'junk'
140
+ def context.drink
141
+ 'coffee'
138
142
  end
139
143
 
140
- scope = Petroglyph::Scope.new(context, {:thing => 'stuff'})
144
+ scope = Petroglyph::Scope.new(context, {:drink => 'rooiboos tea'})
141
145
  scope.instance_eval do
142
- node :thing => thing
146
+ node :beverage => drink
143
147
  end
144
- scope.value.should eq({:thing => 'stuff'})
148
+ scope.value.should eq({:beverage => 'rooiboos tea'})
145
149
  end
146
150
  end
147
151
 
148
- describe "attributes" do
149
- it "evaluates on an object" do
150
- hal = OpenStruct.new(:name => 'HAL 9000', :temperament => 'psychotic', :garbage => 'junk')
152
+ describe 'attributes' do
153
+ it 'evaluates on an object' do
154
+ drink = OpenStruct.new(:name => "Grandma's Herb Garden", :temperature => 'luke warm', :origin => 'the garden')
151
155
 
152
156
  scope = Petroglyph::Scope.new
153
- scope.node :hal => hal do
154
- attributes :name, :temperament
157
+ scope.node :beverage => drink do
158
+ attributes :name, :temperature
155
159
  end
156
160
 
157
- scope.value.should eq({:hal => {:name => 'HAL 9000', :temperament => 'psychotic'}})
161
+ scope.value.should eq({:beverage => {:name => "Grandma's Herb Garden", :temperature => 'luke warm'}})
158
162
  end
159
163
 
160
- it "evaluates on a hash" do
161
- hal = {:name => 'HAL 9000', :temperament => 'psychotic', :garbage => 'junk'}
164
+ it 'evaluates on a hash' do
165
+ drink = {:name => 'darjeeling', :temperature => 'piping hot', :origin => 'the store'}
162
166
 
163
167
  scope = Petroglyph::Scope.new
164
- scope.node :hal => hal do
165
- attributes :name, :temperament
168
+ scope.node :beverage => drink do
169
+ attributes :name, :temperature
166
170
  end
167
171
 
168
- scope.value.should eq({:hal => {:name => 'HAL 9000', :temperament => 'psychotic'}})
172
+ scope.value.should eq({:beverage => {:name => 'darjeeling', :temperature => 'piping hot'}})
169
173
  end
170
174
  end
171
175
 
172
- context "with a collection" do
176
+ context 'with a collection' do
173
177
  let(:tea) { OpenStruct.new(:type => 'tea', :temperature => 'hot') }
174
- let(:coffee) { OpenStruct.new(:type => 'coffee', :temperature => 'lukewarm') }
178
+ let(:coffee) { OpenStruct.new(:type => 'coffee', :temperature => 'warm') }
175
179
  let(:drinks) { [tea, coffee] }
176
180
 
177
- it "evaluates attributes" do
181
+ it 'evaluates attributes' do
178
182
  scope = Petroglyph::Scope.new
179
- scope.collection :drinks => drinks do
183
+ scope.collection :beverages => drinks do
180
184
  attributes :type, :temperature
181
185
  end
182
186
 
183
- scope.value.should eq({:drinks => [{:type => 'tea', :temperature => 'hot'}, {:type => 'coffee', :temperature => 'lukewarm'}]})
187
+ scope.value.should eq({:beverages => [{:type => 'tea', :temperature => 'hot'}, {:type => 'coffee', :temperature => 'warm'}]})
184
188
  end
185
189
 
186
- it "evaluates attributes on explicitly named items" do
190
+ it 'evaluates attributes on explicitly named items' do
187
191
  scope = Petroglyph::Scope.new
188
- scope.collection :drinks => drinks do |drink|
192
+ scope.collection :beverages => drinks do |drink|
189
193
  node :drink do
190
194
  node :type => drink.type
191
195
  end
192
196
  node :prep => "Make water #{drink.temperature}."
193
197
  end
194
198
 
195
- scope.value.should eq({:drinks => [{:drink => {:type => 'tea'}, :prep => "Make water hot."}, {:drink => {:type => 'coffee'}, :prep => "Make water lukewarm."}]})
199
+ scope.value.should eq({:beverages => [{:drink => {:type => 'tea'}, :prep => 'Make water hot.'}, {:drink => {:type => 'coffee'}, :prep => 'Make water warm.'}]})
196
200
  end
197
201
 
198
- it "evaluates object attributes within a sub node" do
202
+ it 'evaluates object attributes within a sub node' do
199
203
  scope = Petroglyph::Scope.new
200
- scope.collection :drinks => drinks do |drink|
204
+ scope.collection :beverages => drinks do |drink|
201
205
  node :drink => drink do
202
206
  attributes :type
203
207
  end
204
- node :prep => "Make water #{drink.temperature}."
208
+ node :prep => "Water should be #{drink.temperature}."
205
209
  end
206
210
 
207
- scope.value.should eq({:drinks => [{:drink => {:type => 'tea'}, :prep => "Make water hot."}, {:drink => {:type => 'coffee'}, :prep => "Make water lukewarm."}]})
211
+ scope.value.should eq({:beverages => [{:drink => {:type => 'tea'}, :prep => 'Water should be hot.'}, {:drink => {:type => 'coffee'}, :prep => 'Water should be warm.'}]})
208
212
  end
209
213
 
210
- it "evaluates an empty collection to an empty array" do
214
+ it 'evaluates an empty collection to an empty array' do
211
215
  scope = Petroglyph::Scope.new
212
- scope.collection :drinks => [] do |drink|
216
+ scope.collection :beverages => [] do |drink|
213
217
  node :drink => drink
214
218
  end
215
219
 
216
- scope.value.should eq({:drinks => []})
220
+ scope.value.should eq({:beverages => []})
217
221
  end
218
222
  end
219
223
 
220
- context "with partials" do
221
- it "renders a partial" do
224
+ context 'with partials' do
225
+ it 'renders a partial' do
222
226
  Petroglyph.stub(:partial) { 'node :drink => "tea"' }
223
227
 
224
228
  scope = Petroglyph::Scope.new
@@ -229,7 +233,7 @@ describe Petroglyph::Scope do
229
233
  scope.value.should eq({:partial => {:drink => 'tea'}})
230
234
  end
231
235
 
232
- it "renders a partial with local variables" do
236
+ it 'renders a partial with local variables' do
233
237
  Petroglyph.stub(:partial) { 'node :drink => drink' }
234
238
 
235
239
  scope = Petroglyph::Scope.new
@@ -240,30 +244,32 @@ describe Petroglyph::Scope do
240
244
  scope.value.should eq({:partial => {:drink => 'tea'}})
241
245
  end
242
246
 
243
- it "defaults locals to match the name of the partial" do
244
- Petroglyph.stub(:partial) { 'node :drink => drink' }
247
+ it 'defaults locals to match the name of the partial' do
248
+ Petroglyph.stub(:partial) { 'node :beverage => drink' }
245
249
 
246
250
  scope = Petroglyph::Scope.new(nil, {:drink => 'coffee'})
247
- scope.node :drinks do
251
+ scope.node :beverages do
248
252
  partial :drink
249
253
  end
250
254
 
251
- scope.value.should eq({:drinks => {:drink => 'coffee'}})
255
+ scope.value.should eq({:beverages => {:beverage => 'coffee'}})
252
256
  end
253
257
 
254
- it "finds the partial" do
258
+ it 'finds the partial' do
255
259
  scope = Petroglyph::Scope.new
256
- scope.file = "spec/fixtures/views/some_template.pg"
260
+ # Pretend that this node is defined in some_template
261
+ # so that we have a decent relative path for the partial.
262
+ scope.file = 'spec/fixtures/views/some_template.pg'
257
263
  scope.node :partial do
258
- partial :the_partial, :thing => 'stuff'
264
+ partial :the_partial, :drink => 'mocha'
259
265
  end
260
266
 
261
- scope.value.should eq({:partial => {:thing => 'stuff'}})
267
+ scope.value.should eq({:partial => {:beverage => 'mocha'}})
262
268
  end
263
269
 
264
- it "finds the partial in a subdirectory" do
270
+ it 'finds the partial in a subdirectory' do
265
271
  scope = Petroglyph::Scope.new
266
- scope.file = "spec/fixtures/views/some_template.pg"
272
+ scope.file = 'spec/fixtures/views/some_template.pg'
267
273
  scope.node :partial do
268
274
  partial :sub_partial, :thing => 'stuff'
269
275
  end
@@ -271,15 +277,15 @@ describe Petroglyph::Scope do
271
277
  scope.value.should eq({:partial => {:thing => 'stuff'}})
272
278
  end
273
279
 
274
- it "finds nested partials" do
280
+ it 'finds nested partials' do
275
281
  scope = Petroglyph::Scope.new
276
- scope.file = "spec/fixtures/views/some_template.pg"
282
+ scope.file = 'spec/fixtures/views/some_template.pg'
277
283
 
278
284
  scope.node :partial do
279
285
  partial :nested_partial
280
286
  end
281
287
 
282
- scope.value.should eq({:partial => {:thing => 'stuff'}})
288
+ scope.value.should eq({:partial => {:beverage => 'stuff'}})
283
289
  end
284
290
  end
285
291
  end
@@ -30,10 +30,7 @@ describe "Sinatra integration" do
30
30
  last_response.body.should eq '{"drinks":[{"type":"tea","temperature":"hot"},{"type":"coffee","temperature":"lukewarm"}]}'
31
31
  end
32
32
 
33
- it "overshadows the controller methods" do
34
- # look at /views/fixtures/post.pg
35
- # and line 18 of this file
36
- pending "right now if you refer to a local var 'post' in the template, you will accidentally call sinatra's post method"
33
+ it "doesn't get overshadowed by controller methods (issue #5)" do
37
34
  post '/'
38
35
  last_response.body.should eq "{\"post\":\"a post\"}"
39
36
  end
data/spec/tilt_spec.rb CHANGED
@@ -32,7 +32,7 @@ describe "Tilt integration" do
32
32
  context "with partials" do
33
33
  it "loads the partial" do
34
34
  template = Tilt::PetroglyphTemplate.new('spec/fixtures/views/with_partial.pg')
35
- template.render.should eq('{"root":{"thing":"stuff"}}')
35
+ template.render.should eq('{"root":{"beverage":"stuff"}}')
36
36
  end
37
37
 
38
38
  it "loads the partial from a subdirectory" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: petroglyph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-18 00:00:00.000000000 Z
12
+ date: 2013-01-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: tilt
16
- requirement: &70270581389760 !ruby/object:Gem::Requirement
16
+ requirement: &70296704591240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70270581389760
24
+ version_requirements: *70296704591240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70270581388680 !ruby/object:Gem::Requirement
27
+ requirement: &70296704590820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,21 +32,21 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70270581388680
35
+ version_requirements: *70296704590820
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sinatra
38
- requirement: &70270581387860 !ruby/object:Gem::Requirement
38
+ requirement: &70296704590320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
- version: '0'
43
+ version: '1.3'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70270581387860
46
+ version_requirements: *70296704590320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rack-test
49
- requirement: &70270581387260 !ruby/object:Gem::Requirement
49
+ requirement: &70296704589900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70270581387260
57
+ version_requirements: *70296704589900
58
58
  description: A simple, terse, and unsurprising ruby dsl to create json views.
59
59
  email:
60
60
  - katrina.owen@gmail.com
@@ -65,6 +65,7 @@ files:
65
65
  - .gitignore
66
66
  - .rspec
67
67
  - .simplecov
68
+ - .travis.yml
68
69
  - Gemfile
69
70
  - README.md
70
71
  - Rakefile
@@ -118,3 +119,4 @@ signing_key:
118
119
  specification_version: 3
119
120
  summary: A simple, terse, and unsurprising ruby dsl to create json views.
120
121
  test_files: []
122
+ has_rdoc: