layout 0.1.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.
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in layout.gemspec
4
+ gemspec
@@ -0,0 +1,107 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ layout (0.1.0)
5
+ rails (>= 3.0.0)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ abstract (1.0.0)
11
+ actionmailer (3.0.1)
12
+ actionpack (= 3.0.1)
13
+ mail (~> 2.2.5)
14
+ actionpack (3.0.1)
15
+ activemodel (= 3.0.1)
16
+ activesupport (= 3.0.1)
17
+ builder (~> 2.1.2)
18
+ erubis (~> 2.6.6)
19
+ i18n (~> 0.4.1)
20
+ rack (~> 1.2.1)
21
+ rack-mount (~> 0.6.12)
22
+ rack-test (~> 0.5.4)
23
+ tzinfo (~> 0.3.23)
24
+ activemodel (3.0.1)
25
+ activesupport (= 3.0.1)
26
+ builder (~> 2.1.2)
27
+ i18n (~> 0.4.1)
28
+ activerecord (3.0.1)
29
+ activemodel (= 3.0.1)
30
+ activesupport (= 3.0.1)
31
+ arel (~> 1.0.0)
32
+ tzinfo (~> 0.3.23)
33
+ activeresource (3.0.1)
34
+ activemodel (= 3.0.1)
35
+ activesupport (= 3.0.1)
36
+ activesupport (3.0.1)
37
+ archive-tar-minitar (0.5.2)
38
+ arel (1.0.1)
39
+ activesupport (~> 3.0.0)
40
+ builder (2.1.2)
41
+ columnize (0.3.1)
42
+ diff-lcs (1.1.2)
43
+ erubis (2.6.6)
44
+ abstract (>= 1.0.0)
45
+ i18n (0.4.1)
46
+ linecache19 (0.5.11)
47
+ ruby_core_source (>= 0.1.4)
48
+ mail (2.2.7)
49
+ activesupport (>= 2.3.6)
50
+ mime-types
51
+ treetop (>= 1.4.5)
52
+ mime-types (1.16)
53
+ polyglot (0.3.1)
54
+ rack (1.2.1)
55
+ rack-mount (0.6.13)
56
+ rack (>= 1.0.0)
57
+ rack-test (0.5.6)
58
+ rack (>= 1.0)
59
+ rails (3.0.1)
60
+ actionmailer (= 3.0.1)
61
+ actionpack (= 3.0.1)
62
+ activerecord (= 3.0.1)
63
+ activeresource (= 3.0.1)
64
+ activesupport (= 3.0.1)
65
+ bundler (~> 1.0.0)
66
+ railties (= 3.0.1)
67
+ railties (3.0.1)
68
+ actionpack (= 3.0.1)
69
+ activesupport (= 3.0.1)
70
+ rake (>= 0.8.4)
71
+ thor (~> 0.14.0)
72
+ rake (0.8.7)
73
+ rspec (2.0.1)
74
+ rspec-core (~> 2.0.1)
75
+ rspec-expectations (~> 2.0.1)
76
+ rspec-mocks (~> 2.0.1)
77
+ rspec-core (2.0.1)
78
+ rspec-expectations (2.0.1)
79
+ diff-lcs (>= 1.1.2)
80
+ rspec-mocks (2.0.1)
81
+ rspec-core (~> 2.0.1)
82
+ rspec-expectations (~> 2.0.1)
83
+ rspec-rails (2.0.1)
84
+ rspec (~> 2.0.0)
85
+ ruby-debug-base19 (0.11.24)
86
+ columnize (>= 0.3.1)
87
+ linecache19 (>= 0.5.11)
88
+ ruby_core_source (>= 0.1.4)
89
+ ruby-debug19 (0.11.6)
90
+ columnize (>= 0.3.1)
91
+ linecache19 (>= 0.5.11)
92
+ ruby-debug-base19 (>= 0.11.19)
93
+ ruby_core_source (0.1.4)
94
+ archive-tar-minitar (>= 0.5.2)
95
+ thor (0.14.3)
96
+ treetop (1.4.8)
97
+ polyglot (>= 0.3.1)
98
+ tzinfo (0.3.23)
99
+
100
+ PLATFORMS
101
+ ruby
102
+
103
+ DEPENDENCIES
104
+ layout!
105
+ rails (>= 3.0.0)
106
+ rspec-rails (= 2.0.1)
107
+ ruby-debug19
@@ -0,0 +1,5 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "layout/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "layout"
7
+ s.version = Layout::Version::STRING
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Nando Vieira"]
10
+ s.email = ["fnando.vieira@gmail.com"]
11
+ s.homepage = "http://rubygems.org/gems/layout"
12
+ s.summary = "Specify which layout will be rendered on Rails 3 apps"
13
+ s.description = "Specify which layout will be rendered on Rails 3 apps"
14
+
15
+ s.rubyforge_project = "layout"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency "rails", ">= 3.0.0"
23
+ s.add_development_dependency "rspec-rails", "2.0.1"
24
+ s.add_development_dependency "ruby-debug19"
25
+ end
@@ -0,0 +1,4 @@
1
+ require "action_controller/railtie"
2
+ require "layout/base"
3
+ require "layout/railtie"
4
+ require "layout/version"
@@ -0,0 +1,47 @@
1
+ module Layout
2
+ module Base
3
+ def self.included(base)
4
+ base.class_eval do
5
+ include InstanceMethods
6
+
7
+ def self.layout_options
8
+ @layout_options ||= []
9
+ end
10
+
11
+ def self.layout_options=(options)
12
+ @layout_options = options
13
+ end
14
+
15
+ # Set current action's layout.
16
+ # Works in the same old fashion, but you can have multiple calls to it.
17
+ #
18
+ # set_layout "application"
19
+ # set_layout "site", :only => %w[show edit]
20
+ # set_layout "site", :except => %w[remove index]
21
+ #
22
+ def self.set_layout(name, options = {})
23
+ self.layout_options << [name, options]
24
+ end
25
+
26
+ before_filter :choose_layout
27
+ end
28
+ end
29
+
30
+ module InstanceMethods
31
+ private
32
+ def choose_layout
33
+ self.class.layout_options.each do |name, options|
34
+ if options[:only] && validates_action_for_layout(true, options[:only])
35
+ self.class.layout(name)
36
+ elsif options[:except] && validates_action_for_layout(false, options[:except])
37
+ self.class.layout(name)
38
+ end
39
+ end
40
+ end
41
+
42
+ def validates_action_for_layout(compares_to, actions)
43
+ [actions].flatten.collect(&:to_sym).include?(action_name.to_sym) == compares_to
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,9 @@
1
+ require "rails/railtie"
2
+
3
+ module Layout
4
+ class Railtie < Rails::Railtie
5
+ ActiveSupport.on_load(:action_controller) do
6
+ include Base
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module Layout
2
+ module Version
3
+ MAJOR = 0
4
+ MINOR = 1
5
+ PATCH = 0
6
+ STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
+ end
8
+ end
Binary file
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ describe SamplesController do
4
+ render_views
5
+
6
+ context "GET :index" do
7
+ let(:layout) { "application" }
8
+ let(:action) { :index }
9
+ it_should_behave_like "custom layout"
10
+ end
11
+
12
+ context "GET :show" do
13
+ let(:layout) { "site" }
14
+ let(:action) { :show }
15
+ it_should_behave_like "custom layout"
16
+ end
17
+
18
+ context "GET :edit" do
19
+ let(:layout) { "modal" }
20
+ let(:action) { :edit }
21
+ it_should_behave_like "custom layout"
22
+ end
23
+ end
@@ -0,0 +1,6 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require "rails"
3
+ require "layout"
4
+ require "support/config/boot"
5
+ require "rspec/rails"
6
+ require "support/custom_layout_shared"
Binary file
@@ -0,0 +1,14 @@
1
+ class SamplesController < ActionController::Base
2
+ set_layout "application", :only => :index
3
+ set_layout "site", :only => :show
4
+ set_layout "modal", :except => [:index, :show]
5
+
6
+ def index
7
+ end
8
+
9
+ def show
10
+ end
11
+
12
+ def edit
13
+ end
14
+ end
@@ -0,0 +1,2 @@
1
+ <h1>Application</h1>
2
+ <%= yield %>
@@ -0,0 +1,2 @@
1
+ <h1>Modal</h1>
2
+ <%= yield %>
@@ -0,0 +1,2 @@
1
+ <h1>Site</h1>
2
+ <%= yield %>
@@ -0,0 +1 @@
1
+ Viewing the edit page
@@ -0,0 +1 @@
1
+ Viewing the index page
@@ -0,0 +1 @@
1
+ Viewing the show page
@@ -0,0 +1,27 @@
1
+ ENV["BUNDLE_GEMFILE"] = File.dirname(__FILE__) + "/../../../../Gemfile"
2
+ require "bundler"
3
+ Bundler.setup
4
+
5
+ require "rails"
6
+
7
+ %w(
8
+ action_controller
9
+ rails/test_unit
10
+ ).each do |framework|
11
+ begin
12
+ require "#{framework}/railtie"
13
+ rescue LoadError
14
+ end
15
+ end
16
+
17
+
18
+ Bundler.require(:default)
19
+
20
+ module Layout
21
+ class Application < Rails::Application
22
+ config.root = File.dirname(__FILE__) + "/.."
23
+ config.active_support.deprecation = :log
24
+ end
25
+ end
26
+
27
+ Layout::Application.initialize!
@@ -0,0 +1,7 @@
1
+ Layout::Application.routes.draw do
2
+ controller :samples do
3
+ get :index
4
+ get :show
5
+ get :edit
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ shared_examples_for "custom layout" do
2
+ it "should render specified layout" do
3
+ get action
4
+ response.body.should match(/<h1>#{layout}<\/h1>/i)
5
+ response.body.should match(/Viewing the #{action} page/i)
6
+ end
7
+ end
File without changes
File without changes
@@ -0,0 +1,36 @@
1
+ ---
2
+ ABC: !map:HashWithIndifferentAccess
3
+ commit: Pagar com PagSeguro
4
+ email_cobranca: user@example.com
5
+ encoding: utf-8
6
+
7
+ item_descr_1: Ruby 1.9 PDF
8
+ item_frete_1: "0"
9
+ item_id_1: "1"
10
+ item_peso_1: "0"
11
+ item_quant_1: "1"
12
+ item_valor_1: "900"
13
+
14
+ item_descr_2: Ruby 1.9 Screencast
15
+ item_frete_2: "0"
16
+ item_id_2: "2"
17
+ item_peso_2: "0"
18
+ item_quant_2: "1"
19
+ item_valor_2: "1250"
20
+
21
+ item_descr_3: Ruby T-Shirt
22
+ item_frete_3: "250"
23
+ item_id_3: "3"
24
+ item_peso_3: "300"
25
+ item_quant_3: "2"
26
+ item_valor_3: "1989"
27
+
28
+ item_descr_4: Ruby Mug
29
+ item_id_4: "4"
30
+ item_peso_4: "100"
31
+ item_quant_4: "1"
32
+ item_valor_4: "1599"
33
+
34
+ moeda: BRL
35
+ ref_transacao: ABC
36
+ tipo: CP
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: layout
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Nando Vieira
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-11-06 00:00:00 -02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rails
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 3
30
+ - 0
31
+ - 0
32
+ version: 3.0.0
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec-rails
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 2
45
+ - 0
46
+ - 1
47
+ version: 2.0.1
48
+ type: :development
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: ruby-debug19
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ description: Specify which layout will be rendered on Rails 3 apps
64
+ email:
65
+ - fnando.vieira@gmail.com
66
+ executables: []
67
+
68
+ extensions: []
69
+
70
+ extra_rdoc_files: []
71
+
72
+ files:
73
+ - .gitignore
74
+ - Gemfile
75
+ - Gemfile.lock
76
+ - Rakefile
77
+ - layout.gemspec
78
+ - lib/layout.rb
79
+ - lib/layout/base.rb
80
+ - lib/layout/railtie.rb
81
+ - lib/layout/version.rb
82
+ - spec/.DS_Store
83
+ - spec/controllers/samples_controller_spec.rb
84
+ - spec/spec_helper.rb
85
+ - spec/support/.DS_Store
86
+ - spec/support/app/.DS_Store
87
+ - spec/support/app/controllers/samples_controller.rb
88
+ - spec/support/app/views/layouts/application.html.erb
89
+ - spec/support/app/views/layouts/modal.html.erb
90
+ - spec/support/app/views/layouts/site.html.erb
91
+ - spec/support/app/views/samples/edit.html.erb
92
+ - spec/support/app/views/samples/index.html.erb
93
+ - spec/support/app/views/samples/show.html.erb
94
+ - spec/support/config/boot.rb
95
+ - spec/support/config/routes.rb
96
+ - spec/support/custom_layout_shared.rb
97
+ - spec/support/log/.gitkeep
98
+ - spec/support/tmp/.gitkeep
99
+ - spec/support/tmp/pagseguro-test.yml
100
+ has_rdoc: true
101
+ homepage: http://rubygems.org/gems/layout
102
+ licenses: []
103
+
104
+ post_install_message:
105
+ rdoc_options: []
106
+
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ requirements: []
126
+
127
+ rubyforge_project: layout
128
+ rubygems_version: 1.3.7
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: Specify which layout will be rendered on Rails 3 apps
132
+ test_files:
133
+ - spec/controllers/samples_controller_spec.rb
134
+ - spec/spec_helper.rb
135
+ - spec/support/.DS_Store
136
+ - spec/support/app/.DS_Store
137
+ - spec/support/app/controllers/samples_controller.rb
138
+ - spec/support/app/views/layouts/application.html.erb
139
+ - spec/support/app/views/layouts/modal.html.erb
140
+ - spec/support/app/views/layouts/site.html.erb
141
+ - spec/support/app/views/samples/edit.html.erb
142
+ - spec/support/app/views/samples/index.html.erb
143
+ - spec/support/app/views/samples/show.html.erb
144
+ - spec/support/config/boot.rb
145
+ - spec/support/config/routes.rb
146
+ - spec/support/custom_layout_shared.rb
147
+ - spec/support/log/.gitkeep
148
+ - spec/support/tmp/.gitkeep
149
+ - spec/support/tmp/pagseguro-test.yml