lib/onebox/open_graph.rb in onebox-1.8.81 vs lib/onebox/open_graph.rb in onebox-1.8.82

- old
+ new

@@ -1,90 +1,90 @@ -module Onebox - class OpenGraph - - attr_reader :data - - def initialize(doc) - @data = extract(doc) - end - - def title - get(:title, 80) - end - - def title_attr - !title.nil? ? "title='#{title}'" : "" - end - - def get_secure_image - secure_link = URI(get(:image)) - secure_link.scheme = 'https' - secure_link.to_s - end - - def method_missing(attr, *args, &block) - value = get(attr, *args) - - return nil if Onebox::Helpers::blank?(value) - - method_name = attr.to_s - if method_name.end_with?(*integer_suffixes) - value.to_i - elsif method_name.end_with?(*url_suffixes) - ::Onebox::Helpers.normalize_url_for_output(value) - else - value - end - end - - def get(attr, length = nil, sanitize = true) - return nil if Onebox::Helpers::blank?(data) - - value = data[attr] - - return nil if Onebox::Helpers::blank?(value) - - value = html_entities.decode(value) - value = Sanitize.fragment(value) if sanitize - value.strip! - value = Onebox::Helpers.truncate(value, length) unless length.nil? - - value - end - - private - - def integer_suffixes - ['width', 'height'] - end - - def url_suffixes - ['url', 'image', 'video'] - end - - def html_entities - @html_entities ||= HTMLEntities.new - end - - def extract(doc) - return {} if Onebox::Helpers::blank?(doc) - - data = {} - - doc.css('meta').each do |m| - if (m["property"] && m["property"][/^(?:og|article|product):(.+)$/i]) || (m["name"] && m["name"][/^(?:og|article|product):(.+)$/i]) - value = (m["content"] || m["value"]).to_s - data[$1.tr('-:', '_').to_sym] ||= value unless Onebox::Helpers::blank?(value) - end - end - - # Attempt to retrieve the title from the meta tag - title_element = doc.at_css('title') - if title_element && title_element.text - data[:title] ||= title_element.text unless Onebox::Helpers.blank?(title_element.text) - end - - data - end - - end -end +module Onebox + class OpenGraph + + attr_reader :data + + def initialize(doc) + @data = extract(doc) + end + + def title + get(:title, 80) + end + + def title_attr + !title.nil? ? "title='#{title}'" : "" + end + + def get_secure_image + secure_link = URI(get(:image)) + secure_link.scheme = 'https' + secure_link.to_s + end + + def method_missing(attr, *args, &block) + value = get(attr, *args) + + return nil if Onebox::Helpers::blank?(value) + + method_name = attr.to_s + if method_name.end_with?(*integer_suffixes) + value.to_i + elsif method_name.end_with?(*url_suffixes) + ::Onebox::Helpers.normalize_url_for_output(value) + else + value + end + end + + def get(attr, length = nil, sanitize = true) + return nil if Onebox::Helpers::blank?(data) + + value = data[attr] + + return nil if Onebox::Helpers::blank?(value) + + value = html_entities.decode(value) + value = Sanitize.fragment(value) if sanitize + value.strip! + value = Onebox::Helpers.truncate(value, length) unless length.nil? + + value + end + + private + + def integer_suffixes + ['width', 'height'] + end + + def url_suffixes + ['url', 'image', 'video'] + end + + def html_entities + @html_entities ||= HTMLEntities.new + end + + def extract(doc) + return {} if Onebox::Helpers::blank?(doc) + + data = {} + + doc.css('meta').each do |m| + if (m["property"] && m["property"][/^(?:og|article|product):(.+)$/i]) || (m["name"] && m["name"][/^(?:og|article|product):(.+)$/i]) + value = (m["content"] || m["value"]).to_s + data[$1.tr('-:', '_').to_sym] ||= value unless Onebox::Helpers::blank?(value) + end + end + + # Attempt to retrieve the title from the meta tag + title_element = doc.at_css('title') + if title_element && title_element.text + data[:title] ||= title_element.text unless Onebox::Helpers.blank?(title_element.text) + end + + data + end + + end +end