modular 0.2.1 → 0.2.2

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.
Files changed (76) hide show
  1. data/.gitignore +1 -0
  2. data/Gemfile +1 -0
  3. data/lib/modular.rb +3 -14
  4. data/lib/modular/action_controller_extension.rb +16 -7
  5. data/lib/modular/components.rb +7 -4
  6. data/lib/modular/components/base.rb +75 -5
  7. data/lib/modular/components/container.rb +37 -11
  8. data/lib/modular/configuration.rb +8 -0
  9. data/lib/modular/creation.rb +20 -13
  10. data/lib/{generators → modular/generators}/component/USAGE +0 -0
  11. data/lib/modular/generators/component/component_generator.rb +18 -0
  12. data/lib/{generators → modular/generators}/component/templates/component.rb.erb +0 -0
  13. data/lib/{generators → modular/generators}/component/templates/template.erb +0 -0
  14. data/lib/modular/mst_rendering.rb +10 -0
  15. data/lib/modular/railtie.rb +4 -0
  16. data/lib/modular/rendering.rb +1 -42
  17. data/lib/modular/version.rb +1 -1
  18. data/spec/components/{base.rb → base_spec.rb} +12 -6
  19. data/spec/components/container_spec.rb +27 -0
  20. data/spec/components/{hello_world.rb → hello_world_spec.rb} +0 -0
  21. data/spec/components/{helpers_example.rb → helpers_example_spec.rb} +0 -0
  22. data/spec/components/spec/internal/log/test.log +0 -0
  23. data/spec/controllers/callback_layout_controller_spec.rb +4 -0
  24. data/spec/controllers/rendering_spec.rb +33 -0
  25. data/spec/internal/app/components/mustache_container.rb +5 -0
  26. data/spec/internal/app/components/mustached.rb +5 -0
  27. data/spec/internal/app/controllers/callback_layout_controller.rb +5 -5
  28. data/spec/internal/app/controllers/example_controller.rb +9 -1
  29. data/spec/internal/app/views/components/mustache_container.mst +3 -0
  30. data/spec/internal/app/views/components/mustached.mst +1 -0
  31. data/spec/internal/app/views/example/mustache.html.erb +1 -0
  32. data/spec/internal/app/views/example/mustache_nested.html.erb +1 -0
  33. data/spec/internal/config/initializers/modular.rb +11 -6
  34. data/spec/modular/configuration_spec.rb +6 -6
  35. data/spec/modular/creation_spec.rb +36 -5
  36. data/spec/modular/validation_spec.rb +115 -0
  37. data/templates/components/container.html.erb +7 -0
  38. data/templates/layout.erb +1 -3
  39. metadata +23 -47
  40. data/lib/generators/component/component_generator.rb +0 -16
  41. data/lib/modular/helpers.rb +0 -74
  42. data/modular-app/Gemfile +0 -20
  43. data/modular-app/Rakefile +0 -7
  44. data/modular-app/config.ru +0 -4
  45. data/modular-app/config/application.rb +0 -42
  46. data/modular-app/config/boot.rb +0 -6
  47. data/modular-app/config/database.yml +0 -22
  48. data/modular-app/config/environment.rb +0 -5
  49. data/modular-app/config/environments/development.rb +0 -26
  50. data/modular-app/config/environments/production.rb +0 -49
  51. data/modular-app/config/environments/test.rb +0 -35
  52. data/modular-app/config/initializers/backtrace_silencers.rb +0 -7
  53. data/modular-app/config/initializers/inflections.rb +0 -10
  54. data/modular-app/config/initializers/mime_types.rb +0 -5
  55. data/modular-app/config/initializers/secret_token.rb +0 -7
  56. data/modular-app/config/initializers/session_store.rb +0 -8
  57. data/modular-app/config/locales/en.yml +0 -5
  58. data/modular-app/config/routes.rb +0 -7
  59. data/modular-app/db/migrate/20110721090602_create_simple_models.rb +0 -12
  60. data/modular-app/db/schema.rb +0 -20
  61. data/modular-app/db/seeds.rb +0 -7
  62. data/modular-app/script/rails +0 -6
  63. data/modular-app/spec/spec_helper.rb +0 -27
  64. data/spec/components/container.rb +0 -34
  65. data/spec/components/validated.rb +0 -15
  66. data/spec/controllers/example_controller_spec.rb +0 -12
  67. data/spec/controllers/indirect_render_controller_spec.rb +0 -13
  68. data/spec/internal/app/components/heavy_task.rb +0 -8
  69. data/spec/internal/app/controllers/indirect_render_controller.rb +0 -7
  70. data/spec/internal/app/views/components/container.html.erb +0 -7
  71. data/spec/internal/app/views/components/heavy_task.html.erb +0 -1
  72. data/spec/internal/tmp/modular/cached_for_time.html.erb +0 -14
  73. data/spec/internal/tmp/modular/cached_forever.html.erb +0 -12
  74. data/spec/internal/tmp/modular/heavy.html.erb +0 -19
  75. data/spec/internal/tmp/modular/nested.html.erb +0 -28
  76. data/spec/views/indirect_render/index.html.erb_spec.rb +0 -4
