Sha256: 8f8a02d975b58951c3a09e5809d8dc40eec0446b7ce46bb69e0791c6cea27ac3
Contents?: true
Size: 945 Bytes
Versions: 1
Compression:
Stored size: 945 Bytes
Contents
require 'renv' require 'delegate' module Renv class Data extend Forwardable def initialize(payload = '') @data = _parse(payload) end delegate [:[], :delete] => :@data def []=(key, value) _assert(key =~ /^[A-Z0-9_]+$/, 'Key must be uppercase letters, digits, and underscores') @data[key] = value end def dump result = [] @data.map { |k,v| "#{k}=#{v}\n" }.join end def load(payload) @data = @data.merge(_parse(payload)) self end private def _assert(condition, message) return if condition $stderr.puts message exit 1 end 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
renv-1.0.0 | lib/renv/data.rb |