micromicro 2.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/README.md +3 -96
- data/lib/micro_micro/collections/base_collection.rb +2 -1
- data/lib/micro_micro/collections/items_collection.rb +81 -0
- data/lib/micro_micro/collections/properties_collection.rb +102 -3
- data/lib/micro_micro/collections/relationships_collection.rb +82 -4
- data/lib/micro_micro/document.rb +12 -6
- data/lib/micro_micro/helpers.rb +6 -0
- data/lib/micro_micro/implied_property.rb +13 -0
- data/lib/micro_micro/item.rb +65 -46
- data/lib/micro_micro/parsers/base_property_parser.rb +2 -0
- data/lib/micro_micro/parsers/date_time_parser.rb +3 -5
- data/lib/micro_micro/parsers/date_time_property_parser.rb +3 -0
- data/lib/micro_micro/parsers/embedded_markup_property_parser.rb +1 -0
- data/lib/micro_micro/parsers/image_element_parser.rb +68 -0
- data/lib/micro_micro/parsers/implied_name_property_parser.rb +1 -0
- data/lib/micro_micro/parsers/implied_photo_property_parser.rb +7 -6
- data/lib/micro_micro/parsers/implied_url_property_parser.rb +1 -0
- data/lib/micro_micro/parsers/plain_text_property_parser.rb +1 -0
- data/lib/micro_micro/parsers/url_property_parser.rb +4 -5
- data/lib/micro_micro/parsers/value_class_pattern_parser.rb +4 -2
- data/lib/micro_micro/property.rb +78 -20
- data/lib/micro_micro/relationship.rb +26 -3
- data/lib/micro_micro/version.rb +1 -1
- data/lib/micromicro.rb +8 -6
- metadata +4 -3
| @@ -4,31 +4,41 @@ module MicroMicro | |
| 4 4 | 
             
              class Relationship
         | 
| 5 5 | 
             
                include Collectible
         | 
| 6 6 |  | 
| 7 | 
            +
                # Extract {MicroMicro::Relationship}s from a context.
         | 
| 8 | 
            +
                #
         | 
| 7 9 | 
             
                # @param context [Nokogiri::HTML::Document, Nokogiri::XML::Element]
         | 
| 8 10 | 
             
                # @return [Array<MicroMicro::Relationship>]
         | 
| 9 | 
            -
                def self. | 
| 11 | 
            +
                def self.from_context(context)
         | 
| 10 12 | 
             
                  context.css('[href][rel]:not([rel=""])')
         | 
| 11 13 | 
             
                         .reject { |node| Helpers.ignore_nodes?(node.ancestors) }
         | 
| 12 14 | 
             
                         .map { |node| new(node) }
         | 
| 13 15 | 
             
                end
         | 
| 14 16 |  | 
| 17 | 
            +
                # Parse a node for relationship data.
         | 
| 18 | 
            +
                #
         | 
| 15 19 | 
             
                # @param node [Nokogiri::XML::Element]
         | 
| 20 | 
            +
                # @return [MicroMicro::Relationship]
         | 
| 16 21 | 
             
                def initialize(node)
         | 
| 17 22 | 
             
                  @node = node
         | 
| 18 23 | 
             
                end
         | 
| 19 24 |  | 
| 25 | 
            +
                # The value of the node's +href+ attribute.
         | 
| 26 | 
            +
                #
         | 
| 20 27 | 
             
                # @return [String]
         | 
| 21 28 | 
             
                def href
         | 
| 22 29 | 
             
                  @href ||= node['href']
         | 
| 23 30 | 
             
                end
         | 
| 24 31 |  | 
| 32 | 
            +
                # The value of the node's +hreflang+ attribute, if present.
         | 
| 33 | 
            +
                #
         | 
| 25 34 | 
             
                # @return [String, nil]
         | 
| 26 35 | 
             
                def hreflang
         | 
| 27 36 | 
             
                  @hreflang ||= node['hreflang']&.strip
         | 
| 28 37 | 
             
                end
         | 
| 29 38 |  | 
| 30 | 
            -
                # :nocov:
         | 
