Class: ComponentFiles
Overview
Takes in the path to a component and gets all other components required from this one
Instance Method Summary collapse
- #add_asset_folder(component_name) ⇒ Object
-
#asset_folders ⇒ Object
Returns every asset folder that is included from this component.
- #component(name) ⇒ Object
- #component_paths ⇒ Object
- #components ⇒ Object
- #css_files ⇒ Object
-
#initialize(component_name, component_paths, main_component = false) ⇒ ComponentFiles
constructor
A new instance of ComponentFiles.
- #javascript_files(opal_files) ⇒ Object
- #load_child_components ⇒ Object
- #path_to_component(name = nil) ⇒ Object
Constructor Details
#initialize(component_name, component_paths, main_component = false) ⇒ ComponentFiles
Returns a new instance of ComponentFiles.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/volt/server/rack/component_files.rb', line 7 def initialize(component_name, component_paths, main_component=false) @component_name = component_name @component_paths = component_paths @asset_folders = [] @components = [component_name] @main_component = main_component if @main_component # puts "ADD VOLT" # Add in volt's JS files first component('volt') end load_child_components add_asset_folder(component_name) end |
Instance Method Details
#add_asset_folder(component_name) ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/volt/server/rack/component_files.rb', line 42 def add_asset_folder(component_name) path = path_to_component(component_name) asset_folder = File.join(path, 'assets') if File.directory?(asset_folder) @asset_folders << asset_folder end end |
#asset_folders ⇒ Object
Returns every asset folder that is included from this component. This means this components assets folder and any in the dependency chain.
76 77 78 79 80 81 82 83 |
# File 'lib/volt/server/rack/component_files.rb', line 76 def asset_folders files = [] @asset_folders.each do |asset_folder| files << yield(asset_folder) end return files.flatten end |
#component(name) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/volt/server/rack/component_files.rb', line 28 def component(name) # Load any sub-requires child_files = ComponentFiles.new(name, @component_paths) new_components = child_files.components # remove any we already have new_components = new_components - @components new_components.each {|nc| add_asset_folder(nc) } @components += new_components return @components end |
#component_paths ⇒ Object
55 56 57 |
# File 'lib/volt/server/rack/component_files.rb', line 55 def component_paths @components.map {|c| [path_to_component(c), c] } end |
#components ⇒ Object
24 25 26 |
# File 'lib/volt/server/rack/component_files.rb', line 24 def components @components end |
#css_files ⇒ Object
104 105 106 107 108 |
# File 'lib/volt/server/rack/component_files.rb', line 104 def css_files asset_folders do |asset_folder| Dir["#{asset_folder}/**/*.{css,scss}"].map {|path| '/assets' + path[asset_folder.size..-1].gsub(/[.]scss$/, '') } end end |
#javascript_files(opal_files) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/volt/server/rack/component_files.rb', line 86 def javascript_files(opal_files) javascript_files = asset_folders do |asset_folder| Dir["#{asset_folder}/**/*.js"].map {|path| '/assets' + path[asset_folder.size..-1] } end opal_js_files = [] if Volt.source_maps? opal_js_files += opal_files.environment['volt/page/page'].to_a.map {|v| '/assets/' + v.logical_path + '?body=1' } else opal_js_files << '/assets/volt/page/page.js' end opal_js_files << '/components/home.js' javascript_files.insert(2, *opal_js_files) return javascript_files end |
#load_child_components ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/volt/server/rack/component_files.rb', line 59 def load_child_components path = path_to_component if path dependencies_file = File.join(path_to_component, "config/dependencies.rb") else raise "Unable to find component #{@component_name.inspect}" end if File.exists?(dependencies_file) # Run the dependencies file in this ComponentFiles context code = File.read(dependencies_file) instance_eval(code) end end |
#path_to_component(name = nil) ⇒ Object
51 52 53 |
# File 'lib/volt/server/rack/component_files.rb', line 51 def path_to_component(name=nil) @component_paths.component_path(name || @component_name) end |