X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=vendor%2Frails%2Factionpack%2Flib%2Faction_view%2Fpaths.rb;fp=vendor%2Frails%2Factionpack%2Flib%2Faction_view%2Fpaths.rb;h=37d96b2f82fe692420a6ef6df7f996adb8678760;hb=437aa336c44c74a30aeea16a06743c32747ed661;hp=0000000000000000000000000000000000000000;hpb=97a0772b06264134cfe38e7494f9427efe0840a0;p=feedcatcher.git diff --git a/vendor/rails/actionpack/lib/action_view/paths.rb b/vendor/rails/actionpack/lib/action_view/paths.rb new file mode 100644 index 0000000..37d96b2 --- /dev/null +++ b/vendor/rails/actionpack/lib/action_view/paths.rb @@ -0,0 +1,69 @@ +module ActionView #:nodoc: + class PathSet < Array #:nodoc: + def self.type_cast(obj) + if obj.is_a?(String) + if Base.cache_template_loading? + Template::EagerPath.new(obj.to_s) + else + ReloadableTemplate::ReloadablePath.new(obj.to_s) + end + else + obj + end + end + + def initialize(*args) + super(*args).map! { |obj| self.class.type_cast(obj) } + end + + def <<(obj) + super(self.class.type_cast(obj)) + end + + def concat(array) + super(array.map! { |obj| self.class.type_cast(obj) }) + end + + def insert(index, obj) + super(index, self.class.type_cast(obj)) + end + + def push(*objs) + super(*objs.map { |obj| self.class.type_cast(obj) }) + end + + def unshift(*objs) + super(*objs.map { |obj| self.class.type_cast(obj) }) + end + + def load! + each(&:load!) + end + + def find_template(original_template_path, format = nil, html_fallback = true) + return original_template_path if original_template_path.respond_to?(:render) + template_path = original_template_path.sub(/^\//, '') + + each do |load_path| + if format && (template = load_path["#{template_path}.#{I18n.locale}.#{format}"]) + return template + elsif format && (template = load_path["#{template_path}.#{format}"]) + return template + elsif template = load_path["#{template_path}.#{I18n.locale}"] + return template + elsif template = load_path[template_path] + return template + # Try to find html version if the format is javascript + elsif format == :js && html_fallback && template = load_path["#{template_path}.#{I18n.locale}.html"] + return template + elsif format == :js && html_fallback && template = load_path["#{template_path}.html"] + return template + end + end + + return Template.new(original_template_path, original_template_path =~ /\A\// ? "" : ".") if File.file?(original_template_path) + + raise MissingTemplate.new(self, original_template_path, format) + end + end +end