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
|
# File 'lib/wedge/opal.rb', line 20
def compile
@result = original_compile
if defined? Wedge
logical_path = self.file
classes = Wedge.config.component_class
comp_class = classes["#{Wedge.config.app_dir}/#{logical_path}".gsub(/\//, '__')] || classes[logical_path.gsub(/\//, '__')]
if logical_path == 'wedge'
compiled_data = Base64.encode64 Wedge.config.client_data.to_json
@result << Opal.original_compile("require '#{self.file}'; Wedge.config.data = HashObject.new(Wedge.config.data.to_h.merge JSON.parse(Base64.decode64('#{compiled_data}')))")
Wedge.config.plugins.each do |path|
@result << Builder.build(path).to_s
end
elsif comp_class
comp_class.config.on_compile.each { |blk| comp_class.instance_exec(true, &blk) }
comp_name = comp_class.config.name
compiled_data = Base64.encode64 comp_class.config.client_data.to_json
js = ''
js << "require '#{self.file}'; Wedge.config.component_class[:#{comp_name}].config.data = HashObject.new(Wedge.config.component_class[:#{comp_name}].config.data.to_h.merge JSON.parse(Base64.decode64('#{compiled_data}')))"
js << "; Wedge.plugin(:#{comp_name.to_s.gsub(/_plugin$/, '')})" if comp_class.config.is_plugin
@result << Opal.original_compile(js)
if compile_str = comp_class.config.compile_str
@result << compile_str
end
load_requires logical_path
end
end
@result
end
|