| 31 39 | 
             
                # @return [String]
         | 
| 40 | 
            +
                #
         | 
| 41 | 
            +
                # :nocov:
         | 
| 32 42 | 
             
                def inspect
         | 
| 33 43 | 
             
                  "#<#{self.class}:#{format('%#0x', object_id)} " \
         | 
| 34 44 | 
             
                    "href: #{href.inspect}, " \
         | 
| @@ -36,11 +46,15 @@ module MicroMicro | |
| 36 46 | 
             
                end
         | 
| 37 47 | 
             
                # :nocov:
         | 
| 38 48 |  | 
| 49 | 
            +
                # The value of the node's +media+ attribute, if present.
         | 
| 50 | 
            +
                #
         | 
| 39 51 | 
             
                # @return [String, nil]
         | 
| 40 52 | 
             
                def media
         | 
| 41 53 | 
             
                  @media ||= node['media']&.strip
         | 
| 42 54 | 
             
                end
         | 
| 43 55 |  | 
| 56 | 
            +
                # Return the parsed {MicroMicro::Relationship} as a Hash.
         | 
| 57 | 
            +
                #
         | 
| 44 58 | 
             
                # @return [Hash{Symbol => String}]
         | 
| 45 59 | 
             
                def to_h
         | 
| 46 60 | 
             
                  {
         | 
| @@ -51,24 +65,32 @@ module MicroMicro | |
| 51 65 | 
             
                    title: title,
         | 
| 52 66 | 
             
                    type: type,
         | 
| 53 67 | 
             
                    text: text
         | 
| 54 | 
            -
                  }. | 
| 68 | 
            +
                  }.compact_blank!
         | 
| 55 69 | 
             
                end
         | 
| 56 70 |  | 
| 71 | 
            +
                # An Array of unique values from node's +rel+ attribute.
         | 
| 72 | 
            +
                #
         | 
| 57 73 | 
             
                # @return [Array<String>]
         | 
| 58 74 | 
             
                def rels
         | 
| 59 75 | 
             
                  @rels ||= node['rel'].split.uniq.sort
         | 
| 60 76 | 
             
                end
         | 
| 61 77 |  | 
| 78 | 
            +
                # The node's text content.
         | 
| 79 | 
            +
                #
         | 
| 62 80 | 
             
                # @return [String]
         | 
| 63 81 | 
             
                def text
         | 
| 64 82 | 
             
                  @text ||= node.text
         | 
| 65 83 | 
             
                end
         | 
| 66 84 |  | 
| 85 | 
            +
                # The value of the node's +title+ attribute, if present.
         | 
| 86 | 
            +
                #
         | 
| 67 87 | 
             
                # @return [String, nil]
         | 
| 68 88 | 
             
                def title
         | 
| 69 89 | 
             
                  @title ||= node['title']&.strip
         | 
| 70 90 | 
             
                end
         | 
| 71 91 |  | 
| 92 | 
            +
                # The value of the node's +type+ attribute, if present.
         | 
| 93 | 
            +
                #
         | 
| 72 94 | 
             
                # @return [String, nil]
         | 
| 73 95 | 
             
                def type
         | 
| 74 96 | 
             
                  @type ||= node['type']&.strip
         | 
| @@ -76,6 +98,7 @@ module MicroMicro | |
| 76 98 |  | 
| 77 99 | 
             
                private
         | 
| 78 100 |  | 
| 101 | 
            +
                # @return [Nokogiri::XML::Element]
         | 
| 79 102 | 
             
                attr_reader :node
         | 
| 80 103 | 
             
              end
         | 
| 81 104 | 
             
            end
         | 
    
        data/lib/micro_micro/version.rb
    CHANGED
    
    
    
        data/lib/micromicro.rb
    CHANGED
    
    | @@ -3,9 +3,9 @@ | |
| 3 3 | 
             
            require 'forwardable'
         | 
| 4 4 |  | 
| 5 5 | 
             
            require 'active_support/core_ext/array/grouping'
         | 
| 6 | 
            +
            require 'active_support/core_ext/enumerable'
         | 
