Sha256: 0197d215903c2971035f8276c8c86116f90aaa5fb8ec9dd56a9d08f1dfff05a0

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

require 'xml/mapping'
require 'resync/resource'

module Resync
  # Base module of +<sitemapindex>+ elements, such as {ChangeDumpIndex},
  # {ChangeListIndex}, {ResourceDumpIndex}, and {ResourceListIndex}.
  module SitemapIndex
    include ::XML::Mapping

    def self.included(base)
      base.extend(ClassMethods)

      base.use_mapping :sitemapindex
      base.root_element_name 'sitemapindex'
      base.array_node :resources, 'sitemap', class: Resource, default_value: [], sub_mapping: :_default
    end

    # Ensures that an index is always written as a +<sitemapindex>+.
    # Overrides +::XML::Mapping.save_to_xml+.
    def save_to_xml(options = { mapping: :_default })
      options = options.merge(mapping: :sitemapindex)
      super(options)
    end

    # Ensures that an index is always read as a +<sitemapindex>+.
    # Overrides +::XML::Mapping::ClassMethods.load_from_xml+.
    module ClassMethods
      def load_from_xml(xml, options = { mapping: :_default })
        options = options.merge(mapping: :sitemapindex)
        super(xml, options)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
resync-0.4.6 lib/resync/shared/sitemap_index.rb
resync-0.4.5 lib/resync/shared/sitemap_index.rb
resync-0.4.4 lib/resync/shared/sitemap_index.rb
resync-0.4.3 lib/resync/shared/sitemap_index.rb