mapleseed 0.1.0 → 0.1.1
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.
- data/README.rdoc +15 -3
- data/VERSION +1 -1
- data/bin/mapleseed +2 -2
- data/lib/mapleseed.rb +33 -1
- data/lib/mapleseed/interpreter.rb +1 -1
- data/lib/mapleseed/ring.rb +2 -0
- data/mapleseed.gemspec +1 -1
- metadata +10 -10
data/README.rdoc
CHANGED
@@ -26,13 +26,25 @@ You can also start an interactive interpreter by running Mapleseed without any p
|
|
26
26
|
The list of options is viewable from the command line using the -h parameter.
|
27
27
|
|
28
28
|
% mapleseed -h
|
29
|
+
|
30
|
+
And if you'd like to use Whirl code inside of Ruby, that can be done:
|
29
31
|
|
32
|
+
require 'rubygems'
|
33
|
+
require 'mapleseed'
|
34
|
+
|
35
|
+
ms = Mapleseed::Interpreter.new
|
36
|
+
ms.run("011000001111000011111000001111
|
37
|
+
00001111100000111100001111100000110010
|
38
|
+
00001100111110001110001111000110011100
|
39
|
+
00000001111100010001111100110011111000
|
40
|
+
10001100")
|
41
|
+
|
30
42
|
== Things That Might Get Done Eventually
|
31
43
|
|
32
|
-
*
|
33
|
-
*
|
34
|
-
* Unit testing
|
44
|
+
* File minimizer (turn whirl code into tiny binary files and vice versa)
|
45
|
+
* Testing
|
35
46
|
|
36
47
|
== History
|
37
48
|
|
49
|
+
* 0.1.1 - Added REPL
|
38
50
|
* 0.1.0 - Initial release. Allows running code passed in or from a file.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/bin/mapleseed
CHANGED
@@ -28,8 +28,8 @@ end
|
|
28
28
|
ms = Mapleseed::Base.new
|
29
29
|
case options[:mode]
|
30
30
|
when :repl
|
31
|
-
|
32
|
-
|
31
|
+
puts "Starting interactive interpreter..."
|
32
|
+
ms.repl
|
33
33
|
when :file
|
34
34
|
puts "Running file..."
|
35
35
|
ms.load_file(options[:file])
|
data/lib/mapleseed.rb
CHANGED
@@ -22,7 +22,39 @@ module Mapleseed
|
|
22
22
|
|
23
23
|
# interactive read-evaluate-print loop
|
24
24
|
def repl
|
25
|
-
|
25
|
+
puts "'exit' or Ctrl-X leaves the REPL"
|
26
|
+
puts "'op' gives information about the operation ring position and value"
|
27
|
+
puts "'math' gives information about the math ring position and value"
|
28
|
+
puts "'mem' gives information about the current cell of memory"
|
29
|
+
puts "'reset' clears the memory and resets the rings"
|
30
|
+
while true
|
31
|
+
puts ""
|
32
|
+
print "mapleseed> "
|
33
|
+
input = gets.chomp
|
34
|
+
case input
|
35
|
+
when "exit", 24.chr
|
36
|
+
puts "Exiting"
|
37
|
+
break
|
38
|
+
when "op"
|
39
|
+
puts "Operations Ring:"
|
40
|
+
puts "Position: #{@interpreter.op_ring.position} Value: #{@interpreter.op_ring.value}"
|
41
|
+
dir = ""
|
42
|
+
@interpreter.op_ring.direction == 1 ? dir = "Clockwise" : dir = "Counter-clockwise"
|
43
|
+
puts "Direction: #{dir} Current operation: #{@interpreter.op_ring.commands[@interpreter.op_ring.position].to_s}"
|
44
|
+
when "math"
|
45
|
+
puts "Math Ring:"
|
46
|
+
puts "Position: #{@interpreter.math_ring.position} Value: #{@interpreter.math_ring.value}"
|
47
|
+
dir = ""
|
48
|
+
@interpreter.math_ring.direction == 1 ? dir = "Clockwise" : dir = "Counter-clockwise"
|
49
|
+
puts "Direction: #{dir} Current operation: #{@interpreter.math_ring.commands[@interpreter.math_ring.position].to_s}"
|
50
|
+
when "mem"
|
51
|
+
puts "Cell: #{@interpreter.memory_position} Value: #{@interpreter.memory.get(@interpreter.memory_position)}"
|
52
|
+
when "reset"
|
53
|
+
@interpreter.initialize_environment
|
54
|
+
else
|
55
|
+
@interpreter.run(input)
|
56
|
+
end
|
57
|
+
end
|
26
58
|
end
|
27
59
|
end
|
28
60
|
end
|
@@ -4,7 +4,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), "ring.rb"))
|
|
4
4
|
module Mapleseed
|
5
5
|
#interprets Whirl code
|
6
6
|
class Interpreter
|
7
|
-
attr_reader :memory
|
7
|
+
attr_reader :memory, :op_ring, :math_ring
|
8
8
|
attr_accessor :memory_position, :program_position,
|
9
9
|
:input_stream, :output_stream
|
10
10
|
|
data/lib/mapleseed/ring.rb
CHANGED
data/mapleseed.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mapleseed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable: mapleseed
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
17
|
-
requirement: &
|
17
|
+
requirement: &7559964 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *7559964
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: bundler
|
28
|
-
requirement: &
|
28
|
+
requirement: &7558872 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *7558872
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: jeweler
|
39
|
-
requirement: &
|
39
|
+
requirement: &7557984 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.5.2
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *7557984
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rcov
|
50
|
-
requirement: &
|
50
|
+
requirement: &7556820 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *7556820
|
59
59
|
description: A simple Whirl interpreter
|
60
60
|
email: ctoneal@gmail.com
|
61
61
|
executables:
|
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
segments:
|
96
96
|
- 0
|
97
|
-
hash:
|
97
|
+
hash: 905466017
|
98
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
99
|
none: false
|
100
100
|
requirements:
|