app/models/help_page.rb
#encoding: utf-8
class HelpPage
attr_accessor :slug, :content, :data
def initialize(slug)
@slug = slug
@data = {}.with_indifferent_access
end
def filename
"#{Rails.root}/app/views/help/#{slug}.textile"
end
def exists?
File.exists? filename
end
def load
self.content = File.read(filename)
self.data ||= {}
if self.content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
self.content = $' # cryptic name for $POSTMATCH, but since V2.2
self.data.merge! YAML.load($1)
end
# workaround for special chars
self.content = self.content.gsub('é','é')
self.content = self.content.gsub('è','è')
self.content = self.content.gsub('à','à')
self.content = self.content.gsub('ù','ù')
self.content = self.content.gsub('É','É')
self.content = self.content.gsub('È','È')
self.content = self.content.gsub('Ê','Ê')
self.content = self.content.gsub('À','À')
self.content = self.content.gsub('Ù','Ù')
self.content = self.content.gsub('â','â')
self.content = self.content.gsub('ê','ê')
self.content = self.content.gsub('ô','ô')
self.content = self.content.gsub('î','î')
self.content = self.content.gsub('û','û')
self.content = self.content.gsub('ë','ëc;')
self.content = self.content.gsub('ï','ï')
self.content = self.content.gsub('ç','ç')
self.content = self.content.gsub('oe','œ')
self.content = self.content.gsub('<<','«')
self.content = self.content.gsub('«','«')
self.content = self.content.gsub('>>','»')
self.content = self.content.gsub('»','»')
self.content = self.content.gsub('°','º')
self.content = self.content.gsub('’',"'")
self.content = self.content.gsub(' '," ")
end
def method_missing(method, *arguments)
if arguments.empty? and data.has_key?(method)
data[method]
else
super
end
end
def self.find(slug)
new(slug).tap do |page|
if page.exists?
page.load
else
raise ActiveRecord::RecordNotFound
end
end
end
end