sitemap_generator 4.0.1 → 4.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.
- data/Gemfile.lock +1 -1
- data/README.md +77 -23
- data/VERSION +1 -1
- data/lib/sitemap_generator/builder/sitemap_file.rb +1 -0
- data/lib/sitemap_generator/builder/sitemap_url.rb +17 -2
- data/lib/sitemap_generator/utilities.rb +12 -0
- data/spec/sitemap_generator/pagemap_sitemap_spec.rb +50 -0
- data/spec/sitemap_generator/utilities_spec.rb +19 -0
- data/spec/support/schemas/sitemap-pagemap.xsd +97 -0
- metadata +16 -12
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -7,7 +7,7 @@ Sitemaps adhere to the [Sitemap 0.9 protocol][sitemap_protocol] specification. | |
| 7 7 | 
             
            ## Features
         | 
| 8 8 |  | 
| 9 9 | 
             
            * Framework agnostic
         | 
| 10 | 
            -
            * Supports [News sitemaps][sitemap_news], [Video sitemaps][sitemap_video], [Image sitemaps][sitemap_images], [Geo sitemaps][sitemap_geo], [Mobile sitemaps][sitemap_mobile] and [Alternate Links][alternate_links]
         | 
| 10 | 
            +
            * Supports [News sitemaps][sitemap_news], [Video sitemaps][sitemap_video], [Image sitemaps][sitemap_images], [Geo sitemaps][sitemap_geo], [Mobile sitemaps][sitemap_mobile], [PageMap sitemaps][sitemap_pagemap] and [Alternate Links][alternate_links]
         | 
| 11 11 | 
             
            * Supports read-only filesystems like Heroku via uploading to a remote host like Amazon S3
         | 
| 12 12 | 
             
            * Compatible with Rails 2 & 3 and tested with Ruby REE, 1.9.2 & 1.9.3
         | 
| 13 13 | 
             
            * Adheres to the [Sitemap 0.9 protocol][sitemap_protocol]
         | 
| @@ -103,6 +103,7 @@ That's it!  Welcome to the future! | |
| 103 103 |  | 
| 104 104 | 
             
            ## Changelog
         | 
| 105 105 |  | 
| 106 | 
            +
            * v4.1.0: [PageMap sitemap][using_pagemaps] support.
         | 
| 106 107 | 
             
            * v4.0.1: Add a post install message regarding the naming convention change.
         | 
| 107 108 | 
             
            * **v4.0: NEW, NON-BACKWARDS COMPATIBLE CHANGES.**  See above for more info. `create_index` defaults to `:auto`.  Define `SitemapGenerator::SimpleNamer` class for simpler custom namers compatible with the new naming conventions.  Deprecate `sitemaps_namer`, `sitemap_index_namer` and their respective namer classes.  It's more just that their usage is discouraged.  Support `nofollow` option on alternate links.  Fix formatting of `publication_date` in News sitemaps.
         | 
| 108 109 | 
             
            * v3.4: Support [alternate links][alternate_links] for urls; Support configurable options in the `SitemapGenerator::S3Adapter`
         | 
| @@ -827,15 +828,15 @@ end | |
| 827 828 |  | 
| 828 829 | 
             
            #### Supported options
         | 
| 829 830 |  | 
| 830 | 
            -
            * `: | 
| 831 | 
            -
            * `: | 
| 832 | 
            -
            * `: | 
| 833 | 
            -
            * `: | 
| 834 | 
            -
            * `: | 
| 835 | 
            -
            * `: | 
| 836 | 
            -
            * `: | 
| 837 | 
            -
            * `: | 
| 838 | 
            -
             | 
| 831 | 
            +
            * `:news` - Hash
         | 
| 832 | 
            +
                * `:publication_name`
         | 
| 833 | 
            +
                * `:publication_language`
         | 
| 834 | 
            +
                * `:publication_date`
         | 
| 835 | 
            +
                * `:genres`
         | 
| 836 | 
            +
                * `:access`
         | 
| 837 | 
            +
                * `:title`
         | 
| 838 | 
            +
                * `:keywords`
         | 
| 839 | 
            +
                * `:stock_tickers`
         | 
| 839 840 |  | 
| 840 841 | 
             
            ### Image Sitemaps
         | 
| 841 842 |  | 
| @@ -854,12 +855,12 @@ end | |
| 854 855 |  | 
| 855 856 | 
             
            #### Supported options
         | 
| 856 857 |  | 
| 857 | 
            -
            * `: | 
| 858 | 
            -
            * `: | 
