Module: OpenDMM::Utils
- Defined in:
- lib/opendmm/utils.rb
Class Method Summary collapse
- .finalize_details_hash(details) ⇒ Object
- .hash_by_split(array, delimiter = /[::]/) ⇒ Object
- .hash_from_dl(dl) ⇒ Object
- .html_in_utf8(content) ⇒ Object
- .join_url_if_relative(page_url, image_url) ⇒ Object
Class Method Details
.finalize_details_hash(details) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/opendmm/utils.rb', line 76 def self.finalize_details_hash(details) details = details.squish_hard details[:cover_image] = join_url_if_relative(details[:page], details[:cover_image]) details[:thumbnail_image] = join_url_if_relative(details[:page], details[:thumbnail_image]) details[:sample_images] = details[:sample_images].map do |uri| join_url_if_relative(details[:page], uri) end if details[:sample_images] details[:movie_length] = ChronicDuration.parse(details[:movie_length]) if details[:movie_length] details[:release_date] = Date.parse(details[:release_date]) if details[:release_date].instance_of? String details.sort.to_h end |
.hash_by_split(array, delimiter = /[::]/) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/opendmm/utils.rb', line 62 def self.hash_by_split(array, delimiter = /[::]/) array.map do |str| slices = str.split(delimiter, 2).map(&:squish) end.select do |pair| pair.size == 2 end.to_h end |
.hash_from_dl(dl) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/opendmm/utils.rb', line 46 def self.hash_from_dl(dl) dts = dl.css('dt').map(&:text).map(&:squish) dds = dl.children.select do |node| node.name == 'dt' || node.name == 'dd' end.split do |node| node.name == 'dt' end[1..-1].map do |nodes| node_set = Nokogiri::XML::NodeSet.new(dl.document) nodes.each do |node| node_set << node end node_set end Hash[dts.zip(dds)] end |
.html_in_utf8(content) ⇒ Object
70 71 72 73 74 |
# File 'lib/opendmm/utils.rb', line 70 def self.html_in_utf8(content) encoding = Nokogiri.HTML(content).encoding content = content.encode('UTF-8', encoding, invalid: :replace, undef: :replace, replace: '') Nokogiri.HTML content end |
.join_url_if_relative(page_url, image_url) ⇒ Object
88 89 90 91 |
# File 'lib/opendmm/utils.rb', line 88 def self.join_url_if_relative(page_url, image_url) return nil unless image_url image_url.start_with?('http') ? image_url : URI.join(page_url, image_url).to_s end |