class Pessimize::Gemfile::TokenCompiler

Attributes

offset[RW]
tokens[RW]

Public Class Methods

new(tokens) click to toggle source
# File lib/pessimize/gemfile.rb, line 49
def initialize(tokens)
  self.tokens = tokens.dup
  self.offset = 0
end

Public Instance Methods

compile_to_string(gems, gem_token_map) click to toggle source
# File lib/pessimize/gemfile.rb, line 54
def compile_to_string(gems, gem_token_map)
  gem_token_map.zip(gems).each do |(token_start, token_end), gem|
    insert_gem_into_tokens! gem, token_start, token_end
  end

  tokens.reduce("") { |a, e|
    a + e[2]
  }
end

Protected Instance Methods

insert_gem_into_tokens!(gem, token_start, token_end) click to toggle source
# File lib/pessimize/gemfile.rb, line 67
def insert_gem_into_tokens!(gem, token_start, token_end)
  self.tokens[(offset + token_start)..(offset + token_end)] = gem.tokens
  self.offset += gem.tokens.length - (token_end - token_start + 1)
end