| 859 | 
            -
            * `: | 
| 860 | 
            -
            * `: | 
| 861 | 
            -
            * `: | 
| 862 | 
            -
             | 
| 858 | 
            +
            * `:images` - Array of hashes
         | 
| 859 | 
            +
                * `:loc` Required, location of the image
         | 
| 860 | 
            +
                * `:caption`
         | 
| 861 | 
            +
                * `:geo_location`
         | 
| 862 | 
            +
                * `:title`
         | 
| 863 | 
            +
                * `:license`
         | 
| 863 864 |  | 
| 864 865 | 
             
            ### Video Sitemaps
         | 
| 865 866 |  | 
| @@ -885,9 +886,27 @@ end | |
| 885 886 |  | 
| 886 887 | 
             
            #### Supported options
         | 
| 887 888 |  | 
| 888 | 
            -
            * `: | 
| 889 | 
            -
             | 
| 890 | 
            -
             | 
| 889 | 
            +
            * `:video`/`:videos` - Hash or array of hashes, respectively
         | 
| 890 | 
            +
                * `:thumbnail_loc` - String, URL of the thumbnail image.
         | 
| 891 | 
            +
                * `:title` - String, title of the video.
         | 
| 892 | 
            +
                * `:description` - String, description of the video.
         | 
| 893 | 
            +
                * `:content_loc` - String, URL.  One of content_loc or player_loc must be present.
         | 
| 894 | 
            +
                * `:player_loc` - String, URL.  One of content_loc or player_loc must be present.
         | 
| 895 | 
            +
                * `:allow_embed` - Boolean, attribute of player_loc.
         | 
| 896 | 
            +
                * `:autoplay` - Boolean, default true.  Attribute of player_loc.
         | 
| 897 | 
            +
                * `:duration` - Integer or string.  Duration in seconds.
         | 
| 898 | 
            +
                * `:expiration_date`
         | 
| 899 | 
            +
                * `:rating`
         | 
| 900 | 
            +
                * `:view_count` - Integer or string.
         | 
| 901 | 
            +
                * `:publication_date`
         | 
| 902 | 
            +
                * `:tags` - Array of string tags.
         | 
| 903 | 
            +
                * `:tag` - String, single tag.
         | 
| 904 | 
            +
                * `:category`
         | 
| 905 | 
            +
                * `:family_friendly`- Boolean
         | 
| 906 | 
            +
                * `:gallery_loc` - String, URL.
         | 
| 907 | 
            +
                * `:gallery_title` - Title attribute of the gallery location element
         | 
| 908 | 
            +
                * `:uploader`
         | 
| 909 | 
            +
                * `:uploader_info` - Info attribute of uploader element
         | 
| 891 910 |  | 
| 892 911 | 
             
            ### Geo Sitemaps
         | 
| 893 912 |  | 
| @@ -904,8 +923,40 @@ end | |
| 904 923 |  | 
| 905 924 | 
             
            #### Supported options
         | 
| 906 925 |  | 
| 907 | 
            -
            * `: | 
| 926 | 
            +
            * `:geo` - Hash
         | 
| 927 | 
            +
                * `:format` - Required, string, either `'kml'` or `'georss'`
         | 
| 928 | 
            +
             | 
| 929 | 
            +
            ### PageMap Sitemaps
         | 
| 930 | 
            +
             | 
| 931 | 
            +
            Pagemaps can be added by passing a `:pagemap` hash to `add`. The hash must contain a `:dataobjects` key with an array of dataobject hashes. Each dataobject hash contains a `:type` and `:id`, and an optional array of `:attributes`.  Each attribute hash can contain two keys: `:name` and `:value`, with string values.  For more information consult the [official documentation on PageMaps][using_pagemaps].
         | 
| 932 | 
            +
             | 
| 933 | 
            +
            #### Supported options
         | 
| 934 | 
            +
             | 
| 935 | 
            +
            * `:pagemap` - Hash
         | 
| 936 | 
            +
                * `:dataobjects` - Required, array of hashes
         | 
| 937 | 
            +
                    * `:type` - Required, string, type of the object
         | 
| 938 | 
            +
                    * `:id` - String, ID of the object
         | 
| 939 | 
            +
                    * `:attributes` - Array of hashes
         | 
| 940 | 
            +
                        * `:name` - Required, string, name of the attribute.
         | 
| 941 | 
            +
                        * `:value` - String, value of the attribute.
         | 
| 908 942 |  | 
| 943 | 
            +
            #### Example:
         | 
| 944 | 
            +
             | 
| 945 | 
            +
            ```ruby
         | 
