padrino-helpers 0.13.2 → 0.13.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4cd07c5d69526e5a313ac66077c95232f9897c4
4
- data.tar.gz: 2d729f064bd09f49fcd7d580a9c0d0efb0a71bf3
3
+ metadata.gz: fae667093f9d16b75e8d85e0285d3c312aecb800
4
+ data.tar.gz: 989e8e9811af48ac97cab76747c9eb367ad91a8f
5
5
  SHA512:
6
- metadata.gz: 6a811845a52c9d07a6d3344ded444856705e35ee1460e257b9cbe3e1d95698556677709e504ca96c2bf2f18313b32edfd06b9df4c11b1430f74eefafaf19cddc
7
- data.tar.gz: 5686b30bbbf57ea22e28bdfc7afc8fba531a4658a1426dae8d4774afde8181bc43c558ffa6b1de595d1794815ccbef1c8a3ae7198f208d7969681c9c3c96bc11
6
+ metadata.gz: de540aac4ac602e597a8f86f15a5517fc078fa93a6ad85d392c7e8a4106e4d365ce46b9159cead733851e87df240a956a92c9fa3543797f6324546424ece56c1
7
+ data.tar.gz: c26cff77011c615f9b81662ffa2e4215e864e915a454093fc693bebf23d57fda2cad5dcafa8cbcbe5b3c539385b430679f2f55607d51ce13113b05b7914dc057
@@ -1,6 +1,8 @@
1
1
  require 'padrino-support'
2
2
  require 'i18n'
3
3
  require 'enumerator'
4
+
5
+ # remove at 0.14
4
6
  require 'padrino/rendering'
5
7
 
6
8
  FileSet.glob_require('padrino-helpers/**/*.rb', __FILE__)
@@ -36,6 +38,7 @@ module Padrino
36
38
  # end
37
39
  #
38
40
  def registered(app)
41
+ require 'padrino/rendering'
39
42
  app.register Padrino::Rendering
40
43
  app.set :default_builder, 'StandardFormBuilder' unless app.respond_to?(:default_builder)
41
44
  included(app)
@@ -30,7 +30,7 @@ module Padrino
30
30
  # # <div class="success">flash-success</div>
31
31
  #
32
32
  def flash_tag(*args)
33
- options = args.extract_options!
33
+ options = args.last.is_a?(Hash) ? args.pop : {}
34
34
  bootstrap = options.delete(:bootstrap) if options[:bootstrap]
35
35
  args.inject(ActiveSupport::SafeBuffer.new) do |html,kind|
36
36
  flash_text = ActiveSupport::SafeBuffer.new << flash[kind]
@@ -75,17 +75,17 @@ module Padrino
75
75
  # link_to('click me', '/dashboard', :method => :delete)
76
76
  # # Generates <a href="/dashboard" data-method="delete" rel="nofollow">click me</a>
77
77
  #
78
- # link_to('click me', :class => 'blocky') do; end
79
- # # Generates <a class="blocky" href="#">click me</a>
78
+ # link_to('/dashboard', :class => 'blocky') { 'click me' }
79
+ # # Generates <a class="blocky" href="/dashboard">click me</a>
80
80
  #
81
81
  # Note that you can pass :+if+ or :+unless+ conditions, but if you provide :current as
82
82
  # condition padrino return true/false if the request.path_info match the given url.
83
83
  #
84
84
  def link_to(*args, &block)
85
- options = args.extract_options!
85
+ options = args.last.is_a?(Hash) ? args.pop : {}
86
86
  name = block_given? ? '' : args.shift
87
87
  href = args.first
88
- options = { :href => href || '#' }.update(options)
88
+ options = { :href => href ? escape_link(href) : '#' }.update(options)
89
89
  return name unless parse_conditions(href, options)
90
90
  block_given? ? content_tag(:a, options, &block) : content_tag(:a, name, options)
91
91
  end
