Class: SiteMaps::Adapters::Adapter
- Inherits:
-
Object
- Object
- SiteMaps::Adapters::Adapter
- Extended by:
- Forwardable
- Defined in:
- lib/site_maps/adapters/adapter.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#process_mixins ⇒ Object
readonly
Returns the value of attribute process_mixins.
-
#processes ⇒ Object
readonly
Returns the value of attribute processes.
-
#sitemap_index ⇒ Object
readonly
Returns the value of attribute sitemap_index.
Class Method Summary collapse
Instance Method Summary collapse
- #apply_url_filters(link, options) ⇒ Object
- #config {|@config| ... } ⇒ Object (also: #configure)
- #delete(_url) ⇒ void abstract
- #extend_processes_with(mod) ⇒ Object
- #external_sitemap(url, lastmod: nil) ⇒ Object
- #external_sitemaps ⇒ Object
-
#initialize(**options, &block) ⇒ Adapter
constructor
A new instance of Adapter.
- #maybe_inline_urlset? ⇒ Boolean
- #process(name = :default, location = nil, **kwargs, &block) ⇒ Object
-
#read(_url) ⇒ Array<String, Hash>
abstract
The raw data and metadata.
- #repo ⇒ Object
- #reset! ⇒ Object
- #url_filter(&block) ⇒ Object
- #write(_url, _raw_data, **_kwargs) ⇒ void abstract
Constructor Details
#initialize(**options, &block) ⇒ Adapter
Returns a new instance of Adapter.
18 19 20 21 22 23 24 |
# File 'lib/site_maps/adapters/adapter.rb', line 18 def initialize(**, &block) @config = SiteMaps.config.becomes(self.class.config_class, **) @processes = Concurrent::Hash.new @process_mixins = Concurrent::Array.new reset! instance_exec(&block) if block end |
Instance Attribute Details
#process_mixins ⇒ Object (readonly)
Returns the value of attribute process_mixins.
16 17 18 |
# File 'lib/site_maps/adapters/adapter.rb', line 16 def process_mixins @process_mixins end |
#processes ⇒ Object (readonly)
Returns the value of attribute processes.
16 17 18 |
# File 'lib/site_maps/adapters/adapter.rb', line 16 def processes @processes end |
#sitemap_index ⇒ Object (readonly)
Returns the value of attribute sitemap_index.
16 17 18 |
# File 'lib/site_maps/adapters/adapter.rb', line 16 def sitemap_index @sitemap_index end |
Class Method Details
.config_class ⇒ Object
8 9 10 11 12 |
# File 'lib/site_maps/adapters/adapter.rb', line 8 def config_class return SiteMaps::Configuration unless defined?(self::Config) self::Config end |
Instance Method Details
#apply_url_filters(link, options) ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/site_maps/adapters/adapter.rb', line 93 def apply_url_filters(link, ) url = link.respond_to?(:to_s) ? link.to_s : link url_filter.each do |filter| result = filter.call(url, ) return nil if result == false = result if result.is_a?(Hash) end end |
#config {|@config| ... } ⇒ Object Also known as: configure
51 52 53 54 |
# File 'lib/site_maps/adapters/adapter.rb', line 51 def config yield(@config) if block_given? @config end |
#delete(_url) ⇒ void
This method is abstract.
This method returns an undefined value.
47 48 49 |
# File 'lib/site_maps/adapters/adapter.rb', line 47 def delete(_url) raise NotImplementedError end |
#extend_processes_with(mod) ⇒ Object
81 82 83 |
# File 'lib/site_maps/adapters/adapter.rb', line 81 def extend_processes_with(mod) @process_mixins << mod end |
#external_sitemap(url, lastmod: nil) ⇒ Object
64 65 66 67 |
# File 'lib/site_maps/adapters/adapter.rb', line 64 def external_sitemap(url, lastmod: nil) @external_sitemaps ||= Concurrent::Array.new @external_sitemaps << SiteMaps::Builder::SitemapIndex::Item.new(url, lastmod) end |
#external_sitemaps ⇒ Object
69 70 71 |
# File 'lib/site_maps/adapters/adapter.rb', line 69 def external_sitemaps @external_sitemaps || [] end |
#maybe_inline_urlset? ⇒ Boolean
73 74 75 |
# File 'lib/site_maps/adapters/adapter.rb', line 73 def maybe_inline_urlset? @processes.size == 1 && @processes.first.last.static? && external_sitemaps.empty? end |
#process(name = :default, location = nil, **kwargs, &block) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/site_maps/adapters/adapter.rb', line 57 def process(name = :default, location = nil, **kwargs, &block) name = name.to_sym raise ArgumentError, "Process #{name} already defined" if @processes.key?(name) @processes[name] = SiteMaps::Process.new(name, location, kwargs, block) end |
#read(_url) ⇒ Array<String, Hash>
This method is abstract.
Returns The raw data and metadata.
39 40 41 |
# File 'lib/site_maps/adapters/adapter.rb', line 39 def read(_url) raise NotImplementedError end |
#repo ⇒ Object
77 78 79 |
# File 'lib/site_maps/adapters/adapter.rb', line 77 def repo @repo ||= SiteMaps::AtomicRepository.new(config.url) end |
#reset! ⇒ Object
104 105 106 107 108 |
# File 'lib/site_maps/adapters/adapter.rb', line 104 def reset! xsl_url = config.respond_to?(:xsl_index_stylesheet_url) ? config.xsl_index_stylesheet_url : nil @sitemap_index = SiteMaps::Builder::SitemapIndex.new(xsl_url: xsl_url) @repo = nil end |
#url_filter(&block) ⇒ Object
85 86 87 88 89 90 91 |
# File 'lib/site_maps/adapters/adapter.rb', line 85 def url_filter(&block) if block @url_filters ||= Concurrent::Array.new @url_filters << block end @url_filters || [] end |
#write(_url, _raw_data, **_kwargs) ⇒ void
This method is abstract.
This method returns an undefined value.
31 32 33 |
# File 'lib/site_maps/adapters/adapter.rb', line 31 def write(_url, _raw_data, **_kwargs) raise NotImplementedError end |