radiant-layouts-extension 0.9.1 → 1.0.0

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 (39) hide show
  1. data/MIT-LICENSE +75 -4
  2. data/README.md +48 -1
  3. data/Rakefile +56 -15
  4. data/VERSION +1 -1
  5. data/app/models/haml_filter.rb +5 -0
  6. data/app/views/layouts/radiant.html.haml +1 -1
  7. data/config/routes.rb +5 -0
  8. data/layouts_extension.rb +13 -5
  9. data/lib/haml_layouts/models/layout.rb +34 -0
  10. data/lib/haml_layouts/models/page.rb +31 -0
  11. data/lib/nested_layouts/tags/core.rb +141 -0
  12. data/lib/share_layouts/controllers/action_controller.rb +25 -0
  13. data/lib/share_layouts/helpers/action_view.rb +50 -0
  14. data/lib/tasks/layouts_extension_tasks.rake +27 -6
  15. data/radiant-layouts-extension.gemspec +37 -26
  16. data/spec/controllers/{share_layouts_spec.rb → share_controller_spec.rb} +0 -0
  17. data/spec/datasets/layouts_layouts.rb +36 -0
  18. data/spec/datasets/layouts_pages.rb +43 -0
  19. data/spec/lib/haml_layouts/haml_layouts_extension_spec.rb +22 -0
  20. data/spec/lib/haml_layouts/models/layout_spec.rb +36 -0
  21. data/spec/lib/haml_layouts/models/page_spec.rb +40 -0
  22. data/spec/lib/nested_layouts/nested_layouts_extension_spec.rb +16 -0
  23. data/spec/lib/nested_layouts/{tags_spec.rb → tags/core_spec.rb} +41 -17
  24. data/spec/{controllers/nested_layouts_spec.rb → lib/share_layouts/controllers/action_controller_spec.rb} +0 -1
  25. data/spec/{helpers/share_layouts_helper_spec.rb → lib/share_layouts/helpers/action_view_spec.rb} +32 -29
  26. data/spec/lib/share_layouts/share_layouts_extension_spec.rb +22 -0
  27. data/spec/models/haml_filter_spec.rb +0 -0
  28. data/spec/models/rails_page_spec.rb +9 -9
  29. data/spec/spec.opts +2 -3
  30. metadata +43 -28
  31. data/lib/nested_layouts.rb +0 -2
  32. data/lib/nested_layouts/tags.rb +0 -127
  33. data/lib/share_layouts.rb +0 -2
  34. data/lib/share_layouts/helper.rb +0 -39
  35. data/lib/share_layouts/radiant_layouts.rb +0 -21
  36. data/spec/datasets/nested_layouts_dataset.rb +0 -38
  37. data/spec/datasets/share_layouts_dataset.rb +0 -38
  38. data/spec/lib/share_layouts_extension_spec.rb +0 -25
  39. data/spec/rcov.opts +0 -2
