fOOrth 0.6.6 → 0.6.11
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 +5 -5
- data/CODE_OF_CONDUCT.md +49 -0
- data/README.md +32 -1
- data/fOOrth.gemspec +3 -3
- data/integration/array_lib_tests.rb +10 -0
- data/integration/compile_lib_tests.rb +67 -1
- data/integration/exception_lib_tests.rb +4 -0
- data/integration/hash_lib_tests.rb +9 -0
- data/integration/numeric_lib_tests.rb +326 -321
- data/integration/procedure_lib_tests.rb +16 -0
- data/integration/queue_lib_tests.rb +2 -1
- data/integration/stack_lib_tests.rb +2 -1
- data/integration/stdio_lib_tests.rb +62 -0
- data/integration/string_lib_tests.rb +11 -0
- data/integration/thread_lib_tests.rb +19 -5
- data/lib/fOOrth.rb +0 -2
- data/lib/fOOrth/compiler/context.rb +64 -64
- data/lib/fOOrth/compiler/context/locals.rb +34 -34
- data/lib/fOOrth/compiler/context/map_name.rb +85 -74
- data/lib/fOOrth/compiler/context/tags.rb +60 -48
- data/lib/fOOrth/compiler/process/generate.rb +1 -1
- data/lib/fOOrth/compiler/process/procedure.rb +40 -0
- data/lib/fOOrth/compiler/word_specs.rb +3 -3
- data/lib/fOOrth/core/object.rb +1 -1
- data/lib/fOOrth/library.rb +3 -0
- data/lib/fOOrth/library/alias_library.rb +126 -0
- data/lib/fOOrth/library/array_library.rb +41 -21
- data/lib/fOOrth/library/command_library.rb +1 -1
- data/lib/fOOrth/library/compile_library.rb +266 -264
- data/lib/fOOrth/library/complex_library.rb +82 -80
- data/lib/fOOrth/library/float_library.rb +37 -0
- data/lib/fOOrth/library/formatting/array.rb +90 -0
- data/lib/fOOrth/library/formatting/bullets.rb +15 -79
- data/lib/fOOrth/library/formatting/columns.rb +20 -42
- data/lib/fOOrth/library/formatting/hash.rb +29 -0
- data/lib/fOOrth/library/formatting/nil.rb +13 -0
- data/lib/fOOrth/library/formatting/object.rb +18 -0
- data/lib/fOOrth/library/formatting/string.rb +46 -0
- data/lib/fOOrth/library/hash_library.rb +14 -6
- data/lib/fOOrth/library/introspection/class.rb +20 -18
- data/lib/fOOrth/library/introspection/context.rb +3 -2
- data/lib/fOOrth/library/introspection/object.rb +42 -20
- data/lib/fOOrth/library/introspection/string.rb +21 -5
- data/lib/fOOrth/library/introspection/vm.rb +17 -29
- data/lib/fOOrth/library/mutex_library.rb +8 -1
- data/lib/fOOrth/library/numeric_library.rb +359 -380
- data/lib/fOOrth/library/procedure_library.rb +69 -65
- data/lib/fOOrth/library/queue_library.rb +6 -1
- data/lib/fOOrth/library/rational_library.rb +89 -89
- data/lib/fOOrth/library/stack_library.rb +6 -1
- data/lib/fOOrth/library/stdio_library.rb +11 -8
- data/lib/fOOrth/library/string_library.rb +21 -6
- data/lib/fOOrth/library/stubs_library.rb +49 -0
- data/lib/fOOrth/monkey_patch/exceptions.rb +2 -6
- data/lib/fOOrth/monkey_patch/object.rb +7 -0
- data/lib/fOOrth/version.rb +1 -1
- data/reek.txt +1 -59
- data/sire.rb +0 -1
- data/tests/compiler/context_tests.rb +188 -177
- data/tests/compiler/file_source_tests.rb +130 -130
- data/tests/compiler/parser_tests.rb +4 -4
- data/tests/compiler/string_source_tests.rb +4 -4
- data/tests/core_tests.rb +138 -138
- data/tests/monkey_patch/complex_test.rb +24 -24
- data/tests/monkey_patch/object_test.rb +49 -49
- data/tests/monkey_patch/string_test.rb +61 -61
- metadata +20 -13
@@ -1,25 +1,25 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require_relative '../../lib/fOOrth/monkey_patch/numeric'
|
4
|
-
require_relative '../../lib/fOOrth/monkey_patch/complex'
|
5
|
-
gem 'minitest'
|
6
|
-
require 'minitest/autorun'
|
7
|
-
require 'minitest_visible'
|
8
|
-
|
9
|
-
#Test the monkey patches applied to the Object class.
|
10
|
-
class ComplexMonkeyPatchTester < Minitest::Test
|
11
|
-
|
12
|
-
#Track mini-test progress.
|
13
|
-
include MinitestVisible
|
14
|
-
|
15
|
-
#Test that it embeds
|
16
|
-
def test_foorth_embed
|
17
|
-
comp = Complex(1,2)
|
18
|
-
assert_equal(comp.foorth_embed, 'Complex(1,2)')
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_that_it_is_not_rationalizable
|
22
|
-
comp = Complex(1,2)
|
23
|
-
|
24
|
-
end
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require_relative '../../lib/fOOrth/monkey_patch/numeric'
|
4
|
+
require_relative '../../lib/fOOrth/monkey_patch/complex'
|
5
|
+
gem 'minitest'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
require 'minitest_visible'
|
8
|
+
|
9
|
+
#Test the monkey patches applied to the Object class.
|
10
|
+
class ComplexMonkeyPatchTester < Minitest::Test
|
11
|
+
|
12
|
+
#Track mini-test progress.
|
13
|
+
include MinitestVisible
|
14
|
+
|
15
|
+
#Test that it embeds
|
16
|
+
def test_foorth_embed
|
17
|
+
comp = Complex(1,2)
|
18
|
+
assert_equal(comp.foorth_embed, 'Complex(1,2)')
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_that_it_is_not_rationalizable
|
22
|
+
comp = Complex(1,2)
|
23
|
+
assert_nil(comp.to_foorth_r)
|
24
|
+
end
|
25
25
|
end
|
@@ -1,49 +1,49 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require_relative '../../lib/fOOrth/monkey_patch'
|
4
|
-
gem 'minitest'
|
5
|
-
require 'minitest/autorun'
|
6
|
-
require 'minitest_visible'
|
7
|
-
|
8
|
-
#Test the monkey patches applied to the Object class.
|
9
|
-
class ObjectMonkeyPatchTester < Minitest::Test
|
10
|
-
|
11
|
-
#Track mini-test progress.
|
12
|
-
include MinitestVisible
|
13
|
-
|
14
|
-
#Test that it does NOT foorth_embed.
|
15
|
-
def test_foorth_embed_error
|
16
|
-
obj = Object.new
|
17
|
-
assert_raises(XfOOrth::XfOOrthError) { obj.foorth_embed }
|
18
|
-
end
|
19
|
-
|
20
|
-
#Test for conversion to a boolean.
|
21
|
-
def test_to_boolean
|
22
|
-
obj = Object.new
|
23
|
-
assert_equal(obj.to_foorth_b, true)
|
24
|
-
end
|
25
|
-
|
26
|
-
#Test for conversion to a character.
|
27
|
-
def test_to_character
|
28
|
-
obj = Object.new
|
29
|
-
assert_equal(obj.to_foorth_c, "\x00")
|
30
|
-
end
|
31
|
-
|
32
|
-
#Test for conversion to a number.
|
33
|
-
def test_to_number
|
34
|
-
obj = Object.new
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
#Test for conversion to a rational.
|
39
|
-
def test_to_rational
|
40
|
-
obj = Object.new
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
#Test the quick fail raise in fOOrth.
|
45
|
-
def test_that_exceptions_are_easy_to_raise
|
46
|
-
assert_raises(XfOOrth::XfOOrthError) { error('Failure IS an option!') }
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require_relative '../../lib/fOOrth/monkey_patch'
|
4
|
+
gem 'minitest'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest_visible'
|
7
|
+
|
8
|
+
#Test the monkey patches applied to the Object class.
|
9
|
+
class ObjectMonkeyPatchTester < Minitest::Test
|
10
|
+
|
11
|
+
#Track mini-test progress.
|
12
|
+
include MinitestVisible
|
13
|
+
|
14
|
+
#Test that it does NOT foorth_embed.
|
15
|
+
def test_foorth_embed_error
|
16
|
+
obj = Object.new
|
17
|
+
assert_raises(XfOOrth::XfOOrthError) { obj.foorth_embed }
|
18
|
+
end
|
19
|
+
|
20
|
+
#Test for conversion to a boolean.
|
21
|
+
def test_to_boolean
|
22
|
+
obj = Object.new
|
23
|
+
assert_equal(obj.to_foorth_b, true)
|
24
|
+
end
|
25
|
+
|
26
|
+
#Test for conversion to a character.
|
27
|
+
def test_to_character
|
28
|
+
obj = Object.new
|
29
|
+
assert_equal(obj.to_foorth_c, "\x00")
|
30
|
+
end
|
31
|
+
|
32
|
+
#Test for conversion to a number.
|
33
|
+
def test_to_number
|
34
|
+
obj = Object.new
|
35
|
+
assert_nil(obj.to_foorth_n)
|
36
|
+
end
|
37
|
+
|
38
|
+
#Test for conversion to a rational.
|
39
|
+
def test_to_rational
|
40
|
+
obj = Object.new
|
41
|
+
assert_nil(obj.to_foorth_r)
|
42
|
+
end
|
43
|
+
|
44
|
+
#Test the quick fail raise in fOOrth.
|
45
|
+
def test_that_exceptions_are_easy_to_raise
|
46
|
+
assert_raises(XfOOrth::XfOOrthError) { error('Failure IS an option!') }
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -1,61 +1,61 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require_relative '../../lib/fOOrth/monkey_patch/string'
|
4
|
-
gem 'minitest'
|
5
|
-
require 'minitest/autorun'
|
6
|
-
require 'minitest_visible'
|
7
|
-
|
8
|
-
#Test the monkey patches applied to the Object class.
|
9
|
-
class StringMonkeyPatchTester < Minitest::Test
|
10
|
-
|
11
|
-
#Track mini-test progress.
|
12
|
-
include MinitestVisible
|
13
|
-
|
14
|
-
#Test that it embeds
|
15
|
-
def test_foorth_embed
|
16
|
-
assert_equal("A big blue cat".foorth_embed, "\"A big blue cat\"")
|
17
|
-
assert_equal("The cat's toy".foorth_embed, "\"The cat's toy\"")
|
18
|
-
assert_equal('A dog\cat race'.foorth_embed, "\"A dog\\\\cat race\"")
|
19
|
-
assert_equal('A dog/cat race'.foorth_embed, "\"A dog/cat race\"")
|
20
|
-
end
|
21
|
-
|
22
|
-
#Test converting to a character.
|
23
|
-
def test_to_character
|
24
|
-
assert_equal('ABC'.to_foorth_c, 'A')
|
25
|
-
assert_equal('A'.to_foorth_c, 'A')
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
#Test converting to a number.
|
30
|
-
def test_to_number
|
31
|
-
assert_equal('123'.to_foorth_n, 123)
|
32
|
-
assert_equal('123.4'.to_foorth_n, 123.4)
|
33
|
-
assert_equal('1/2'.to_foorth_n, '1/2'.to_r)
|
34
|
-
assert_equal('1+2i'.to_foorth_n, Complex(1,2))
|
35
|
-
assert_equal('2i'.to_foorth_n, Complex(0,2))
|
36
|
-
assert_equal('1-2i'.to_foorth_n, Complex(1,-2))
|
37
|
-
assert_equal('-2i'.to_foorth_n, Complex(0,-2))
|
38
|
-
assert_equal('+1+2i'.to_foorth_n, Complex(1,2))
|
39
|
-
assert_equal('+2i'.to_foorth_n, Complex(0,2))
|
40
|
-
assert_equal('+1-2i'.to_foorth_n, Complex(1,-2))
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_to_rational
|
47
|
-
assert_equal(Rational(1,2), '1/2'.to_foorth_r)
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_clone_patches
|
52
|
-
s = "abc"
|
53
|
-
assert_equal(s.object_id, s.safe_clone.object_id)
|
54
|
-
assert_equal(s.object_id, s.full_clone.object_id)
|
55
|
-
|
56
|
-
b = StringBuffer.new('abc')
|
57
|
-
refute_equal(b.object_id, b.safe_clone.object_id)
|
58
|
-
refute_equal(b.object_id, b.full_clone.object_id)
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require_relative '../../lib/fOOrth/monkey_patch/string'
|
4
|
+
gem 'minitest'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest_visible'
|
7
|
+
|
8
|
+
#Test the monkey patches applied to the Object class.
|
9
|
+
class StringMonkeyPatchTester < Minitest::Test
|
10
|
+
|
11
|
+
#Track mini-test progress.
|
12
|
+
include MinitestVisible
|
13
|
+
|
14
|
+
#Test that it embeds
|
15
|
+
def test_foorth_embed
|
16
|
+
assert_equal("A big blue cat".foorth_embed, "\"A big blue cat\"")
|
17
|
+
assert_equal("The cat's toy".foorth_embed, "\"The cat's toy\"")
|
18
|
+
assert_equal('A dog\cat race'.foorth_embed, "\"A dog\\\\cat race\"")
|
19
|
+
assert_equal('A dog/cat race'.foorth_embed, "\"A dog/cat race\"")
|
20
|
+
end
|
21
|
+
|
22
|
+
#Test converting to a character.
|
23
|
+
def test_to_character
|
24
|
+
assert_equal('ABC'.to_foorth_c, 'A')
|
25
|
+
assert_equal('A'.to_foorth_c, 'A')
|
26
|
+
assert_nil(''.to_foorth_c)
|
27
|
+
end
|
28
|
+
|
29
|
+
#Test converting to a number.
|
30
|
+
def test_to_number
|
31
|
+
assert_equal('123'.to_foorth_n, 123)
|
32
|
+
assert_equal('123.4'.to_foorth_n, 123.4)
|
33
|
+
assert_equal('1/2'.to_foorth_n, '1/2'.to_r)
|
34
|
+
assert_equal('1+2i'.to_foorth_n, Complex(1,2))
|
35
|
+
assert_equal('2i'.to_foorth_n, Complex(0,2))
|
36
|
+
assert_equal('1-2i'.to_foorth_n, Complex(1,-2))
|
37
|
+
assert_equal('-2i'.to_foorth_n, Complex(0,-2))
|
38
|
+
assert_equal('+1+2i'.to_foorth_n, Complex(1,2))
|
39
|
+
assert_equal('+2i'.to_foorth_n, Complex(0,2))
|
40
|
+
assert_equal('+1-2i'.to_foorth_n, Complex(1,-2))
|
41
|
+
|
42
|
+
assert_nil('fubar'.to_foorth_n)
|
43
|
+
assert_nil('2cats'.to_foorth_n)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_to_rational
|
47
|
+
assert_equal(Rational(1,2), '1/2'.to_foorth_r)
|
48
|
+
assert_nil('apple'.to_foorth_r)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_clone_patches
|
52
|
+
s = "abc"
|
53
|
+
assert_equal(s.object_id, s.safe_clone.object_id)
|
54
|
+
assert_equal(s.object_id, s.full_clone.object_id)
|
55
|
+
|
56
|
+
b = StringBuffer.new('abc')
|
57
|
+
refute_equal(b.object_id, b.safe_clone.object_id)
|
58
|
+
refute_equal(b.object_id, b.full_clone.object_id)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fOOrth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Camilleri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.1.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 12.3.3
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 12.3.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: reek
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
173
|
+
version: 0.8.0
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
180
|
+
version: 0.8.0
|
181
181
|
description: An Object Oriented FORTHesque language gem.
|
182
182
|
email: peter.c.camilleri@gmail.com
|
183
183
|
executables:
|
@@ -187,6 +187,7 @@ extra_rdoc_files: []
|
|
187
187
|
files:
|
188
188
|
- ".gitignore"
|
189
189
|
- ".rdoc_options"
|
190
|
+
- CODE_OF_CONDUCT.md
|
190
191
|
- Gemfile
|
191
192
|
- README.md
|
192
193
|
- bin/fOOrth
|
@@ -266,6 +267,7 @@ files:
|
|
266
267
|
- lib/fOOrth/interpreter/do_loop.rb
|
267
268
|
- lib/fOOrth/interpreter/squash.rb
|
268
269
|
- lib/fOOrth/library.rb
|
270
|
+
- lib/fOOrth/library/alias_library.rb
|
269
271
|
- lib/fOOrth/library/array_library.rb
|
270
272
|
- lib/fOOrth/library/bundle_library.rb
|
271
273
|
- lib/fOOrth/library/class_library.rb
|
@@ -281,8 +283,14 @@ files:
|
|
281
283
|
- lib/fOOrth/library/duration/make.rb
|
282
284
|
- lib/fOOrth/library/duration_library.rb
|
283
285
|
- lib/fOOrth/library/fiber_library.rb
|
286
|
+
- lib/fOOrth/library/float_library.rb
|
287
|
+
- lib/fOOrth/library/formatting/array.rb
|
284
288
|
- lib/fOOrth/library/formatting/bullets.rb
|
285
289
|
- lib/fOOrth/library/formatting/columns.rb
|
290
|
+
- lib/fOOrth/library/formatting/hash.rb
|
291
|
+
- lib/fOOrth/library/formatting/nil.rb
|
292
|
+
- lib/fOOrth/library/formatting/object.rb
|
293
|
+
- lib/fOOrth/library/formatting/string.rb
|
286
294
|
- lib/fOOrth/library/hash_library.rb
|
287
295
|
- lib/fOOrth/library/in_stream_library.rb
|
288
296
|
- lib/fOOrth/library/integer_library.rb
|
@@ -306,6 +314,7 @@ files:
|
|
306
314
|
- lib/fOOrth/library/stdio_library.rb
|
307
315
|
- lib/fOOrth/library/string_library.rb
|
308
316
|
- lib/fOOrth/library/stubs.rb
|
317
|
+
- lib/fOOrth/library/stubs_library.rb
|
309
318
|
- lib/fOOrth/library/sync_bundle_library.rb
|
310
319
|
- lib/fOOrth/library/thread_library.rb
|
311
320
|
- lib/fOOrth/library/time_library.rb
|
@@ -368,8 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
368
377
|
- !ruby/object:Gem::Version
|
369
378
|
version: '0'
|
370
379
|
requirements: []
|
371
|
-
|
372
|
-
rubygems_version: 2.2.2
|
380
|
+
rubygems_version: 3.2.17
|
373
381
|
signing_key:
|
374
382
|
specification_version: 4
|
375
383
|
summary: FNF == fOOrth is Not FORTH.
|
@@ -420,4 +428,3 @@ test_files:
|
|
420
428
|
- tests/monkey_patch/rational_test.rb
|
421
429
|
- tests/monkey_patch/string_test.rb
|
422
430
|
- tests/symbol_map_tests.rb
|
423
|
-
has_rdoc:
|