class Metanol::Meta::Base
Constants
- ERR_FILTERS_WRONG_TYPE
- ERR_FILTERS_WRONG_VALUE_TYPE
- SUPPORTED_FILTERS
Attributes
name[R]
value[W]
Public Class Methods
filter_html(text)
click to toggle source
# File lib/metanol/meta/base.rb, line 40 def self.filter_html(text) text = text.gsub(%r{<br/?>}, ' ') text.gsub(%r{</?\w+/?>}, '') end
filter_overspaces(text)
click to toggle source
# File lib/metanol/meta/base.rb, line 45 def self.filter_overspaces(text) text.gsub(/\ {2,}/, ' ') end
filter_whitespaces(text)
click to toggle source
# File lib/metanol/meta/base.rb, line 49 def self.filter_whitespaces(text) text.gsub(/\s/, ' ') end
new(name, value, filters = [])
click to toggle source
# File lib/metanol/meta/base.rb, line 14 def initialize(name, value, filters = []) @name = name.to_sym raise(NameError.new("The meta tag '#{@name}' isn't supported.", @name)) unless valid?(@name) @value = value self.filters = filters end
Public Instance Methods
filters=(value)
click to toggle source
# File lib/metanol/meta/base.rb, line 22 def filters=(value) @filters = validate_filters(value) end
render()
click to toggle source
# File lib/metanol/meta/base.rb, line 26 def render result = value return '' if result.blank? "<meta #{attr_name}=\"#{name}\" #{attr_value}=\"#{result}\" />" end
value()
click to toggle source
# File lib/metanol/meta/base.rb, line 33 def value result = @value return result if @filters.blank? filter_overspaces(filter_whitespaces(filter_html_tags(result))) end
Private Instance Methods
attr_name()
click to toggle source
# File lib/metanol/meta/base.rb, line 59 def attr_name 'name' end
attr_value()
click to toggle source
# File lib/metanol/meta/base.rb, line 63 def attr_value 'content' end
filter_overspaces(result)
click to toggle source
# File lib/metanol/meta/base.rb, line 95 def filter_overspaces(result) (@filters & %i[overspaces clean]).presence ? self.class.filter_overspaces(result) : result end
filter_whitespaces(result)
click to toggle source
# File lib/metanol/meta/base.rb, line 91 def filter_whitespaces(result) (@filters & %i[whitespaces clean]).presence ? self.class.filter_whitespaces(result) : result end
valid?(_name)
click to toggle source
# File lib/metanol/meta/base.rb, line 55 def valid?(_name) true end
validate_filter(filter_value)
click to toggle source
# File lib/metanol/meta/base.rb, line 81 def validate_filter(filter_value) return filter_value if SUPPORTED_FILTERS.include? filter_value raise(StandardError, "Only #{SUPPORTED_FILTERS.join(', ')} filters are supported.") end
validate_filters(filters = [])
click to toggle source
# File lib/metanol/meta/base.rb, line 67 def validate_filters(filters = []) result = [] raise StandardError, ERR_FILTERS_WRONG_TYPE unless filters.is_a?(Array) begin filters.map(&:to_sym).each do |filter_value| result << validate_filter(filter_value) end rescue NoMethodError raise StandardError, ERR_FILTERS_WRONG_VALUE_TYPE end result end