class ErlangConfig::ErlTerm
Attributes
str[RW]
Public Class Methods
decode(str)
click to toggle source
# File lib/erlang_config/erlterm.rb, line 8 def self.decode(str) str.strip! term_open_str = str[/^(\[|\{|\"|\'|<<|#Ref|<)/,1] if term_open_str.nil? # integer,float, or, atom matches = /^(([-0-9\.]+)|([a-z][a-z0-9_]*))/.match(str) term = case when (matches[2] && str[/\./]) then str.to_f when matches[2] then str.to_i when matches[3] then str.to_sym end else term_close_str = ERL_CLOSE_STRS[term_open_str] re_ends_with_close_str = Regexp.new(Regexp.escape("#{term_close_str}")+"$") raise "Parse error, Invalid erlang term #{str}" unless re_ends_with_close_str.match(str) term = case term_open_str when '[' then ErlList.new(str) when '{' then ErlTuple.new(str) when '"' then ErlString.new(str) when "'" then ErlAtom.new(str) when "<<" then ErlBinary.new(str) when "#Ref" then ErlRef.new(str) when "<" then ErlPid.new(str) else raise "Parse error with #{term_open_str}" end end term end
new(str)
click to toggle source
# File lib/erlang_config/erlterm.rb, line 4 def initialize(str) @str = str end