class HtmlPrecompileHook
Constants
- VALID_EXTENSIONS
Public Instance Methods
consolidate(main_content, files)
click to toggle source
# File lib/precompile_hook.rb, line 8 def consolidate(main_content, files) files_by_extension = files.group_by { |file_name, _| file_name.get_extension } files_by_extension.each { |extension, values| files_by_extension[extension] = values.to_h } document = Nokogiri::HTML(main_content) merge_script_tags! document, files_by_extension merge_style_tags! document, files_by_extension document.to_html .gsub(/<!DOCTYPE[^>]+>/, '') .gsub(/<meta[^>]+>/, '') end
files_of(request)
click to toggle source
Calls superclass method
# File lib/precompile_hook.rb, line 21 def files_of(request) super(request).select { |file_name, _| valid_extension? file_name } end
main_file()
click to toggle source
# File lib/precompile_hook.rb, line 4 def main_file 'index.html' end
Private Instance Methods
replace_script_tag!(tag, files_by_extension)
click to toggle source
# File lib/precompile_hook.rb, line 35 def replace_script_tag!(tag, files_by_extension) src = tag.get_attribute 'src' file = files_by_extension.dig('js', src) tag.replace("<script>#{file}</script>") if file.present? end
replace_style_tag!(tag, files_by_extension)
click to toggle source
# File lib/precompile_hook.rb, line 45 def replace_style_tag!(tag, files_by_extension) rel = tag.get_attribute 'rel' return if rel != 'stylesheet' href = tag.get_attribute 'href' file = files_by_extension.dig('css', href) tag.replace("<style>#{file}</style>") if file.present? end
valid_extension?(file_name)
click to toggle source
# File lib/precompile_hook.rb, line 27 def valid_extension?(file_name) VALID_EXTENSIONS.any? { |extension| file_name.end_with? extension } end