Sha256: b3af9eb3a733e20a32343a4f11c80ef22f080bc32f17f487f2d9d67a53249318

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

require 'xml/mapping'
require_relative '../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

1 entries across 1 versions & 1 rubygems

Version Path
resync-0.4.2 lib/resync/shared/sitemap_index.rb