class Renv::Data
Public Class Methods
new(payload = '')
click to toggle source
# File lib/renv/data.rb, line 8 def initialize(payload = '') @data = _parse(payload) end
Public Instance Methods
[]=(key, value)
click to toggle source
# File lib/renv/data.rb, line 14 def []=(key, value) _assert(key =~ /^[A-Z0-9_]+$/, 'Key must be uppercase letters, digits, and underscores') @data[key] = value end
dump()
click to toggle source
# File lib/renv/data.rb, line 19 def dump result = [] @data.map { |k,v| "#{k}=#{v}\n" }.join end
load(payload)
click to toggle source
# File lib/renv/data.rb, line 24 def load(payload) @data = @data.merge(_parse(payload)) self end
Private Instance Methods
_assert(condition, message)
click to toggle source
# File lib/renv/data.rb, line 31 def _assert(condition, message) return if condition $stderr.puts message exit 1 end
_parse(payload)
click to toggle source
# File lib/renv/data.rb, line 37 def _parse(payload) Hash.new.tap do |result| payload.strip.split(/[\n\r]+/).each do |line| next if line.strip.empty? || line =~ /^#/ _assert(line.strip =~ /^([^=]+)=(.*)$/, "Cannot parse '#{line}'") result[$1] = $2 end end end