tilt-jbuilder 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40dc9d2196a27a4aadcd81854439e11a71b82272
4
- data.tar.gz: 9b7ecd7198ef0523c0dab1fcc42ce9f685558b37
3
+ metadata.gz: 3479ae47f34755751c8800f0a303dc2452ad0ccd
4
+ data.tar.gz: edede33e7a7235d4875d36f74a6550cfc5b892d6
5
5
  SHA512:
6
- metadata.gz: 371fdddbd99b8b594e8b31448fa6222d68489081061f3b7b3941911d17615485b141a8a3637a4f075f6053df6b5397f1af5f96b75498ab1641b4ab0908eb9a62
7
- data.tar.gz: ea598e45b92badde16d01814025431de6ce6cad33af672f4c789974be22669d8f18f61c442c64e5f2edc0f5806790bd7c0e057c429ffb448739a2b3917b53a2b
6
+ metadata.gz: 3c18a29f7da6f6402d91ba959b0677564c504178656070cb4f763b82f2fe085c588a0ceb89fdd4a0ead5b638664e211742864e97deb80457bada32d59838f82b
7
+ data.tar.gz: bcf3903c08e27aea78be98e7085b35410f936b0ba4fefc7a5ea553176acb12268dc07498a8498d450cfc876494964e3cda328f89f396516b4b480a888eaa56af
data/.gitignore CHANGED
@@ -16,4 +16,5 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  .rbenv*
19
- .rvmrc
19
+ .rvmrc
20
+ .gems
data/.travis.yml CHANGED
@@ -5,6 +5,10 @@ rvm:
5
5
  - 2.1.0
6
6
  - 2.1.1
7
7
  - 2.1.2
8
+ - 2.1.3
9
+ - 2.1.4
10
+ - 2.1.5
11
+ - 2.2.0
8
12
  - ruby-head
9
13
  - jruby-19mode
10
14
  - jruby-head
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  gem 'rake'
4
4
 
5
5
  group :development do
6
- gem 'coveralls', :require => false
6
+ gem 'coveralls', require: false
7
7
  end
8
8
 
9
9
  group :test do
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # tilt-jbuilder [![endorse](http://api.coderwall.com/anthonator/endorsecount.png)](http://coderwall.com/anthonator)
1
+ # tilt-jbuilder
2
2
 
3
3
  Adds support for rendering Jbuilder templates using Tilt.
4
4
 
@@ -24,7 +24,7 @@ Or install it yourself as:
24
24
  require 'tilt/jbuilder.rb'
25
25
 
26
26
  template = Tilt::JbuilderTemplate.new("templates/awesomeness.json.jbuilder")
27
- teplate.render
27
+ template.render
28
28
 
29
29
  # With locals
30
30
  template = Tilt::JbuilderTemplate.new { "json.author name" }
@@ -52,8 +52,8 @@ template.render
52
52
 
53
53
  ## Credits
54
54
 
