class ImproveTypography::Base
Public Class Methods
call(*args)
click to toggle source
# File lib/improve_typography/base.rb, line 5 def self.call(*args) new(*args).call end
new(str, options = {})
click to toggle source
Calls superclass method
# File lib/improve_typography/base.rb, line 9 def initialize(str, options = {}) super(str, options) end
Public Instance Methods
call()
click to toggle source
# File lib/improve_typography/base.rb, line 13 def call return str unless processor_classes.count > 0 doc.xpath('.//text()').each do |node| processor_classes.each do |processor| node.content = processor.call(node.content, options) end end CGI.unescapeHTML( doc.to_html.strip[5..-7] ) end
Private Instance Methods
all_processor_classes()
click to toggle source
# File lib/improve_typography/base.rb, line 43 def all_processor_classes @all_processor_classes ||= ObjectSpace.each_object(Class).select { |klass| klass < Processor } end
doc()
click to toggle source
# File lib/improve_typography/base.rb, line 29 def doc @doc ||= Nokogiri::HTML::DocumentFragment.parse("<div>#{str}</div>") end
locale()
click to toggle source
# File lib/improve_typography/base.rb, line 56 def locale options.fetch(:locale, I18n.locale) end
processor_classes()
click to toggle source
# File lib/improve_typography/base.rb, line 37 def processor_classes @processor_classes ||= processors.map do |klass| processor_for_locale(klass) end end
processor_for_locale(klass)
click to toggle source
# File lib/improve_typography/base.rb, line 47 def processor_for_locale(klass) @processor_for_locale ||= {} @processor_for_locale[klass] ||= begin name = klass.to_s.split('::').last locale_specific_klass = "ImproveTypography::Processors::#{locale.to_s.upcase}::#{name}" all_processor_classes.detect { |cls| cls.to_s == locale_specific_klass } || klass end end
processors()
click to toggle source
# File lib/improve_typography/base.rb, line 33 def processors options.fetch(:processors, ImproveTypography.configuration.processors) end