| 946 | 
            +
            SitemapGenerator::Sitemap.default_host = "http://www.example.com"
         | 
| 947 | 
            +
            SitemapGenerator::Sitemap.create do
         | 
| 948 | 
            +
              add('/blog/post', :pagemap => {
         | 
| 949 | 
            +
                :dataobjects => [{
         | 
| 950 | 
            +
                  :type => 'document',
         | 
| 951 | 
            +
                  :id   => 'hibachi',
         | 
| 952 | 
            +
                  :attributes => [
         | 
| 953 | 
            +
                    { :name => 'name',   :value => 'Dragon' },
         | 
| 954 | 
            +
                    { :name => 'review', :value => '3.5' },
         | 
| 955 | 
            +
                  ]
         | 
| 956 | 
            +
                }]
         | 
| 957 | 
            +
              })
         | 
| 958 | 
            +
            end
         | 
| 959 | 
            +
            ```
         | 
| 909 960 |  | 
| 910 961 | 
             
            ### Alternate Links
         | 
| 911 962 |  | 
| @@ -930,9 +981,10 @@ end | |
| 930 981 |  | 
| 931 982 | 
             
            #### Supported options
         | 
| 932 983 |  | 
| 933 | 
            -
            * `: | 
| 934 | 
            -
            * `: | 
| 935 | 
            -
            * `: | 
| 984 | 
            +
            * `:alternate`/`:alternates` - Hash or array of hashes, respectively
         | 
| 985 | 
            +
                * `:href` - Required, string.
         | 
| 986 | 
            +
                * `:lang`  - Required, string.
         | 
| 987 | 
            +
                * `:nofollow` - Optional, boolean. Used to mark link as "nofollow".
         | 
| 936 988 |  | 
| 937 989 | 
             
            ## Raison d'être
         | 
| 938 990 |  | 
| @@ -1010,6 +1062,7 @@ Copyright (c) 2009 Karl Varga released under the MIT license | |
| 1010 1062 | 
             
            [sitemap_news]:http://www.google.com/support/webmasters/bin/topic.py?hl=en&topic=10078
         | 
| 1011 1063 | 
             
            [sitemap_geo]:http://www.google.com/support/webmasters/bin/topic.py?hl=en&topic=14688
         | 
| 1012 1064 | 
             
            [sitemap_mobile]:http://support.google.com/webmasters/bin/answer.py?hl=en&answer=34648
         | 
| 1065 | 
            +
            [sitemap_pagemap]:https://developers.google.com/custom-search/docs/structured_data#addtositemap
         | 
| 1013 1066 | 
             
            [sitemap_protocol]:http://sitemaps.org/protocol.php
         | 
| 1014 1067 | 
             
            [video_tags]:http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=80472#4
         | 
| 1015 1068 | 
             
            [image_tags]:http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=178636
         | 
| @@ -1019,3 +1072,4 @@ Copyright (c) 2009 Karl Varga released under the MIT license | |
| 1019 1072 | 
             
            [include_index_change]:https://github.com/kjvarga/sitemap_generator/issues/70
         | 
| 1020 1073 | 
             
            [ehoch]:https://github.com/ehoch
         | 
| 1021 1074 | 
             
            [alternate_links]:http://support.google.com/webmasters/bin/answer.py?hl=en&answer=2620865
         | 
| 1075 | 
            +
            [using_pagemaps]:https://developers.google.com/custom-search/docs/structured_data#pagemaps
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            4.0 | 
| 1 | 
            +
            4.1.0
         | 
| @@ -36,6 +36,7 @@ module SitemapGenerator | |
| 36 36 | 
             
                          xmlns:geo="http://www.google.com/geo/schemas/sitemap/1.0"
         | 
| 37 37 | 
             
                          xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
         | 
| 38 38 | 
             
                          xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"
         | 
| 39 | 
            +
                          xmlns:pagemap="http://www.google.com/schemas/sitemap-pagemap/1.0"
         | 
| 39 40 | 
             
                          xmlns:xhtml="http://www.w3.org/1999/xhtml"
         | 
| 40 41 | 
             
                        >
         | 
| 41 42 | 
             
                    HTML
         | 
| @@ -29,6 +29,7 @@ module SitemapGenerator | |
| 29 29 | 
             
                  # * +news+
         | 
| 30 30 | 
             
                  # * +mobile+
         | 
| 31 31 | 
             
                  # * +alternate+/+alternates+
         | 
