require 'opal' require 'opal-jquery' require 'opal-browser' require 'parser' require 'uglifier' Opal.append_path "app" def build_opal_browser(user_project_path) puts "###### browser path : #{`pwd`} ######" opal_browser = "#{user_project_path}/build/js/opal/opal_browser.js" File.binwrite opal_browser, Opal::Builder.build("../lib/atome/renderers/opal/opal_browser.rb").to_s uglified = Uglifier.new.compile(File.read(opal_browser)) File.open(opal_browser, "w") do |f| f.puts uglified end end def build_atome_kernel(user_project_path,gem_location) atome_kernel = "#{user_project_path}/build/js/atome/kernel.js" builder = Opal::Builder.new builder.append_paths("#{gem_location}/../lib/") File.binwrite atome_kernel, builder.build("#{gem_location}/../lib/atome.rb").to_s end def build_opal_parser(user_project_path) opal_parser = "#{user_project_path}/build/js/opal/opal_parser.js" File.binwrite opal_parser, Opal::Builder.build("../lib/atome/renderers/opal/opal_parser.rb").to_s uglified = Uglifier.new.compile(File.read(opal_parser)) File.open(opal_parser, "w") do |f| f.puts uglified end end def build_user_code(user_project_path) application = "#{user_project_path}/build/js/application.js" File.binwrite application, Opal::Builder.build("../vendor/assets/index.rb").to_s uglified = Uglifier.new.compile(File.read(application)) File.open(application, "w") do |f| f.puts uglified end end task :system_builder do user_project_path=ARGV[1] gem_location = File.join(File.dirname(__FILE__)) build_atome_kernel(user_project_path,gem_location) build_opal_browser(user_project_path) build_opal_parser(user_project_path) build_user_code(user_project_path) end task :build do # code_to_debug = File.read("./app/app.rb") # ############# start of the patch # class Element # def self.create(tag = 'div', opt = {}) # `jQuery('<'+tag+'/>',opt.$to_n())` # end # # def self.find(val) # puts val # end # end # # def box(params = {}) # # el = Element.new(:div) # el = Element.create(:div, { id: 'some_big_id', # class: 'some-class some-other-class', # title: 'now this div has a title!' }) # # el.text("kjh") # Element.find('#user_view').append(el) # el.css(:color, :red).css("box-shadow": "0px 0px 9px red") # .css(:width, 33).css(:height, 33).css(:position, "absolute").css(:left, "33px").css(:top, "33px") # .css('border-radius', '3px 6px 3px 6px') # # el.on(:click) do # el.css("background-color", "yellowgreen") # el.text(el.css("background-color")) # end # end # # ############# end of the patch # `ruby ./app/index.rb` # eval code_to_debug # build the python # html_file = File.read(html_page) # python_code = File.read(python_file) # html_file = html_file.gsub("#**python**#", python_code) # File.open("../view/index.html", "w") do |f| # f.puts html_file # end # now the ruby # File.binwrite application, Opal::Builder.build("./atome/lib/atome.rb").to_s # File.binwrite html_render_lib, Opal::Builder.build("./atome/lib/html_render_lib.rb").to_s # uncomment below for production # uglified = Uglifier.new().compile(File.read(application)) # File.open(application, "w") do |f| # f.puts uglified # end # # now we open the page # system("open", index) end task :default => :build opal_jquery = "./view/js/opal_jquery.js" opal_browser = "./view/js/opal_browser.js" opal_parser = "./view/js/opal_parser.js" task :server do Dir.chdir("app") do require "rack" # Thread.new do # sleep 2 # system("open", "http://127.0.0.1:9292") # end sh "rackup" end end task :jquery do File.binwrite opal_jquery, Opal::Builder.build("./opal/opal_jquery_libs.rb").to_s uglified = Uglifier.new.compile(File.read(opal_jquery)) File.open(opal_jquery, "w") do |f| f.puts uglified end end task :browser do File.binwrite opal_browser, Opal::Builder.build("./opal/opal_browser_libs.rb").to_s uglified = Uglifier.new.compile(File.read(opal_browser)) File.open(opal_browser, "w") do |f| f.puts uglified end end task :parser do File.binwrite opal_parser, Opal::Builder.build("./opal/opal_parser_libs.rb").to_s uglified = Uglifier.new.compile(File.read(opal_parser)) File.open(opal_parser, "w") do |f| f.puts uglified end end