class Pessimize::Gem

Attributes

after_name_index[RW]
name[RW]
original_tokens[RW]
token_before_version[RW]
version[RW]
version_index[RW]

Public Class Methods

new(gem_tokens) click to toggle source
# File lib/pessimize/gem.rb, line 6
def initialize(gem_tokens)
  self.original_tokens = gem_tokens
  parse_name
  parse_version
end

Public Instance Methods

to_s() click to toggle source
# File lib/pessimize/gem.rb, line 22
def to_s
  tokens.inject("") { |a, t| a << t[2] }
end
tokens() click to toggle source
# File lib/pessimize/gem.rb, line 12
def tokens
  compiled_tokens = original_tokens.dup
  if version_index
    compiled_tokens[version_index][2] = version
  elsif version
    compiled_tokens[after_name_index..0] = version_tokens
  end
  compiled_tokens
end

Protected Instance Methods

parse_name() click to toggle source
# File lib/pessimize/gem.rb, line 42
def parse_name
  name_index = original_tokens.index { |t| t[1] == :on_tstring_content }
  self.name = original_tokens[name_index][2]
  self.after_name_index = name_index + 2
end
parse_version() click to toggle source
# File lib/pessimize/gem.rb, line 48
def parse_version
  token_before_version = original_tokens.index { |t| t[1] == :on_comma }
  if token_before_version
    remaining_tokens = original_tokens[(token_before_version + 1)..-1]
    while [:on_sp, :on_tstring_beg, :on_ignored_nl].include? remaining_tokens.first[1]
      remaining_tokens.shift
      token_before_version += 1
    end
    if remaining_tokens.first[1] == :on_tstring_content
      self.version_index = token_before_version + 1
      self.version = remaining_tokens.first[2]
    end
  end
end
version_tokens() click to toggle source
# File lib/pessimize/gem.rb, line 32
def version_tokens
  [
    [[], :on_comma, ","],
    [[], :on_sp, " "],
    [[], :on_tstring_beg, "\""],
    [[], :on_tstring_content, version],
    [[], :on_tstring_end, "\""]
  ]
end