| 32 | 
            +
                  # * +pagemap+
         | 
| 32 33 | 
             
                  def initialize(path, options={})
         | 
| 33 34 | 
             
                    options = options.dup
         | 
| 34 35 | 
             
                    if sitemap = path.is_a?(SitemapGenerator::Builder::SitemapFile) && path
         | 
| @@ -36,9 +37,10 @@ module SitemapGenerator | |
| 36 37 | 
             
                      path = sitemap.location.path_in_public
         | 
| 37 38 | 
             
                    end
         | 
| 38 39 |  | 
| 39 | 
            -
                    SitemapGenerator::Utilities.assert_valid_keys(options, :priority, :changefreq, :lastmod, :host, :images, :video, :geo, :news, :videos, :mobile, :alternate, :alternates)
         | 
| 40 | 
            +
                    SitemapGenerator::Utilities.assert_valid_keys(options, :priority, :changefreq, :lastmod, :host, :images, :video, :geo, :news, :videos, :mobile, :alternate, :alternates, :pagemap)
         | 
| 40 41 | 
             
                    SitemapGenerator::Utilities.reverse_merge!(options, :priority => 0.5, :changefreq => 'weekly', :lastmod => Time.now, :images => [], :news => {}, :videos => [], :mobile => false, :alternates => [])
         | 
| 41 42 | 
             
                    raise "Cannot generate a url without a host" unless SitemapGenerator::Utilities.present?(options[:host])
         | 
| 43 | 
            +
             | 
| 42 44 | 
             
                    if video = options.delete(:video)
         | 
| 43 45 | 
             
                      options[:videos] = video.is_a?(Array) ? options[:videos].concat(video) : options[:videos] << video
         | 
| 44 46 | 
             
                    end
         | 
| @@ -59,7 +61,8 @@ module SitemapGenerator | |
| 59 61 | 
             
                      :videos     => options[:videos],
         | 
| 60 62 | 
             
                      :geo        => options[:geo],
         | 
| 61 63 | 
             
                      :mobile     => options[:mobile],
         | 
| 62 | 
            -
                      :alternates => options[:alternates]
         | 
| 64 | 
            +
                      :alternates => options[:alternates],
         | 
| 65 | 
            +
                      :pagemap    => options[:pagemap]
         | 
| 63 66 | 
             
                    )
         | 
| 64 67 | 
             
                  end
         | 
| 65 68 |  | 
| @@ -141,6 +144,18 @@ module SitemapGenerator | |
| 141 144 | 
             
                      unless SitemapGenerator::Utilities.blank?(self[:mobile])
         | 
| 142 145 | 
             
                        builder.mobile :mobile
         | 
| 143 146 | 
             
                      end
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                      unless SitemapGenerator::Utilities.blank?(self[:pagemap])
         | 
| 149 | 
            +
                        builder.pagemap :PageMap do
         | 
| 150 | 
            +
                          SitemapGenerator::Utilities.as_array(self[:pagemap][:dataobjects]).each do |dataobject|
         | 
| 151 | 
            +
                            builder.pagemap :DataObject, :type => dataobject[:type], :id => dataobject[:id] do
         | 
| 152 | 
            +
                              SitemapGenerator::Utilities.as_array(dataobject[:attributes]).each do |attribute|
         | 
| 153 | 
            +
                                builder.pagemap :Attribute, attribute[:value], :name => attribute[:name]
         | 
| 154 | 
            +
                              end
         | 
| 155 | 
            +
                            end
         | 
| 156 | 
            +
                          end
         | 
| 157 | 
            +
                        end
         | 
| 158 | 
            +
                      end
         | 
| 144 159 | 
             
                    end
         | 
| 145 160 | 
             
                    builder << '' # Force to string
         | 
| 146 161 | 
             
                  end
         | 
| @@ -49,6 +49,18 @@ module SitemapGenerator | |
| 49 49 | 
             
                  hash
         | 
| 50 50 | 
             
                end
         | 
| 51 51 |  | 
| 52 | 
            +
                # Make a list of `value` if it is not a list already.  If `value` is
         | 
| 53 | 
            +
                # nil, an empty list is returned.  If `value` is already a list, return it unchanged.
         | 
| 54 | 
            +
                def as_array(value)
         | 
| 55 | 
            +
                  if value.nil?
         | 
| 56 | 
            +
                    []
         | 
| 57 | 
            +
                  elsif value.is_a?(Array)
         | 
| 58 | 
            +
                    value
         | 
| 59 | 
            +
                  else
         | 