@@ -1,3 +1,3 @@
1
1
  module Modular
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -1,12 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Modular::Components::Base, ' as basic module' do
4
- it "should return type in class" do
5
- Modular::Components::Base.type.should === 'Base'
6
- end
7
-
8
- it "should return type in instance" do
9
- Modular::Components::Base.new.type.should === 'Base'
4
+ describe "should return type" do
5
+ it "in class" do
6
+ Modular::Components::Base.type.should === 'base'
7
+ end
8
+
9
+ it "in instance" do
10
+ Modular::Components::Base.new.type.should === 'base'
11
+ end
12
+
13
+ it "in multi-part name" do
14
+ FakeNewsFeed.type.should === 'fake_news_feed'
15
+ end
10
16
  end
11
17
 
12
18
  it "should serialize components correctly" do
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Modular::Components::Container, ' vertical container class ' do
4
+ before :each do
5
+ @cmp = described_class.new
6
+ end
7
+
8
+ it "should have children" do
9
+ @cmp.children.should be_a_kind_of Array
10
+ end
11
+
12
+ it "should have add_container and add_child methods" do
13
+ @cmp.add :container, :title => 'Test container title' do
14
+ add :FakeNewsFeed, :title => 'Worst news feed'
15
+
16
+ add :Vertical, :title => 'Vertical container'
17
+ end
18
+
19
+ @cmp.children[0].title.should == 'Test container title'
20
+
21
+ feed = @cmp.children[0].children[0]
22
+ feed.should be_a_kind_of FakeNewsFeed
23
+ feed.title.should == 'Worst news feed'
24
+
25
+ @cmp.children[0].children[1].should be_a_kind_of Vertical
26
+ end
27
+ end
File without changes
@@ -1,11 +1,15 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe CallbackLayoutController do
4
+ render_views
4
5
 
5
6
  describe "GET 'index'" do
6
7
  it "should be successful" do
7
8
  get 'index'
8
9
  response.should be_success
10
+
11
+ response.body.should contain 'Nested component'
12
+ response.body.should contain 'CallbackLayout#index'
9
13
  end
10
14
  end
11
15
 
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe ExampleController do
4
+ render_views
5
+
6
+ describe "straightforward rendering" do
7
+ it "should be successful" do
8
+ get 'index'
9
+
10
+ response.body.should contain 'Template - Best news feed'
11
+ response.body.should contain 'Find me in app/views/example/index.html.erb'
12
+ end
13
+ end
14
+
15
+ describe "mustache rendering" do
16
+ it "simple" do
17
+ get 'mustache'
18
+ response.should be_success
19
+
20
+ response.body.should contain 'Text in layout'
21
+ response.body.should contain 'Text from mustache template - Text from template settings'
22
+ end
23
+
24
+ it "nested" do
25
+ get 'mustache_nested'
26
+ response.should be_success
27
+
28
+ response.body.should contain 'Text from container settings - asdfgh'
29
+ response.body.should contain 'Text from mustache template - Text from template settings'
30
+ response.body.should contain 'Text from mustache template - Other text from template settings'
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ class MustacheContainer < Modular::Components::Container
2
+ attr_accessor :text
3
+
4
+ use_mustached_template!
5
+ end
@@ -0,0 +1,5 @@
1
+ class Mustached < Modular::Components::Base
2
+ attr_accessor :text
3
+
4
+ use_mustached_template!
5
+ end
@@ -1,11 +1,11 @@
1
1
  class CallbackLayoutController < ApplicationController
