class Rails::Webpack::Processor
Public Class Methods
new(file, collections)
click to toggle source
# File lib/rails/webpack/processor.rb, line 2 def initialize(file, collections) @contents = File.read(file).lines.map(&:rstrip) @file = file @collections = collections @generated = [] @scope = [] @depth = 0 @indent = ' ' * 2 end
Public Instance Methods
flush()
click to toggle source
# File lib/rails/webpack/processor.rb, line 24 def flush File.write @file, @generated.join("\n") end
process(config_list)
click to toggle source
# File lib/rails/webpack/processor.rb, line 12 def process(config_list) @contents.each do |line| next if comments(line) next if blank_lines(line) @depth = line.match(/(^(#{@indent}){0,})/)[1].length / @indent.length @scope[@depth] = line.split(':').first.strip @fullname = @scope[0, @depth + 1].join('.') next if process_configs(config_list) @generated << line end end
Private Instance Methods
blank_lines(line)
click to toggle source
# File lib/rails/webpack/processor.rb, line 55 def blank_lines(line) return false unless line.match(/^\s*$/) @generated << line true end
comments(line)
click to toggle source
# File lib/rails/webpack/processor.rb, line 43 def comments(line) return false unless line.match(/^\s*#/) @generated << line true end
process_configs(config_list)
click to toggle source
# File lib/rails/webpack/processor.rb, line 29 def process_configs(config_list) config_list.each do |config| return true if process_line(config) end false end
process_line(config)
click to toggle source
# File lib/rails/webpack/processor.rb, line 36 def process_line(config) return false unless @fullname.start_with? config[:matcher] return true unless @depth == (config[:matcher].split('.').length - 1) replace(config) true end
replace(config)
click to toggle source
# File lib/rails/webpack/processor.rb, line 49 def replace(config) deps = @collections.yamlize(config[:category]) @generated << " #{config[:text]}:#{' []' if deps.blank?}" @generated << deps unless deps.blank? end