| 60 | 
            +
                    [value]
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
                
         | 
| 52 64 | 
             
                # Rounds the float with the specified precision.
         | 
| 53 65 | 
             
                #
         | 
| 54 66 | 
             
                #   x = 1.337
         | 
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "SitemapGenerator" do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              it "should add the pagemap sitemap element" do
         | 
| 6 | 
            +
                pagemap_xml_fragment = SitemapGenerator::Builder::SitemapUrl.new('my_page.html', {
         | 
| 7 | 
            +
                  :host => 'http://www.example.com',
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  :pagemap => {
         | 
| 10 | 
            +
                    :dataobjects => [
         | 
| 11 | 
            +
                      {
         | 
| 12 | 
            +
                        type: 'document',
         | 
| 13 | 
            +
                        id: 'hibachi',
         | 
| 14 | 
            +
                        attributes: [
         | 
| 15 | 
            +
                          {name: 'name', value: 'Dragon'},
         | 
| 16 | 
            +
                          {name: 'review', value: 3.5},
         | 
| 17 | 
            +
                        ]
         | 
| 18 | 
            +
                      },
         | 
| 19 | 
            +
                      {
         | 
| 20 | 
            +
                        type: 'stats',
         | 
| 21 | 
            +
                        attributes: [
         | 
| 22 | 
            +
                          {name: 'installs', value: 2000},
         | 
| 23 | 
            +
                          {name: 'comments', value: 200},
         | 
| 24 | 
            +
                        ]
         | 
| 25 | 
            +
                      }
         | 
| 26 | 
            +
                    ]
         | 
| 27 | 
            +
                  }
         | 
| 28 | 
            +
                }).to_xml
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                doc = Nokogiri::XML.parse(pagemap_xml_fragment)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                url = doc.at_xpath("//url")
         | 
| 33 | 
            +
                loc = url.at_xpath("loc")
         | 
| 34 | 
            +
                loc.text.should == 'http://www.example.com/my_page.html'
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                pagemap = doc.at_xpath("//PageMap")
         | 
| 37 | 
            +
                pagemap.children.count.should == 2
         | 
| 38 | 
            +
                pagemap.at_xpath('//DataObject').attributes['type'].value.should == 'document'
         | 
| 39 | 
            +
                pagemap.at_xpath('//DataObject').attributes['id'].value.should == 'hibachi'
         | 
| 40 | 
            +
                pagemap.at_xpath('//DataObject').children.count.should == 2
         | 
| 41 | 
            +
                first_attribute = pagemap.at_xpath('//DataObject').children.first
         | 
| 42 | 
            +
                second_attribute = pagemap.at_xpath('//DataObject').children.last
         | 
| 43 | 
            +
                first_attribute.text.should == 'Dragon'
         | 
| 44 | 
            +
                first_attribute.attributes['name'].value.should == 'name'
         | 
| 45 | 
            +
                second_attribute.text.should == '3.5'
         | 
| 46 | 
            +
                second_attribute.attributes['name'].value.should == 'review'
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                xml_fragment_should_validate_against_schema(pagemap, 'http://www.google.com/schemas/sitemap-pagemap/1.0', 'sitemap-pagemap')
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
            end
         | 
| @@ -47,4 +47,23 @@ describe SitemapGenerator::Utilities do | |
| 47 47 | 
             
                  SitemapGenerator::Utilities.falsy?(nil).should be_false
         | 
| 48 48 | 
             
                end
         | 
| 49 49 | 
             
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              describe "as_array" do
         | 
| 52 | 
            +
                it "should return an array unchanged" do
         | 
| 53 | 
            +
                  SitemapGenerator::Utilities.as_array([]).should == []
         | 
| 54 | 
            +
                  SitemapGenerator::Utilities.as_array([1]).should == [1]
         | 
| 55 | 
            +
                  SitemapGenerator::Utilities.as_array([1,2,3]).should == [1,2,3]
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                it "should return empty array on nil" do
         | 
| 59 | 
            +
                  SitemapGenerator::Utilities.as_array(nil).should == []
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                it "should make array of item otherwise" do
         | 
| 63 | 
            +
                  SitemapGenerator::Utilities.as_array('').should == ['']
         | 
| 64 | 
            +
                  SitemapGenerator::Utilities.as_array(1).should == [1]
         | 
| 65 | 
            +
                  SitemapGenerator::Utilities.as_array('hello').should == ['hello']
         | 
| 66 | 
            +
                  SitemapGenerator::Utilities.as_array({}).should == [{}]
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
              end
         | 
