module SiteHelper def frontend_javascript_importmap_tags(only_use = %w[application]) only_use = Array(only_use) importmap_json = JSON.parse(Rails.application.importmap.to_json(resolver: self))["imports"].select { |k, v| only_use.include?(k) } safe_join [ javascript_inline_importmap_tag(JSON.pretty_generate({ "imports" => importmap_json })), javascript_module_preload_tag(*importmap_json.map { |v| v[1] }), javascript_import_module_tag(only_use[0]) ], "\n" end def node_title(node) parts = [ node.page_title.blank? ? node.title : node.page_title ] parts << t(:client_name) parts.uniq.join(" - ") rescue t(:client_name) end def random_value(from, to) range = rand(2) == 0 ? (-to..-from) : (from..to) rand(range) end def parse_article_html(html) result = {} return result if html.blank? doc = Nokogiri::HTML.fragment(html, "utf-8") first_link = doc.at_css("a") first_link.remove if first_link result[:title] = doc.at_css("h1")&.text result[:description] = doc.at_css("div")&.text result[:link] = first_link&.to_html doc.search("*").each do |node| while node.children.last and node.children.last.name == "br" node.children.last.remove end end result[:html] = doc.to_html result end end