Class: WebResourceBundler::Filters::BundleFilter::ResourcePackager
- Inherits:
-
Object
- Object
- WebResourceBundler::Filters::BundleFilter::ResourcePackager
- Defined in:
- lib/web_resource_bundler/filters/bundle_filter/resource_packager.rb
Constant Summary collapse
- IMPORT_PTR =
/\@import ['|"](.*?)['|"];/
Instance Method Summary collapse
-
#bundle_files(files) ⇒ Object
recursively iterates through all files and imported files.
-
#extract_imported_files!(content, base_file_path) ⇒ Object
finds all imported files in css.
-
#initialize(settings, file_manager) ⇒ ResourcePackager
constructor
A new instance of ResourcePackager.
Constructor Details
#initialize(settings, file_manager) ⇒ ResourcePackager
Returns a new instance of ResourcePackager.
5 6 7 8 |
# File 'lib/web_resource_bundler/filters/bundle_filter/resource_packager.rb', line 5 def initialize(settings, file_manager) @settings = settings @file_manager = file_manager end |
Instance Method Details
#bundle_files(files) ⇒ Object
recursively iterates through all files and imported files
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/web_resource_bundler/filters/bundle_filter/resource_packager.rb', line 11 def bundle_files(files) output = "" files.select{|f| not f.content.empty? }.each do |file| path = file.path content = file.content output << "/* --------- #{path} --------- */\n" if file.types.first[:ext] == 'css' imported_files = extract_imported_files!(content, path) #getting imported (@import ...) files contents imported_resource_files = [] imported_files.each do |imported_file| imported_resource_files << WebResourceBundler::ResourceFile.new_css_file(imported_file, @file_manager.get_content(imported_file)) end #bundling imported files output << bundle_files(imported_resource_files) unless imported_resource_files.empty? end #adding ';' symbol in case javascript developer forget to do this content << ';' if File.extname(path) == '.js' output << content output << "\n/* --------- END #{path} --------- */\n" end output end |
#extract_imported_files!(content, base_file_path) ⇒ Object
finds all imported files in css
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/web_resource_bundler/filters/bundle_filter/resource_packager.rb', line 36 def extract_imported_files!(content, base_file_path) imported_files = [] content.gsub!(IMPORT_PTR) do |result| imported_file = IMPORT_PTR.match(result)[1] if imported_file imported_files << File.join(File.dirname(base_file_path), imported_file) end result = "" end return imported_files end |