@@ -143,10 +143,11 @@ module Padrino
143
143
  # # Generates: <a href="mailto:me@demo.com">My Email</a>
144
144
  #
145
145
  def mail_to(email, caption=nil, mail_options={})
146
- html_options = mail_options.slice!(:cc, :bcc, :subject, :body)
147
- mail_query = Rack::Utils.build_query(mail_options).gsub(/\+/, '%20').gsub('%40', '@')
148
- mail_href = "mailto:#{email}"; mail_href << "?#{mail_query}" if mail_query.present?
149
- link_to((caption || email), mail_href, html_options)
146
+ mail_options, html_options = mail_options.partition{ |key,_| [:cc, :bcc, :subject, :body].include?(key) }
147
+ mail_query = Rack::Utils.build_query(Hash[mail_options]).gsub(/\+/, '%20').gsub('%40', '@')
148
+ mail_href = "mailto:#{email}"
149
+ mail_href << "?#{mail_query}" unless mail_query.empty?
150
+ link_to((caption || email), mail_href, Hash[html_options])
150
151
  end
151
152
 
152
153
  ##
@@ -242,7 +243,7 @@ module Padrino
242
243
  options = {
243
244
  :rel => 'stylesheet',
244
245
  :type => 'text/css'
245
- }.update(sources.extract_options!.symbolize_keys)
246
+ }.update(sources.last.is_a?(Hash) ? sources.pop.symbolize_keys : {})
246
247
  sources.flatten.inject(ActiveSupport::SafeBuffer.new) do |all,source|
247
248
  all << tag(:link, { :href => asset_path(:css, source) }.update(options))
248
249
  end
@@ -265,7 +266,7 @@ module Padrino
265
266
  def javascript_include_tag(*sources)
266
267
  options = {
267
268
  :type => 'text/javascript'
268
- }.update(sources.extract_options!.symbolize_keys)
269
+ }.update(sources.last.is_a?(Hash) ? sources.pop.symbolize_keys : {})
269
270
  sources.flatten.inject(ActiveSupport::SafeBuffer.new) do |all,source|
270
271
  all << content_tag(:script, nil, { :src => asset_path(:js, source) }.update(options))
271
272
  end
@@ -314,7 +315,7 @@ module Padrino
314
315
  #
315
316
  def asset_path(kind, source = nil)
316
317
  kind, source = source, kind if source.nil?
317
- source = asset_normalize_extension(kind, URI.escape(source.to_s))
318
+ source = asset_normalize_extension(kind, escape_link(source.to_s))
318
319
  return source if source =~ ABSOLUTE_URL_PATTERN || source =~ /^\//
319
320
  source = File.join(asset_folder_name(kind), source)
320
321
  timestamp = asset_timestamp(source)
@@ -90,7 +90,7 @@ module Padrino
90
90
  #
91
91
  def form_tag(url, options={}, &block)
92
92
  options = {
93
- :action => url,
93
+ :action => escape_link(url),
94
94
  :protect_from_csrf => is_protected_from_csrf?,
95
95
  'accept-charset' => 'UTF-8'
96
96
  }.update(options)
@@ -143,9 +143,8 @@ module Padrino
143
143
  # field_set_tag("Office", :class => 'office-set') { }
144
144
  #
145
145
  def field_set_tag(*args, &block)
146
- options = args.extract_options!
147
- legend_text = args.first
148
- legend_html = legend_text.blank? ? ActiveSupport::SafeBuffer.new : content_tag(:legend, legend_text)
146
+ options = args.last.is_a?(Hash) ? args.pop : {}
147
+ legend_html = args.empty? ? ActiveSupport::SafeBuffer.new : content_tag(:legend, args.first)
149
148
  concat_content content_tag(:fieldset, legend_html << capture_html(&block), options)
150
149
  end
151
150
 
@@ -525,7 +524,7 @@ module Padrino
525
524
  # submit_tag :class => 'btn'
526
525
  #
527
526
  def submit_tag(*args)
