Sha256: 1352eabbae524365d18be41bbed0ad87d043ed8460eda6efef9df980f0bb2a89
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
module MicroMicro module Parsers class DateTimePropertyParser < BasePropertyParser # @see microformats2 Parsing Specification section 1.3.3 # @see http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property HTML_ATTRIBUTES_MAP = { 'datetime' => %w[del ins time], 'title' => %w[abbr], 'value' => %w[data input] }.freeze # @return [String] def value @value ||= begin return resolved_value if date_time_parser.value? return attribute_values.first if attribute_values.any? super end end private # @return [MicroMicro::Parsers::DateTimeParser, nil] def adopted_date_time @adopted_date_time ||= begin collections = property.collection.select { |prop| prop.prefix == 'dt' }.split(property) (collections.shift.reverse + collections).flatten.map { |prop| DateTimeParser.new(prop.value) }.find(&:normalized_date) end end # @return [Array<String>] def attribute_values @attribute_values ||= begin HTML_ATTRIBUTES_MAP.map do |attribute, names| node[attribute] if names.include?(node.name) && node[attribute] end.compact end end # @return [MicroMicro::Parsers::DateTimeParser] def date_time_parser @date_time_parser ||= DateTimeParser.new(value_class_pattern_parser.value) end # @return [Boolean] def imply_date? date_time_parser.normalized_time && !date_time_parser.normalized_date end # @return [String] def resolved_value return "#{adopted_date_time.normalized_date} #{date_time_parser.value}" if imply_date? && adopted_date_time date_time_parser.value end # @return [MicroMicro::Parsers::ValueClassPatternParser] def value_class_pattern_parser ValueClassPatternParser.new(node, ' ') end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
micromicro-0.1.0 | lib/micro_micro/parsers/date_time_property_parser.rb |