rocketio 0.0.4 → 0.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac3f7fe3763afbbeeb150a57c2c6a7c9035f69ac
4
- data.tar.gz: fe5bc128ab925c17d8e42a9e1a4b39c85412eea8
3
+ metadata.gz: 942f43f23ee1bc2f6bb2e18dcf097be9dab83ee4
4
+ data.tar.gz: 1b08c4e3b19666272ca2489f514b069d835e79dc
5
5
  SHA512:
6
- metadata.gz: 9dd0a9f073d34f056e7201930adaeddfe69fa79d7552bc6da01c0cbbce52e0b9e9d2300f2a10510ec634ee4da5aa6b5de856bdb1328eb4e62784f8474a8a3bdf
7
- data.tar.gz: 9f7c2206703d808ce8c0e05f8879030ab404ceee35270f7f8132cab34fb4dd933ef48a88af14672e3974ac3f9ae71a0180a3af28f34184397230793c9ac9b918
6
+ metadata.gz: 3ed0309cf937f7d1828b952ba00781d9aab142f75fb9df192fcb8c17698d9bd0e5d3c9aca341e797de078fcb55f456c9eeccc0101645df61ae926441b974766f
7
+ data.tar.gz: 84c5a944dcabaa1150817e7e63a0acbb066e292016c27e69a18a70cfca68f0014206b711d97851afc1aff3f4f25b27e63ad4843af822ac9ebfd090f9cf7175e0
@@ -77,9 +77,19 @@ module RocketIO
77
77
 
78
78
  # render a template that yields the given block.
79
79
  # that's it, a layout is a template that yields given string.
80
+ #
81
+ # layout can be specified two ways:
82
+ # - as layout name
83
+ # - as string
84
+ #
85
+ # if both given a ArgumentError error raised.
86
+ # if :template option given, no layout lookups will occur.
87
+ #
88
+ # otherwise...
80
89
  # if no layout name given, it will use the one set at class level.
81
90
  # if no layout set at class level and no layout given, it will raise a RuntimeError.
82
- # it will firstly search for given layout between defined ones.
91
+ #
92
+ # then it will search for given layout between defined ones.
83
93
  # if none found, it will search a file in `path_to_layouts` folder.
84
94
  # it will try each extension registered with effective engine.
85
95
  # if no file found it will raise a TemplateError.
@@ -87,11 +97,19 @@ module RocketIO
87
97
  # block is required and should return the string to be yielded.
88
98
  #
89
99
  def render_layout template = nil, opts = {}, &block
100
+ template && opts[:template] && raise(ArgumentError, 'Both layout name and :template option given. Please use either one.')
101
+
90
102
  opts, template = template, nil if template.is_a?(::Hash)
91
- template ||= self.layout
92
- template || raise(RocketIO::LayoutError, 'No default layout set and no explicit layout given')
93
103
  engine, engine_opts = resolve_engine(opts)
94
- template = resolve_layout(template, engine)
104
+ template = if template
105
+ resolve_layout(template, engine)
106
+ else
107
+ opts[:template] || begin
108
+ self.layout || raise(RocketIO::LayoutError, 'No default layout set and no explicit layout given')
109
+ resolve_layout(self.layout, engine)
110
+ end
111
+ end
112
+
95
113
  scope = opts.fetch(:scope, self)
96
114
  locals = opts.fetch(:locals, RocketIO::EMPTY_HASH).freeze
97
115
  compile_template(template, engine, engine_opts)
@@ -1,3 +1,3 @@
1
1
  module RocketIO
2
- VERSION = '0.0.4'.freeze
2
+ VERSION = '0.0.5'.freeze
3
3
  end
@@ -100,5 +100,20 @@ spec :Views do
100
100
  post
101
101
  assert(last_response).is_ok_with_body('y')
102
102
  end
103
+
104
+ it 'accepts layout as :template option' do
105
+ app mock_controller {
106
+ def get; render_layout(template: '+<%= yield %>+') {'='}; end
107
+ }
108
+ get
109
+ assert(last_response).is_ok_with_body('+=+')
110
+ end
111
+
112
+ it 'raises ArgumentError if both layout name and :template option given' do
113
+ app mock_controller {
114
+ def get; render_layout(:x, template: '+<%= yield %>+') {'='}; end
115
+ }
116
+ assert {get}.raise ArgumentError, /both/i
117
+ end
103
118
  end
104
119
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocketio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Slee Woo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-14 00:00:00.000000000 Z
11
+ date: 2016-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -207,8 +207,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
207
  version: '0'
208
208
  requirements: []
209
209
  rubyforge_project:
210
- rubygems_version: 2.5.1
210
+ rubygems_version: 2.4.5.1
211
211
  signing_key:
212
212
  specification_version: 4
213
- summary: '["rocketio-0.0.4", "Simple, fast, scalable web framework for Ruby"]'
213
+ summary: '["rocketio-0.0.5", "Simple, fast, scalable web framework for Ruby"]'
214
214
  test_files: []