528
- options = args.extract_options!
527
+ options = args.last.is_a?(Hash) ? args.pop : {}
529
528
  caption = args.length >= 1 ? args.first : "Submit"
530
529
  input_tag(:submit, { :value => caption }.merge(options))
531
530
  end
@@ -579,7 +578,7 @@ module Padrino
579
578
  # # </form>
580
579
  #
581
580
  def button_to(*args, &block)
582
- options = args.extract_options!.dup
581
+ options = args.last.is_a?(Hash) ? args.pop : {}
583
582
  name, url = *args
584
583
  options['data-remote'] = 'true' if options.delete(:remote)
585
584
  submit_options = options.delete(:submit_options) || {}
@@ -37,7 +37,7 @@ module Padrino
37
37
  # error_messages_for :user
38
38
  #
39
39
  def error_messages_for(*objects)
40
- options = objects.extract_options!.symbolize_keys
40
+ options = objects.last.is_a?(Hash) ? objects.pop.symbolize_keys : {}
41
41
  objects = objects.map{ |obj| resolve_object(obj) }.compact
42
42
  count = objects.inject(0){ |sum, object| sum + object.errors.count }
43
43
  return ActiveSupport::SafeBuffer.new if count.zero?
@@ -177,8 +177,8 @@ module Padrino
177
177
  # word_wrap('Once upon a time', :line_width => 8) => "Once upon\na time"
178
178
  #
179
179
  def word_wrap(text, *args)
180
- options = args.extract_options!
181
- unless args.blank?
180
+ options = args.last.is_a?(Hash) ? args.pop : {}
181
+ unless args.empty?
182
182
  options[:line_width] = args[0] || 80
183
183
  end
184
184
  options = { :line_width => 80 }.update(options)
@@ -214,7 +214,7 @@ module Padrino
214
214
  # # => Lorem ipsum <strong class="custom">dolor</strong> sit amet
215
215
  #
216
216
  def highlight(text, words, *args)
217
- options = { :highlighter => '<strong class="highlight">\1</strong>' }.update(args.extract_options!)
217
+ options = { :highlighter => '<strong class="highlight">\1</strong>' }.update(args.last.is_a?(Hash) ? args.pop : {})
218
218
 
219
219
  if text.blank? || words.blank?
220
220
  text
@@ -134,7 +134,7 @@ module Padrino
134
134
  # # => 98 765 432,98
135
135
  #
136
136
  def number_with_delimiter(number, *args)
137
- options = args.extract_options!
137
+ options = args.last.is_a?(Hash) ? args.pop : {}
138
138
  options.symbolize_keys!
139
139
 
140
140
  defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
@@ -178,7 +178,7 @@ module Padrino
178
178
  # # => 1.111,23
179
179
  #
180
180
  def number_with_precision(number, *args)
181
- options = args.extract_options!
181
+ options = args.last.is_a?(Hash) ? args.pop : {}
182
182
  options.symbolize_keys!
183
183
 
184
184
  defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
@@ -239,7 +239,7 @@ module Padrino
239
239
  def number_to_human_size(number, *args)
240
240
  return nil if number.nil?
241
241
 
242
- options = args.extract_options!
242
+ options = args.last.is_a?(Hash) ? args.pop : {}
243
243
  options.symbolize_keys!
244
244
 
245
245
  defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
@@ -80,7 +80,7 @@ module Padrino
80
80
  #
81
81
  def concat_content(text="")
82
82
  if handler = find_proper_handler
83
- handler.concat_to_template(text)
83
+ handler.concat_to_template(text, binding)
84
84
  else
85
85
  text
86
86
  end
@@ -46,7 +46,7 @@ module Padrino
46
46
  # @example
47
47
  # @handler.concat_to_template("This will be output to the template buffer")
48
48
  #
49
- def concat_to_template(text="")
49
+ def concat_to_template(text="", context=nil)
50
50
  text
51
51
  end
