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