| 50 69 | 
             
            end
         | 
| @@ -0,0 +1,97 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            <?xml version="1.0" encoding="UTF-8"?>
         | 
| 3 | 
            +
            <xsd:schema
         | 
| 4 | 
            +
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         | 
| 5 | 
            +
                targetNamespace="http://www.google.com/schemas/sitemap-pagemap/1.0"
         | 
| 6 | 
            +
                xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0"
         | 
| 7 | 
            +
                elementFormDefault="qualified">
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            <xsd:annotation>
         | 
| 10 | 
            +
              <xsd:documentation>
         | 
| 11 | 
            +
                XML Schema for the PageMap Sitemap extension. This schema defines the
         | 
| 12 | 
            +
                PageMap-specific elements only; the core Sitemap elements are defined
         | 
| 13 | 
            +
                separately.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                Copyright 2011 Google Inc. All Rights Reserved.
         | 
| 16 | 
            +
              </xsd:documentation>
         | 
| 17 | 
            +
            </xsd:annotation>
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            <xsd:element name="PageMap">
         | 
| 20 | 
            +
              <xsd:complexType>
         | 
| 21 | 
            +
                <xsd:sequence>
         | 
| 22 | 
            +
                  <xsd:element name="Template" minOccurs="0">
         | 
| 23 | 
            +
                    <xsd:annotation>
         | 
| 24 | 
            +
                      <xsd:documentation>
         | 
| 25 | 
            +
                        Template file specification. Can be used for overriding the
         | 
| 26 | 
            +
                        default rendering of search results delivered via
         | 
| 27 | 
            +
                        Google Custom Search Engine.
         | 
| 28 | 
            +
                      </xsd:documentation>
         | 
| 29 | 
            +
                    </xsd:annotation>
         | 
| 30 | 
            +
                    <xsd:complexType>
         | 
| 31 | 
            +
                      <xsd:attribute name="src" type="xsd:anyURI" use="required">
         | 
| 32 | 
            +
                        <xsd:annotation>
         | 
| 33 | 
            +
                          <xsd:documentation>
         | 
| 34 | 
            +
                            Reference to a template file. A template file contains a set of
         | 
| 35 | 
            +
                            ResultSpecs, which, given DataObjects of appropriate types on
         | 
| 36 | 
            +
                            the page, renders a search result based on the key-value pairs
         | 
| 37 | 
            +
                            found in those DataObjects. If the template file is not
         | 
| 38 | 
            +
                            specified, Google will use the default predefined set of
         | 
| 39 | 
            +
                            templates tailored to popular content.
         | 
| 40 | 
            +
                          </xsd:documentation>
         | 
| 41 | 
            +
                        </xsd:annotation>
         | 
| 42 | 
            +
                      </xsd:attribute>
         | 
| 43 | 
            +
                    </xsd:complexType>
         | 
| 44 | 
            +
                  </xsd:element>
         | 
| 45 | 
            +
                  <xsd:element name="DataObject" minOccurs="0" maxOccurs="unbounded">
         | 
| 46 | 
            +
                    <xsd:complexType>
         | 
| 47 | 
            +
                      <xsd:sequence>
         | 
| 48 | 
            +
                        <xsd:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
         | 
| 49 | 
            +
                          <xsd:annotation>
         | 
| 50 | 
            +
                            <xsd:documentation>
         | 
| 51 | 
            +
                              Either 'value' attribute or text content must be set, but
         | 
| 52 | 
            +
                              not both.
         | 
| 53 | 
            +
                            </xsd:documentation>
         | 
| 54 | 
            +
                          </xsd:annotation>
         | 
| 55 | 
            +
                          <xsd:complexType>
         | 
| 56 | 
            +
                            <xsd:simpleContent>
         | 
| 57 | 
            +
                              <xsd:extension base="xsd:string">
         | 
| 58 | 
            +
                                <xsd:attribute name="name" type="xsd:string" use="required">
         | 
| 59 | 
            +
                                  <xsd:annotation>
         | 
| 60 | 
            +
                                    <xsd:documentation>
         | 
| 61 | 
            +
                                      Name of the attribute.
         | 
| 62 | 
            +
                                    </xsd:documentation>
         | 
| 63 | 
            +
                                  </xsd:annotation>
         | 
| 64 | 
            +
                                </xsd:attribute>
         | 
| 65 | 
            +
                                <xsd:attribute name="value" type="xsd:string">
         | 
| 66 | 
            +
                                  <xsd:annotation>
         | 
