erlang-etf 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.editorconfig +20 -0
- data/.gitignore +10 -18
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +15 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile +10 -6
- data/LICENSE.txt +1 -1
- data/README.md +13 -13
- data/Rakefile +8 -6
- data/erlang-etf.gemspec +10 -10
- data/lib/erlang-etf.rb +1 -0
- data/lib/erlang/etf.rb +363 -30
- data/lib/erlang/etf/atom.rb +28 -48
- data/lib/erlang/etf/atom_utf8.rb +28 -48
- data/lib/erlang/etf/binary.rb +24 -23
- data/lib/erlang/etf/bit_binary.rb +35 -27
- data/lib/erlang/etf/compressed.rb +61 -35
- data/lib/erlang/etf/export.rb +44 -21
- data/lib/erlang/etf/float.rb +33 -29
- data/lib/erlang/etf/fun.rb +54 -32
- data/lib/erlang/etf/integer.rb +24 -12
- data/lib/erlang/etf/large_big.rb +31 -37
- data/lib/erlang/etf/large_tuple.rb +41 -30
- data/lib/erlang/etf/list.rb +55 -25
- data/lib/erlang/etf/map.rb +58 -28
- data/lib/erlang/etf/new_float.rb +25 -14
- data/lib/erlang/etf/new_fun.rb +70 -47
- data/lib/erlang/etf/new_reference.rb +51 -24
- data/lib/erlang/etf/nil.rb +21 -6
- data/lib/erlang/etf/pid.rb +48 -21
- data/lib/erlang/etf/port.rb +49 -13
- data/lib/erlang/etf/reference.rb +49 -13
- data/lib/erlang/etf/small_atom.rb +31 -27
- data/lib/erlang/etf/small_atom_utf8.rb +31 -27
- data/lib/erlang/etf/small_big.rb +30 -39
- data/lib/erlang/etf/small_integer.rb +27 -12
- data/lib/erlang/etf/small_tuple.rb +41 -30
- data/lib/erlang/etf/string.rb +23 -23
- data/lib/erlang/etf/term.rb +109 -70
- data/lib/erlang/etf/version.rb +1 -1
- metadata +33 -169
- data/.rspec +0 -2
- data/lib/erlang/etf/bert.rb +0 -74
- data/lib/erlang/etf/extensions.rb +0 -144
- data/lib/erlang/etf/extensions/array.rb +0 -27
- data/lib/erlang/etf/extensions/big_decimal.rb +0 -20
- data/lib/erlang/etf/extensions/erlang-export.rb +0 -24
- data/lib/erlang/etf/extensions/erlang-list.rb +0 -29
- data/lib/erlang/etf/extensions/erlang-map.rb +0 -26
- data/lib/erlang/etf/extensions/erlang-nil.rb +0 -20
- data/lib/erlang/etf/extensions/erlang-pid.rb +0 -20
- data/lib/erlang/etf/extensions/erlang-string.rb +0 -31
- data/lib/erlang/etf/extensions/erlang-tuple.rb +0 -29
- data/lib/erlang/etf/extensions/false_class.rb +0 -26
- data/lib/erlang/etf/extensions/float.rb +0 -18
- data/lib/erlang/etf/extensions/hash.rb +0 -30
- data/lib/erlang/etf/extensions/integer.rb +0 -46
- data/lib/erlang/etf/extensions/nil_class.rb +0 -27
- data/lib/erlang/etf/extensions/object.rb +0 -22
- data/lib/erlang/etf/extensions/regexp.rb +0 -32
- data/lib/erlang/etf/extensions/string.rb +0 -33
- data/lib/erlang/etf/extensions/symbol.rb +0 -43
- data/lib/erlang/etf/extensions/time.rb +0 -27
- data/lib/erlang/etf/extensions/true_class.rb +0 -26
- data/lib/erlang/etf/terms.rb +0 -132
- data/spec/erlang/etf/atom_spec.rb +0 -90
- data/spec/erlang/etf/atom_utf8_spec.rb +0 -90
- data/spec/erlang/etf/binary_spec.rb +0 -90
- data/spec/erlang/etf/bit_binary_spec.rb +0 -99
- data/spec/erlang/etf/compressed_spec.rb +0 -37
- data/spec/erlang/etf/export_spec.rb +0 -58
- data/spec/erlang/etf/extensions/array_spec.rb +0 -40
- data/spec/erlang/etf/extensions/big_decimal_spec.rb +0 -26
- data/spec/erlang/etf/extensions/erlang-export_spec.rb +0 -32
- data/spec/erlang/etf/extensions/erlang-list_spec.rb +0 -76
- data/spec/erlang/etf/extensions/erlang-map_spec.rb +0 -48
- data/spec/erlang/etf/extensions/erlang-nil_spec.rb +0 -24
- data/spec/erlang/etf/extensions/erlang-pid_spec.rb +0 -33
- data/spec/erlang/etf/extensions/erlang-string_spec.rb +0 -41
- data/spec/erlang/etf/extensions/erlang-tuple_spec.rb +0 -57
- data/spec/erlang/etf/extensions/false_class_spec.rb +0 -29
- data/spec/erlang/etf/extensions/float_spec.rb +0 -24
- data/spec/erlang/etf/extensions/hash_spec.rb +0 -90
- data/spec/erlang/etf/extensions/integer_spec.rb +0 -259
- data/spec/erlang/etf/extensions/nil_class_spec.rb +0 -29
- data/spec/erlang/etf/extensions/object_spec.rb +0 -30
- data/spec/erlang/etf/extensions/regexp_spec.rb +0 -35
- data/spec/erlang/etf/extensions/string_spec.rb +0 -43
- data/spec/erlang/etf/extensions/symbol_spec.rb +0 -64
- data/spec/erlang/etf/extensions/time_spec.rb +0 -32
- data/spec/erlang/etf/extensions/true_class_spec.rb +0 -29
- data/spec/erlang/etf/float_spec.rb +0 -92
- data/spec/erlang/etf/fun_spec.rb +0 -132
- data/spec/erlang/etf/integer_spec.rb +0 -57
- data/spec/erlang/etf/large_big_spec.rb +0 -67
- data/spec/erlang/etf/large_tuple_spec.rb +0 -119
- data/spec/erlang/etf/list_spec.rb +0 -159
- data/spec/erlang/etf/map_spec.rb +0 -100
- data/spec/erlang/etf/new_float_spec.rb +0 -92
- data/spec/erlang/etf/new_fun_spec.rb +0 -146
- data/spec/erlang/etf/new_reference_spec.rb +0 -60
- data/spec/erlang/etf/nil_spec.rb +0 -50
- data/spec/erlang/etf/pid_spec.rb +0 -61
- data/spec/erlang/etf/port_spec.rb +0 -58
- data/spec/erlang/etf/reference_spec.rb +0 -58
- data/spec/erlang/etf/small_atom_spec.rb +0 -90
- data/spec/erlang/etf/small_atom_utf8_spec.rb +0 -90
- data/spec/erlang/etf/small_big_spec.rb +0 -67
- data/spec/erlang/etf/small_integer_spec.rb +0 -57
- data/spec/erlang/etf/small_tuple_spec.rb +0 -112
- data/spec/erlang/etf/string_spec.rb +0 -92
- data/spec/erlang/etf/term_spec.rb +0 -27
- data/spec/erlang/etf/terms_spec.rb +0 -23
- data/spec/erlang/etf_spec.rb +0 -23
- data/spec/erlang_spec.rb +0 -95
- data/spec/spec_helper.rb +0 -31
data/.rspec
DELETED
data/lib/erlang/etf/bert.rb
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
module Erlang
|
2
|
-
module ETF
|
3
|
-
module BERT
|
4
|
-
extend self
|
5
|
-
|
6
|
-
def evolve(tuple)
|
7
|
-
if tuple.elements[1].respond_to?(:atom_name)
|
8
|
-
case tuple.elements[1].atom_name.to_s.intern
|
9
|
-
## boolean ##
|
10
|
-
when :false
|
11
|
-
false
|
12
|
-
when :true
|
13
|
-
true
|
14
|
-
|
15
|
-
## dict ##
|
16
|
-
when :dict
|
17
|
-
if tuple.elements[2].respond_to?(:__ruby_evolve__) and
|
18
|
-
((list = tuple.elements[2].__ruby_evolve__).is_a?(::Erlang::List) or (list.respond_to?(:empty?) and list.empty?))
|
19
|
-
list.inject({}) do |hash, (key, value)|
|
20
|
-
hash[key] = value
|
21
|
-
hash
|
22
|
-
end
|
23
|
-
else
|
24
|
-
unknown(tuple)
|
25
|
-
end
|
26
|
-
|
27
|
-
## nil ##
|
28
|
-
when :nil
|
29
|
-
nil
|
30
|
-
|
31
|
-
## regex ##
|
32
|
-
when :regex
|
33
|
-
if tuple.elements[2].is_a?(Erlang::ETF::Binary) and
|
34
|
-
(tuple.elements[3].is_a?(Erlang::ETF::List) or tuple.elements[3].is_a?(Erlang::ETF::Nil))
|
35
|
-
|
36
|
-
source = tuple.elements[2].__ruby_evolve__
|
37
|
-
opts = tuple.elements[3].__ruby_evolve__
|
38
|
-
|
39
|
-
options = 0
|
40
|
-
options |= ::Regexp::EXTENDED if opts.include?(:extended)
|
41
|
-
options |= ::Regexp::IGNORECASE if opts.include?(:caseless)
|
42
|
-
options |= ::Regexp::MULTILINE if opts.include?(:multiline)
|
43
|
-
::Regexp.new(source, options)
|
44
|
-
else
|
45
|
-
unknown(tuple)
|
46
|
-
end
|
47
|
-
|
48
|
-
## time ##
|
49
|
-
when :time
|
50
|
-
if tuple.arity == 5
|
51
|
-
megaseconds = tuple.elements[2].__ruby_evolve__
|
52
|
-
seconds = tuple.elements[3].__ruby_evolve__
|
53
|
-
microseconds = tuple.elements[4].__ruby_evolve__
|
54
|
-
|
55
|
-
Time.at(megaseconds * 1_000_000 + seconds, microseconds)
|
56
|
-
else
|
57
|
-
unknown(tuple)
|
58
|
-
end
|
59
|
-
|
60
|
-
else
|
61
|
-
unknown(tuple)
|
62
|
-
end
|
63
|
-
else
|
64
|
-
unknown(tuple)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def unknown(tuple)
|
69
|
-
::Erlang::Tuple[*tuple.elements.map(&:__ruby_evolve__)]
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,144 +0,0 @@
|
|
1
|
-
require "erlang/etf/extensions/object"
|
2
|
-
|
3
|
-
module Erlang
|
4
|
-
module ETF
|
5
|
-
module Extensions
|
6
|
-
|
7
|
-
# @private
|
8
|
-
class ::Object
|
9
|
-
include Erlang::ETF::Extensions::Object
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
require "erlang/etf/extensions/erlang-export"
|
16
|
-
require "erlang/etf/extensions/erlang-list"
|
17
|
-
require "erlang/etf/extensions/erlang-map"
|
18
|
-
require "erlang/etf/extensions/erlang-nil"
|
19
|
-
require "erlang/etf/extensions/erlang-pid"
|
20
|
-
require "erlang/etf/extensions/erlang-string"
|
21
|
-
require "erlang/etf/extensions/erlang-tuple"
|
22
|
-
|
23
|
-
module Erlang
|
24
|
-
module ETF
|
25
|
-
module Extensions
|
26
|
-
|
27
|
-
# @private
|
28
|
-
class ::Erlang::Export
|
29
|
-
include Erlang::ETF::Extensions::ErlangExport
|
30
|
-
end
|
31
|
-
|
32
|
-
# @private
|
33
|
-
class ::Erlang::List
|
34
|
-
include Erlang::ETF::Extensions::ErlangList
|
35
|
-
end
|
36
|
-
|
37
|
-
# @private
|
38
|
-
class ::Erlang::Map
|
39
|
-
include Erlang::ETF::Extensions::ErlangMap
|
40
|
-
end
|
41
|
-
|
42
|
-
# @private
|
43
|
-
class ::Erlang::Nil
|
44
|
-
include Erlang::ETF::Extensions::ErlangNil
|
45
|
-
end
|
46
|
-
|
47
|
-
# @private
|
48
|
-
class ::Erlang::Pid
|
49
|
-
include Erlang::ETF::Extensions::ErlangPid
|
50
|
-
end
|
51
|
-
|
52
|
-
# @private
|
53
|
-
class ::Erlang::String
|
54
|
-
include Erlang::ETF::Extensions::ErlangString
|
55
|
-
end
|
56
|
-
|
57
|
-
# @private
|
58
|
-
class ::Erlang::Tuple
|
59
|
-
include Erlang::ETF::Extensions::ErlangTuple
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
require "erlang/etf/extensions/array"
|
66
|
-
require "erlang/etf/extensions/big_decimal"
|
67
|
-
require "erlang/etf/extensions/false_class"
|
68
|
-
require "erlang/etf/extensions/float"
|
69
|
-
require "erlang/etf/extensions/hash"
|
70
|
-
require "erlang/etf/extensions/integer"
|
71
|
-
require "erlang/etf/extensions/nil_class"
|
72
|
-
require "erlang/etf/extensions/regexp"
|
73
|
-
require "erlang/etf/extensions/string"
|
74
|
-
require "erlang/etf/extensions/symbol"
|
75
|
-
require "erlang/etf/extensions/time"
|
76
|
-
require "erlang/etf/extensions/true_class"
|
77
|
-
|
78
|
-
module Erlang
|
79
|
-
module ETF
|
80
|
-
module Extensions
|
81
|
-
|
82
|
-
# @private
|
83
|
-
class ::Array
|
84
|
-
include Erlang::ETF::Extensions::Array
|
85
|
-
end
|
86
|
-
|
87
|
-
# @private
|
88
|
-
class ::BigDecimal
|
89
|
-
include Erlang::ETF::Extensions::BigDecimal
|
90
|
-
end
|
91
|
-
|
92
|
-
# @private
|
93
|
-
class ::FalseClass
|
94
|
-
include Erlang::ETF::Extensions::FalseClass
|
95
|
-
end
|
96
|
-
|
97
|
-
# @private
|
98
|
-
class ::Float
|
99
|
-
include Erlang::ETF::Extensions::Float
|
100
|
-
end
|
101
|
-
|
102
|
-
# @private
|
103
|
-
class ::Hash
|
104
|
-
include Erlang::ETF::Extensions::Hash
|
105
|
-
end
|
106
|
-
|
107
|
-
# @private
|
108
|
-
class ::Integer
|
109
|
-
include Erlang::ETF::Extensions::Integer
|
110
|
-
end
|
111
|
-
|
112
|
-
# @private
|
113
|
-
class ::NilClass
|
114
|
-
include Erlang::ETF::Extensions::NilClass
|
115
|
-
end
|
116
|
-
|
117
|
-
# @private
|
118
|
-
class ::Regexp
|
119
|
-
include Erlang::ETF::Extensions::Regexp
|
120
|
-
end
|
121
|
-
|
122
|
-
# @private
|
123
|
-
class ::String
|
124
|
-
include Erlang::ETF::Extensions::String
|
125
|
-
end
|
126
|
-
|
127
|
-
# @private
|
128
|
-
class ::Symbol
|
129
|
-
include Erlang::ETF::Extensions::Symbol
|
130
|
-
end
|
131
|
-
|
132
|
-
# @private
|
133
|
-
class ::Time
|
134
|
-
include Erlang::ETF::Extensions::Time
|
135
|
-
end
|
136
|
-
|
137
|
-
# @private
|
138
|
-
class ::TrueClass
|
139
|
-
include Erlang::ETF::Extensions::TrueClass
|
140
|
-
end
|
141
|
-
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Erlang
|
2
|
-
module ETF
|
3
|
-
module Extensions
|
4
|
-
|
5
|
-
module Array
|
6
|
-
|
7
|
-
def __erlang_type__
|
8
|
-
if empty?
|
9
|
-
:nil
|
10
|
-
else
|
11
|
-
:list
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def __erlang_evolve__
|
16
|
-
case __erlang_type__
|
17
|
-
when :nil
|
18
|
-
ETF::Nil.new
|
19
|
-
when :list
|
20
|
-
ETF::List.new(map(&:__erlang_evolve__))
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'erlang/export'
|
2
|
-
|
3
|
-
module Erlang
|
4
|
-
module ETF
|
5
|
-
module Extensions
|
6
|
-
|
7
|
-
module ErlangExport
|
8
|
-
|
9
|
-
def __erlang_type__
|
10
|
-
:export
|
11
|
-
end
|
12
|
-
|
13
|
-
def __erlang_evolve__
|
14
|
-
ETF::Export.new(
|
15
|
-
mod.to_s.intern.__erlang_evolve__,
|
16
|
-
function.to_s.intern.__erlang_evolve__,
|
17
|
-
arity.__erlang_evolve__
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'erlang/list'
|
2
|
-
|
3
|
-
module Erlang
|
4
|
-
module ETF
|
5
|
-
module Extensions
|
6
|
-
|
7
|
-
module ErlangList
|
8
|
-
|
9
|
-
def __erlang_type__
|
10
|
-
if empty? and not improper?
|
11
|
-
:nil
|
12
|
-
else
|
13
|
-
:list
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def __erlang_evolve__
|
18
|
-
case __erlang_type__
|
19
|
-
when :nil
|
20
|
-
ETF::Nil.new
|
21
|
-
when :list
|
22
|
-
ETF::List.new(map(&:__erlang_evolve__), tail.__erlang_evolve__)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'erlang/map'
|
2
|
-
|
3
|
-
module Erlang
|
4
|
-
module ETF
|
5
|
-
module Extensions
|
6
|
-
|
7
|
-
module ErlangMap
|
8
|
-
|
9
|
-
def __erlang_type__
|
10
|
-
:map
|
11
|
-
end
|
12
|
-
|
13
|
-
def __erlang_evolve__
|
14
|
-
if size == 0
|
15
|
-
ETF::Map.new([], [])
|
16
|
-
else
|
17
|
-
ETF::Map.new(*map do |(key, value)|
|
18
|
-
[key.__erlang_evolve__, value.__erlang_evolve__]
|
19
|
-
end.transpose)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'erlang/pid'
|
2
|
-
|
3
|
-
module Erlang
|
4
|
-
module ETF
|
5
|
-
module Extensions
|
6
|
-
|
7
|
-
module ErlangPid
|
8
|
-
|
9
|
-
def __erlang_type__
|
10
|
-
:pid
|
11
|
-
end
|
12
|
-
|
13
|
-
def __erlang_evolve__
|
14
|
-
ETF::Pid.new(node.to_s.intern.__erlang_evolve__, id, serial, creation)
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'erlang/string'
|
2
|
-
|
3
|
-
module Erlang
|
4
|
-
module ETF
|
5
|
-
module Extensions
|
6
|
-
|
7
|
-
module ErlangString
|
8
|
-
|
9
|
-
STRING_MAX = (+1 << 16) - 1
|
10
|
-
|
11
|
-
def __erlang_type__
|
12
|
-
if bytesize > STRING_MAX
|
13
|
-
:list
|
14
|
-
else
|
15
|
-
:string
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def __erlang_evolve__
|
20
|
-
case __erlang_type__
|
21
|
-
when :list
|
22
|
-
ETF::List.new(unpack('C*'))
|
23
|
-
when :string
|
24
|
-
ETF::String.new(self)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'erlang/tuple'
|
2
|
-
|
3
|
-
module Erlang
|
4
|
-
module ETF
|
5
|
-
module Extensions
|
6
|
-
|
7
|
-
module ErlangTuple
|
8
|
-
|
9
|
-
def __erlang_type__
|
10
|
-
if length < 256
|
11
|
-
:small_tuple
|
12
|
-
else
|
13
|
-
:large_tuple
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def __erlang_evolve__
|
18
|
-
case __erlang_type__
|
19
|
-
when :small_tuple
|
20
|
-
ETF::SmallTuple.new(map(&:__erlang_evolve__))
|
21
|
-
when :large_tuple
|
22
|
-
ETF::LargeTuple.new(map(&:__erlang_evolve__))
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|