Sha256: f5a546afd830b2d26a4a97241c36a013c3b25392a218b04d8545d01b02c779f6

Contents?: true

Size: 1.31 KB

Versions: 5

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require 'yaml'

module Weneedfeed
  class Schema
    class << self
      # @param [String] schema_path
      # @return [Weneedfeed::Schema]
      def load_file(schema_path)
        raw = ::YAML.load_file(schema_path, aliases: true)
        new(raw)
      end
    end

    # @param [Hash] raw
    def initialize(raw)
      @raw = raw
    end

    # @param [String, nl] page_schema_id
    # @return [Weneedfeed::PageSchema]
    def find_page_schema(page_schema_id)
      page_schemata.find do |page_schema|
        page_schema.id == page_schema_id
      end
    end

    # @return [Array<String>]
    def page_ids
      page_schemata.map(&:id)
    end

    # @return [Array<Weneedfeed::PageSchema>]
    def page_schemata
      @raw['pages'].map do |hash|
        ::Weneedfeed::PageSchema.new(
          description: hash['description'],
          id: hash['id'],
          item_description_selector: hash['item_description_selector'],
          item_image_selector: hash['item_image_selector'],
          item_link_selector: hash['item_link_selector'],
          item_time_selector: hash['item_time_selector'],
          item_title_selector: hash['item_title_selector'],
          item_selector: hash['item_selector'],
          title: hash['title'],
          url: hash['url'],
        )
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
weneedfeed-0.17.0 lib/weneedfeed/schema.rb
weneedfeed-0.16.1 lib/weneedfeed/schema.rb
weneedfeed-0.16.0 lib/weneedfeed/schema.rb
weneedfeed-0.15.0 lib/weneedfeed/schema.rb
weneedfeed-0.14.0 lib/weneedfeed/schema.rb