class Kubes::Compiler::Dsl::Core::Parser

Public Class Methods

new(path) click to toggle source
# File lib/kubes/compiler/dsl/core/parser.rb, line 3
def initialize(path)
  @path = path
end

Public Instance Methods

parse() click to toggle source
# File lib/kubes/compiler/dsl/core/parser.rb, line 7
def parse
  contents = IO.read(@path)
  lines = parse_contents(contents)

  # First use a Hash structure so that overlay env files will override
  # the base param file.
  data = {}
  lines.each do |line|
    key,value = line.strip.split("=").map {|x| x.strip}
    value = remove_surrounding_quotes(value)
    data[key] = value
  end
  data
end
parse_contents(contents) click to toggle source
# File lib/kubes/compiler/dsl/core/parser.rb, line 22
def parse_contents(contents)
  lines = contents.split("\n")
  # remove comment at the end of the line
  lines.map! { |l| l.sub(/#.*/,'').strip }
  # filter out commented lines
  lines = lines.reject { |l| l =~ /(^|\s)#/i }
  # filter out empty lines
  lines = lines.reject { |l| l.strip.empty? }
  lines
end
remove_surrounding_quotes(s) click to toggle source
# File lib/kubes/compiler/dsl/core/parser.rb, line 33
def remove_surrounding_quotes(s)
  if s =~ /^"/ && s =~ /"$/
    s.sub(/^["]/, '').gsub(/["]$/,'') # remove surrounding double quotes
  elsif s =~ /^'/ && s =~ /'$/
    s.sub(/^[']/, '').gsub(/[']$/,'') # remove surrounding single quotes
  else
    s
  end
end