Sha256: 46fcdf85215deac83dc067b2649225b9196e04ceba93bae4c4592469254ace39

Contents?: true

Size: 1.6 KB

Versions: 3

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Html2rss
  module AttributePostProcessors
    ##
    # Imagine this HTML:
    #    <h1>Foo bar and boo<h1>
    #
    # YAML usage example:
    #    selectors:
    #      title:
    #        selector: h1
    #        post_process:
    #          name: gsub
    #          pattern: boo
    #          replacement: baz
    #
    # Would return:
    #    'Foo bar and baz'
    #
    # `pattern` can be a Regexp or a String. If it is a String, it will remove
    # one pair of surrounding slashes ('/') to keep backwards compatibility
    # and then parse it to build a Regexp.
    #
    # `replacement` can be a String or a Hash.
    #
    # See the doc on [String#gsub](https://ruby-doc.org/core/String.html#method-i-gsub) for more info.
    class Gsub < Base
      def self.validate_args!(value, context)
        assert_type value, String, :value, context:
        expect_options(%i[replacement pattern], context)
        assert_type context.dig(:options, :replacement), [String, Hash], :replacement, context:
      end

      ##
      # @param value [String]
      # @param context [Item::Context]
      def initialize(value, context)
        super

        options = context[:options]

        @replacement = options[:replacement]
        @pattern = options[:pattern]
      end

      ##
      # @return [String]
      def get
        value.to_s.gsub(pattern, replacement)
      end

      private

      attr_accessor :replacement

      ##
      # @return [Regexp]
      def pattern
        @pattern.is_a?(String) ? Utils.build_regexp_from_string(@pattern) : @pattern
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
html2rss-0.15.0 lib/html2rss/attribute_post_processors/gsub.rb
html2rss-0.14.0 lib/html2rss/attribute_post_processors/gsub.rb
html2rss-0.13.0 lib/html2rss/attribute_post_processors/gsub.rb