| 6 7 | 
             
            require 'active_support/core_ext/hash/deep_transform_values'
         | 
| 7 | 
            -
            require 'active_support/core_ext/hash/ | 
| 8 | 
            -
            require 'active_support/core_ext/hash/slice'
         | 
| 8 | 
            +
            require 'active_support/core_ext/hash/except'
         | 
| 9 9 | 
             
            require 'active_support/core_ext/object/blank'
         | 
| 10 10 | 
             
            require 'nokogiri'
         | 
| 11 11 | 
             
            require 'nokogiri/html-ext'
         | 
| @@ -15,6 +15,7 @@ require_relative 'micro_micro/collectible' | |
| 15 15 | 
             
            require_relative 'micro_micro/helpers'
         | 
| 16 16 |  | 
| 17 17 | 
             
            require_relative 'micro_micro/parsers/date_time_parser'
         | 
| 18 | 
            +
            require_relative 'micro_micro/parsers/image_element_parser'
         | 
| 18 19 | 
             
            require_relative 'micro_micro/parsers/value_class_pattern_parser'
         | 
| 19 20 |  | 
| 20 21 | 
             
            require_relative 'micro_micro/parsers/base_property_parser'
         | 
| @@ -41,13 +42,14 @@ require_relative 'micro_micro/collections/relationships_collection' | |
| 41 42 |  | 
| 42 43 | 
             
            module MicroMicro
         | 
| 43 44 | 
             
              # Parse a string of HTML for microformats2-encoded data.
         | 
| 44 | 
            -
              # Convenience method for MicroMicro::Document.new.
         | 
| 45 45 | 
             
              #
         | 
| 46 | 
            +
              # Convenience method for {MicroMicro::Document#initialize}.
         | 
| 47 | 
            +
              #
         | 
| 48 | 
            +
              # @example
         | 
| 46 49 | 
             
              #   MicroMicro.parse('<a href="/" class="h-card" rel="me">Jason Garber</a>', 'https://sixtwothree.org')
         | 
| 47 50 | 
             
              #
         | 
| 48 | 
            -
              # @param  | 
| 49 | 
            -
              # @ | 
| 50 | 
            -
              # @return [MicroMicro::Document]
         | 
| 51 | 
            +
              # @param (see MicroMicro::Document#initialize)
         | 
| 52 | 
            +
              # @return (see MicroMicro::Document#initialize)
         | 
| 51 53 | 
             
              def self.parse(markup, base_url)
         | 
| 52 54 | 
             
                Document.new(markup, base_url)
         | 
| 53 55 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: micromicro
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 3.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jason Garber
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-09-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -77,6 +77,7 @@ files: | |
| 77 77 | 
             
            - lib/micro_micro/parsers/date_time_parser.rb
         | 
| 78 78 | 
             
            - lib/micro_micro/parsers/date_time_property_parser.rb
         | 
| 79 79 | 
             
            - lib/micro_micro/parsers/embedded_markup_property_parser.rb
         | 
| 80 | 
            +
            - lib/micro_micro/parsers/image_element_parser.rb
         | 
| 80 81 | 
             
            - lib/micro_micro/parsers/implied_name_property_parser.rb
         | 
| 81 82 | 
             
            - lib/micro_micro/parsers/implied_photo_property_parser.rb
         | 
| 82 83 | 
             
            - lib/micro_micro/parsers/implied_url_property_parser.rb
         | 
| @@ -93,7 +94,7 @@ licenses: | |
| 93 94 | 
             
            - MIT
         | 
| 94 95 | 
             
            metadata:
         | 
| 95 96 | 
             
              bug_tracker_uri: https://github.com/jgarber623/micromicro/issues
         | 
| 96 | 
            -
              changelog_uri: https://github.com/jgarber623/micromicro/blob/ | 
| 97 | 
            +
              changelog_uri: https://github.com/jgarber623/micromicro/blob/v3.1.0/CHANGELOG.md
         | 
| 97 98 | 
             
              rubygems_mfa_required: 'true'
         | 
| 98 99 | 
             
            post_install_message: 
         | 
| 99 100 | 
             
            rdoc_options: []
         |