| 67 | 
            +
                                    <xsd:documentation>
         | 
| 68 | 
            +
                                      Value of the attribute.
         | 
| 69 | 
            +
                                    </xsd:documentation>
         | 
| 70 | 
            +
                                  </xsd:annotation>
         | 
| 71 | 
            +
                                </xsd:attribute>
         | 
| 72 | 
            +
                              </xsd:extension>
         | 
| 73 | 
            +
                            </xsd:simpleContent>
         | 
| 74 | 
            +
                          </xsd:complexType>
         | 
| 75 | 
            +
                        </xsd:element>
         | 
| 76 | 
            +
                      </xsd:sequence>
         | 
| 77 | 
            +
                      <xsd:attribute name="type" type="xsd:string" use="required">
         | 
| 78 | 
            +
                        <xsd:annotation>
         | 
| 79 | 
            +
                          <xsd:documentation>
         | 
| 80 | 
            +
                            Type of the object.
         | 
| 81 | 
            +
                          </xsd:documentation>
         | 
| 82 | 
            +
                        </xsd:annotation>
         | 
| 83 | 
            +
                      </xsd:attribute>
         | 
| 84 | 
            +
                      <xsd:attribute name="id" type="xsd:string">
         | 
| 85 | 
            +
                        <xsd:annotation>
         | 
| 86 | 
            +
                          <xsd:documentation>
         | 
| 87 | 
            +
                            ID of the object.
         | 
| 88 | 
            +
                          </xsd:documentation>
         | 
| 89 | 
            +
                        </xsd:annotation>
         | 
| 90 | 
            +
                      </xsd:attribute>
         | 
| 91 | 
            +
                    </xsd:complexType>
         | 
| 92 | 
            +
                  </xsd:element>
         | 
| 93 | 
            +
                </xsd:sequence>
         | 
| 94 | 
            +
              </xsd:complexType>
         | 
| 95 | 
            +
            </xsd:element>
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            </xsd:schema>
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sitemap_generator
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4.0 | 
| 4 | 
            +
              version: 4.1.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -10,11 +10,11 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2013- | 
| 13 | 
            +
            date: 2013-06-03 00:00:00.000000000Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: mocha
         | 
| 17 | 
            -
              requirement: & | 
| 17 | 
            +
              requirement: &70338921097240 !ruby/object:Gem::Requirement
         | 
| 18 18 | 
             
                none: false
         | 
| 19 19 | 
             
                requirements:
         | 
| 20 20 | 
             
                - - ! '>='
         | 
| @@ -22,10 +22,10 @@ dependencies: | |
| 22 22 | 
             
                    version: '0'
         | 
| 23 23 | 
             
              type: :development
         | 
| 24 24 | 
             
              prerelease: false
         | 
| 25 | 
            -
              version_requirements: * | 
| 25 | 
            +
              version_requirements: *70338921097240
         | 
| 26 26 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 27 27 | 
             
              name: nokogiri
         | 
| 28 | 
            -
              requirement: & | 
| 28 | 
            +
              requirement: &70338921096640 !ruby/object:Gem::Requirement
         | 
| 29 29 | 
             
                none: false
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - ! '>='
         | 
| @@ -33,10 +33,10 @@ dependencies: | |
| 33 33 | 
             
                    version: '0'
         | 
| 34 34 | 
             
              type: :development
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 | 
            -
              version_requirements: * | 
| 36 | 
            +
              version_requirements: *70338921096640
         | 
| 37 37 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 38 38 | 
             
              name: rspec
         | 
| 39 | 
            -
              requirement: & | 
| 39 | 
            +
              requirement: &70338921096180 !ruby/object:Gem::Requirement
         | 
| 40 40 | 
             
                none: false
         | 
| 41 41 | 
             
                requirements:
         | 
| 42 42 | 
             
                - - ! '>='
         | 
| @@ -44,10 +44,10 @@ dependencies: | |
| 44 44 | 
             
                    version: '0'
         | 
| 45 45 | 
             
              type: :development
         | 
| 46 46 | 
             
              prerelease: false
         | 
| 47 | 
            -
              version_requirements: * | 
| 47 | 
            +
              version_requirements: *70338921096180
         | 
| 48 48 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 49 49 | 
             
              name: builder
         | 
| 50 | 
            -
              requirement: & | 
| 50 | 
            +
              requirement: &70338921095700 !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                none: false
         | 
| 52 52 | 
             
                requirements:
         | 
| 53 53 | 
             
                - - ! '>='
         | 
