configure_extraction_rules!

in lib/crawler/api/config.rb [394:410]


      def configure_extraction_rules!
        @extraction_rules = @domains.each_with_object({}) do |domain, extraction_rules|
          url = domain[:url]
          rulesets = domain[:extraction_rulesets].nil? ? [] : domain[:extraction_rulesets]

          raise ArgumentError, "Extraction rulesets for #{url} is not an array" unless rulesets.is_a?(Array)

          extra_rules = rulesets.flat_map(&:keys) - EXTRACTION_RULES_FIELDS
          if extra_rules.any?
            raise ArgumentError,
                  "Unexpected extraction ruleset(s) for #{url}: #{extra_rules.join(', ')}"
          end

          extraction_rules[url] = rulesets.map { |ruleset| Crawler::Data::Extraction::Ruleset.new(ruleset, url) }
        end
      end