1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#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
|