curly-templates 2.0.1 → 2.1.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -0
- data/README.md +85 -5
- data/curly-templates.gemspec +37 -8
- data/lib/curly.rb +1 -1
- data/lib/curly/{attribute_parser.rb → attribute_scanner.rb} +6 -4
- data/lib/curly/compiler.rb +81 -72
- data/lib/curly/component_compiler.rb +37 -31
- data/lib/curly/component_scanner.rb +19 -0
- data/lib/curly/incomplete_block_error.rb +0 -7
- data/lib/curly/incorrect_ending_error.rb +0 -21
- data/lib/curly/parser.rb +171 -0
- data/lib/curly/presenter.rb +1 -1
- data/lib/curly/scanner.rb +23 -9
- data/spec/attribute_scanner_spec.rb +46 -0
- data/spec/collection_blocks_spec.rb +88 -0
- data/spec/compiler/context_blocks_spec.rb +42 -0
- data/spec/component_compiler_spec.rb +26 -77
- data/spec/component_scanner_spec.rb +19 -0
- data/spec/{integration/components_spec.rb → components_spec.rb} +0 -0
- data/spec/{integration/conditional_blocks_spec.rb → conditional_blocks_spec.rb} +0 -0
- data/spec/dummy/.gitignore +1 -0
- data/spec/dummy/app/controllers/application_controller.rb +2 -0
- data/spec/dummy/app/controllers/dashboards_controller.rb +13 -0
- data/spec/dummy/app/helpers/application_helper.rb +5 -0
- data/spec/dummy/app/presenters/dashboards/collection_presenter.rb +7 -0
- data/spec/dummy/app/presenters/dashboards/item_presenter.rb +7 -0
- data/spec/dummy/app/presenters/dashboards/new_presenter.rb +19 -0
- data/spec/dummy/app/presenters/dashboards/partials_presenter.rb +5 -0
- data/spec/dummy/app/presenters/dashboards/show_presenter.rb +12 -0
- data/spec/dummy/app/presenters/layouts/application_presenter.rb +9 -0
- data/spec/dummy/app/views/dashboards/_item.html.curly +1 -0
- data/spec/dummy/app/views/dashboards/collection.html.curly +5 -0
- data/spec/dummy/app/views/dashboards/new.html.curly +3 -0
- data/spec/dummy/app/views/dashboards/partials.html.curly +3 -0
- data/spec/dummy/app/views/dashboards/show.html.curly +3 -0
- data/spec/dummy/app/views/layouts/application.html.curly +8 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +12 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/routes.rb +6 -0
- data/spec/integration/application_layout_spec.rb +21 -0
- data/spec/integration/collection_blocks_spec.rb +17 -78
- data/spec/integration/context_blocks_spec.rb +21 -0
- data/spec/integration/partials_spec.rb +23 -0
- data/spec/parser_spec.rb +95 -0
- data/spec/scanner_spec.rb +24 -14
- data/spec/spec_helper.rb +4 -3
- metadata +49 -14
- data/lib/curly/component_parser.rb +0 -13
- data/spec/attribute_parser_spec.rb +0 -46
- data/spec/incorrect_ending_error_spec.rb +0 -13
@@ -0,0 +1,36 @@
|
|
1
|
+
Rails.application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
|
+
|
4
|
+
# The test environment is used exclusively to run your application's
|
5
|
+
# test suite. You never need to work with it otherwise. Remember that
|
6
|
+
# your test database is "scratch space" for the test suite and is wiped
|
7
|
+
# and recreated between test runs. Don't rely on the data there!
|
8
|
+
config.cache_classes = true
|
9
|
+
|
10
|
+
# Do not eager load code on boot. This avoids loading your whole application
|
11
|
+
# just for the purpose of running a single test. If you are using a tool that
|
12
|
+
# preloads Rails for running tests, you may have to set it to true.
|
13
|
+
config.eager_load = false
|
14
|
+
|
15
|
+
# Configure static asset server for tests with Cache-Control for performance.
|
16
|
+
config.serve_static_assets = true
|
17
|
+
config.static_cache_control = 'public, max-age=3600'
|
18
|
+
|
19
|
+
# Show full error reports and disable caching.
|
20
|
+
config.consider_all_requests_local = true
|
21
|
+
config.action_controller.perform_caching = false
|
22
|
+
|
23
|
+
# Raise exceptions instead of rendering exception templates.
|
24
|
+
config.action_dispatch.show_exceptions = false
|
25
|
+
|
26
|
+
# Disable request forgery protection in test environment.
|
27
|
+
config.action_controller.allow_forgery_protection = false
|
28
|
+
|
29
|
+
# Print deprecation notices to the stderr.
|
30
|
+
config.active_support.deprecation = :stderr
|
31
|
+
|
32
|
+
# Raises error for missing translations
|
33
|
+
# config.action_view.raise_on_missing_translations = true
|
34
|
+
|
35
|
+
config.secret_key_base = "yolo"
|
36
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Using Curly for the application layout", type: :request do
|
4
|
+
example "A simple layout view" do
|
5
|
+
get '/'
|
6
|
+
|
7
|
+
response.body.should == <<-HTML.strip_heredoc
|
8
|
+
<html>
|
9
|
+
<head>
|
10
|
+
<title>Dummy app</title>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<h1>Dashboard</h1>
|
14
|
+
<p>Hello, World!</p>
|
15
|
+
<p>Welcome!</p>
|
16
|
+
|
17
|
+
</body>
|
18
|
+
</html>
|
19
|
+
HTML
|
20
|
+
end
|
21
|
+
end
|
@@ -1,88 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "Collection
|
4
|
-
|
3
|
+
describe "Collection blocks", type: :request do
|
4
|
+
example "Rendering collections" do
|
5
|
+
get '/collection'
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
response.body.should == <<-HTML.strip_heredoc
|
8
|
+
<html>
|
9
|
+
<head>
|
10
|
+
<title>Dummy app</title>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<ul>
|
9
14
|
|
10
|
-
|
11
|
-
@item
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
example "with neither identifier nor attributes" do
|
17
|
-
presenter do
|
18
|
-
def items
|
19
|
-
["one", "two", "three"]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
render("{{*items}}<{{name}}>{{/items}}").should == "<one><two><three>"
|
24
|
-
end
|
25
|
-
|
26
|
-
example "with an identifier" do
|
27
|
-
presenter do
|
28
|
-
def items(filter = nil)
|
29
|
-
if filter == "even"
|
30
|
-
["two"]
|
31
|
-
elsif filter == "odd"
|
32
|
-
["one", "three"]
|
33
|
-
else
|
34
|
-
["one", "two", "three"]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
render("{{*items.even}}<{{name}}>{{/items.even}}").should == "<two>"
|
40
|
-
render("{{*items.odd}}<{{name}}>{{/items.odd}}").should == "<one><three>"
|
41
|
-
render("{{*items}}<{{name}}>{{/items}}").should == "<one><two><three>"
|
42
|
-
end
|
43
|
-
|
44
|
-
example "with attributes" do
|
45
|
-
presenter do
|
46
|
-
def items(length: "1")
|
47
|
-
["x"] * length.to_i
|
48
|
-
end
|
49
|
-
end
|
15
|
+
<li>uno</li>
|
50
16
|
|
51
|
-
|
52
|
-
render("{{*items}}<{{name}}>{{/items}}").should == "<x>"
|
53
|
-
end
|
54
|
-
|
55
|
-
example "with nested collection blocks" do
|
56
|
-
presenter do
|
57
|
-
def items
|
58
|
-
[{ parts: [1, 2] }, { parts: [3, 4] }]
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
item_presenter do
|
63
|
-
presents :item
|
64
|
-
|
65
|
-
def parts
|
66
|
-
@item[:parts]
|
67
|
-
end
|
68
|
-
end
|
17
|
+
<li>dos</li>
|
69
18
|
|
70
|
-
|
71
|
-
presents :part
|
19
|
+
<li>tres!</li>
|
72
20
|
|
73
|
-
|
74
|
-
@part
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
render("{{*items}}<{{*parts}}[{{number}}]{{/parts}}>{{/items}}").should == "<[1][2]><[3][4]>"
|
79
|
-
end
|
80
|
-
|
81
|
-
def item_presenter(&block)
|
82
|
-
stub_const("ItemPresenter", Class.new(Curly::Presenter, &block))
|
83
|
-
end
|
21
|
+
</ul>
|
84
22
|
|
85
|
-
|
86
|
-
|
23
|
+
</body>
|
24
|
+
</html>
|
25
|
+
HTML
|
87
26
|
end
|
88
27
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Context blocks", type: :request do
|
4
|
+
example "A context block" do
|
5
|
+
get '/new'
|
6
|
+
|
7
|
+
response.body.should == <<-HTML.strip_heredoc
|
8
|
+
<html>
|
9
|
+
<head>
|
10
|
+
<title>Dummy app</title>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<form accept-charset="UTF-8" action="/new" method="post"><div style="display:none"><input name="utf8" type="hidden" value="✓" /></div>
|
14
|
+
<b>Name</b> <input id="dashboard_name" name="dashboard[name]" type="text" value="test" />
|
15
|
+
</form>
|
16
|
+
|
17
|
+
</body>
|
18
|
+
</html>
|
19
|
+
HTML
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Using Curly for Rails partials", type: :request do
|
4
|
+
example "Rendering a partial" do
|
5
|
+
get '/partials'
|
6
|
+
|
7
|
+
response.body.should == <<-HTML.strip_heredoc
|
8
|
+
<html>
|
9
|
+
<head>
|
10
|
+
<title>Dummy app</title>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<ul>
|
14
|
+
<li>One</li>
|
15
|
+
<li>Two</li>
|
16
|
+
|
17
|
+
</ul>
|
18
|
+
|
19
|
+
</body>
|
20
|
+
</html>
|
21
|
+
HTML
|
22
|
+
end
|
23
|
+
end
|
data/spec/parser_spec.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'curly/parser'
|
3
|
+
|
4
|
+
describe Curly::Parser do
|
5
|
+
it "parses component tokens" do
|
6
|
+
tokens = [
|
7
|
+
[:component, "a", nil, {}],
|
8
|
+
]
|
9
|
+
|
10
|
+
parse(tokens).should == [
|
11
|
+
component("a")
|
12
|
+
]
|
13
|
+
end
|
14
|
+
|
15
|
+
it "parses conditional blocks" do
|
16
|
+
tokens = [
|
17
|
+
[:conditional_block_start, "a?", nil, {}],
|
18
|
+
[:component, "hello", nil, {}],
|
19
|
+
[:block_end, "a?", nil],
|
20
|
+
]
|
21
|
+
|
22
|
+
parse(tokens).should == [
|
23
|
+
conditional_block(component("a?"), [component("hello")])
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
it "parses inverse conditional blocks" do
|
28
|
+
tokens = [
|
29
|
+
[:inverse_conditional_block_start, "a?", nil, {}],
|
30
|
+
[:component, "hello", nil, {}],
|
31
|
+
[:block_end, "a?", nil],
|
32
|
+
]
|
33
|
+
|
34
|
+
parse(tokens).should == [
|
35
|
+
inverse_conditional_block(component("a?"), [component("hello")])
|
36
|
+
]
|
37
|
+
end
|
38
|
+
|
39
|
+
it "parses collection blocks" do
|
40
|
+
tokens = [
|
41
|
+
[:collection_block_start, "mice", nil, {}],
|
42
|
+
[:component, "hello", nil, {}],
|
43
|
+
[:block_end, "mice", nil],
|
44
|
+
]
|
45
|
+
|
46
|
+
parse(tokens).should == [
|
47
|
+
collection_block(component("mice"), [component("hello")])
|
48
|
+
]
|
49
|
+
end
|
50
|
+
|
51
|
+
it "fails if a block is not closed" do
|
52
|
+
tokens = [
|
53
|
+
[:collection_block_start, "mice", nil, {}],
|
54
|
+
]
|
55
|
+
|
56
|
+
expect { parse(tokens) }.to raise_exception(Curly::IncompleteBlockError)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "fails if a block is closed with the wrong component" do
|
60
|
+
tokens = [
|
61
|
+
[:collection_block_start, "mice", nil, {}],
|
62
|
+
[:block_end, "men", nil, {}],
|
63
|
+
]
|
64
|
+
|
65
|
+
expect { parse(tokens) }.to raise_exception(Curly::IncorrectEndingError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "fails if there is a closing component too many" do
|
69
|
+
tokens = [
|
70
|
+
[:block_end, "world", nil, {}],
|
71
|
+
]
|
72
|
+
|
73
|
+
expect { parse(tokens) }.to raise_exception(Curly::IncorrectEndingError)
|
74
|
+
end
|
75
|
+
|
76
|
+
def parse(tokens)
|
77
|
+
described_class.parse(tokens)
|
78
|
+
end
|
79
|
+
|
80
|
+
def component(*args)
|
81
|
+
Curly::Parser::Component.new(*args)
|
82
|
+
end
|
83
|
+
|
84
|
+
def conditional_block(*args)
|
85
|
+
Curly::Parser::Block.new(:conditional, *args)
|
86
|
+
end
|
87
|
+
|
88
|
+
def inverse_conditional_block(*args)
|
89
|
+
Curly::Parser::Block.new(:inverse_conditional, *args)
|
90
|
+
end
|
91
|
+
|
92
|
+
def collection_block(*args)
|
93
|
+
Curly::Parser::Block.new(:collection, *args)
|
94
|
+
end
|
95
|
+
end
|
data/spec/scanner_spec.rb
CHANGED
@@ -4,20 +4,14 @@ describe Curly::Scanner, ".scan" do
|
|
4
4
|
it "returns the tokens in the source" do
|
5
5
|
scan("foo {{bar}} baz").should == [
|
6
6
|
[:text, "foo "],
|
7
|
-
[:component, "bar"],
|
7
|
+
[:component, "bar", nil, {}],
|
8
8
|
[:text, " baz"]
|
9
9
|
]
|
10
10
|
end
|
11
11
|
|
12
12
|
it "scans components with identifiers" do
|
13
13
|
scan("{{foo.bar}}").should == [
|
14
|
-
[:component, "foo
|
15
|
-
]
|
16
|
-
end
|
17
|
-
|
18
|
-
it "allows components with whitespace" do
|
19
|
-
scan("{{ foo bar}}").should == [
|
20
|
-
[:component, " foo bar"]
|
14
|
+
[:component, "foo", "bar", {}]
|
21
15
|
]
|
22
16
|
end
|
23
17
|
|
@@ -59,30 +53,46 @@ describe Curly::Scanner, ".scan" do
|
|
59
53
|
]
|
60
54
|
end
|
61
55
|
|
56
|
+
it "scans context block tags" do
|
57
|
+
scan('{{@search_form}}{{query_field}}{{/search_form}}').should == [
|
58
|
+
[:context_block_start, "search_form", nil, {}],
|
59
|
+
[:component, "query_field", nil, {}],
|
60
|
+
[:block_end, "search_form", nil]
|
61
|
+
]
|
62
|
+
end
|
63
|
+
|
62
64
|
it "scans conditional block tags" do
|
63
65
|
scan('foo {{#bar?}} hello {{/bar?}}').should == [
|
64
66
|
[:text, "foo "],
|
65
|
-
[:conditional_block_start, "bar?"],
|
67
|
+
[:conditional_block_start, "bar?", nil, {}],
|
66
68
|
[:text, " hello "],
|
67
|
-
[:
|
69
|
+
[:block_end, "bar?", nil]
|
70
|
+
]
|
71
|
+
end
|
72
|
+
|
73
|
+
it "scans conditional block tags with parameters and attributes" do
|
74
|
+
scan('{{#active.test? name="test"}}yo{{/active.test?}}').should == [
|
75
|
+
[:conditional_block_start, "active?", "test", { "name" => "test" }],
|
76
|
+
[:text, "yo"],
|
77
|
+
[:block_end, "active?", "test"]
|
68
78
|
]
|
69
79
|
end
|
70
80
|
|
71
81
|
it "scans inverse block tags" do
|
72
82
|
scan('foo {{^bar?}} hello {{/bar?}}').should == [
|
73
83
|
[:text, "foo "],
|
74
|
-
[:inverse_conditional_block_start, "bar?"],
|
84
|
+
[:inverse_conditional_block_start, "bar?", nil, {}],
|
75
85
|
[:text, " hello "],
|
76
|
-
[:
|
86
|
+
[:block_end, "bar?", nil]
|
77
87
|
]
|
78
88
|
end
|
79
89
|
|
80
90
|
it "scans collection block tags" do
|
81
91
|
scan('foo {{*bar}} hello {{/bar}}').should == [
|
82
92
|
[:text, "foo "],
|
83
|
-
[:collection_block_start, "bar"],
|
93
|
+
[:collection_block_start, "bar", nil, {}],
|
84
94
|
[:text, " hello "],
|
85
|
-
[:
|
95
|
+
[:block_end, "bar", nil]
|
86
96
|
]
|
87
97
|
end
|
88
98
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
|
3
|
+
require 'dummy/config/environment'
|
4
|
+
require 'rspec/rails'
|
2
5
|
|
3
6
|
if ENV['CI']
|
4
7
|
begin
|
@@ -9,8 +12,6 @@ if ENV['CI']
|
|
9
12
|
end
|
10
13
|
end
|
11
14
|
|
12
|
-
require 'curly'
|
13
|
-
|
14
15
|
module RenderingSupport
|
15
16
|
def presenter(&block)
|
16
17
|
@presenter = block
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curly-templates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.1.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schierbeck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -106,15 +106,16 @@ files:
|
|
106
106
|
- curly-templates.gemspec
|
107
107
|
- lib/curly-templates.rb
|
108
108
|
- lib/curly.rb
|
109
|
-
- lib/curly/
|
109
|
+
- lib/curly/attribute_scanner.rb
|
110
110
|
- lib/curly/compiler.rb
|
111
111
|
- lib/curly/component_compiler.rb
|
112
|
-
- lib/curly/
|
112
|
+
- lib/curly/component_scanner.rb
|
113
113
|
- lib/curly/dependency_tracker.rb
|
114
114
|
- lib/curly/error.rb
|
115
115
|
- lib/curly/incomplete_block_error.rb
|
116
116
|
- lib/curly/incorrect_ending_error.rb
|
117
117
|
- lib/curly/invalid_component.rb
|
118
|
+
- lib/curly/parser.rb
|
118
119
|
- lib/curly/presenter.rb
|
119
120
|
- lib/curly/presenter_not_found.rb
|
120
121
|
- lib/curly/railtie.rb
|
@@ -125,15 +126,43 @@ files:
|
|
125
126
|
- lib/generators/curly/controller/templates/presenter.rb.erb
|
126
127
|
- lib/generators/curly/controller/templates/view.html.curly.erb
|
127
128
|
- lib/rails/projections.json
|
128
|
-
- spec/
|
129
|
+
- spec/attribute_scanner_spec.rb
|
130
|
+
- spec/collection_blocks_spec.rb
|
129
131
|
- spec/compiler/collections_spec.rb
|
132
|
+
- spec/compiler/context_blocks_spec.rb
|
130
133
|
- spec/compiler_spec.rb
|
131
134
|
- spec/component_compiler_spec.rb
|
135
|
+
- spec/component_scanner_spec.rb
|
136
|
+
- spec/components_spec.rb
|
137
|
+
- spec/conditional_blocks_spec.rb
|
138
|
+
- spec/dummy/.gitignore
|
139
|
+
- spec/dummy/app/controllers/application_controller.rb
|
140
|
+
- spec/dummy/app/controllers/dashboards_controller.rb
|
141
|
+
- spec/dummy/app/helpers/application_helper.rb
|
142
|
+
- spec/dummy/app/presenters/dashboards/collection_presenter.rb
|
143
|
+
- spec/dummy/app/presenters/dashboards/item_presenter.rb
|
144
|
+
- spec/dummy/app/presenters/dashboards/new_presenter.rb
|
145
|
+
- spec/dummy/app/presenters/dashboards/partials_presenter.rb
|
146
|
+
- spec/dummy/app/presenters/dashboards/show_presenter.rb
|
147
|
+
- spec/dummy/app/presenters/layouts/application_presenter.rb
|
148
|
+
- spec/dummy/app/views/dashboards/_item.html.curly
|
149
|
+
- spec/dummy/app/views/dashboards/collection.html.curly
|
150
|
+
- spec/dummy/app/views/dashboards/new.html.curly
|
151
|
+
- spec/dummy/app/views/dashboards/partials.html.curly
|
152
|
+
- spec/dummy/app/views/dashboards/show.html.curly
|
153
|
+
- spec/dummy/app/views/layouts/application.html.curly
|
154
|
+
- spec/dummy/config.ru
|
155
|
+
- spec/dummy/config/application.rb
|
156
|
+
- spec/dummy/config/boot.rb
|
157
|
+
- spec/dummy/config/environment.rb
|
158
|
+
- spec/dummy/config/environments/test.rb
|
159
|
+
- spec/dummy/config/routes.rb
|
132
160
|
- spec/generators/controller_generator_spec.rb
|
133
|
-
- spec/
|
161
|
+
- spec/integration/application_layout_spec.rb
|
134
162
|
- spec/integration/collection_blocks_spec.rb
|
135
|
-
- spec/integration/
|
136
|
-
- spec/integration/
|
163
|
+
- spec/integration/context_blocks_spec.rb
|
164
|
+
- spec/integration/partials_spec.rb
|
165
|
+
- spec/parser_spec.rb
|
137
166
|
- spec/presenter_spec.rb
|
138
167
|
- spec/scanner_spec.rb
|
139
168
|
- spec/spec_helper.rb
|
@@ -155,9 +184,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
184
|
version: '0'
|
156
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
186
|
requirements:
|
158
|
-
- - "
|
187
|
+
- - ">"
|
159
188
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
189
|
+
version: 1.3.1
|
161
190
|
requirements: []
|
162
191
|
rubyforge_project:
|
163
192
|
rubygems_version: 2.2.2
|
@@ -165,15 +194,21 @@ signing_key:
|
|
165
194
|
specification_version: 2
|
166
195
|
summary: Free your views!
|
167
196
|
test_files:
|
168
|
-
- spec/
|
197
|
+
- spec/attribute_scanner_spec.rb
|
198
|
+
- spec/collection_blocks_spec.rb
|
169
199
|
- spec/compiler/collections_spec.rb
|
200
|
+
- spec/compiler/context_blocks_spec.rb
|
170
201
|
- spec/compiler_spec.rb
|
171
202
|
- spec/component_compiler_spec.rb
|
203
|
+
- spec/component_scanner_spec.rb
|
204
|
+
- spec/components_spec.rb
|
205
|
+
- spec/conditional_blocks_spec.rb
|
172
206
|
- spec/generators/controller_generator_spec.rb
|
173
|
-
- spec/
|
207
|
+
- spec/integration/application_layout_spec.rb
|
174
208
|
- spec/integration/collection_blocks_spec.rb
|
175
|
-
- spec/integration/
|
176
|
-
- spec/integration/
|
209
|
+
- spec/integration/context_blocks_spec.rb
|
210
|
+
- spec/integration/partials_spec.rb
|
211
|
+
- spec/parser_spec.rb
|
177
212
|
- spec/presenter_spec.rb
|
178
213
|
- spec/scanner_spec.rb
|
179
214
|
- spec/syntax_error_spec.rb
|