Class: Metanol::Meta::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/metanol/meta/base.rb

Direct Known Subclasses

Main, MicroData, OpenGraph, Webmaster

Constant Summary collapse

SUPPORTED_FILTERS =
[:html, :overspaces, :whitespaces, :clean]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, value, filters = []) ⇒ Base

Returns a new instance of Base.


8
9
10
11
12
13
# File 'lib/metanol/meta/base.rb', line 8

def initialize(name, value, filters=[])
  raise NameError.new "The meta tag '#{name}' isn't supported.", name unless valid?(name)
  @name = name
  @value = value
  self.filters = filters
end

Instance Attribute Details

#valueObject


28
29
30
31
32
33
34
35
# File 'lib/metanol/meta/base.rb', line 28

def value
  result = @value
  return result unless filters?
  result = self.class.filter_html(result) if @filters.include?(:html) || @filters.include?(:clean)
  result = self.class.filter_whitespaces(result) if @filters.include?(:whitespaces) || @filters.include?(:clean)
  result = self.class.filter_overspaces(result) if @filters.include?(:overspaces) || @filters.include?(:clean)
  result
end

Class Method Details

.filter_html(text) ⇒ Object


37
38
39
40
# File 'lib/metanol/meta/base.rb', line 37

def self.filter_html(text)
  text = text.gsub(/\<br\/?\>/, ' ')
  text.gsub(/\<\/?\w+\/?\>/, '')
end

.filter_overspaces(text) ⇒ Object


42
43
44
# File 'lib/metanol/meta/base.rb', line 42

def self.filter_overspaces(text)
  text.gsub(/[\ ]{2,}/, ' ')
end

.filter_whitespaces(text) ⇒ Object


46
47
48
# File 'lib/metanol/meta/base.rb', line 46

def self.filter_whitespaces(text)
  text.gsub(/\s/, ' ')
end

Instance Method Details

#filters=(value) ⇒ Object


15
16
17
# File 'lib/metanol/meta/base.rb', line 15

def filters=(value)
  @filters = validate_filters(value)
end

#nameObject


24
25
26
# File 'lib/metanol/meta/base.rb', line 24

def name
  @name
end

#renderObject


19
20
21
22
# File 'lib/metanol/meta/base.rb', line 19

def render
  result = self.value
  !result.blank? ? "<meta #{self.attr_name}=\"#{self.name}\" #{self.attr_value}=\"#{result}\" />" : ''
end