class Html2rss::Config

The Config class abstracts from the config data structure and provides default values.

Attributes

channel_config[R]
feed_config[R]
global_config[R]

Public Class Methods

new(feed_config, global_config = {}) click to toggle source
# File lib/html2rss/config.rb, line 8
def initialize(feed_config, global_config = {})
  @global_config = global_config.deep_symbolize_keys
  @feed_config = feed_config.deep_symbolize_keys
  @channel_config = @feed_config.fetch(:channel, {})
end

Public Instance Methods

attribute?(name) click to toggle source
# File lib/html2rss/config.rb, line 64
def attribute?(name)
  attribute_names.include?(name)
end
attribute_names() click to toggle source
# File lib/html2rss/config.rb, line 83
def attribute_names
  @attribute_names ||= feed_config.fetch(:selectors, {}).keys.tap { |attrs| attrs.delete(:items) }
end
attribute_options(name) click to toggle source
# File lib/html2rss/config.rb, line 60
def attribute_options(name)
  feed_config.dig(:selectors).fetch(name, {}).merge(channel: channel_config)
end
author() click to toggle source
# File lib/html2rss/config.rb, line 14
def author
  channel_config.fetch :author, 'html2rss'
end
category_selectors() click to toggle source
# File lib/html2rss/config.rb, line 68
def category_selectors
  categories = feed_config.dig(:selectors, :categories)
  return [] unless categories

  categories = categories.keep_if { |category| category.to_s != '' }
  categories.map!(&:to_sym)
  categories.uniq!

  categories
end
description() click to toggle source
# File lib/html2rss/config.rb, line 39
def description
  channel_config.fetch :description, "Latest items from #{url}."
end
generated_title() click to toggle source
# File lib/html2rss/config.rb, line 26
def generated_title
  uri = URI(url)

  nicer_path = uri.path.split('/')
  nicer_path.reject! { |part| part == '' }

  nicer_path.any? ? "#{uri.host}: #{nicer_path.join(' ').titleize}" : uri.host
end
headers() click to toggle source
# File lib/html2rss/config.rb, line 56
def headers
  global_config.fetch(:headers, {}).merge(channel_config.fetch(:headers, {}))
end
items_order() click to toggle source
# File lib/html2rss/config.rb, line 87
def items_order
  feed_config.dig(:selectors, :items, :order)&.to_sym
end
json?() click to toggle source
# File lib/html2rss/config.rb, line 52
def json?
  channel_config.fetch :json, false
end
language() click to toggle source
# File lib/html2rss/config.rb, line 35
def language
  channel_config.fetch :language, 'en'
end
selector(name) click to toggle source
# File lib/html2rss/config.rb, line 79
def selector(name)
  feed_config.dig(:selectors, name, :selector)
end
time_zone() click to toggle source
# File lib/html2rss/config.rb, line 48
def time_zone
  channel_config.fetch :time_zone, 'UTC'
end
title() click to toggle source
# File lib/html2rss/config.rb, line 22
def title
  channel_config.fetch(:title) { generated_title }
end
ttl() click to toggle source
# File lib/html2rss/config.rb, line 18
def ttl
  channel_config.fetch :ttl, 360
end
url() click to toggle source
# File lib/html2rss/config.rb, line 43
def url
  channel_config.dig :url
end
Also aliased as: link