logonxc 0.1.0 → 0.2.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.
data/Gemfile CHANGED
@@ -3,6 +3,7 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
  gem "erubis"
6
+ gem 'rake', '0.8.7'
6
7
 
7
8
  # Add dependencies to develop your gem here.
8
9
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock CHANGED
@@ -10,7 +10,7 @@ GEM
10
10
  bundler (~> 1.0)
11
11
  git (>= 1.2.5)
12
12
  rake
13
- rake (0.9.2)
13
+ rake (0.8.7)
14
14
  rcov (0.9.10)
15
15
  rspec (2.3.0)
16
16
  rspec-core (~> 2.3.0)
@@ -28,5 +28,6 @@ DEPENDENCIES
28
28
  bundler (~> 1.0.0)
29
29
  erubis
30
30
  jeweler (~> 1.6.4)
31
+ rake (= 0.8.7)
31
32
  rcov
32
33
  rspec (~> 2.3.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/lib/logonxc.rb CHANGED
@@ -13,6 +13,12 @@ class LogoNxc
13
13
  output = ""
14
14
  text.each_line do |line|
15
15
  case
16
+ when line =~ /print\s+["']([^"']+)["']/
17
+ output << "print(\"#{$1}\");\n"
18
+ when line =~ /sleep\s+(\d+)/
19
+ output << "wait(#{$1});\n"
20
+ when line =~ /beep/
21
+ output << "beep();\n"
16
22
  when line =~ /repeat\s+(\d+)\s+\[/
17
23
  output << "repeat(#{$1}) {\n"
18
24
  when line =~ /(?:right|rt)\s*(\d+)/
data/logonxc.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "logonxc"
8
- s.version = "0.1.0"
7
+ s.name = %q{logonxc}
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Deb Bassett"]
12
- s.date = "2011-10-02"
13
- s.description = "Parse basic logo and output NXC for Lego Mindstorms"
14
- s.email = "deb@urbanwide.com"
12
+ s.date = %q{2011-11-18}
13
+ s.description = %q{Parse basic logo and output NXC for Lego Mindstorms}
14
+ s.email = %q{deb@urbanwide.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -31,23 +31,25 @@ Gem::Specification.new do |s|
31
31
  "spec/spec_helper.rb",
32
32
  "templates/logonxc.erb"
33
33
  ]
34
- s.homepage = "http://github.com/urbanwide/logonxc"
34
+ s.homepage = %q{http://github.com/urbanwide/logonxc}
35
35
  s.licenses = ["MIT"]
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = "1.8.10"
38
- s.summary = "Logo to Lego NXC"
37
+ s.rubygems_version = %q{1.5.3}
38
+ s.summary = %q{Logo to Lego NXC}
39
39
 
40
40
  if s.respond_to? :specification_version then
41
41
  s.specification_version = 3
42
42
 
43
43
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
44
  s.add_runtime_dependency(%q<erubis>, [">= 0"])
45
+ s.add_runtime_dependency(%q<rake>, ["= 0.8.7"])
45
46
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
46
47
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
47
48
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
48
49
  s.add_development_dependency(%q<rcov>, [">= 0"])
49
50
  else
50
51
  s.add_dependency(%q<erubis>, [">= 0"])
52
+ s.add_dependency(%q<rake>, ["= 0.8.7"])
51
53
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
52
54
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
53
55
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -55,6 +57,7 @@ Gem::Specification.new do |s|
55
57
  end
56
58
  else
57
59
  s.add_dependency(%q<erubis>, [">= 0"])
60
+ s.add_dependency(%q<rake>, ["= 0.8.7"])
58
61
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
59
62
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
60
63
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
data/spec/logonxc_spec.rb CHANGED
@@ -14,6 +14,10 @@ describe "LogoNxc" do
14
14
  fd 200
15
15
  back 10
16
16
  bk 200
17
+ print "thing"
18
+ print 'other thing'
19
+ sleep 1000
20
+ beep
17
21
  TEXT
18
22
  end
19
23
 
@@ -52,6 +56,18 @@ describe "LogoNxc" do
52
56
  it "should translate bk" do
53
57
  @output[9].should == "back(200);"
54
58
  end
59
+ it "should translate print with double quotes" do
60
+ @output[10].should == 'print("thing");'
61
+ end
62
+ it "should translate print with single quotes" do
63
+ @output[11].should == 'print("other thing");'
64
+ end
65
+ it "should translate sleep" do
66
+ @output[12].should == 'wait(1000);'
67
+ end
68
+ it "should translate beep" do
69
+ @output[13].should == 'beep();'
70
+ end
55
71
  end
56
72
 
57
73
  describe ".nxc" do
@@ -1,52 +1,88 @@
1
- #define POWER 50 // was 50
2
- #define TURN_TIME_90 1800 // was 1670
3
- #define PACE_TIME 100 // was 1000
1
+ #define POWER 50
2
+ #define PACE_ROTATION_DEGREES 516
3
+ #define TURN_90_ROTATION_DEGREES 506
4
+
5
+ int wait_time = 100;
6
+ bool beeping = true;
4
7
 
5
8
  sub print(string text) {
6
9
  ClearScreen();
7
10
  TextOut(0,0, text);
8
11
  }
9
12
 
10
- inline int degrees_to_turn_time(int degrees) {
11
- float one_degree_time = TURN_TIME_90 / 90.0;
12
- int turn_time = one_degree_time * degrees;
13
- return turn_time;
13
+ sub wait(int ms) {
14
+ Wait(ms);
15
+ }
16
+
17
+ sub beep() {
18
+ PlaySound(SOUND_FAST_UP);
14
19
  }
15
20
 
16
- sub turn(int degrees) {
17
- if (degrees < 0) {
18
- degrees = degrees * -1;
19
- OnRev(OUT_C, POWER);
20
- OnFwd(OUT_B, POWER);
21
- } else {
22
- OnFwd(OUT_C, POWER);
23
- OnRev(OUT_B, POWER);
21
+ sub move_wait() {
22
+ wait(wait_time);
23
+ }
24
+
25
+ sub move_beep() {
26
+ if (beeping == true) {
27
+ beep();
24
28
  }
25
- Wait(degrees_to_turn_time(degrees));
26
- Off(OUT_BC);
27
- Wait(1000);
29
+ }
30
+
31
+ sub move_end() {
32
+ move_beep();
33
+ move_wait();
34
+ }
35
+
36
+ sub set_move_wait(int ms) {
37
+ wait_time = ms;
38
+ }
39
+
40
+ sub set_move_beep(bool val) {
41
+ beeping = val;
42
+ }
43
+
44
+ inline int degrees_to_rotation_degrees(int degrees) {
45
+ float one_degree_time = TURN_90_ROTATION_DEGREES / 90.0;
46
+ int rotation_degrees = one_degree_time * degrees;
47
+ return rotation_degrees;
28
48
  }
29
49
 
30
50
  sub right(int degrees) {
31
- turn(degrees);
51
+ RotateMotorEx(OUT_BC, POWER, degrees_to_rotation_degrees(degrees), 100, true, true);
52
+ move_end();
32
53
  }
33
54
 
34
55
  sub left(int degrees) {
35
- turn(-degrees);
56
+ RotateMotorEx(OUT_BC, POWER, degrees_to_rotation_degrees(degrees), -100, true, true);
57
+ move_end();
36
58
  }
37
59
 
38
60
  sub forward(int paces) {
39
- OnFwd(OUT_BC, POWER);
40
- Wait(paces * PACE_TIME);
61
+ RotateMotor(OUT_BC, POWER, (PACE_ROTATION_DEGREES * paces));
62
+ move_end();
41
63
  }
42
64
 
43
65
  sub back(int paces) {
44
- OnRev(OUT_BC, POWER);
45
- Wait(paces * PACE_TIME);
66
+ RotateMotor(OUT_BC, POWER, (-PACE_ROTATION_DEGREES * paces));
67
+ move_end();
68
+ }
69
+
70
+ task maze() {
71
+ <%= nxc_block %>
72
+ wait(2000);
73
+ }
74
+
75
+ task red() {
76
+ SetSensorColorFull(IN_1); // initialize the color sensor
77
+ while(true) {
78
+ if(Sensor(IN_1) == INPUT_REDCOLOR) {
79
+ PlayToneEx (400, 100, 4, false);
80
+ }
81
+ }
46
82
  }
47
83
 
48
84
  task main() {
49
85
 
50
- <%= nxc_block %>
86
+ Precedes(red, maze);
51
87
 
52
- }
88
+ }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logonxc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Deb Bassett
@@ -15,10 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-02 00:00:00 Z
18
+ date: 2011-11-18 00:00:00 +00:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ name: erubis
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
24
  none: false
23
25
  requirements:
24
26
  - - ">="
@@ -27,12 +29,28 @@ dependencies:
27
29
  segments:
28
30
  - 0
29
31
  version: "0"
30
- version_requirements: *id001
31
- name: erubis
32
32
  prerelease: false
33
33
  type: :runtime
34
+ requirement: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rake
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - "="
41
+ - !ruby/object:Gem::Version
42
+ hash: 49
43
+ segments:
44
+ - 0
45
+ - 8
46
+ - 7
47
+ version: 0.8.7
48
+ prerelease: false
49
+ type: :runtime
50
+ requirement: *id002
34
51
  - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
52
+ name: rspec
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
36
54
  none: false
37
55
  requirements:
38
56
  - - ~>
@@ -43,12 +61,12 @@ dependencies:
43
61
  - 3
44
62
  - 0
45
63
  version: 2.3.0
46
- version_requirements: *id002
47
- name: rspec
48
64
  prerelease: false
49
65
  type: :development
66
+ requirement: *id003
50
67
  - !ruby/object:Gem::Dependency
51
- requirement: &id003 !ruby/object:Gem::Requirement
68
+ name: bundler
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
52
70
  none: false
53
71
  requirements:
54
72
  - - ~>
@@ -59,12 +77,12 @@ dependencies:
59
77
  - 0
60
78
  - 0
61
79
  version: 1.0.0
62
- version_requirements: *id003
63
- name: bundler
64
80
  prerelease: false
65
81
  type: :development
82
+ requirement: *id004
66
83
  - !ruby/object:Gem::Dependency
67
- requirement: &id004 !ruby/object:Gem::Requirement
84
+ name: jeweler
85
+ version_requirements: &id005 !ruby/object:Gem::Requirement
68
86
  none: false
69
87
  requirements:
70
88
  - - ~>
@@ -75,12 +93,12 @@ dependencies:
75
93
  - 6
76
94
  - 4
77
95
  version: 1.6.4
78
- version_requirements: *id004
79
- name: jeweler
80
96
  prerelease: false
81
97
  type: :development
98
+ requirement: *id005
82
99
  - !ruby/object:Gem::Dependency
83
- requirement: &id005 !ruby/object:Gem::Requirement
100
+ name: rcov
101
+ version_requirements: &id006 !ruby/object:Gem::Requirement
84
102
  none: false
85
103
  requirements:
86
104
  - - ">="
@@ -89,10 +107,9 @@ dependencies:
89
107
  segments:
90
108
  - 0
91
109
  version: "0"
92
- version_requirements: *id005
93
- name: rcov
94
110
  prerelease: false
95
111
  type: :development
112
+ requirement: *id006
96
113
  description: Parse basic logo and output NXC for Lego Mindstorms
97
114
  email: deb@urbanwide.com
98
115
  executables: []
@@ -116,6 +133,7 @@ files:
116
133
  - spec/logonxc_spec.rb
117
134
  - spec/spec_helper.rb
118
135
  - templates/logonxc.erb
136
+ has_rdoc: true
119
137
  homepage: http://github.com/urbanwide/logonxc
120
138
  licenses:
121
139
  - MIT
@@ -145,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
163
  requirements: []
146
164
 
147
165
  rubyforge_project:
148
- rubygems_version: 1.8.10
166
+ rubygems_version: 1.5.3
149
167
  signing_key:
150
168
  specification_version: 3
151
169
  summary: Logo to Lego NXC