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
|
# File 'lib/fredit/erb.rb', line 6
def compile(template)
if template.source.encoding_aware?
template_source = template.source.dup.force_encoding("BINARY")
erb = template_source.gsub(ENCODING_TAG, '')
encoding = $2
erb.force_encoding valid_encoding(template.source.dup, encoding)
erb.encode!
else
erb = template.source.dup
end
if Fredit.template_editable?(template)
source_file = Fredit.rel_path template.identifier
edit_link = "<div style='color:red'>#{Fredit.link(source_file)}</div> "
if erb =~ /^\s*<!DOCTYPE/ && erb =~ /<body[^>]*>/
erb = erb.sub(/<body[^>]*>/, '\&' + edit_link)
else
erb = edit_link + erb
end
end
self.class.erb_implementation.new(
erb,
:trim => (self.class.erb_trim_mode == "-")
).src
end
|