Class: Crawlscope::RuleRegistry
- Inherits:
-
Object
- Object
- Crawlscope::RuleRegistry
- Defined in:
- lib/crawlscope/rule_registry.rb
Instance Attribute Summary collapse
-
#default_codes ⇒ Object
readonly
Returns the value of attribute default_codes.
-
#rules ⇒ Object
readonly
Returns the value of attribute rules.
Class Method Summary collapse
Instance Method Summary collapse
- #codes ⇒ Object
-
#initialize(rules:, default_codes: nil) ⇒ RuleRegistry
constructor
A new instance of RuleRegistry.
- #rules_for(names) ⇒ Object
Constructor Details
#initialize(rules:, default_codes: nil) ⇒ RuleRegistry
Returns a new instance of RuleRegistry.
7 8 9 10 |
# File 'lib/crawlscope/rule_registry.rb', line 7 def initialize(rules:, default_codes: nil) @rules = Array(rules) @default_codes = Array(default_codes).map(&:to_sym) end |
Instance Attribute Details
#default_codes ⇒ Object (readonly)
Returns the value of attribute default_codes.
5 6 7 |
# File 'lib/crawlscope/rule_registry.rb', line 5 def default_codes @default_codes end |
#rules ⇒ Object (readonly)
Returns the value of attribute rules.
5 6 7 |
# File 'lib/crawlscope/rule_registry.rb', line 5 def rules @rules end |
Class Method Details
.default(site_name: nil) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/crawlscope/rule_registry.rb', line 12 def self.default(site_name: nil) new( rules: [ Rules::Metadata.new(site_name: site_name), Rules::StructuredData.new, Rules::Uniqueness.new, Rules::Links.new ], default_codes: %i[metadata structured_data uniqueness links] ) end |
Instance Method Details
#codes ⇒ Object
24 25 26 |
# File 'lib/crawlscope/rule_registry.rb', line 24 def codes @rules.map(&:code) end |
#rules_for(names) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/crawlscope/rule_registry.rb', line 28 def rules_for(names) normalized_names = Array(names).flat_map { |value| value.to_s.split(",") }.map(&:strip).reject(&:empty?) normalized_names = @default_codes.map(&:to_s) if normalized_names.empty? selected_rules = @rules.select { |rule| normalized_names.include?(rule.code.to_s) } missing_rules = normalized_names - selected_rules.map { |rule| rule.code.to_s } return selected_rules if missing_rules.empty? raise ConfigurationError, "Unknown Crawlscope rules: #{missing_rules.join(", ")}" end |