52
52
 
@@ -8,7 +8,8 @@ module Padrino
8
8
  ##
9
9
  # Outputs the given text to the templates buffer directly.
10
10
  #
11
- def concat_to_template(text="")
11
+ def concat_to_template(text="", context=nil)
12
+ return text if context && context.eval("@__in_ruby_literal")
12
13
  output_buffer << text
13
14
  nil
14
15
  end
@@ -34,7 +34,7 @@ module Padrino
34
34
  options = { :locals => {}, :layout => false }.update(options)
35
35
  explicit_engine = options.delete(:engine)
36
36
 
37
- path,_,name = template.to_s.rpartition(File::SEPARATOR)
37
+ path, name = File.split(template.to_s)
38
38
  template_path = File.join(path,"_#{name}").to_sym
39
39
  item_name = name.partition('.').first.to_sym
40
40
 
@@ -58,6 +58,27 @@ module Padrino
58
58
  end
59
59
  end
60
60
  alias :render_partial :partial
61
+
62
+ def self.included(base)
63
+ unless base.instance_methods.include?(:render) || base.private_instance_methods.include?(:render)
64
+ base.class_eval do
65
+ fail "gem 'tilt' is required" unless defined?(::Tilt)
66
+
67
+ def render(engine, file=nil, options={}, locals=nil, &block)
68
+ locals ||= options[:locals] || {}
69
+ engine, file = file, engine if file.nil?
70
+ template_engine = engine ? ::Tilt[engine] : ::Tilt.default_mapping[file]
71
+ fail "Engine #{engine.inspect} is not registered with Tilt" unless template_engine
72
+ unless File.file?(file.to_s)
73
+ engine_extensions = ::Tilt.default_mapping.extensions_for(template_engine)
74
+ file = Dir.glob("#{file}.{#{engine_extensions.join(',')}}").first || fail("Template '#{file}' not found")
75
+ end
76
+ template = template_engine.new(file.to_s, options)
77
+ template.render(options[:scope] || self, locals, &block)
78
+ end
79
+ end
80
+ end
81
+ end
61
82
  end
62
83
  end
63
84
  end
@@ -235,6 +235,19 @@ module Padrino
235
235
  "<#{name}#{attributes}#{open ? '>' : ' />'}".html_safe
236
236
  end
237
237
 
238
+ ##
239
+ # Returns an escaped document link.
240
+ #
241
+ # @example
242
+ # escape_link('http://example.com/spaced link')
243
+ # # => 'http://example.com/spaced%20link'
244
+ # escape_link('already%20partially escaped')
245
+ # # => 'already%20partially%20escaped'
246
+ #
247
+ def escape_link(link)
248
+ link.gsub(' ', '%20')
249
+ end
250
+
238
251
  private
239
252
 
240
253
  ##
@@ -1,6 +1,18 @@
1
1
  module Padrino
2
2
  module Rendering
3
3
  class SafeERB < ::ERB
4
+ class Compiler < ::ERB::Compiler
5
+ def add_insert_cmd(out, content)
6
+ out.push("@__in_ruby_literal = true")
7
+ super
8
+ out.push("@__in_ruby_literal = false")
9
+ end
10
+ end
11
+
12
+ def make_compiler(trim_mode)
13
+ Compiler.new(trim_mode)
14
+ end
15
+
4
16
  def set_eoutvar(compiler, eoutvar = '_erbout')
5
17
  compiler.put_cmd = "#{eoutvar}.safe_concat"
6
18
  compiler.insert_cmd = "#{eoutvar}.concat"
@@ -7,7 +7,7 @@ module Padrino
7
7
  # @api private
8
8
  module SafeBufferEnhancer
9
9
  def add_expr_literal(src, code)
10
- src << " #{@bufvar}.concat((" << code << ').to_s);'
10
+ src << " @__in_ruby_literal = true; #{@bufvar}.concat((" << code << ').to_s); @__in_ruby_literal = false;'
11
11
  end
