def scan_dir template_dir, pattern, template_cache = nil
result = {}
eruby_loaded = nil
::Dir.glob(pattern).select {|match| ::File.file? match }.each do |file|
if (basename = ::File.basename file) == 'helpers.rb' || (path_segments = basename.split '.').size < 2
next
end
name = path_segments[0]
if name == 'block_ruler'
name = 'thematic_break'
elsif name.start_with? 'block_'
name = name[6..-1]
end
ext_name = path_segments[-1]
template_class = ::Tilt
extra_engine_options = {}
if ext_name == 'slim'
Helpers.require_library 'slim' unless defined? ::Slim
(@engine_options[:slim][:asciidoc] ||= {})[:safe] ||= @safe if @safe && ::Slim::VERSION >= '3.0'
require 'slim/include' unless (defined? ::Slim::Include) || ::Slim::VERSION < '2.1'
elsif ext_name == 'erb'
template_class, extra_engine_options = (eruby_loaded ||= load_eruby(@eruby))
end
next unless ::Tilt.registered? ext_name
unless template_cache && (template = template_cache[file])
template = template_class.new file, 1, (@engine_options[ext_name.to_sym] || {}).merge(extra_engine_options)
end
result[name] = template
end
if ::File.file?(helpers = (::File.join template_dir, 'helpers.rb'))
require helpers
end
result
end