lib/hyperstack/imports.rb in hyperstack-config-1.0.alpha1.5 vs lib/hyperstack/imports.rb in hyperstack-config-1.0.alpha1.6
- old
+ new
@@ -1,8 +1,24 @@
module Hyperstack
class << self
+
+ # redefine this method ito avoid logging imports.
+ # typically in rspec - for example:
+ #
+ # if config.formatters.empty?
+ # module Hyperstack
+ # def self.log_import(s)
+ # # turn off import logging
+ # end
+ # end
+ # end
+
+ def log_import(s)
+ puts s
+ end
+
def import_list
@import_list ||= []
end
def import(value, gem: nil, cancelled: nil, client_only: nil, server_only: nil, tree: nil, js_import: nil, at_head: nil)
@@ -50,28 +66,36 @@
def add_inflections(sys)
return [] unless sys
["puts \"require 'config/initializers/inflections.rb'\""] +
File.open(Rails.root.join('config', 'initializers', 'inflections.rb'), &:readlines).tap do
- puts " require 'config/initializers/inflections.rb'"
+ log_import " require 'config/initializers/inflections.rb'"
end
rescue Errno::ENOENT
[]
end
+ def add_opal(sys)
+ return [] unless sys
+
+ log_import " require 'opal'"
+ ["require 'opal'; puts \"require 'opal'\""]
+ end
+
def generate_requires(mode, sys, file)
handle_webpack
- (import_list.collect do |value, cancelled, render_on_server, render_on_client, kind|
+ (add_opal(sys) + import_list.collect do |value, cancelled, render_on_server, render_on_client, kind|
next if cancelled
+ next if value == 'opal'
next if (sys && kind == :tree) || (!sys && kind != :tree)
next if mode == :client && !render_on_client
next if mode == :server && !render_on_server
if kind == :tree
generate_require_tree(value, render_on_server, render_on_client)
elsif kind == :gem
r = "require '#{value}' #{client_guard(render_on_server, render_on_client)}"
- puts " #{r}"
+ log_import " #{r}"
"puts \"#{r}\"; #{r}"
else
generate_directive(:require, value, file, render_on_server, render_on_client)
end
end + add_inflections(sys)).compact.join("\n")
@@ -83,11 +107,11 @@
while comp_path.first == gem_path.first do
gem_path.shift
comp_path.shift
end
r = "#{directive} '#{(['.'] + ['..'] * gem_path.length + comp_path).join('/')}' #{client_guard(render_on_server, render_on_client)}"
- puts " #{r}"
+ log_import " #{r}"
"puts \"#{r}\"; #{r}"
end
def generate_require_tree(path, render_on_server, render_on_client)
base_name = Rails.root.join('app', path).to_s+'/'
@@ -95,10 +119,10 @@
fname = fname.gsub(/^#{base_name}/, '')
fname = fname.gsub(/\.erb$/, '')
if fname =~ /(\.js$)|(\.rb$)|(\.jsx$)/
fname = fname.gsub(/(\.js$)|(\.rb$)|(\.jsx$)/, '')
r = "require '#{fname}' #{client_guard(render_on_server, render_on_client)}"
- puts " #{r}"
+ log_import " #{r}"
"puts \"#{r}\"; #{r}"
end
end.compact.join("\n")
end