lib/hyperstack/imports.rb in hyperstack-config-1.0.alpha1.8 vs lib/hyperstack/imports.rb in hyperstack-config-1.0.0.pre.alpha1
- old
+ new
@@ -1,40 +1,20 @@
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)
- return if imported? value
+ return if import_list.detect { |current_value, *_rest| value == current_value }
new_element = [
value, cancelled, !client_only, !server_only, (tree ? :tree : :gem), js_import
]
import_list.send(at_head ? :unshift : :push, new_element)
end
- def imported?(value)
- import_list.detect { |current_value, *| value == current_value }
- end
-
alias imports import
def import_tree(value, cancelled: nil, client_only: nil, server_only: nil)
import(value, cancelled: cancelled, client_only: client_only, server_only: server_only, tree: true)
end
@@ -62,67 +42,49 @@
cancel_webpack_imports
import client_only_manifest.split("/").last, client_only: true, at_head: true if client_only_manifest
import client_and_server_manifest.split("/").last, at_head: true if client_and_server_manifest
end
- 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
- 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
- (add_opal(sys) + import_list.collect do |value, cancelled, render_on_server, render_on_client, kind|
+ 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)}"
- log_import " #{r}"
+ puts " #{r}"
"puts \"#{r}\"; #{r}"
else
generate_directive(:require, value, file, render_on_server, render_on_client)
end
- end + add_inflections(sys)).compact.join("\n")
+ end.compact.join("\n")
end
def generate_directive(directive, to, file, render_on_server, render_on_client)
gem_path = File.expand_path('../', file).split('/')
comp_path = Rails.root.join('app', 'hyperstack', to).to_s.split('/')
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)}"
- log_import " #{r}"
+ puts " #{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+'/'
Dir.glob(Rails.root.join('app', path, '**', '*')).sort.collect do |fname|
fname = fname.gsub(/^#{base_name}/, '')
fname = fname.gsub(/\.erb$/, '')
- if fname =~ /(\.js$)|(\.rb$)|(\.jsx$)/
- fname = fname.gsub(/(\.js$)|(\.rb$)|(\.jsx$)/, '')
+ if fname =~ /(\.js$)|(\.rb$)/
+ fname = fname.gsub(/(\.js$)|(\.rb$)/, '')
r = "require '#{fname}' #{client_guard(render_on_server, render_on_client)}"
- log_import " #{r}"
+ puts " #{r}"
"puts \"#{r}\"; #{r}"
end
end.compact.join("\n")
end