cells 4.0.2 → 4.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -3
- data/CHANGES.md +7 -0
- data/Gemfile +1 -1
- data/README.md +7 -7
- data/gemfiles/rails3.2.gemfile +7 -0
- data/gemfiles/rails4.0.gemfile +3 -0
- data/gemfiles/rails4.1.gemfile +3 -0
- data/gemfiles/rails4.2.gemfile +4 -1
- data/lib/cell/concept.rb +1 -1
- data/lib/cell/partial.rb +2 -2
- data/lib/cell/rails.rb +1 -1
- data/lib/cell/templates.rb +2 -2
- data/lib/cell/translation.rb +19 -0
- data/lib/cell/version.rb +1 -1
- data/lib/cell/view_model.rb +13 -19
- data/test/partial_test.rb +9 -1
- data/test/public_test.rb +6 -0
- data/test/rails/translation_test.rb +45 -0
- data/test/rails4.2/app/cells/formtastic_cell.rb +1 -0
- data/test/rails_extensions_test.rb +7 -7
- data/test/render_test.rb +14 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bee10d6791664dd2d5b07e42007b4f037d977ce
|
4
|
+
data.tar.gz: badeb19dd989fcb7e04ff0ba194392858ad654ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 455f05a45cf95840609675ed94044f541d0111c0b1d5c0dd2d2cf13516405d8dd666df7d7fa3280fd927fd59711395bf09a7e8b829f515519caa5fef3968f2a5
|
7
|
+
data.tar.gz: 40e74042491c83aefb0ac2a929ca5ed2c0037b489eb27beef1329415730dcd2815ae4dba413c3c74086f56872a952c410f178f995816c767d5d84e4146325a1c
|
data/.travis.yml
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
|
3
|
+
- ruby-head
|
4
|
+
- 2.2
|
4
5
|
- 2.1
|
5
6
|
- 2.0.0
|
6
7
|
- 1.9.3
|
@@ -8,14 +9,22 @@ rvm:
|
|
8
9
|
|
9
10
|
sudo: false
|
10
11
|
|
12
|
+
cache: bundler
|
13
|
+
|
11
14
|
bundler_args: '--without local_development --jobs 3 --retry 3'
|
12
15
|
|
13
16
|
script: bundle exec rake
|
14
17
|
|
15
|
-
notifications:
|
16
|
-
irc: "irc.freenode.org#cells"
|
17
18
|
gemfile:
|
18
19
|
- gemfiles/rails4.2.gemfile
|
19
20
|
- gemfiles/rails4.1.gemfile
|
20
21
|
- gemfiles/rails4.0.gemfile
|
21
22
|
- gemfiles/rails3.2.gemfile
|
23
|
+
|
24
|
+
matrix:
|
25
|
+
fast_finish: true
|
26
|
+
allow_failures:
|
27
|
+
- rvm: ruby-head
|
28
|
+
|
29
|
+
before_install:
|
30
|
+
- gem update bundler
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## 4.0.3
|
2
|
+
|
3
|
+
* `Cell::Partial` now does _append_ the global partial path to its `view_paths` instead of using `unshift` and thereby removing possible custom paths.
|
4
|
+
* Adding `Cell::Translation` which allows using the `#t` helper. Thanks to @johnlane.
|
5
|
+
* Performance improvement: when inflecting the view name (90% likely to be done) the `caller` is now limited to the data we need, saving memory. Thanks @timoschilling for implementing this.
|
6
|
+
* In the `concept` helper, we no longer use `classify`, which means you can say `concept("comment/data")` and it will instantiate `Comment::Data` and not `Comment::Datum`. Thanks @firedev!
|
7
|
+
|
1
8
|
## 4.0.2
|
2
9
|
|
3
10
|
* In Rails, include `ActionView::Helpers::FormHelper` into `ViewModel` so we already have (and pollute our cell with) `UrlHelper` and `FormTagHelper`. Helpers, so much fun.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
Cells allow you to encapsulate parts of your UI into components into _view models_. View models, or cells, are simple ruby classes that can render templates.
|
8
8
|
|
9
|
-
Nevertheless, a cell gives you more than just a template renderer. They allow proper OOP, polymorphic builders, [nesting](#nested-cells), view inheritance, using Rails helpers, [asset packaging](http://
|
9
|
+
Nevertheless, a cell gives you more than just a template renderer. They allow proper OOP, polymorphic builders, [nesting](#nested-cells), view inheritance, using Rails helpers, [asset packaging](http://trailblazer.to/gems/cells/rails.html#asset-pipeline) to bundle JS, CSS or images, simple distribution via gems or Rails engines, encapsulated testing, [caching](#caching), and [integrate with Trailblazer](#concept-cells).
|
10
10
|
|
11
11
|
## This is not Cells 3.x!
|
12
12
|
|
@@ -32,7 +32,7 @@ CommentCell.(@comment).()
|
|
32
32
|
In Rails you have the same helper API for views and controllers.
|
33
33
|
|
34
34
|
```ruby
|
35
|
-
class
|
35
|
+
class DashboardController < ApplicationController
|
36
36
|
def dashboard
|
37
37
|
@comments = cell(:comment, collection: Comment.recent)
|
38
38
|
@traffic = cell(:report, TrafficReport.find(1)).()
|
@@ -97,7 +97,7 @@ The discussed `show` view would reside in `app/cells/comment/show.haml`. However
|
|
97
97
|
|
98
98
|
## Invocation Styles
|
99
99
|
|
100
|
-
In order to make a cell render, you have to call the rendering methods. While you could call the method directly, the
|
100
|
+
In order to make a cell render, you have to call the rendering methods. While you could call the method directly, the preferred way is the _call style_.
|
101
101
|
|
102
102
|
```ruby
|
103
103
|
cell(:comment, @song).() # calls CommentCell#show.
|
@@ -138,7 +138,7 @@ Capybara.string(html).must_have_css "h3"
|
|
138
138
|
|
139
139
|
It is completely up to you how you test, whether it's RSpec, MiniTest or whatever. All the cell does is return HTML.
|
140
140
|
|
141
|
-
[In Rails, there's support](http://
|
141
|
+
[In Rails, there's support](http://trailblazer.to/gems/cells/testing.html) for TestUnit, MiniTest and RSpec available, along with Capybara integration.
|
142
142
|
|
143
143
|
## Properties
|
144
144
|
|
@@ -169,7 +169,7 @@ song.title #=> "<script>Dangerous</script>"
|
|
169
169
|
Comment::Cell.(song).title #=> <script>Dangerous</script>
|
170
170
|
```
|
171
171
|
|
172
|
-
Properties and escaping are [documented here](http://
|
172
|
+
Properties and escaping are [documented here](http://trailblazer.to/gems/cells/api.html#html-escaping).
|
173
173
|
|
174
174
|
## Installation
|
175
175
|
|
@@ -296,7 +296,7 @@ end
|
|
296
296
|
|
297
297
|
## Asset Packaging
|
298
298
|
|
299
|
-
Cells can easily ship with their own JavaScript, CSS and more and be part of Rails' asset pipeline. Bundling assets into a cell allows you to implement super encapsulated widgets that are stand-alone. Asset pipeline is [documented here](http://
|
299
|
+
Cells can easily ship with their own JavaScript, CSS and more and be part of Rails' asset pipeline. Bundling assets into a cell allows you to implement super encapsulated widgets that are stand-alone. Asset pipeline is [documented here](http://trailblazer.to/gems/cells/rails.html#asset-pipeline).
|
300
300
|
|
301
301
|
## Render API
|
302
302
|
|
@@ -476,7 +476,7 @@ cache :show, :if => lambda { |*| has_changed? }
|
|
476
476
|
cache :show, :tags: lambda { |model, options| "comment-#{model.id}" }
|
477
477
|
```
|
478
478
|
|
479
|
-
Caching is documented [here](http://
|
479
|
+
Caching is documented [here](http://trailblazer.to/gems/cells/caching.html) and in chapter 8 of the [Trailblazer book](http://leanpub.com/trailblazer).
|
480
480
|
|
481
481
|
|
482
482
|
## The Book
|
data/gemfiles/rails3.2.gemfile
CHANGED
@@ -7,3 +7,10 @@ gem "tzinfo"
|
|
7
7
|
gem "minitest", "4.7.5"
|
8
8
|
|
9
9
|
gemspec :path => "../"
|
10
|
+
|
11
|
+
gem "rack-cache", "< 1.3.0", platform: :ruby_19
|
12
|
+
gem "rack-cache", "< 1.3.0", platform: :jruby
|
13
|
+
gem "test-unit", "~> 3.0", platform: :ruby_22
|
14
|
+
gem "mime-types", "< 3.0", platform: :ruby_19
|
15
|
+
gem "mime-types", "< 3.0", platform: :jruby
|
16
|
+
|
data/gemfiles/rails4.0.gemfile
CHANGED
data/gemfiles/rails4.1.gemfile
CHANGED
data/gemfiles/rails4.2.gemfile
CHANGED
data/lib/cell/concept.rb
CHANGED
data/lib/cell/partial.rb
CHANGED
@@ -10,8 +10,8 @@ module Cell::ViewModel::Partial
|
|
10
10
|
view = parts.pop
|
11
11
|
view = "_#{view}"
|
12
12
|
view += ".#{options[:formats].first}" if options[:formats]
|
13
|
-
prefixes = self.class.view_paths.collect { |path|
|
13
|
+
prefixes = self.class.view_paths.collect { |path| ([path] + parts).join("/") }
|
14
14
|
|
15
15
|
options.merge!(view: view, prefixes: prefixes)
|
16
16
|
end
|
17
|
-
end
|
17
|
+
end
|
data/lib/cell/rails.rb
CHANGED
@@ -15,7 +15,7 @@ module Cell
|
|
15
15
|
# Returns the cell instance for +name+. You may pass arbitrary options to your
|
16
16
|
# cell.
|
17
17
|
#
|
18
|
-
# = cell(:song, title: "Creeping Out Sara").
|
18
|
+
# = cell(:song, title: "Creeping Out Sara").(:show)
|
19
19
|
def cell(name, *args, &block)
|
20
20
|
controller.cell(name, *args, &block)
|
21
21
|
end
|
data/lib/cell/templates.rb
CHANGED
@@ -27,7 +27,7 @@ module Cell
|
|
27
27
|
template_class.new("#{prefix}/#{view}", options) # Tilt.new()
|
28
28
|
end
|
29
29
|
|
30
|
-
# {["comment/row/views", comment/views"][show.haml] => "Tpl:comment/view/show.haml"}
|
30
|
+
# {["comment/row/views", comment/views"]["show.haml"] => "Tpl:comment/view/show.haml"}
|
31
31
|
class Cache
|
32
32
|
def initialize
|
33
33
|
@store = {}
|
@@ -55,4 +55,4 @@ module Cell
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
58
|
-
end
|
58
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# NOTE: this will soon be moved to cells-rails.
|
2
|
+
module Cell::Translation
|
3
|
+
def self.included(includer)
|
4
|
+
super
|
5
|
+
includer.inheritable_attr :translation_path
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(*)
|
9
|
+
super
|
10
|
+
@virtual_path = translation_path
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
# If you override this to change this path, please report it on the trailblazer/chat gitter channel,
|
15
|
+
# so we can find out best practices.
|
16
|
+
def translation_path
|
17
|
+
self.class.translation_path or controller_path.gsub("/", ".")
|
18
|
+
end
|
19
|
+
end
|
data/lib/cell/version.rb
CHANGED
data/lib/cell/view_model.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# TODO: warn when using ::property but not passing in model in constructor.
|
2
1
|
module Cell
|
3
2
|
class ViewModel
|
4
3
|
extend Abstract
|
@@ -21,7 +20,6 @@ module Cell
|
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
24
|
-
|
25
23
|
include Prefixes
|
26
24
|
extend SelfContained
|
27
25
|
extend Util
|
@@ -32,7 +30,6 @@ module Cell
|
|
32
30
|
|
33
31
|
attr_reader :model
|
34
32
|
|
35
|
-
|
36
33
|
module Helpers
|
37
34
|
# Constantizes name, call builders and returns instance.
|
38
35
|
def cell(name, *args, &block) # classic Rails fuzzy API.
|
@@ -44,12 +41,11 @@ module Cell
|
|
44
41
|
def render_collection(array, options) # private.
|
45
42
|
method = options.delete(:method) || :show
|
46
43
|
join = options.delete(:collection_join)
|
47
|
-
array.collect { |model| build(
|
44
|
+
array.collect { |model| build(model, options).call(method) }.join(join).html_safe
|
48
45
|
end
|
49
46
|
end
|
50
47
|
extend Helpers
|
51
48
|
|
52
|
-
|
53
49
|
class << self
|
54
50
|
def property(*names)
|
55
51
|
delegates :model, *names # Uber::Delegates.
|
@@ -75,7 +71,7 @@ module Cell
|
|
75
71
|
|
76
72
|
private
|
77
73
|
def class_from_cell_name(name)
|
78
|
-
"#{name}_cell".
|
74
|
+
"#{name}_cell".camelize.constantize
|
79
75
|
end
|
80
76
|
end
|
81
77
|
|
@@ -84,7 +80,6 @@ module Cell
|
|
84
80
|
self.class.cell(name, model, options.merge(controller: parent_controller))
|
85
81
|
end
|
86
82
|
|
87
|
-
|
88
83
|
def initialize(model=nil, options={}) # in Ruby 2: def m(model: nil, controller:nil, **options) that'll make the controller optional.
|
89
84
|
# options = options.clone # DISCUSS: this could be time consuming when rendering many of em.
|
90
85
|
@parent_controller = options[:controller] # TODO: filter out controller in a performant way.
|
@@ -108,13 +103,13 @@ module Cell
|
|
108
103
|
|
109
104
|
# render :show
|
110
105
|
def render(options={})
|
111
|
-
options = normalize_options(options
|
106
|
+
options = normalize_options(options)
|
112
107
|
render_to_string(options)
|
113
108
|
end
|
114
109
|
|
115
110
|
private
|
116
111
|
def render_to_string(options)
|
117
|
-
template = find_template(options)
|
112
|
+
template = find_template(options)
|
118
113
|
|
119
114
|
content = render_template(template, options)
|
120
115
|
|
@@ -123,7 +118,7 @@ module Cell
|
|
123
118
|
end
|
124
119
|
|
125
120
|
def render_state(*args)
|
126
|
-
|
121
|
+
__send__(*args)
|
127
122
|
end
|
128
123
|
|
129
124
|
def with_layout(options, content)
|
@@ -140,7 +135,7 @@ module Cell
|
|
140
135
|
end
|
141
136
|
|
142
137
|
include Rendering
|
143
|
-
|
138
|
+
|
144
139
|
def to_s
|
145
140
|
call
|
146
141
|
end
|
@@ -174,7 +169,6 @@ module Cell
|
|
174
169
|
OutputBuffer.new # don't cache output_buffer, for every #render call we get a fresh one.
|
175
170
|
end
|
176
171
|
|
177
|
-
|
178
172
|
module TemplateFor
|
179
173
|
def find_template(options)
|
180
174
|
template_options = template_options_for(options) # imported by Erb, Haml, etc.
|
@@ -196,11 +190,10 @@ module Cell
|
|
196
190
|
end
|
197
191
|
include TemplateFor
|
198
192
|
|
199
|
-
|
200
|
-
def normalize_options(options, caller) # TODO: rename to #setup_options! to be inline with Trb.
|
193
|
+
def normalize_options(options)
|
201
194
|
options = if options.is_a?(Hash)
|
202
|
-
|
203
|
-
|
195
|
+
options[:view] ||= state_for_implicit_render(options)
|
196
|
+
options
|
204
197
|
else
|
205
198
|
{view: options.to_s}
|
206
199
|
end
|
@@ -218,9 +211,10 @@ module Cell
|
|
218
211
|
end
|
219
212
|
include ProcessOptions
|
220
213
|
|
221
|
-
|
222
|
-
def state_for_implicit_render(
|
223
|
-
caller
|
214
|
+
# Computes the view name from the call stack in which `render` was invoked.
|
215
|
+
def state_for_implicit_render(options)
|
216
|
+
_caller = RUBY_VERSION < "2.0" ? caller(3) : caller(3, 1) # TODO: remove case in 5.0 when dropping 1.9.
|
217
|
+
_caller[0].match(/`(\w+)/)[1]
|
224
218
|
end
|
225
219
|
|
226
220
|
include Layout
|
data/test/partial_test.rb
CHANGED
@@ -21,7 +21,15 @@ class PartialTest < MiniTest::Spec
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
class WithPartialAndManyViewPaths < WithPartial
|
25
|
+
self.view_paths << ['app/views']
|
26
|
+
end
|
27
|
+
|
24
28
|
it { WithPartial.new(nil).show.must_equal "I Am Wrong And I Am Right" }
|
25
29
|
it { WithPartial.new(nil).show_with_format.must_equal "<xml>I Am Wrong And I Am Right</xml>" }
|
26
30
|
it { WithPartial.new(nil).show_without_partial.must_equal "Adenosine Breakdown" }
|
27
|
-
|
31
|
+
|
32
|
+
it { WithPartialAndManyViewPaths.new(nil).show.must_equal "I Am Wrong And I Am Right" }
|
33
|
+
it { WithPartialAndManyViewPaths.new(nil).show_with_format.must_equal "<xml>I Am Wrong And I Am Right</xml>" }
|
34
|
+
it { WithPartialAndManyViewPaths.new(nil).show_without_partial.must_equal "Adenosine Breakdown" }
|
35
|
+
end
|
data/test/public_test.rb
CHANGED
@@ -16,9 +16,15 @@ class PublicTest < MiniTest::Spec
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
class Songs < Cell::Concept
|
20
|
+
end
|
21
|
+
|
19
22
|
# ViewModel.cell returns the cell instance.
|
20
23
|
it { Cell::ViewModel.cell("public_test/song").must_be_instance_of SongCell }
|
21
24
|
|
25
|
+
# Concept.cell simply camelizes the string before constantizing.
|
26
|
+
it { Cell::Concept.cell("public_test/songs").must_be_instance_of Songs }
|
27
|
+
|
22
28
|
# ViewModel.cell passes options to cell.
|
23
29
|
it { Cell::ViewModel.cell("public_test/song", Object, genre: "Metal").initialize_args.must_equal [Object, {genre:"Metal"}] }
|
24
30
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "cells/translation"
|
3
|
+
|
4
|
+
class TranslationTest < MiniTest::Spec
|
5
|
+
class I18nCell < Cell::ViewModel
|
6
|
+
include ActionView::Helpers::TranslationHelper
|
7
|
+
include Translation
|
8
|
+
|
9
|
+
def greet_relative
|
10
|
+
t(".greeting") # gets appended to translation_test.i18n.
|
11
|
+
end
|
12
|
+
|
13
|
+
def greet_absolute
|
14
|
+
t("translation_test.i18n.greeting")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
I18n.backend = I18n::Backend::KeyValue.new({})
|
19
|
+
I18n.backend.store_translations(:en,
|
20
|
+
{ "translation_test.i18n.greeting" => "Translated!",
|
21
|
+
"cell.friendly.greeting" => "Hello you!" },
|
22
|
+
escape: false)
|
23
|
+
|
24
|
+
# Translate text specified by an absolute path
|
25
|
+
it { I18nCell.new.greet_absolute.must_equal "Translated!" }
|
26
|
+
|
27
|
+
# Translate text specified by an relative path
|
28
|
+
it { I18nCell.new.greet_relative.must_equal "Translated!" }
|
29
|
+
|
30
|
+
|
31
|
+
describe "::translation_path" do
|
32
|
+
class ExplicitI18NCell < Cell::ViewModel
|
33
|
+
include ActionView::Helpers::TranslationHelper
|
34
|
+
include Translation
|
35
|
+
|
36
|
+
self.translation_path = "cell.friendly"
|
37
|
+
|
38
|
+
def show
|
39
|
+
t(".greeting")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it { ExplicitI18NCell.new.().must_equal "Hello you!" }
|
44
|
+
end
|
45
|
+
end
|
@@ -19,33 +19,33 @@ class ViewExtensionsTest < ActionController::TestCase
|
|
19
19
|
# #concept is available in controller views.
|
20
20
|
test "concept(..).show" do
|
21
21
|
get :view_with_concept_with_show
|
22
|
-
|
22
|
+
assert_equal "<b>Up For Breakfast</b>", @response.body # TODO: test options/with twin.
|
23
23
|
end
|
24
24
|
|
25
25
|
test "concept(..).call" do
|
26
26
|
get :view_with_concept_with_call
|
27
|
-
|
27
|
+
assert_equal "<b>A Tale That Wasn't Right</b>", @response.body # TODO: test options/with twin.
|
28
28
|
end
|
29
29
|
|
30
30
|
test "concept(..) without #call" do
|
31
31
|
get :view_with_concept_without_call
|
32
|
-
|
32
|
+
assert_equal "<b>A Tale That Wasn't Right</b>", @response.body
|
33
33
|
end
|
34
34
|
|
35
35
|
test "cell(..) with #call" do
|
36
36
|
get :view_with_cell_with_call
|
37
|
-
|
37
|
+
assert_equal "<b>A Tale That Wasn't Right</b>", @response.body
|
38
38
|
end
|
39
39
|
|
40
40
|
# Controller#concept
|
41
41
|
test "Controller#concept(..).call" do
|
42
42
|
get :action_with_concept_with_call
|
43
|
-
|
43
|
+
assert_equal "<b>A Tale That Wasn't Right</b>", @response.body # TODO: test options/with twin.
|
44
44
|
end
|
45
45
|
|
46
46
|
# Controller#cell
|
47
47
|
test "Controller#cell(..).call" do
|
48
48
|
get :action_with_cell_with_call
|
49
|
-
|
49
|
+
assert_equal "<b>A Tale That Wasn't Right</b>", @response.body # TODO: test options/with twin.
|
50
50
|
end
|
51
|
-
end
|
51
|
+
end
|
data/test/render_test.rb
CHANGED
@@ -43,6 +43,10 @@ class SongCell < Cell::ViewModel
|
|
43
43
|
render
|
44
44
|
end
|
45
45
|
|
46
|
+
def send
|
47
|
+
"send"
|
48
|
+
end
|
49
|
+
|
46
50
|
private
|
47
51
|
def title
|
48
52
|
"Papertiger"
|
@@ -65,6 +69,9 @@ class RenderTest < MiniTest::Spec
|
|
65
69
|
# call(:form) renders :form
|
66
70
|
it { SongCell.new(nil).call(:with_view_name).must_equal "Man Of Steel\n" }
|
67
71
|
|
72
|
+
# works with state called `send`
|
73
|
+
it { SongCell.new(nil).call(:send).must_equal "send" }
|
74
|
+
|
68
75
|
# #call returns html_safe.
|
69
76
|
it { SongCell.new(nil).call.must_be_instance_of ActiveSupport::SafeBuffer }
|
70
77
|
|
@@ -95,4 +102,10 @@ class RenderTest < MiniTest::Spec
|
|
95
102
|
end
|
96
103
|
|
97
104
|
# test inheritance
|
98
|
-
|
105
|
+
|
106
|
+
# test view: :bla and :bla
|
107
|
+
# with layout and locals.
|
108
|
+
# with layout and :text
|
109
|
+
|
110
|
+
# render with format (e.g. when using ERB for one view)
|
111
|
+
# should we allow changing the format "per run", so a cell can do .js and .haml? or should that be configurable on class level?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cells
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: uber
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- lib/cell/templates.rb
|
137
137
|
- lib/cell/test_case.rb
|
138
138
|
- lib/cell/testing.rb
|
139
|
+
- lib/cell/translation.rb
|
139
140
|
- lib/cell/twin.rb
|
140
141
|
- lib/cell/util.rb
|
141
142
|
- lib/cell/version.rb
|
@@ -212,6 +213,7 @@ files:
|
|
212
213
|
- test/prefixes_test.rb
|
213
214
|
- test/property_test.rb
|
214
215
|
- test/public_test.rb
|
216
|
+
- test/rails/translation_test.rb
|
215
217
|
- test/rails4.2/.gitignore
|
216
218
|
- test/rails4.2/Gemfile
|
217
219
|
- test/rails4.2/README.rdoc
|
@@ -330,7 +332,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
330
332
|
version: '0'
|
331
333
|
requirements: []
|
332
334
|
rubyforge_project:
|
333
|
-
rubygems_version: 2.
|
335
|
+
rubygems_version: 2.4.8
|
334
336
|
signing_key:
|
335
337
|
specification_version: 4
|
336
338
|
summary: View Models for Ruby and Rails.
|