renderit 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +5 -1
- data/VERSION +1 -1
- data/lib/renderit.rb +96 -34
- data/renderit.gemspec +54 -0
- metadata +5 -4
data/README.rdoc
CHANGED
@@ -20,6 +20,10 @@ will be used.
|
|
20
20
|
|
21
21
|
In order to use those tempates, default view or layout have to be present. You will not be able to render 'application_new' layout in case you have no 'application' layout.
|
22
22
|
|
23
|
-
|
23
|
+
== Rails compatibility
|
24
|
+
|
25
|
+
In order to use this gem with rails 2.3.*, you just have to put 'config.gem "renderit"' string in config/environment.rb file.
|
26
|
+
|
27
|
+
In order to user this gem with rails 3, you have to require 'renderit' gem in Gemfile and create some file (I prefer renderit.rb) in config/initializers folder where 'RenderIt.load_config' line should be present.
|
24
28
|
|
25
29
|
Copyright (c) 2010 Andrey Romanov. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/renderit.rb
CHANGED
@@ -1,36 +1,3 @@
|
|
1
|
-
class ActionController::Base
|
2
|
-
private
|
3
|
-
|
4
|
-
# default_render method for ActionController::Base is redefined
|
5
|
-
# in order to render views for specific browsers (depending on user_agent)
|
6
|
-
def default_render
|
7
|
-
@renderit_template ||= RenderIt.get_template_name(request)
|
8
|
-
template_path = default_template_name + '_' + @renderit_template
|
9
|
-
if view_paths.find_template(template_path, default_template_format)
|
10
|
-
render template_path
|
11
|
-
end
|
12
|
-
rescue ActionView::MissingTemplate => e
|
13
|
-
render default_template_name
|
14
|
-
end
|
15
|
-
|
16
|
-
# default_layout method for ActionController::Base is redefined
|
17
|
-
# in order to render layouts for specific browsers (depending on user_agent)
|
18
|
-
def default_layout
|
19
|
-
@renderit_template = RenderIt.get_template_name(request)
|
20
|
-
layout = self.class.read_inheritable_attribute(:layout)
|
21
|
-
return layout unless self.class.read_inheritable_attribute(:auto_layout)
|
22
|
-
begin
|
23
|
-
rendered_layout = find_layout(layout+ '_' + @renderit_template, default_template_format)
|
24
|
-
rescue ActionView::MissingTemplate
|
25
|
-
end
|
26
|
-
return rendered_layout if rendered_layout
|
27
|
-
find_layout(layout, default_template_format)
|
28
|
-
rescue ActionView::MissingTemplate
|
29
|
-
nil
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
1
|
class RenderIt
|
35
2
|
# Default regular expressions to define browser and its version
|
36
3
|
DEFAULT_BROWSERS_CONFIG = {
|
@@ -123,4 +90,99 @@ class RenderIt
|
|
123
90
|
|
124
91
|
end
|
125
92
|
|
126
|
-
|
93
|
+
|
94
|
+
RAILS_THREE_REGEXP = /^3/
|
95
|
+
|
96
|
+
if RAILS_THREE_REGEXP =~ Rails.version # If rails version is 3
|
97
|
+
|
98
|
+
module AbstractController
|
99
|
+
module Rendering
|
100
|
+
|
101
|
+
def _normalize_options(options)
|
102
|
+
if options[:partial] == true
|
103
|
+
options[:partial] = action_name
|
104
|
+
end
|
105
|
+
if (options.keys & [:partial, :file, :template]).empty?
|
106
|
+
options[:prefix] ||= _prefix
|
107
|
+
end
|
108
|
+
|
109
|
+
options[:template] ||= (options[:action] || action_name).to_s
|
110
|
+
if (@renderit_template ||= RenderIt.get_template_name(request))
|
111
|
+
begin
|
112
|
+
template_name = options[:template]+'_'+@renderit_template
|
113
|
+
if lookup_context.find_template(template_name, options[:prefix])
|
114
|
+
options[:template] = template_name
|
115
|
+
end
|
116
|
+
rescue ActionView::MissingTemplate => e
|
117
|
+
end
|
118
|
+
end
|
119
|
+
options
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
module AbstractController
|
127
|
+
module Layouts
|
128
|
+
|
129
|
+
def _normalize_options(options)
|
130
|
+
super
|
131
|
+
if _include_layout?(options)
|
132
|
+
layout = options.key?(:layout) ? options.delete(:layout) : :default
|
133
|
+
value = _layout_for_option(layout)
|
134
|
+
if (value && (@renderit_template ||= RenderIt.get_template_name(request)) )
|
135
|
+
begin
|
136
|
+
template_name = value+'_'+@renderit_template
|
137
|
+
if lookup_context.find_template(template_name, 'layouts')
|
138
|
+
value = template_name
|
139
|
+
end
|
140
|
+
rescue ActionView::MissingTemplate => e
|
141
|
+
end
|
142
|
+
end
|
143
|
+
options[:layout] = (value =~ /\blayouts/ ? value : "layouts/#{value}") if value
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
|
151
|
+
else # If rails version is 2.3.*
|
152
|
+
|
153
|
+
class ActionController::Base
|
154
|
+
private
|
155
|
+
|
156
|
+
# default_render method for ActionController::Base is redefined
|
157
|
+
# in order to render views for specific browsers (depending on user_agent)
|
158
|
+
def default_render
|
159
|
+
@renderit_template ||= RenderIt.get_template_name(request)
|
160
|
+
template_path = default_template_name + '_' + @renderit_template
|
161
|
+
if view_paths.find_template(template_path, default_template_format)
|
162
|
+
render template_path
|
163
|
+
end
|
164
|
+
rescue ActionView::MissingTemplate => e
|
165
|
+
render default_template_name
|
166
|
+
end
|
167
|
+
|
168
|
+
# default_layout method for ActionController::Base is redefined
|
169
|
+
# in order to render layouts for specific browsers (depending on user_agent)
|
170
|
+
def default_layout
|
171
|
+
@renderit_template = RenderIt.get_template_name(request)
|
172
|
+
layout = self.class.read_inheritable_attribute(:layout)
|
173
|
+
return layout unless self.class.read_inheritable_attribute(:auto_layout)
|
174
|
+
begin
|
175
|
+
rendered_layout = find_layout(layout+ '_' + @renderit_template, default_template_format)
|
176
|
+
rescue ActionView::MissingTemplate
|
177
|
+
end
|
178
|
+
return rendered_layout if rendered_layout
|
179
|
+
find_layout(layout, default_template_format)
|
180
|
+
rescue ActionView::MissingTemplate
|
181
|
+
nil
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
185
|
+
|
186
|
+
RenderIt.load_config
|
187
|
+
|
188
|
+
end
|
data/renderit.gemspec
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{renderit}
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Andrey Romanov"]
|
12
|
+
s.date = %q{2010-08-09}
|
13
|
+
s.description = %q{Renders different templates depending on browser user_agent.}
|
14
|
+
s.email = %q{judo.ras@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/renderit.rb",
|
27
|
+
"renderit.gemspec",
|
28
|
+
"test/helper.rb",
|
29
|
+
"test/test_renderit.rb"
|
30
|
+
]
|
31
|
+
s.homepage = %q{http://github.com/romanoff/renderit}
|
32
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
33
|
+
s.require_paths = ["lib"]
|
34
|
+
s.rubygems_version = %q{1.3.7}
|
35
|
+
s.summary = %q{Renders different templates depending on browser user_agent.}
|
36
|
+
s.test_files = [
|
37
|
+
"test/helper.rb",
|
38
|
+
"test/test_renderit.rb"
|
39
|
+
]
|
40
|
+
|
41
|
+
if s.respond_to? :specification_version then
|
42
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
43
|
+
s.specification_version = 3
|
44
|
+
|
45
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
47
|
+
else
|
48
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
49
|
+
end
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: renderit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andrey Romanov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-09 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- Rakefile
|
50
50
|
- VERSION
|
51
51
|
- lib/renderit.rb
|
52
|
+
- renderit.gemspec
|
52
53
|
- test/helper.rb
|
53
54
|
- test/test_renderit.rb
|
54
55
|
has_rdoc: true
|