Sha256: 3efd4bbd5d546692185422d8c540edc360fa0c3a9ad4701ae1447086e5e407e2
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
# frozen_string_literal: true module MicroMicro module Parsers class ImageElementParser # @return [String] attr_reader :value # @param node [Nokogiri::XML::Element] # @param value [String] def initialize(node, value) @node = node @value = value end # @return [String, nil] def alt @alt ||= node["alt"]&.strip end # @return [Boolean] def alt? !alt.nil? end # @return [Hash{Symbol => String}, nil] def srcset @srcset ||= image_candidates if node["srcset"] end # @return [Boolean] def srcset? srcset.present? end # @return [Hash{Symbol => String, Hash{Symbol => String}}] def to_h hash = { value: value } hash[:srcset] = srcset if srcset? hash[:alt] = alt if alt? hash end private # @return [Nokogiri::XML::Element] attr_reader :node # @return [Hash{Symbol => String}] def image_candidates node["srcset"] .split(",") .each_with_object({}) do |candidate, hash| candidate.strip.match(/^(.+?)(\s+.+)?$/) do key = (Regexp.last_match(2) || "1x").strip.to_sym hash[key] = Regexp.last_match(1) unless hash[key] end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
micromicro-5.0.1 | lib/micro_micro/parsers/image_element_parser.rb |
micromicro-5.0.0 | lib/micro_micro/parsers/image_element_parser.rb |