mirror of
https://github.com/discourse/discourse.git
synced 2026-08-13 14:35:08 -05:00
FEATURE: Nokogumbo (#9577)
* FEATURE: Nokogumbo Use Nokogumbo HTML parser.
This commit is contained in:
@@ -306,7 +306,7 @@ class Category < ActiveRecord::Base
|
||||
|
||||
@@cache_text ||= LruRedux::ThreadSafeCache.new(1000)
|
||||
@@cache_text.getset(self.description) do
|
||||
text = Nokogiri::HTML.fragment(self.description).text.strip
|
||||
text = Nokogiri::HTML5.fragment(self.description).text.strip
|
||||
Rack::Utils.escape_html(text).html_safe
|
||||
end
|
||||
end
|
||||
|
||||
+1
-1
@@ -953,7 +953,7 @@ class Post < ActiveRecord::Base
|
||||
/\/uploads\/short-url\/[a-zA-Z0-9]+(\.[a-z0-9]+)?/
|
||||
]
|
||||
|
||||
fragments ||= Nokogiri::HTML::fragment(self.cooked)
|
||||
fragments ||= Nokogiri::HTML5::fragment(self.cooked)
|
||||
selectors = fragments.css("a/@href", "img/@src", "source/@src", "track/@src", "video/@poster")
|
||||
|
||||
links = selectors.map do |media|
|
||||
|
||||
@@ -131,7 +131,7 @@ class PostAnalyzer
|
||||
|
||||
def cooked_stripped
|
||||
@cooked_stripped ||= begin
|
||||
doc = Nokogiri::HTML.fragment(cook(@raw, topic_id: @topic_id))
|
||||
doc = Nokogiri::HTML5.fragment(cook(@raw, topic_id: @topic_id))
|
||||
doc.css("pre .mention, aside.quote > .title, aside.quote .mention, aside.quote .mention-group, .onebox, .elided").remove
|
||||
doc
|
||||
end
|
||||
|
||||
@@ -9,7 +9,7 @@ class QuotedPost < ActiveRecord::Base
|
||||
# we are double parsing this fragment, this may be worth optimising later
|
||||
def self.extract_from(post)
|
||||
|
||||
doc = Nokogiri::HTML.fragment(post.cooked)
|
||||
doc = Nokogiri::HTML5.fragment(post.cooked)
|
||||
|
||||
uniq = {}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ class ThemeField < ActiveRecord::Base
|
||||
|
||||
js_compiler = ThemeJavascriptCompiler.new(theme_id, self.theme.name)
|
||||
|
||||
doc = Nokogiri::HTML.fragment(html)
|
||||
doc = Nokogiri::HTML5.fragment(html)
|
||||
|
||||
doc.css('script[type="text/x-handlebars"]').each do |node|
|
||||
name = node["name"] || node["data-template-name"] || "broken"
|
||||
|
||||
@@ -126,7 +126,7 @@ class TopicEmbed < ActiveRecord::Base
|
||||
return
|
||||
end
|
||||
|
||||
raw_doc = Nokogiri::HTML(html)
|
||||
raw_doc = Nokogiri::HTML5(html)
|
||||
auth_element = raw_doc.at('meta[@name="author"]')
|
||||
if auth_element.present?
|
||||
response.author = User.where(username_lower: auth_element[:content].strip).first
|
||||
@@ -142,7 +142,7 @@ class TopicEmbed < ActiveRecord::Base
|
||||
title.strip!
|
||||
end
|
||||
response.title = title
|
||||
doc = Nokogiri::HTML(read_doc.content)
|
||||
doc = Nokogiri::HTML5(read_doc.content)
|
||||
|
||||
tags = { 'img' => 'src', 'script' => 'src', 'a' => 'href' }
|
||||
doc.search(tags.keys.join(',')).each do |node|
|
||||
@@ -198,7 +198,7 @@ class TopicEmbed < ActiveRecord::Base
|
||||
prefix = "#{uri.scheme}://#{uri.host}"
|
||||
prefix += ":#{uri.port}" if uri.port != 80 && uri.port != 443
|
||||
|
||||
fragment = Nokogiri::HTML.fragment("<div>#{contents}</div>")
|
||||
fragment = Nokogiri::HTML5.fragment("<div>#{contents}</div>")
|
||||
fragment.css('a').each do |a|
|
||||
href = a['href']
|
||||
if href.present? && href.start_with?('/')
|
||||
@@ -220,7 +220,7 @@ class TopicEmbed < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def self.first_paragraph_from(html)
|
||||
doc = Nokogiri::HTML(html)
|
||||
doc = Nokogiri::HTML5(html)
|
||||
|
||||
result = +""
|
||||
doc.css('p').each do |p|
|
||||
|
||||
Reference in New Issue
Block a user