12
12
 
13
13
  def add_stmt(src, code)
data/test/helper.rb CHANGED
@@ -7,6 +7,7 @@ require 'rack/test'
7
7
  require 'webrat'
8
8
  require 'builder'
9
9
  require 'padrino-helpers'
10
+ require 'padrino/rendering'
10
11
  require 'tilt/liquid'
11
12
  require 'tilt/builder'
12
13
 
@@ -71,6 +71,11 @@ describe "AssetTagHelpers" do
71
71
  assert_match "&lt;&amp;&gt;", actual_link
72
72
  end
73
73
 
74
+ it 'should escape the link href' do
75
+ actual_link = link_to('Sign up', '/register new%20user')
76
+ assert_has_tag('a', :href => '/register%20new%20user') { actual_link }
77
+ end
78
+
74
79
  it 'should not escape image_tag' do
75
80
  actual_link = link_to(image_tag("/my/fancy/image.png"), :class => 'first', :id => 'binky')
76
81
  assert_has_tag('img', :src => "/my/fancy/image.png") { actual_link }
@@ -146,7 +151,7 @@ describe "AssetTagHelpers" do
146
151
  end
147
152
 
148
153
  it 'should not double-escape ampersands in query' do
149
- actual_html = mail_to('to@demo.com', "Email", :subject => 'Hi there', :bcc => 'bcc@test.com')
154
+ actual_html = mail_to('to@demo.com', "Email", :bcc => 'bcc@test.com', :subject => 'Hi there')
150
155
  assert_has_tag(:a, :href => 'mailto:to@demo.com?bcc=bcc@test.com&subject=Hi%20there', :content => 'Email') { actual_html }
151
156
  assert_match %r{&amp;}, actual_html
152
157
  refute_match %r{&amp;amp;}, actual_html
@@ -213,13 +213,45 @@ describe "RenderHelpers" do
213
213
  end
214
214
  end
215
215
 
216
- describe 'rendering with helpers that use render' do
217
- %W{erb haml slim}.each do |engine|
218
- it "should work with #{engine}" do
219
- skip
220
- visit "/double_dive_#{engine}"
221
- assert_have_selector '.outer .wrapper form .inner .core'
216
+ describe 'standalone partial rendering' do
217
+ it 'should properly render without Sinatra::Base or Padrino::Application' do
218
+ class Standalone
219
+ include Padrino::Helpers::RenderHelpers
222
220
  end
221
+ locals = { :user => OpenStruct.new(:name => 'Joe') }
222
+ result = Standalone.new.partial(File.join(File.dirname(__FILE__), 'fixtures/render_app/views/template/user'), :engine => :haml, :locals => locals)
223
+ assert_equal '<h1>User name is Joe</h1>', result.chomp
224
+ end
225
+
226
+ it 'should pass class context to renderer' do
227
+ class Standalone1
228
+ include Padrino::Helpers::RenderHelpers
229
+ def user
230
+ OpenStruct.new(:name => 'Jane')
231
+ end
232
+ end
233
+
234
+ result = Standalone1.new.partial(File.join(File.dirname(__FILE__), 'fixtures/render_app/views/template/user.haml'))
235
+ assert_equal '<h1>User name is Jane</h1>', result.chomp
236
+ end
237
+
238
+ it 'should fail on missing template' do
239
+ class Standalone2
240
+ include Padrino::Helpers::RenderHelpers
241
+ end
242
+ assert_raises RuntimeError do
243
+ result = Standalone2.new.partial('none')
244
+ end
245
+ end
246
+
247
+ it 'should not override existing render methods' do
248
+ class Standalone3
249
+ def render(*)
250
+ 'existing'
251
+ end
252
+ include Padrino::Helpers::RenderHelpers
253
+ end
254
+ assert_equal 'existing', Standalone3.new.partial('none')
223
255
  end
224
256
  end
225
257
  end
