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
|