data/lib/share_layouts.rb DELETED
@@ -1,2 +0,0 @@
1
- module ShareLayouts
2
- end
@@ -1,39 +0,0 @@
1
- module ShareLayouts::Helper
2
-
3
- def radiant_layout(name = @radiant_layout)
4
- page = find_page
5
- assign_attributes!(page, name)
6
- page.build_parts_from_hash!(extract_captures)
7
- page.render
8
- end
9
-
10
- def assign_attributes!(page, name = @radiant_layout)
11
- page.layout = Layout.find_by_name(name) || page.layout
12
- page.title = @title || @content_for_title || page.title || ''
13
- page.breadcrumb = @breadcrumb || @content_for_breadcrumb || page.breadcrumb || page.title
14
- page.breadcrumbs = @breadcrumbs || @content_for_breadcrumbs || nil
15
- page.url = request.path
16
- page.slug = page.url.split("/").last
17
- page.published_at ||= Time.now
18
- page.request = request
19
- page.response = response
20
- end
21
-
22
- def extract_captures
23
- variables = instance_variables.grep(/@content_for_/)
24
- variables.inject({}) do |h, var|
25
- var =~ /^@content_for_(.*)$/
26
- key = $1.intern
27
- key = :body if key == :layout
28
- unless key == :title || key == :breadcrumbs
29
- h[key] = instance_variable_get(var)
30
- end
31
- h
32
- end
33
- end
34
-
35
- def find_page
36
- page = Page.find_by_url(request.path) rescue nil
37
- page.is_a?(RailsPage) ? page : RailsPage.new(:class_name => "RailsPage")
38
- end
39
- end
@@ -1,21 +0,0 @@
1
- module ShareLayouts::RadiantLayouts
2
-
3
- def self.included(base)
4
- base.extend ClassMethods
5
- end
6
-
7
- module ClassMethods
8
- def radiant_layout(name=nil, options={}, &block)
9
- raise ArgumentError, "A layout name or block is required!" unless name || block
10
- write_inheritable_attribute 'radiant_layout', name || block
11
- before_filter :set_radiant_layout
12
- layout 'radiant', options
13
- end
14
- end
15
-
16
- def set_radiant_layout
17
- @radiant_layout = self.class.read_inheritable_attribute 'radiant_layout'
18
- @radiant_layout = @radiant_layout.call(self) if @radiant_layout.is_a? Proc
19
- end
20
-
21
- end
@@ -1,38 +0,0 @@
1
- class NestedLayoutsDataset < Dataset::Base
2
- def load
3
- create_record :layout, :parent,
4
- :name => 'parent',
5
- :content => <<-CONTENT
6
- <html>
7
- <body class="<r:layout />">
8
- <r:content_for_layout />
9
- </body>
10
- </html>
11
- CONTENT
12
-
13
- create_record :layout, :child,
14
- :name => 'child',
15
- :content => <<-CONTENT
16
- <r:inside_layout name='parent'>
17
- <h1>child</h1>
18
- </r:inside_layout>
19
- CONTENT
20
-
21
- create_record :page, :parent_layout,
22
- :title => 'child layout',
23
- :layout_id => layouts(:parent).id,
24
- :breadcrumb => 'Homepage',
25
- :slug => '/',
26
- :status_id => 100,
27
- :published_at => '2008-01-01 08:00:00'
28
-
29
- create_record :page, :child_layout,
30
- :title => 'child layout',
31
- :layout_id => layouts(:child).id,
32
- :breadcrumb => 'Homepage',
33
- :slug => '/',
34
- :status_id => 100,
35
- :published_at => '2008-01-01 08:00:00'
36
-
37
- end
38
- end
@@ -1,38 +0,0 @@
1
- class ShareLayoutsDataset < Dataset::Base
2
- def load
3
- create_record :page, :homepage, :id => 1,
4
- :title => 'Homepage',
5
- :breadcrumb => 'Homepage',
6
- :slug => '/',
7
- :status_id => 100,
8
- :published_at => '2008-01-01 08:00:00'
9
-
10
- create_record :page, :rails_page,
11
- :id => 2,
12
- :title => 'App page',
13
- :breadcrumb => 'App page',
14
- :slug => 'app',
15
- :class_name => 'RailsPage',
16
- :status_id => 100,
17
- :parent_id => 1,
18
- :published_at => '2008-01-01 08:00:00'
19
-
20
- create_record :page, :rails_page_child,
21
- :id => 3,
22
- :title => 'Child',
23
- :breadcrumb => 'Child',
24
- :slug => 'child-page',
25
- :status_id => 100,
26
- :parent_id => 2,
27
- :published_at => '2008-01-01 08:00:00'
28
-
29
- create_record :page, :other,
30
- :id => 4,
31
- :title => 'Other',
32
- :breadcrumb => 'Other',
33
- :slug => 'other',
34
- :status_id => 100,
35
- :parent_id => 1,
36
- :published_at => '2008-01-01 08:00:00'
37
- end
38
- end
@@ -1,25 +0,0 @@
1
- require 'spec/spec_helper'
2
-
3
- describe LayoutsExtension do
4
-
5
- context 'activate' do
6
-
7
- it 'should have a RailsPage class to call' do
8
- RailsPage.should_not be_nil
9
- end
10
-
11
- it 'should extend ActionController base methods' do
12
- ActionController::Base.included_modules.include?(ShareLayouts::RadiantLayouts).should be_true
13
- end
14
-
15
- it 'should extend ActionView helper methods' do
16
- ActionView::Base.included_modules.include?(ShareLayouts::Helper).should be_true
17
- end
18
-
19
- it 'should extend Page base methods' do
20
- Page.included_modules.include?(NestedLayouts::Tags).should be_true
21
- end
22
-
23
- end
24
-
25
- end
data/spec/rcov.opts DELETED
@@ -1,2 +0,0 @@
1
- --exclude "spec/*,gems/*"
2
- --rails