55
- [![Sticksnleaves](http://sticksnleaves-wordpress.herokuapp.com/wp-content/themes/sticksnleaves/images/snl-logo-116x116.png)](http://www.sticksnleaves.com)
55
+ [![Sticksnleaves](https://s3.amazonaws.com/sticksnleaves-assets/snl-logo-116x116.png)](http://www.sticksnleaves.com)
56
56
 
57
57
  tilt-jbuilder is maintained and funded by [Sticksnleaves](http://www.sticksnleaves.com)
58
58
 
59
- Thanks to all of our [contributors](https://github.com/anthonator/tilt-jbuilder/graphs/contributors)
59
+ Thanks to all of our [contributors](https://github.com/anthonator/tilt-jbuilder/graphs/contributors)
data/lib/tilt/jbuilder.rb CHANGED
@@ -8,11 +8,37 @@ module Tilt
8
8
  super(*args, &block)
9
9
  end
10
10
 
11
- def partial!(options, locals = {})
12
- locals.merge! :json => self
11
+ def partial!(name_or_options, locals = {})
12
+ case name_or_options
13
+ when ::Hash
14
+ # partial! partial: 'name', locals: { foo: 'bar' }
15
+ options = name_or_options
16
+ else
17
+ # partial! 'name', foo: 'bar'
18
+ options = { partial: name_or_options, locals: locals }
19
+ as = locals.delete(:as)
20
+ options[:as] = as if as.present?
21
+ options[:collection] = locals[:collection] if locals.key?(:collection)
22
+ end
23
+
13
24
  view_path = @scope.instance_variable_get('@_jbuilder_view_path')
14
- template = ::Tilt::JbuilderTemplate.new(fetch_partial_path(options.to_s, view_path), nil, view_path: view_path)
15
- template.render(@scope, locals)
25
+ @template = ::Tilt::JbuilderTemplate.new(fetch_partial_path(options[:partial].to_s, view_path), nil, view_path: view_path)
26
+ render_partial_with_options options
27
+ end
28
+
29
+ def array!(collection = [], *attributes, &block)
30
+ options = attributes.extract_options!
31
+
32
+ if options.key?(:partial)
33
+ partial! options[:partial], options.merge(collection: collection)
34
+ else
35
+ super
36
+ end
37
+ end
38
+
39
+ # for now caching is not supported, but at least we can transparently ignore it
40
+ def cache!(key=nil, options={}, &block)
41
+ yield
16
42
  end
17
43
 
18
44
  private
@@ -26,6 +52,26 @@ module Tilt
26
52
  partial_file[-1] = "_#{partial_file[-1]}" unless partial_file[-1].start_with?("_")
27
53
  partial_file.join("/")
28
54
  end
55
+
56
+ def render_partial_with_options(options)
57
+ options[:locals] ||= {}
58
+ if options[:as] && options.key?(:collection)
59
+ collection = options.delete(:collection)
60
+ locals = options.delete(:locals)
61
+ array! collection do |member|
62
+ member_locals = locals.clone
63
+ member_locals.merge! options[:as] => member
64
+ render_partial member_locals
65
+ end
66
+ else
67
+ render_partial options[:locals]
68
+ end
69
+ end
70
+
71
+ def render_partial(options)
72
+ options.merge! json: self
73
+ @template.render @scope, options
74
+ end
29
75
  end
30
76
 
31
77
  class JbuilderTemplate < Template
@@ -2,6 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe 'Sinatra::JSON Integration' do
4
4
  require 'sinatra/json'
5
-
5
+
6
6
  sinatra_integration_tests
7
- end
7
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,9 +4,11 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
4
4
  SimpleCov::Formatter::HTMLFormatter,
5
5
  Coveralls::SimpleCov::Formatter
6
6
  ]
7
- SimpleCov.start
7
+ SimpleCov.start do
8
+ add_filter('.gems')
9
+ end
8
10
 
9
- ENV['RACK_ENV'] ||= "test"
11
+ ENV['RACK_ENV'] ||= 'test'
10
12
 
11
13
  require 'tilt/jbuilder'
12
14
  require 'sinatra/jbuilder'
@@ -0,0 +1 @@
1
+ json.attribute name
@@ -36,6 +36,11 @@ describe Tilt::JbuilderTemplate do
36
36
  "{\"author\":\"Anthony\"}".should == template.render(scope)
37
37
  end
38
38
 
39
+ it "should ignore cache!" do
40
+ template = Tilt::JbuilderTemplate.new { "json.cache! { json.author name }" }
41
+ "{\"author\":\"Anthony\"}".should == template.render(Object.new, :name => 'Anthony')
42
+ end
43
+
39
44
  it "should evaluate block style templates" do
40
45
  template = Tilt::JbuilderTemplate.new do |json|
41
46
  lambda do |json|
@@ -46,13 +51,44 @@ describe Tilt::JbuilderTemplate do
46
51
  "{\"author\":\"Anthony\"}".should == template.render
47
52
  end
48
53
 
49
- it "should evaluate partials" do
50
- template = Tilt::JbuilderTemplate.new { "json.partial! 'spec/partial', last_name: 'Smith'" }
51
- "{\"last_name\":\"Smith\"}".should == template.render
54
+ describe '.partial!' do
55
+ it "should evaluate partials" do
56
+ template = Tilt::JbuilderTemplate.new { "json.partial! 'spec/templates/partial', last_name: 'Smith'" }
57
+ "{\"last_name\":\"Smith\"}".should == template.render
58
+ end
59
+
60
+ it "should evaluate partials with view_path" do
61
+ template = Tilt::JbuilderTemplate.new(nil, nil, view_path: 'spec') { "json.partial! '/templates/partial', last_name: 'Smith'" }
62
+ "{\"last_name\":\"Smith\"}".should == template.render
63
+ end
64
+
65
+ context 'with jbuilder syntax' do
66
+ let(:template) { Tilt::JbuilderTemplate.new { template_body } }
67
+ subject { template.render }
68
+
69
+ context 'with json.partial! "partial", collection: [], as: :name' do
70
+ let(:template_body) { "json.partial! 'spec/templates/collection_partial', collection: ['foo', 'bar'], as: :name" }
71
+ it { is_expected.to eq %q/[{"attribute":"foo"},{"attribute":"bar"}]/ }
72
+ end
73
+
74
+ context 'with json.partial! partial: "partial", collection: [], as: :name' do
75
+ let(:template_body) { "json.partial! partial: 'spec/templates/collection_partial', collection: ['foo', 'bar'], as: :name" }
76
+ it { is_expected.to eq %q/[{"attribute":"foo"},{"attribute":"bar"}]/ }
77
+ end
78
+
79
+ context 'with json.partial! partial: "partial", locals: {}' do
80
+ let(:template_body) { "json.partial! partial: 'spec/templates/partial', locals: { last_name: 'Smith' }" }
81
+ it { is_expected.to eq %q/{"last_name":"Smith"}/ }
82
+ end
83
+ end
52
84
  end
53
85
 
54
- it "should evaluate partials with view_path" do
55
- template = Tilt::JbuilderTemplate.new(nil, nil, view_path: 'spec') { "json.partial! '/partial', last_name: 'Smith'" }
56
- "{\"last_name\":\"Smith\"}".should == template.render
86
+ describe '.array!' do
87
+ let(:template) { Tilt::JbuilderTemplate.new { template_body } }
88
+ subject { template.render }
89
+ context 'with json.array! [], partial: "partial", as: :name' do
90
+ let(:template_body) { "json.array! ['foo', 'bar'], partial: 'spec/templates/collection_partial', as: :name" }
91
+ it { is_expected.to eq %q/[{"attribute":"foo"},{"attribute":"bar"}]/ }
92
+ end
57
93
  end
58
94
  end
@@ -1,20 +1,20 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
- gem.authors = ["Anthony Smith"]
4
- gem.email = ["anthony@sticksnleaves.com"]
5
- gem.description = %q{Jbuilder support for Tilt}
6
- gem.summary = %q{Adds support for rendering Jbuilder templates in Tilt.}
7
- gem.homepage = "https://github.com/anthonator/tilt-jbuilder"
3
+ gem.authors = ['Anthony Smith']
4
+ gem.email = ['anthony@sticksnleaves.com']
5
+ gem.description = 'Jbuilder support for Tilt'
6
+ gem.summary = 'Adds support for rendering Jbuilder templates in Tilt.'
7
+ gem.homepage = 'https://github.com/anthonator/tilt-jbuilder'
8
8
 
9
- gem.add_dependency 'tilt', '<= 1.5.0'
9
+ gem.add_dependency 'tilt', '>= 1.3.0', '< 3'
10
10
  gem.add_dependency 'jbuilder'
11
11
 
12
12
  gem.add_development_dependency 'bundler'
13
13
 
14
- gem.files = `git ls-files`.split($\)
15
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
- gem.name = "tilt-jbuilder"
18
- gem.require_paths = ["lib"]
19
- gem.version = '0.6.1'
14
+ gem.files = `git ls-files`.split($ORS)
15
+ gem.executables = gem.files.grep(/^bin\//).map { |f| File.basename(f) }
16
+ gem.test_files = gem.files.grep(/^(test|spec|features)\//)
17
+ gem.name = 'tilt-jbuilder'
18
+ gem.require_paths = ['lib']
19
+ gem.version = '0.7.0'
20
20
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilt-jbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-26 00:00:00.000000000 Z
11
+ date: 2015-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tilt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "<="
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.0
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: 1.5.0
22
+ version: '3'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "<="
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.0
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: 1.5.0
32
+ version: '3'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: jbuilder
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +73,6 @@ files:
67
73
  - Rakefile
68
74
  - lib/sinatra/jbuilder.rb
69
75
  - lib/tilt/jbuilder.rb
70
- - spec/_partial.json.jbuilder
71
76
  - spec/sinatra_integration_spec.rb
72
77
  - spec/sinatra_json_integration_spec.rb
73
78
  - spec/spec_helper.rb
@@ -78,6 +83,8 @@ files:
78
83
  - spec/support/views/_partial_with_local_variable.jbuilder
79
84
  - spec/support/views/hello.jbuilder
80
85
  - spec/support/views/invalid.jbuilder
86
+ - spec/templates/_collection_partial.json.jbuilder
87
+ - spec/templates/_partial.json.jbuilder
81
88
  - spec/tilt-jbuilder_spec.rb
82
89
  - tilt-jbuilder.gemspec
83
90
  homepage: https://github.com/anthonator/tilt-jbuilder
@@ -99,12 +106,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
106
  version: '0'
100
107
  requirements: []
101
108
  rubyforge_project:
102
- rubygems_version: 2.2.2
109
+ rubygems_version: 2.4.5
103
110
  signing_key:
104
111
  specification_version: 4
105
112
  summary: Adds support for rendering Jbuilder templates in Tilt.
106
113
  test_files:
107
- - spec/_partial.json.jbuilder
108
114
  - spec/sinatra_integration_spec.rb
109
115
  - spec/sinatra_json_integration_spec.rb
110
116
  - spec/spec_helper.rb
@@ -115,4 +121,6 @@ test_files:
115
121
  - spec/support/views/_partial_with_local_variable.jbuilder
116
122
  - spec/support/views/hello.jbuilder
117
123
  - spec/support/views/invalid.jbuilder
124
+ - spec/templates/_collection_partial.json.jbuilder
125
+ - spec/templates/_partial.json.jbuilder
118
126
  - spec/tilt-jbuilder_spec.rb