2
- modular_layout :method_name
3
-
4
- def method_name
5
- 'heavy'
6
- end
2
+ modular_layout :callback_method
7
3
 
8
4
  def index
9
5
  end
10
6
 
7
+ protected
8
+ def callback_method
9
+ 'nested'
10
+ end
11
11
  end
@@ -1,5 +1,13 @@
1
1
  class ExampleController < ApplicationController
2
2
  def index
3
- render_modular_layout :simple
3
+ modular_layout 'simple'
4
+ end
5
+
6
+ def mustache
7
+ modular_layout 'mustached'
8
+ end
9
+
10
+ def mustache_nested
11
+ modular_layout 'mustache_nested'
4
12
  end
5
13
  end
@@ -0,0 +1,3 @@
1
+ Text from container settings - {{text}}
2
+
3
+ {{# children }}{{{ render }}}{{/ children }}
@@ -0,0 +1 @@
1
+ Text from mustache template - {{text}}
@@ -0,0 +1 @@
1
+ Text in template
@@ -1,5 +1,8 @@
1
1
  Modular.configure do
2
- register_layout :simple, Modular.create(:FakeNewsFeed, :news_count => 50, :title => 'Best news feed')
2
+ register_layout :simple do
3
+ add Modular.create(:FakeNewsFeed, :news_count => 50, :title => 'Best news feed')
4
+ add :main_content
5
+ end
3
6
 
4
7
  register_layout :nested do
5
8
  add Modular.layout(:simple)
@@ -8,12 +11,14 @@ Modular.configure do
8
11
  end
9
12
  add :MainContent
10
13
  end
11
-
12
- register_layout :heavy do
13
- add Modular.layout(:simple)
14
- add :heavy_task
14
+
15
+ register_layout :mustached, :mustached, :text => 'Text from template settings'
16
+
17
+ register_layout :mustache_nested, :mustache_container, :text => 'asdfgh' do
18
+ add Modular.layout(:mustached)
19
+ add :mustached, :text => 'Other text from template settings'
15
20
  end
16
-
21
+
17
22
  register_layout :cached_forever, Modular.create(:CachedForever)
18
23
 
19
24
  register_layout :cached_for_time, Modular.create(:CachedForTime)
@@ -5,15 +5,15 @@ describe Modular::Configuration, ' as modular config' do
5
5
  component = Modular.create :fake_news_feed, :news_count => 50, :title => 'Best news feed'
6
6
 
7
7
  Modular.configure do
8
- register_layout :simple, component
8
+ register_layout :testing_layout, component
9
9
  end
10
10
 
11
- Modular.layout(:simple).to_json == component
11
+ Modular.layout(:testing_layout).should == component
12
12
  end
13
13
 
14
14
  it "should have DSL for registering layout" do
15
15
  Modular.configure do
16
- register_layout :simple do
16
+ register_layout :testing_layout do
17
17
  add :fake_news_feed, :title => 'Best news feed'
18
18
  add :fake_news_feed, :title => 'Just news feed'
19
19
 
@@ -23,15 +23,15 @@ describe Modular::Configuration, ' as modular config' do
23
23
  end
24
24
  end
25
25
 
26
- l = Modular.layout(:simple)
26
+ l = Modular.layout(:testing_layout)
27
27
 
28
28
  l.should be_a_kind_of Modular::Components::Container
29
29
 
30
- l.components[0..1].each do |e|
30
+ l.children[0..1].each do |e|
31
31
  e.should be_a_kind_of FakeNewsFeed
32
32
  end
33
33
 
34
- l.components.length.should == 3
34
+ l.children.length.should == 3
35
35
  end
36
36
 
37
37
  it "should return list of layouts" do
@@ -22,11 +22,42 @@ describe Modular, ' widgets creation ' do
22
22
  Modular.create(widget).should eq(widget)
23
23
  end
24
24
 
25
- it "should unserialize components correctly" do
26
- serialized = Modular.create(:fake_news_feed, :news_count => 50, :title => 'Best news feed').to_json
25
+ describe "creation from json" do
26
+ it "unserialized components" do
27
+ serialized = Modular.create(:fake_news_feed, :news_count => 50, :title => 'Best news feed').to_json
27
28
 
28
- cmp_uns = Modular.from_json(serialized)
29
- cmp_uns.news_count.to_i.should === 50
30
- cmp_uns.title.should === 'Best news feed'
29
+ cmp_uns = Modular.from_json(serialized)
30
+ cmp_uns.news_count.to_i.should === 50
31
+ cmp_uns.title.should === 'Best news feed'
32
+ end
33
+
34
+ it "plain objects" do
35
+ data = '{
36
+ "type":"fake_news_feed",
37
+ "news_count":5
38
+ }'
39
+
40
+ feed = Modular.from_json(data)
41
+ feed.news_count.to_i.should == 5
42
+ feed.should be_a_kind_of FakeNewsFeed
43
+ end
44
+
45
+ it "component with children" do
46
+ data = '
47
+ {
48
+ "children":
49
+ [{
50
+ "type":"fake_news_feed",
51
+ "news_count":5
52
+ }],
53
+ "type":"container"
54
+ }'
55
+
56
+ c = Modular.from_json(data)
57
+ c.children.count.should == 1
58
+ feed = c.children.first
59
+ feed.news_count.to_i.should == 5
60
+ feed.should be_a_kind_of FakeNewsFeed
61
+ end
31
62
  end
32
63
  end
@@ -0,0 +1,115 @@
1
+ require 'spec_helper'
2
+
3
+ describe Modular, ' widgets validation ' do
4
+ it "should be valid if all is OK" do
5
+ widget = Modular.create'container',
6
+ children: [
7
+ type: 'fake_news_feed'
8
+ ]
9
+
10
+ widget.invalid?.should be_false
11
+ widget.valid?.should be_true
12
+
13
+ widget.errors.to_a.should be_empty
14
+ end
15
+
16
+ it "should be invalid if component is not valid" do
17
+ widget = Modular.create('container', title: 'dsfghaskjfhagsdklfjhaflkasjhflkajshflkajdhfalkjhfaldkjhflkjasdhflkjahflkjsdhflkasdjfhaslkjfhasldkfjhaslkfjhaslkfjhaglkjfhlkjdfhglkjsdfhglkjsdfhgkjsdhglkajfhlkjsdfhlkasjdhflkasdjhfalksdjhflkasdjfhalskjfhaljkfhasldkfjhalskdf')
18
+
19
+ widget.invalid?.should be_true
20
+ widget.valid?.should be_false
21
+
22
+ widget.errors.to_a.should == ["Title is too long (maximum is 64 characters)"]
23
+ end
24
+
25
+ describe "children validation" do
26
+ before :each do
27
+ @widget = Modular.from_json type: 'container',
28
+ children: [
29
+ {
30
+ type: 'fake_news_feed',
31
+ title: 'dsfghaskjfhagsdklfjhaflkasjhflkajshflkajdhfalkjhfaldkjhflkjasdhflkjahflkjsdhflkasdjfhaslkjfhasldkfjhaslkfjhaslkfjhaglkjfhlkjdfhglkjsdfhglkjsdfhgkjsdhglkajfhlkjsdfhlkasjdhflkasdjhfalksdjhflkasdjfhalskjfhaljkfhasldkfjhalskdf'
32
+ },
33
+ {
34
+ type: 'validated'
35
+ }
36
+ ]
37
+ end
38
+
39
+ it "should be valid if everything is ok" do
40
+ widget = Modular.from_json type: 'container',
41
+ children: [
42
+ {
43
+ type: 'fake_news_feed'
44
+ },
45
+ {
46
+ type: 'validated',
47
+ non_existant_property: 'something'
48
+ }
49
+ ]
50
+
51
+ widget.invalid?.should be_false
52
+ widget.valid?.should be_true
53
+ end
54
+
55
+ it "should be invalid if has invalid children" do
56
+ @widget.invalid?.should be_true
57
+ @widget.valid?.should be_false
58
+ end
59
+
60
+ it "should return all errors for any widget" do
61
+ widget = Modular.from_json type: 'fake_news_feed', title: 'dsfghaskjfhagsdklfjhaflkasjhflkajshflkajdhfalkjhfaldkjhflkjasdhflkjahflkjsdhflkasdjfhaslkjfhasldkfjhaslkfjhaslkfjhaglkjfhlkjdfhglkjsdfhglkjsdfhgkjsdhglkajfhlkjsdfhlkasjdhflkasdjhfalksdjhflkasdjfhalskjfhaljkfhasldkfjhalskdf'
62
+ widget.all_errors.should == { '' => ["Title is too long (maximum is 64 characters)" ] }
63
+ end
64
+
65
+ it "should return all errors for children correctly if elemnts dont have uids" do
66
+ @widget.errors.to_a.should be_empty
67
+ @widget.all_errors.should == {
68
+ '' => ["Title is too long (maximum is 64 characters)", 'Non existant property can\'t be blank']
69
+ }
70
+ end
71
+
72
+ it "should return errors with uniqid" do
73
+ @widget.children.first.uniqid = 'first'
74
+ @widget.errors.to_a.should be_empty
75
+ @widget.all_errors.should == {
76
+ 'first' => ["Title is too long (maximum is 64 characters)"],
77
+ '' => ['Non existant property can\'t be blank']
78
+ }
79
+ end
80
+
81
+ it "should return all errors with uids" do
82
+ widget = Modular.from_json type: 'container', uniqid: 'first',
83
+ children: [
84
+ {
85
+ uniqid: 'second',
86
+ type: 'fake_news_feed',
87
+ title: 'dsfghaskjfhagsdklfjhaflkasjhflkajshflkajdhfalkjhfaldkjhflkjasdhflkjahflkjsdhflkasdjfhaslkjfhasldkfjhaslkfjhaslkfjhaglkjfhlkjdfhglkjsdfhglkjsdfhgkjsdhglkajfhlkjsdfhlkasjdhflkasdjhfalksdjhflkasdjfhalskjfhaljkfhasldkfjhalskdf'
88
+ },
89
+ {
90
+ type: 'container',
91
+ uniqid: 'fourth',
92
+ title: 'dsfghaskjfhdfgsdfgsdgsdfsdfgsdfgsdfgsddgfdagsdklfjhaflkasjhflkajshflkajdhfalkjhfaldkjhflkjasdhflkjahflkjsdhflkasdjfhaslkjfhasldkfjhaslkfjhaslkfjhaglkjfhlkjdfhglkjsdfhglkjsdfhgkjsdhglkajfhlkjsdfhlkasjdhflkasdjhfalksdjhflkasdjfhalskjfhaljkfhasldkfjhalskdf',
93
+ children: [
94
+ {
95
+ uniqid: 'last',
96
+ type: 'fake_news_feed',
97
+ title: 'dsfghaskjfhagsdklfjhaflkasjhflkajshflkajdhfalkjhfaldkjhflkjasdhflkjahflkjsdhflkasdjfhaslkjfhasldkfjhaslkfjhaslkfjhaglkjfhlkjdfhglkjsdfhglkjsdfhgkjsdhglkajfhlkjsdfhlkasjdhflkasdjhfalksdjhflkasdjfhalskjfhaljkfhasldkfjhalskdf'
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ uniqid: 'third',
103
+ type: 'validated'
104
+ }
105
+ ]
106
+
107
+ widget.all_errors.should == {
108
+ 'second' => ["Title is too long (maximum is 64 characters)"],
109
+ 'last' => ["Title is too long (maximum is 64 characters)"],
110
+ 'fourth' => ["Title is too long (maximum is 64 characters)"],
111
+ 'third' => ['Non existant property can\'t be blank']
112
+ }
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,7 @@
1
+ <table>
2
+ <tr><td>
3
+ <% @attributes[:children].each do |child| %>
4
+ <%= render_component child %>
5
+ <% end %>
6
+ </td></tr>
7
+ </table>
data/templates/layout.erb CHANGED
@@ -1,8 +1,6 @@
1
1
  <%% @layout_id = '<%=@layout_id%>'.to_sym %>
2
2
 
3
- <% layout = Modular.layout(@layout_id) %>
4
-
5
- <%= layout.render %>
3
+ <%= Modular.layout(@layout_id).render %>
6
4
 
7
5
  <%%
8
6
  layout = '<%=@original_layout%>'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-20 00:00:00.000000000 Z
12
+ date: 2012-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -59,10 +59,6 @@ files:
59
59
  - Rakefile
60
60
  - TODO
61
61
  - config.ru
62
- - lib/generators/component/USAGE
63
- - lib/generators/component/component_generator.rb
64
- - lib/generators/component/templates/component.rb.erb
65
- - lib/generators/component/templates/template.erb
66
62
  - lib/modular.rb
67
63
  - lib/modular/action_controller_extension.rb
68
64
  - lib/modular/caching.rb
@@ -72,52 +68,34 @@ files:
72
68
  - lib/modular/components/main_content.rb
73
69
  - lib/modular/configuration.rb
74
70
  - lib/modular/creation.rb
75
- - lib/modular/helpers.rb
71
+ - lib/modular/generators/component/USAGE
72
+ - lib/modular/generators/component/component_generator.rb
73
+ - lib/modular/generators/component/templates/component.rb.erb
74
+ - lib/modular/generators/component/templates/template.erb
76
75
  - lib/modular/layout_generator.rb
76
+ - lib/modular/mst_rendering.rb
77
77
  - lib/modular/railtie.rb
78
78
  - lib/modular/rendering.rb
79
79
  - lib/modular/version.rb
80
- - modular-app/Gemfile
81
- - modular-app/Rakefile
82
- - modular-app/config.ru
83
- - modular-app/config/application.rb
84
- - modular-app/config/boot.rb
85
- - modular-app/config/database.yml
86
- - modular-app/config/environment.rb
87
- - modular-app/config/environments/development.rb
88
- - modular-app/config/environments/production.rb
89
- - modular-app/config/environments/test.rb
90
- - modular-app/config/initializers/backtrace_silencers.rb
91
- - modular-app/config/initializers/inflections.rb
92
- - modular-app/config/initializers/mime_types.rb
93
- - modular-app/config/initializers/secret_token.rb
94
- - modular-app/config/initializers/session_store.rb
95
- - modular-app/config/locales/en.yml
96
- - modular-app/config/routes.rb
97
- - modular-app/db/migrate/20110721090602_create_simple_models.rb
98
- - modular-app/db/schema.rb
99
- - modular-app/db/seeds.rb
100
- - modular-app/script/rails
101
- - modular-app/spec/spec_helper.rb
102
80
  - modular.gemspec
103
- - spec/components/base.rb
104
- - spec/components/container.rb
105
- - spec/components/hello_world.rb
106
- - spec/components/helpers_example.rb
107
- - spec/components/validated.rb
81
+ - spec/components/base_spec.rb
82
+ - spec/components/container_spec.rb
83
+ - spec/components/hello_world_spec.rb
84
+ - spec/components/helpers_example_spec.rb
85
+ - spec/components/spec/internal/log/test.log
108
86
  - spec/controllers/cached_for_time_controller_spec.rb
109
87
  - spec/controllers/cached_forever_controller_spec.rb
110
88
  - spec/controllers/callback_layout_controller_spec.rb
111
- - spec/controllers/example_controller_spec.rb
112
- - spec/controllers/indirect_render_controller_spec.rb
113
89
  - spec/controllers/layout_test_controller_spec.rb
90
+ - spec/controllers/rendering_spec.rb
114
91
  - spec/internal/app/components/cached_for_time.rb
115
92
  - spec/internal/app/components/cached_forever.rb
116
93
  - spec/internal/app/components/fake_news_feed.rb
117
94
  - spec/internal/app/components/foobar.rb
118
- - spec/internal/app/components/heavy_task.rb
119
95
  - spec/internal/app/components/hello_world.rb
120
96
  - spec/internal/app/components/helpers_example.rb
97
+ - spec/internal/app/components/mustache_container.rb
98
+ - spec/internal/app/components/mustached.rb
121
99
  - spec/internal/app/components/validated.rb
122
100
  - spec/internal/app/components/vertical.rb
123
101
  - spec/internal/app/controllers/application_controller.rb
@@ -125,7 +103,6 @@ files:
125
103
  - spec/internal/app/controllers/cached_forever_controller.rb
126
104
  - spec/internal/app/controllers/callback_layout_controller.rb
127
105
  - spec/internal/app/controllers/example_controller.rb
128
- - spec/internal/app/controllers/indirect_render_controller.rb
129
106
  - spec/internal/app/controllers/layout_test_controller.rb
130
107
  - spec/internal/app/models/simple_model.rb
131
108
  - spec/internal/app/views/cached_for_time/index.html.erb
@@ -133,15 +110,17 @@ files:
133
110
  - spec/internal/app/views/callback_layout/index.html.erb
134
111
  - spec/internal/app/views/components/cached_for_time.html.erb
135
112
  - spec/internal/app/views/components/cached_forever.html.erb
136
- - spec/internal/app/views/components/container.html.erb
137
113
  - spec/internal/app/views/components/fake_news_feed.html.erb
138
114
  - spec/internal/app/views/components/foobar.html.erb
139
- - spec/internal/app/views/components/heavy_task.html.erb
140
115
  - spec/internal/app/views/components/hello_world.html.erb
141
116
  - spec/internal/app/views/components/helpers_example.html.erb
117
+ - spec/internal/app/views/components/mustache_container.mst
118
+ - spec/internal/app/views/components/mustached.mst
142
119
  - spec/internal/app/views/components/validated.html.erb
143
120
  - spec/internal/app/views/components/vertical.html.erb
144
121
  - spec/internal/app/views/example/index.html.erb
122
+ - spec/internal/app/views/example/mustache.html.erb
123
+ - spec/internal/app/views/example/mustache_nested.html.erb
145
124
  - spec/internal/app/views/indirect_render/index.html.erb
146
125
  - spec/internal/app/views/layout_test/index.html.erb
147
126
  - spec/internal/app/views/layouts/application.html.erb
@@ -152,14 +131,11 @@ files:
152
131
  - spec/internal/log/.gitignore
153
132
  - spec/internal/public/favicon.ico
154
133
  - spec/internal/tmp/.gitkeep
155
- - spec/internal/tmp/modular/cached_for_time.html.erb
156
- - spec/internal/tmp/modular/cached_forever.html.erb
157
- - spec/internal/tmp/modular/heavy.html.erb
158
- - spec/internal/tmp/modular/nested.html.erb
159
134
  - spec/modular/configuration_spec.rb
160
135
  - spec/modular/creation_spec.rb
136
+ - spec/modular/validation_spec.rb
161
137
  - spec/spec_helper.rb
162
- - spec/views/indirect_render/index.html.erb_spec.rb
138
+ - templates/components/container.html.erb
163
139
  - templates/layout.erb
164
140
  homepage: https://github.com/brain-geek/modular
165
141
  licenses: []
@@ -175,7 +151,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
151
  version: '0'
176
152
  segments:
177
153
  - 0
178
- hash: 541330603454818341
154
+ hash: -3892738958547389268
179
155
  required_rubygems_version: !ruby/object:Gem::Requirement
180
156
  none: false
181
157
  requirements:
@@ -184,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
160
  version: '0'
185
161
  segments:
186
162
  - 0
187
- hash: 541330603454818341
163
+ hash: -3892738958547389268
188
164
  requirements: []
189
165
  rubyforge_project: modular
190
166
  rubygems_version: 1.8.22