Sha256: de0ac0f4bc3a1f1c4984d090bfdda4254aa96d8beb2c0eb455501ce56fb0807e

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

module Microformats2
  module Property
    class Foundation
      attr_reader :method_name

      def initialize(element, html_class)
        @element = element
        @method_name = to_method_name(html_class)
      end

      def parse
        to_s
        formats
        self
      end

      def to_s
        @to_s ||= value_class_pattern || element_value || text_value
      end

      def format
        formats.first
      end

      def formats
        @formats ||= format_classes.length >=1 ? FormatParser.parse(@element) : []
      end

      def to_hash
        if formats.empty?
          to_s
        else
          { value: to_s }.merge(formats.first.to_hash)
        end
      end

      def to_json
        to_hash.to_json
      end

      protected

      def value_class_pattern
        # TODO
      end

      def element_value
        @element.attribute(attribute).to_s if attribute && @element.attribute(attribute)
      end

      def text_value
        @element.inner_text.gsub(/\n+/, " ").gsub(/\s+/, " ").strip
      end

      def attribute
        attr_map[@element.name]
      end

      def attr_map
        {}
      end

      private

      def to_method_name(html_class)
        # p-class-name -> class_name
        mn = html_class.downcase.split("-")[1..-1].join("_")
        # avoid overriding Object#class
        mn = "klass" if mn == "class"
        mn
      end

      def format_classes
        @format_classes = @element.attribute("class").to_s.split.select do |html_class|
          html_class =~ Format::CLASS_REG_EXP
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
microformats2-2.0.0.pre1 lib/microformats2/property/foundation.rb