Sha256: ce0d45224e18b849a94337d3c463da2854b3f80dcb5caa6b9334588037eff766
Contents?: true
Size: 1.61 KB
Versions: 2
Compression:
Stored size: 1.61 KB
Contents
require 'sanitize' module Html2rss module AttributePostProcessors ## Returns a formatted String according to the string pattern. # # If +self+ is used, the selectors extracted value will be used. # It uses [Kernel#format](https://ruby-doc.org/core/Kernel.html#method-i-format) # # Imagine this HTML: # <li> # <h1>Product</h1> # <span class="price">23,42€</span> # </li> # # YAML usage example: # # selectors: # items: # selector: 'li' # price: # selector: '.price' # title: # selector: h1 # post_process: # name: template # string: '%{self} (%{price})' # # Would return: # 'Product (23,42€)' class Template def initialize(value, env) @value = value @options = env[:options] @item = env[:item] @string = @options[:string] end ## # @return [String] def get return format_string_with_methods if @options[:methods] names = string.scan(/%[<|{](\w*)[>|}]/) names.flatten! names.compact! names.map!(&:to_sym) format(string, names.map { |name| [name, item_value(name)] }.to_h) end private attr_reader :string def methods @methods ||= @options[:methods].map(&method(:item_value)) end def format_string_with_methods string % methods end def item_value(method_name) method_name.to_sym == :self ? @value.to_s : @item.public_send(method_name).to_s end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
html2rss-0.9.0 | lib/html2rss/attribute_post_processors/template.rb |
html2rss-0.8.2 | lib/html2rss/attribute_post_processors/template.rb |