class KuberKit::EnvFileReader::EnvFileParser

Constants

LINE

Parser is based on: github.com/bkeepers/dotenv/blob/master/lib/dotenv/parser.rb

Public Instance Methods

call(string) click to toggle source
# File lib/kuber_kit/env_file_reader/env_file_parser.rb, line 23
def call(string)
  hash = {}
  string.gsub(/\r\n?/, "\n").scan(LINE).each do |key, value|
    hash[key] = parse_value(value || "")
  end
  hash
end

Private Instance Methods

expand_newlines(value) click to toggle source
# File lib/kuber_kit/env_file_reader/env_file_parser.rb, line 48
def expand_newlines(value)
  value.gsub('\n', "\n").gsub('\r', "\r")
end
parse_value(value) click to toggle source
# File lib/kuber_kit/env_file_reader/env_file_parser.rb, line 33
def parse_value(value)
  # Remove surrounding quotes
  value = value.strip.sub(/\A(['"])(.*)\1\z/m, '\2')

  if Regexp.last_match(1) == '"'
    value = unescape_characters(expand_newlines(value))
  end

  value
end
unescape_characters(value) click to toggle source
# File lib/kuber_kit/env_file_reader/env_file_parser.rb, line 44
def unescape_characters(value)
  value.gsub(/\\([^$])/, '\1')
end