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 +1 -0
- data/Gemfile.lock +2 -1
- data/VERSION +1 -1
- data/lib/logonxc.rb +6 -0
- data/logonxc.gemspec +11 -8
- data/spec/logonxc_spec.rb +16 -0
- data/templates/logonxc.erb +62 -26
- metadata +38 -20
data/Gemfile
CHANGED
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.
|
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.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 =
|
8
|
-
s.version = "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 =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
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 =
|
34
|
+
s.homepage = %q{http://github.com/urbanwide/logonxc}
|
35
35
|
s.licenses = ["MIT"]
|
36
36
|
s.require_paths = ["lib"]
|
37
|
-
s.rubygems_version =
|
38
|
-
s.summary =
|
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
|
data/templates/logonxc.erb
CHANGED
@@ -1,52 +1,88 @@
|
|
1
|
-
#define POWER 50
|
2
|
-
#define
|
3
|
-
#define
|
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
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
sub wait(int ms) {
|
14
|
+
Wait(ms);
|
15
|
+
}
|
16
|
+
|
17
|
+
sub beep() {
|
18
|
+
PlaySound(SOUND_FAST_UP);
|
14
19
|
}
|
15
20
|
|
16
|
-
sub
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
40
|
-
|
61
|
+
RotateMotor(OUT_BC, POWER, (PACE_ROTATION_DEGREES * paces));
|
62
|
+
move_end();
|
41
63
|
}
|
42
64
|
|
43
65
|
sub back(int paces) {
|
44
|
-
|
45
|
-
|
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
|
-
|
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:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 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-
|
18
|
+
date: 2011-11-18 00:00:00 +00:00
|
19
|
+
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
166
|
+
rubygems_version: 1.5.3
|
149
167
|
signing_key:
|
150
168
|
specification_version: 3
|
151
169
|
summary: Logo to Lego NXC
|