Class: Clapton::Engine

Inherits:
Rails::Engine
  • Object
show all
Defined in:
lib/clapton/engine.rb

Instance Method Summary collapse

Instance Method Details

#compile_componentsObject



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
# File 'lib/clapton/engine.rb', line 39

def compile_components
  puts "Clapton: Compiling components"
  
  start_time = Time.now
  Dir.glob(Rails.root.join("app", "components", "**", "*.rb")).each do |file|
    code = File.read(file)
    js = ""
    js += "import { Clapton } from 'components';"
    js += "\n"
    js += "import { c } from 'c';"
    js += "\n"
    Dir.glob(Rails.root.join("app", "components", "**", "*.rb")).each do |f|
      if File.basename(file, ".rb") != File.basename(f, ".rb")
        js += "import { #{File.basename(f, ".rb").camelize} } from '#{File.basename(f, ".rb").camelize}';"
        js += "\n"
      end
    end
    js += Ruby2JS.convert(code, preset: true)
    js += "\n"
    js += "export { #{File.basename(file, ".rb").camelize} };"
    js += "\n"
    File.write(Rails.root.join("public", "clapton", "#{File.basename(file, ".rb").camelize}.js"), js)
  end
  end_time = Time.now
  puts "Clapton: Component compilation took #{end_time - start_time} seconds"
end