class Denv::Parser

Constants

COMMENT_CHAR
DELIMITER
WHITE_SPACES

Public Class Methods

new(io, filename) click to toggle source
# File lib/denv.rb, line 81
def initialize(io, filename)
  @io = io
  @filename = filename
end

Public Instance Methods

parse() click to toggle source
# File lib/denv.rb, line 86
def parse
  env = {}

  @io.each_line.with_index do |line, i|
    line = line.chomp.lstrip
    if !line.empty? && !line.start_with?(COMMENT_CHAR)
      key, value = line.split(DELIMITER, 2)
      if key && value
        if key.match(WHITE_SPACES)
          raise InvalidKeyNameError.new(line, @filename, i + 1)
        else
          env[key] = value
        end
      else
        raise InvalidFormatError.new(line, @filename, i + 1)
      end
    end
  end

  env
end