@@ -750,4 +750,14 @@ describe "Rendering" do
750
750
  assert_equal "application/xml;charset=utf-8", response['Content-Type']
751
751
  end
752
752
  end
753
+
754
+ describe 'rendering with helpers that use render' do
755
+ %W{erb haml slim}.each do |engine|
756
+ it "should work with #{engine}" do
757
+ @app = RenderDemo
758
+ visit "/double_dive_#{engine}"
759
+ assert_have_selector '.outer .wrapper form .inner .core'
760
+ end
761
+ end
762
+ end
753
763
  end
@@ -18,6 +18,8 @@ describe "TagHelpers" do
18
18
 
19
19
  it 'should support selected attribute by using "selected" if true' do
20
20
  actual_html = tag(:option, :selected => true)
21
+ # fix nokogiri 1.6.8 on jRuby
22
+ actual_html = content_tag(:select, actual_html)
21
23
  assert_has_tag('option', :selected => 'selected') { actual_html }
22
24
  end
23
25
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.2
4
+ version: 0.13.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Padrino Team
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-05-09 00:00:00.000000000 Z
14
+ date: 2016-08-17 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: padrino-support
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.13.2
22
+ version: 0.13.3
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.13.2
29
+ version: 0.13.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: tilt
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -245,107 +245,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
245
  version: 1.3.6
246
246
  requirements: []
247
247
  rubyforge_project: padrino-helpers
248
- rubygems_version: 2.4.8
248
+ rubygems_version: 2.6.4
249
249
  signing_key:
250
250
  specification_version: 4
251
251
  summary: Helpers for padrino
