mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
c1304098cc
* A new module (ActiveSupport::Autoload) is provide that extends autoloading with new behavior. * All autoloads in modules that have extended ActiveSupport::Autoload will be eagerly required in threadsafe environments * Autoloads can optionally leave off the path if the path is the same as full_constant_name.underscore * It is possible to specify that a group of autoloads live under an additional path. For instance, all of ActionDispatch's middlewares are ActionDispatch::MiddlewareName, but they live under "action_dispatch/middlewares/middleware_name" * It is possible to specify that a group of autoloads are all found at the same path. For instance, a number of exceptions might all be declared there. * One consequence of this is that testing-related constants are not autoloaded. To get the testing helpers for a given component, require "component_name/test_case". For instance, "action_controller/test_case". * test_help.rb, which is automatically required by a Rails application's test helper, requires the test_case.rb for all active components, so this change will not be disruptive in existing or new applications.
53 lines
1.5 KiB
Ruby
53 lines
1.5 KiB
Ruby
require 'active_support/core_ext/class/attribute_accessors'
|
|
require 'active_support/core_ext/string/output_safety'
|
|
require 'erubis'
|
|
|
|
module ActionView
|
|
module Template::Handlers
|
|
class Erubis < ::Erubis::Eruby
|
|
def add_preamble(src)
|
|
src << "@output_buffer = ActionView::SafeBuffer.new;"
|
|
end
|
|
|
|
def add_text(src, text)
|
|
src << "@output_buffer << ('" << escape_text(text) << "'.html_safe!);"
|
|
end
|
|
|
|
def add_expr_literal(src, code)
|
|
src << '@output_buffer << ((' << code << ').to_s);'
|
|
end
|
|
|
|
def add_expr_escaped(src, code)
|
|
src << '@output_buffer << ' << escaped_expr(code) << ';'
|
|
end
|
|
|
|
def add_postamble(src)
|
|
src << '@output_buffer.to_s'
|
|
end
|
|
end
|
|
|
|
class ERB < Template::Handler
|
|
include Compilable
|
|
|
|
##
|
|
# :singleton-method:
|
|
# Specify trim mode for the ERB compiler. Defaults to '-'.
|
|
# See ERb documentation for suitable values.
|
|
cattr_accessor :erb_trim_mode
|
|
self.erb_trim_mode = '-'
|
|
|
|
self.default_format = Mime::HTML
|
|
|
|
cattr_accessor :erubis_implementation
|
|
self.erubis_implementation = Erubis
|
|
|
|
def compile(template)
|
|
source = template.source.gsub(/\A(<%(#.*coding[:=]\s*(\S+)\s*)-?%>)\s*\n?/, '')
|
|
erb = "<% __in_erb_template=true %>#{source}"
|
|
result = self.class.erubis_implementation.new(erb, :trim=>(self.class.erb_trim_mode == "-")).src
|
|
result = "#{$2}\n#{result}" if $2
|
|
result
|
|
end
|
|
end
|
|
end
|
|
end
|