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
|
# File 'lib/hyraft/compiler/renderer.rb', line 25
def render_with_layout(parsed, layout_content, data = {})
context = Context.new(data)
context.instance_eval(parsed[:ruby]) if parsed[:ruby]
metadata = parsed[:metadata].to_s
styles = parsed[:styles] || []
elevhyra = parsed[:elevhyra].to_s
html = parsed[:template].to_s
data.each do |k, v|
metadata = metadata.gsub(/:\[#{k}\]/, v.to_s)
html = html.gsub(/:\[#{k}\]/, v.to_s)
elevhyra = elevhyra.gsub(/:\[#{k}\]/, v.to_s)
end
styles_html = styles.map do |style|
if style.start_with?('http')
"<link rel='stylesheet' href='#{style}'>"
else
"<link rel='stylesheet' href='/#{style}'>"
end
end.join("\n")
js_html = ""
if elevhyra && !elevhyra.strip.empty?
js = Hyraft::Compiler::JavaScriptLibrary.get('elevhyra')
js_html += js if js
js_html += "<script>\neval(atob(\"#{Base64.strict_encode64(elevhyra)}\"));\n</script>"
end
result = layout_content.dup
result = result.gsub('<hyraft meta="tags">', metadata)
result = result.gsub('<hyraft styles="css">', styles_html)
result = result.gsub('<hyraft content="hyraft">', html)
result = result.gsub('<hyraft script="javascript">', js_html)
result = result.gsub('{{ content }}', html)
result = result.gsub('{{ styles }}', styles_html)
result = result.gsub('{{ script }}', js_html)
result = result.gsub('{{ metadata }}', metadata)
result = result.gsub('{{ title }}', parsed[:title] || '')
result
end
|