Class: Html2rss::AttributePostProcessors::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/html2rss/attribute_post_processors/base.rb

Overview

All post processors must inherit from this base class and implement ‘self.validate_args!` and `#get`.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, context) ⇒ Base

Initializes the post processor

Parameters:

  • value (Object)

    the value to be processed

  • context (Item::Context)

    the context



51
52
53
54
55
56
57
58
59
# File 'lib/html2rss/attribute_post_processors/base.rb', line 51

def initialize(value, context)
  klass = self.class
  # TODO: get rid of Hash
  klass.assert_type(context, [Item::Context, Hash], 'context')
  klass.validate_args!(value, context)

  @value = value
  @context = context
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



61
62
63
# File 'lib/html2rss/attribute_post_processors/base.rb', line 61

def context
  @context
end

#valueObject (readonly)

Returns the value of attribute value.



61
62
63
# File 'lib/html2rss/attribute_post_processors/base.rb', line 61

def value
  @value
end

Class Method Details

.assert_type(value, types = [], name) ⇒ Object

Asserts that the value is of the expected type(s)

Parameters:

  • value (Object)

    the value to check

  • types (Array<Class>, Class) (defaults to: [])

    the expected type(s)

  • name (String)

    the name of the option being checked

Raises:

  • (InvalidType)

    if the value is not of the expected type(s)



30
31
32
33
34
35
36
37
# File 'lib/html2rss/attribute_post_processors/base.rb', line 30

def self.assert_type(value, types = [], name)
  types = [types] unless types.is_a?(Array)

  return if types.any? { |type| value.is_a?(type) }

  error_message_template = 'The type of `%s` must be %s, but is: %s'
  raise InvalidType, format(error_message_template, name, types.join(' or '), value.class), [], cause: nil
end

.expect_options(keys, context) ⇒ Object

Validates the presence of required options in the context

Parameters:

  • keys (Array<Symbol>)

    the keys to check for presence

  • context (Hash)

    the context containing options

Raises:



15
16
17
18
19
20
21
22
# File 'lib/html2rss/attribute_post_processors/base.rb', line 15

def self.expect_options(keys, context)
  keys.each do |key|
    unless (options = context[:options]).key?(key)
      raise MissingOption, "The `#{key}` option is missing in: #{options.inspect}", [],
            cause: nil
    end
  end
end

.validate_args!(_value, _context) ⇒ Object

This method validates the arguments passed to the post processor. Must be implemented by subclasses.

Raises:

  • (NotImplementedError)


43
44
45
# File 'lib/html2rss/attribute_post_processors/base.rb', line 43

def self.validate_args!(_value, _context)
  raise NotImplementedError, 'You must implement the `validate_args!` method in the post processor'
end

Instance Method Details

#getObject

Abstract method to be implemented by subclasses

Raises:

  • (NotImplementedError)

    if not implemented in subclass



66
67
68
# File 'lib/html2rss/attribute_post_processors/base.rb', line 66

def get
  raise NotImplementedError, 'You must implement the `get` method in the post processor'
end