| @@ -55,7 +55,7 @@ dependencies: | |
| 55 55 | 
             
                    version: '0'
         | 
| 56 56 | 
             
              type: :runtime
         | 
| 57 57 | 
             
              prerelease: false
         | 
| 58 | 
            -
              version_requirements: * | 
| 58 | 
            +
              version_requirements: *70338921095700
         | 
| 59 59 | 
             
            description: SitemapGenerator is an XML Sitemap generator written in Ruby with automatic
         | 
| 60 60 | 
             
              Rails integration.  It supports Video, News, Image and Geo sitemaps and includes
         | 
| 61 61 | 
             
              Rake tasks for managing your sitemaps.
         | 
| @@ -115,6 +115,7 @@ files: | |
| 115 115 | 
             
            - spec/sitemap_generator/link_set_spec.rb
         | 
| 116 116 | 
             
            - spec/sitemap_generator/mobile_sitemap_spec.rb
         | 
| 117 117 | 
             
            - spec/sitemap_generator/news_sitemap_spec.rb
         | 
| 118 | 
            +
            - spec/sitemap_generator/pagemap_sitemap_spec.rb
         | 
| 118 119 | 
             
            - spec/sitemap_generator/sitemap_generator_spec.rb
         | 
| 119 120 | 
             
            - spec/sitemap_generator/sitemap_groups_spec.rb
         | 
| 120 121 | 
             
            - spec/sitemap_generator/sitemap_location_spec.rb
         | 
| @@ -131,6 +132,7 @@ files: | |
| 131 132 | 
             
            - spec/support/schemas/sitemap-geo.xsd
         | 
| 132 133 | 
             
            - spec/support/schemas/sitemap-mobile.xsd
         | 
| 133 134 | 
             
            - spec/support/schemas/sitemap-news.xsd
         | 
| 135 | 
            +
            - spec/support/schemas/sitemap-pagemap.xsd
         | 
| 134 136 | 
             
            - spec/support/schemas/sitemap-video.xsd
         | 
| 135 137 | 
             
            - spec/support/schemas/sitemap.xsd
         | 
| 136 138 | 
             
            - spec/support/xml_macros.rb
         | 
| @@ -161,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 161 163 | 
             
                  version: '0'
         | 
| 162 164 | 
             
                  segments:
         | 
| 163 165 | 
             
                  - 0
         | 
| 164 | 
            -
                  hash:  | 
| 166 | 
            +
                  hash: -1019294574066130331
         | 
| 165 167 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 166 168 | 
             
              none: false
         | 
| 167 169 | 
             
              requirements:
         | 
| @@ -170,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 170 172 | 
             
                  version: '0'
         | 
| 171 173 | 
             
                  segments:
         | 
| 172 174 | 
             
                  - 0
         | 
| 173 | 
            -
                  hash:  | 
| 175 | 
            +
                  hash: -1019294574066130331
         | 
| 174 176 | 
             
            requirements: []
         | 
| 175 177 | 
             
            rubyforge_project: 
         | 
| 176 178 | 
             
            rubygems_version: 1.8.10
         | 
| @@ -196,6 +198,7 @@ test_files: | |
| 196 198 | 
             
            - spec/sitemap_generator/link_set_spec.rb
         | 
| 197 199 | 
             
            - spec/sitemap_generator/mobile_sitemap_spec.rb
         | 
| 198 200 | 
             
            - spec/sitemap_generator/news_sitemap_spec.rb
         | 
| 201 | 
            +
            - spec/sitemap_generator/pagemap_sitemap_spec.rb
         | 
| 199 202 | 
             
            - spec/sitemap_generator/sitemap_generator_spec.rb
         | 
| 200 203 | 
             
            - spec/sitemap_generator/sitemap_groups_spec.rb
         | 
| 201 204 | 
             
            - spec/sitemap_generator/sitemap_location_spec.rb
         | 
| @@ -212,6 +215,7 @@ test_files: | |
| 212 215 | 
             
            - spec/support/schemas/sitemap-geo.xsd
         | 
| 213 216 | 
             
            - spec/support/schemas/sitemap-mobile.xsd
         | 
| 214 217 | 
             
            - spec/support/schemas/sitemap-news.xsd
         | 
| 218 | 
            +
            - spec/support/schemas/sitemap-pagemap.xsd
         | 
| 215 219 | 
             
            - spec/support/schemas/sitemap-video.xsd
         | 
| 216 220 | 
             
            - spec/support/schemas/sitemap.xsd
         | 
| 217 221 | 
             
            - spec/support/xml_macros.rb
         |