logonxc 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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