module Erlang
Public Class Methods
binary_to_term(buffer, etf: false)
click to toggle source
# File lib/erlang/etf.rb, line 373 def self.binary_to_term(buffer, etf: false) buffer = ::StringIO.new(Erlang::ETF::Term.binary_encoding(buffer)) if buffer.respond_to?(:force_encoding) return Erlang::ETF.binary_to_term(buffer, etf) end
etf(term)
click to toggle source
# File lib/erlang/etf.rb, line 330 def self.etf(term) return term.to_erlang_etf if term.respond_to?(:to_erlang_etf) return term if term.kind_of?(Erlang::ETF::Term) term = Erlang.from(term) return term.to_erlang_etf if term.respond_to?(:to_erlang_etf) type = external_type(term) constructor = Erlang::ETF::TYPE[type] raise NotImplementedError, "unsupported type #{type.inspect}" if constructor.nil? return term if term.kind_of?(constructor) return constructor[term] end
external_type(term)
click to toggle source
# File lib/erlang/etf.rb, line 342 def self.external_type(term) return term.erlang_external_type if term.respond_to?(:erlang_external_type) term = Erlang.from(term) return :atom if Erlang::ETF.is_atom(term) return :atom_utf8 if Erlang::ETF.is_atom_utf8(term) return :binary if Erlang::ETF.is_binary(term) return :bit_binary if Erlang::ETF.is_bit_binary(term) return :export if Erlang::ETF.is_export(term) return :float if Erlang::ETF.is_float(term) return :fun if Erlang::ETF.is_fun(term) return :integer if Erlang::ETF.is_integer(term) return :large_big if Erlang::ETF.is_large_big(term) return :large_tuple if Erlang::ETF.is_large_tuple(term) return :list if Erlang::ETF.is_list(term) return :map if Erlang::ETF.is_map(term) return :new_float if Erlang::ETF.is_new_float(term) return :new_fun if Erlang::ETF.is_new_fun(term) return :new_reference if Erlang::ETF.is_new_reference(term) return :nil if Erlang::ETF.is_nil(term) return :pid if Erlang::ETF.is_pid(term) return :port if Erlang::ETF.is_port(term) return :reference if Erlang::ETF.is_reference(term) return :small_atom if Erlang::ETF.is_small_atom(term) return :small_atom_utf8 if Erlang::ETF.is_small_atom_utf8(term) return :small_big if Erlang::ETF.is_small_big(term) return :small_integer if Erlang::ETF.is_small_integer(term) return :small_tuple if Erlang::ETF.is_small_tuple(term) return :string if Erlang::ETF.is_string(term) raise NotImplementedError end
term_to_binary(term, buffer: ::String.new, compressed: false)
click to toggle source
# File lib/erlang/etf.rb, line 378 def self.term_to_binary(term, buffer: ::String.new, compressed: false) term = Erlang.etf(term) buffer = Erlang::ETF::Term.binary_encoding(buffer) return Erlang::ETF.term_to_binary(term, buffer, compressed) end