252
- test_files:
253
- - test/fixtures/apps/.components
254
- - test/fixtures/apps/.gitignore
255
- - test/fixtures/apps/render.rb
256
- - test/fixtures/apps/views/article/comment/show.slim
257
- - test/fixtures/apps/views/blog/post.erb
258
- - test/fixtures/apps/views/layouts/specific.erb
259
- - test/fixtures/apps/views/test/post.erb
260
- - test/fixtures/layouts/layout.erb
261
- - test/fixtures/markup_app/app.rb
262
- - test/fixtures/markup_app/views/button_to.erb
263
- - test/fixtures/markup_app/views/button_to.haml
264
- - test/fixtures/markup_app/views/button_to.slim
265
- - test/fixtures/markup_app/views/capture_concat.erb
266
- - test/fixtures/markup_app/views/capture_concat.haml
267
- - test/fixtures/markup_app/views/capture_concat.slim
268
- - test/fixtures/markup_app/views/content_for.erb
269
- - test/fixtures/markup_app/views/content_for.haml
270
- - test/fixtures/markup_app/views/content_for.slim
271
- - test/fixtures/markup_app/views/content_tag.erb
272
- - test/fixtures/markup_app/views/content_tag.haml
273
- - test/fixtures/markup_app/views/content_tag.slim
274
- - test/fixtures/markup_app/views/current_engine.erb
275
- - test/fixtures/markup_app/views/current_engine.haml
276
- - test/fixtures/markup_app/views/current_engine.slim
277
- - test/fixtures/markup_app/views/fields_for.erb
278
- - test/fixtures/markup_app/views/fields_for.haml
279
- - test/fixtures/markup_app/views/fields_for.slim
280
- - test/fixtures/markup_app/views/form_for.erb
281
- - test/fixtures/markup_app/views/form_for.haml
282
- - test/fixtures/markup_app/views/form_for.slim
283
- - test/fixtures/markup_app/views/form_tag.erb
284
- - test/fixtures/markup_app/views/form_tag.haml
285
- - test/fixtures/markup_app/views/form_tag.slim
286
- - test/fixtures/markup_app/views/link_to.erb
287
- - test/fixtures/markup_app/views/link_to.haml
288
- - test/fixtures/markup_app/views/link_to.slim
289
- - test/fixtures/markup_app/views/mail_to.erb
290
- - test/fixtures/markup_app/views/mail_to.haml
291
- - test/fixtures/markup_app/views/mail_to.slim
292
- - test/fixtures/markup_app/views/meta_tag.erb
293
- - test/fixtures/markup_app/views/meta_tag.haml
294
- - test/fixtures/markup_app/views/meta_tag.slim
295
- - test/fixtures/markup_app/views/partials/_erb.erb
296
- - test/fixtures/markup_app/views/partials/_haml.haml
297
- - test/fixtures/markup_app/views/partials/_slim.slim
298
- - test/fixtures/markup_app/views/simple_partial.erb
299
- - test/fixtures/markup_app/views/simple_partial.haml
300
- - test/fixtures/markup_app/views/simple_partial.slim
301
- - test/fixtures/render_app/app.rb
302
- - test/fixtures/render_app/views/_deep.erb
303
- - test/fixtures/render_app/views/_deep.haml
304
- - test/fixtures/render_app/views/_deep.slim
305
- - test/fixtures/render_app/views/_partial_block_erb.erb
306
- - test/fixtures/render_app/views/_partial_block_haml.haml
307
- - test/fixtures/render_app/views/_partial_block_slim.slim
308
- - test/fixtures/render_app/views/_unsafe.html.builder
309
- - test/fixtures/render_app/views/_unsafe_object.html.builder
310
- - test/fixtures/render_app/views/current_engine.haml
311
- - test/fixtures/render_app/views/current_engines/_erb.erb
312
- - test/fixtures/render_app/views/current_engines/_haml.haml
313
- - test/fixtures/render_app/views/current_engines/_slim.slim
314
- - test/fixtures/render_app/views/dive_inner_erb.erb
315
- - test/fixtures/render_app/views/dive_inner_haml.haml
316
- - test/fixtures/render_app/views/dive_inner_slim.slim
317
- - test/fixtures/render_app/views/dive_outer_erb.erb
318
- - test/fixtures/render_app/views/dive_outer_haml.haml
319
- - test/fixtures/render_app/views/dive_outer_slim.slim
320
- - test/fixtures/render_app/views/double_capture_erb.erb
321
- - test/fixtures/render_app/views/double_capture_haml.haml
322
- - test/fixtures/render_app/views/double_capture_slim.slim
323
- - test/fixtures/render_app/views/erb/test.erb
324
- - test/fixtures/render_app/views/explicit_engine.haml
325
- - test/fixtures/render_app/views/haml/test.haml
326
- - test/fixtures/render_app/views/render_block_erb.erb
327
- - test/fixtures/render_app/views/render_block_haml.haml
328
- - test/fixtures/render_app/views/render_block_slim.slim
329
- - test/fixtures/render_app/views/ruby_block_capture_erb.erb
330
- - test/fixtures/render_app/views/ruby_block_capture_haml.haml
331
- - test/fixtures/render_app/views/ruby_block_capture_slim.slim
332
- - test/fixtures/render_app/views/template/_user.haml
333
- - test/fixtures/render_app/views/template/haml_template.haml
334
- - test/fixtures/render_app/views/template/some_template.haml
335
- - test/fixtures/render_app/views/wrong_capture_erb.erb
336
- - test/fixtures/render_app/views/wrong_capture_haml.haml
337
- - test/fixtures/render_app/views/wrong_capture_slim.slim
338
- - test/helper.rb
339
- - test/test_asset_tag_helpers.rb
340
- - test/test_form_builder.rb
341
- - test/test_form_helpers.rb
342
- - test/test_format_helpers.rb
343
- - test/test_helpers.rb
344
- - test/test_locale.rb
345
- - test/test_number_helpers.rb
346
- - test/test_output_helpers.rb
347
- - test/test_render_helpers.rb
348
- - test/test_rendering.rb
349
- - test/test_rendering_extensions.rb
350
- - test/test_tag_helpers.rb
351
- has_rdoc:
252
+ test_files: []