bfrb 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/README.rdoc +9 -4
  2. data/VERSION +1 -1
  3. data/bfrb.gemspec +2 -2
  4. data/bin/bfrb +32 -27
  5. data/lib/bfrb.rb +11 -3
  6. metadata +11 -11
@@ -12,28 +12,33 @@ To install bfrb:
12
12
 
13
13
  Once bfrb is installed, you can use it to interpret your brainfuck code.
14
14
 
15
- First, you can pass brainfuck code directly into it, as long as it is wrapped in quotes.
15
+ First, you can pass brainfuck code directly into it, using the -c parameter:
16
16
 
17
- % bfrb ",[.,]"
17
+ % bfrb -c ",[.,]"
18
18
 
19
19
  Or, you can specify a file with the -f parameter:
20
20
 
21
21
  % bfrb -f test.bf
22
22
 
23
- You can also start an interactive interpreter by running bfrb without any parameters
23
+ You can also start an interactive interpreter by running bfrb without any parameters:
24
24
 
25
25
  % bfrb
26
26
 
27
+ The list of options is viewable with the -h parameter:
28
+
29
+ % bfrb -h
30
+
27
31
  Just in case you feel the need to use another language internally in a Ruby program, I guess you can:
28
32
 
29
33
  require 'rubygems'
30
34
  require 'bfrb'
31
35
 
32
- bf = BfRb::Base.new
36
+ bf = BfRb::Interpreter.new
33
37
  bf.run ",[.,]"
34
38
 
35
39
  == History
36
40
 
41
+ * 0.1.5 - Modified to use OptionParser for command line parameters, 'help' command to REPL
37
42
  * 0.1.4 - Added a little more documentation, efficiency fixes and Ctrl-X to exit a program
38
43
  * 0.1.3 - Unmatched brace checks
39
44
  * 0.1.2 - Added unit tests
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bfrb}
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Chris ONeal"]
12
- s.date = %q{2011-06-09}
12
+ s.date = %q{2011-06-10}
13
13
  s.default_executable = %q{bfrb}
14
14
  s.description = %q{bfrb is a brainfuck interpreter written in Ruby.}
15
15
  s.email = %q{ctoneal@gmail.com}
data/bin/bfrb CHANGED
@@ -1,35 +1,40 @@
1
1
  #!/usr/bin/env ruby
2
-
2
+ require 'optparse'
3
3
  require File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "bfrb.rb"))
4
4
 
5
- def usage
6
- puts "Usage:"
7
- puts "Start interactive evaluation: bfrb"
8
- puts "Pass code in as a command line parameter (in quotes): bfrb \",[.,]\""
9
- puts "Specify a file to read: bfrb -f test.bf"
10
- puts "View this message: bfrb -u"
5
+ options = { :mode => :repl }
6
+ op = OptionParser.new do |x|
7
+ x.banner = "bfrb <options>"
8
+ x.separator "\nUsing no options will start the interactive interpreter."
9
+ x.on("-f <file_path>", String, "Open a given file") do |f|
10
+ options[:mode] = :file
11
+ options[:file] = f
12
+ end
13
+ x.on("-c <code>", String, "Perform the given code") do |c|
14
+ options[:mode] = :code
15
+ options[:code] = c
16
+ end
17
+ x.on("-h", "Show this message") do
18
+ puts op
19
+ exit
20
+ end
21
+ end
22
+ begin
23
+ op.parse!(ARGV)
24
+ rescue
25
+ puts "Could not parse command line arguments."
26
+ exit
11
27
  end
12
28
 
13
29
  bfrb = BfRb::Base.new
14
- # if the command line params specify a file, run it
15
- # otherwise attempt to run code passed in as a param
16
- if ARGV.length == 0
17
- puts "Starting interactive evaluation"
30
+ case options[:mode]
31
+ when :repl
32
+ puts "Starting interactive interpreter..."
18
33
  bfrb.repl
19
- else
20
- case ARGV[0]
21
- when "-u"
22
- usage
23
- when "-f"
24
- if ARGV.length > 1
25
- puts "Attempting to run file #{ARGV[1]}"
26
- bfrb.load_file(ARGV[1])
27
- else
28
- puts "Invalid arguments"
29
- usage
30
- end
31
- else
32
- puts "Interpreting code"
33
- bfrb.run(ARGV[0])
34
- end
34
+ when :file
35
+ puts "Running file..."
36
+ bfrb.load_file(options[:file])
37
+ when :code
38
+ puts "Interpreting code..."
39
+ bfrb.run(options[:code])
35
40
  end
@@ -22,14 +22,14 @@ module BfRb
22
22
 
23
23
  # interactive read-evaluate-print loop
24
24
  def repl
25
- puts "'exit' or Ctrl-X leaves the REPL"
26
- puts "'mem' displays the value in the current cell of memory"
27
- puts "'clear' clears everything from memory"
25
+ puts "For interpreter commands, type 'help'"
28
26
  while true
29
27
  puts ""
30
28
  print "bfrb> "
31
29
  input = gets.chomp
32
30
  case input
31
+ when "help"
32
+ repl_help
33
33
  when "exit", 24.chr
34
34
  puts "Exiting"
35
35
  break
@@ -42,5 +42,13 @@ module BfRb
42
42
  end
43
43
  end
44
44
  end
45
+
46
+ # prints out a help message
47
+ def repl_help
48
+ puts "'exit' or Ctrl-X leaves the REPL"
49
+ puts "'mem' displays the value in the current cell of memory"
50
+ puts "'clear' clears everything from memory"
51
+ puts "'help' displays this message"
52
+ end
45
53
  end
46
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bfrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-09 00:00:00.000000000 -05:00
12
+ date: 2011-06-10 00:00:00.000000000 -05:00
13
13
  default_executable: bfrb
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &8122320 !ruby/object:Gem::Requirement
17
+ requirement: &7574640 !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: *8122320
25
+ version_requirements: *7574640
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &8115540 !ruby/object:Gem::Requirement
28
+ requirement: &7573716 !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: *8115540
36
+ version_requirements: *7573716
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: jeweler
39
- requirement: &8096772 !ruby/object:Gem::Requirement
39
+ requirement: &7572972 !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: *8096772
47
+ version_requirements: *7572972
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rcov
50
- requirement: &8095248 !ruby/object:Gem::Requirement
50
+ requirement: &7559400 !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: *8095248
58
+ version_requirements: *7559400
59
59
  description: bfrb is a brainfuck interpreter written in Ruby.
60
60
  email: ctoneal@gmail.com
61
61
  executables:
@@ -93,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  segments:
95
95
  - 0
96
- hash: 950763631
96
+ hash: -814124899
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  none: false
99
99
  requirements: