class LessReplacer

Constants

COLOR_PATTERN
LENGTH_PATTERN
VAR_PATTERN

Public Class Methods

new() click to toggle source
# File lib/lessFactor.rb, line 11
def initialize
  @vars = {}
  @literals = {}
  @literalcomments = {}
  @occurence = {}
end

Public Instance Methods

replace_vars(infile, outfile) click to toggle source
# File lib/lessFactor.rb, line 52
def replace_vars(infile, outfile)
  result = File.open(infile, "r").readlines.each.map { |l|
    r1 = l.gsub(LENGTH_PATTERN) do |m|
      vn =$2.downcase
      if  @literals[vn]
        name = @literals[vn].join("__")
        $1 + name +';'
      else
        m
      end
    end

    r1.gsub(COLOR_PATTERN) do |m|
      vn =$2.downcase
      if  @literals[vn]
        name = @literals[vn].join("__")
        $1 + name +';'
      else
        m
      end
    end
  }

  File.open(outfile, "w") do |f|
    f.puts(result.join())
  end
end
save_vars(file) click to toggle source
# File lib/lessFactor.rb, line 81
def save_vars(file)
  File.open(file, "w") do |f|
    @literals.sort { |a, b| a[1] <=> b[1] }.each { |value, name|
      the_name = name.first
      occurrences = @literalcomments[value] || []
      comment = @vars[the_name] || {c: " // todo: #{occurrences.count}: #{occurrences}"}
      f.printf "%-25s %-15s %s\n", "#{the_name}:", " #{value};", comment[:c]
    }
  end
end
scan_literals(file) click to toggle source
# File lib/lessFactor.rb, line 28
def scan_literals(file)
  line = 0
  File.open(file, "r").readlines.each do |l|

    line +=1

    l.match(LENGTH_PATTERN) do |m|
      value =$2.downcase
      unless @literals[value]
        (@literals[value] ||= []).push "@zz-size-" + "000#{@literals.keys.count}"[-3 .. -1]
      end
      (@literalcomments[value] ||= []).push line
    end

    l.match(COLOR_PATTERN) do |m|
      value =$2.downcase
      unless @literals[value]
        (@literals[value] ||= []).push "@zz-color-" + "000#{@literals.keys.count}"[-3 .. -1]
      end
      (@literalcomments[value] ||= []).push line
    end
  end
end
scan_vars(file) click to toggle source
# File lib/lessFactor.rb, line 18
def scan_vars(file)
  File.open(file, "r").readlines.each do |l|
    l.match(VAR_PATTERN) do |m|
      value =$2.downcase
      @vars[$1] = {v: value, c: $3}
      (@literals[value] ||= []).push $1
    end
  end
end