libastag 0.0.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/CHANGES +7 -0
- data/MIT-LICENSE +19 -0
- data/README +65 -0
- data/Rakefile +276 -0
- data/TODO +7 -0
- data/doc/classes/Helpers/REXML/Attributes.html +179 -0
- data/doc/classes/Helpers/REXML.html +115 -0
- data/doc/classes/Helpers.html +181 -0
- data/doc/classes/Libastag/Rabbit.html +462 -0
- data/doc/classes/Libastag/RabitEar.html +120 -0
- data/doc/classes/Libastag/RabitLed.html +120 -0
- data/doc/classes/Libastag.html +141 -0
- data/doc/classes/Request/Action.html +213 -0
- data/doc/classes/Request/Base/Event.html +226 -0
- data/doc/classes/Request/Base/EventCollection.html +246 -0
- data/doc/classes/Request/Base.html +134 -0
- data/doc/classes/Request/GET_EARS_POSITION.html +151 -0
- data/doc/classes/Request/Query.html +244 -0
- data/doc/classes/Request/SetEarsPosition.html +213 -0
- data/doc/classes/Request/TtsMessage.html +235 -0
- data/doc/classes/Request.html +414 -0
- data/doc/classes/Response/AbuseSending.html +165 -0
- data/doc/classes/Response/Base/BadServerRsp.html +163 -0
- data/doc/classes/Response/Base/GoodServerRsp.html +161 -0
- data/doc/classes/Response/Base/ServerRsp.html +347 -0
- data/doc/classes/Response/Base.html +162 -0
- data/doc/classes/Response/Blacklist.html +165 -0
- data/doc/classes/Response/ChorNotSend.html +166 -0
- data/doc/classes/Response/ChorSend.html +165 -0
- data/doc/classes/Response/CommandSend.html +168 -0
- data/doc/classes/Response/EarPositionNotSend.html +165 -0
- data/doc/classes/Response/EarPositionSend.html +165 -0
- data/doc/classes/Response/EmptyServerRsp.html +161 -0
- data/doc/classes/Response/LangListUser.html +166 -0
- data/doc/classes/Response/LinkPreview.html +165 -0
- data/doc/classes/Response/ListFriend.html +165 -0
- data/doc/classes/Response/ListReceivedMsg.html +165 -0
- data/doc/classes/Response/MessageNotSend.html +165 -0
- data/doc/classes/Response/MessageSend.html +165 -0
- data/doc/classes/Response/NabCastNotSend.html +169 -0
- data/doc/classes/Response/NabCastSend.html +165 -0
- data/doc/classes/Response/NoCorrectParameters.html +165 -0
- data/doc/classes/Response/NoGoodTokenOrSerial.html +165 -0
- data/doc/classes/Response/NotV2Rabbit.html +165 -0
- data/doc/classes/Response/PositionEar.html +166 -0
- data/doc/classes/Response/ProtocolExcepion.html +164 -0
- data/doc/classes/Response/RabbitName.html +164 -0
- data/doc/classes/Response/RabbitSleep.html +164 -0
- data/doc/classes/Response/RabbitVersion.html +164 -0
- data/doc/classes/Response/Signature.html +164 -0
- data/doc/classes/Response/Timezone.html +164 -0
- data/doc/classes/Response/TtsNotSend.html +168 -0
- data/doc/classes/Response/TtsSend.html +165 -0
- data/doc/classes/Response/VoiceListTts.html +165 -0
- data/doc/classes/Response/WebRadioNotSend.html +165 -0
- data/doc/classes/Response/WebRadioSend.html +165 -0
- data/doc/classes/Response.html +337 -0
- data/doc/classes/VioletAPI.html +118 -0
- data/doc/created.rid +1 -0
- data/doc/dot/f_0.dot +14 -0
- data/doc/dot/f_0.png +0 -0
- data/doc/dot/f_4.dot +57 -0
- data/doc/dot/f_4.png +0 -0
- data/doc/dot/f_5.dot +489 -0
- data/doc/dot/f_5.png +0 -0
- data/doc/dot/f_6.dot +55 -0
- data/doc/dot/f_6.png +0 -0
- data/doc/dot/f_7.dot +30 -0
- data/doc/dot/f_7.png +0 -0
- data/doc/dot/f_8.dot +142 -0
- data/doc/dot/f_8.png +0 -0
- data/doc/files/CHANGES.html +126 -0
- data/doc/files/MIT-LICENSE.html +134 -0
- data/doc/files/README.html +192 -0
- data/doc/files/TODO.html +126 -0
- data/doc/files/lib/libastag_rb.html +116 -0
- data/doc/files/lib/violet/helpers_rb.html +123 -0
- data/doc/files/lib/violet/request_rb.html +133 -0
- data/doc/files/lib/violet/response_rb.html +220 -0
- data/doc/files/lib/violet/violetapi_rb.html +114 -0
- data/doc/fr_class_index.html +79 -0
- data/doc/fr_file_index.html +35 -0
- data/doc/fr_method_index.html +56 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/libastag.rb +116 -0
- data/lib/violet/helpers.rb +48 -0
- data/lib/violet/request.rb +301 -0
- data/lib/violet/response.rb +412 -0
- data/lib/violet/violetapi.rb +14 -0
- data/test/fake_violet_srv.rb +94 -0
- data/test/test_helpers.rb +31 -0
- data/test/test_request.rb +20 -0
- data/test/test_response.rb +295 -0
- data/test/test_send.rb +137 -0
- metadata +264 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
|
|
2
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
3
|
+
<!DOCTYPE html
|
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
|
|
9
|
+
Files
|
|
10
|
+
|
|
11
|
+
-->
|
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
13
|
+
<head>
|
|
14
|
+
<title>Files</title>
|
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
|
17
|
+
<base target="docwin" />
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<div id="index">
|
|
21
|
+
<h1 class="section-bar">Files</h1>
|
|
22
|
+
<div id="index-entries">
|
|
23
|
+
<a href="files/CHANGES.html">CHANGES</a><br />
|
|
24
|
+
<a href="files/MIT-LICENSE.html">MIT-LICENSE</a><br />
|
|
25
|
+
<a href="files/README.html">README</a><br />
|
|
26
|
+
<a href="files/TODO.html">TODO</a><br />
|
|
27
|
+
<a href="files/lib/libastag_rb.html">lib/libastag.rb</a><br />
|
|
28
|
+
<a href="files/lib/violet/helpers_rb.html">lib/violet/helpers.rb</a><br />
|
|
29
|
+
<a href="files/lib/violet/request_rb.html">lib/violet/request.rb</a><br />
|
|
30
|
+
<a href="files/lib/violet/response_rb.html">lib/violet/response.rb</a><br />
|
|
31
|
+
<a href="files/lib/violet/violetapi_rb.html">lib/violet/violetapi.rb</a><br />
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</body>
|
|
35
|
+
</html>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
3
|
+
<!DOCTYPE html
|
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
|
|
9
|
+
Methods
|
|
10
|
+
|
|
11
|
+
-->
|
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
13
|
+
<head>
|
|
14
|
+
<title>Methods</title>
|
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
|
17
|
+
<base target="docwin" />
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<div id="index">
|
|
21
|
+
<h1 class="section-bar">Methods</h1>
|
|
22
|
+
<div id="index-entries">
|
|
23
|
+
<a href="classes/Request/Base/Event.html#M000020">+ (Request::Base::Event)</a><br />
|
|
24
|
+
<a href="classes/Libastag/Rabbit.html#M000010">asleep? (Libastag::Rabbit)</a><br />
|
|
25
|
+
<a href="classes/Libastag/Rabbit.html#M000012">awake? (Libastag::Rabbit)</a><br />
|
|
26
|
+
<a href="classes/Response/Base/ServerRsp.html#M000006">bad? (Response::Base::ServerRsp)</a><br />
|
|
27
|
+
<a href="classes/Helpers.html#M000001">constantize (Helpers)</a><br />
|
|
28
|
+
<a href="classes/Request/Base/EventCollection.html#M000017">each (Request::Base::EventCollection)</a><br />
|
|
29
|
+
<a href="classes/Response/Base/ServerRsp.html#M000007">get_all (Response::Base::ServerRsp)</a><br />
|
|
30
|
+
<a href="classes/Response/Base/ServerRsp.html#M000005">good? (Response::Base::ServerRsp)</a><br />
|
|
31
|
+
<a href="classes/Libastag/Rabbit.html#M000009">name (Libastag::Rabbit)</a><br />
|
|
32
|
+
<a href="classes/Response/Base/ServerRsp.html#M000004">new (Response::Base::ServerRsp)</a><br />
|
|
33
|
+
<a href="classes/Request/Query.html#M000024">new (Request::Query)</a><br />
|
|
34
|
+
<a href="classes/Libastag/Rabbit.html#M000008">new (Libastag::Rabbit)</a><br />
|
|
35
|
+
<a href="classes/Request/Action.html#M000022">new (Request::Action)</a><br />
|
|
36
|
+
<a href="classes/Request/SetEarsPosition.html#M000029">new (Request::SetEarsPosition)</a><br />
|
|
37
|
+
<a href="classes/Request/Base/Event.html#M000019">new (Request::Base::Event)</a><br />
|
|
38
|
+
<a href="classes/Request/TtsMessage.html#M000027">new (Request::TtsMessage)</a><br />
|
|
39
|
+
<a href="classes/Request/Base/EventCollection.html#M000016">new (Request::Base::EventCollection)</a><br />
|
|
40
|
+
<a href="classes/Response.html#M000003">parse (Response)</a><br />
|
|
41
|
+
<a href="classes/Request/Query.html#M000026">send! (Request::Query)</a><br />
|
|
42
|
+
<a href="classes/Libastag/Rabbit.html#M000011">sleep! (Libastag::Rabbit)</a><br />
|
|
43
|
+
<a href="classes/Helpers/REXML/Attributes.html#M000002">to_hash (Helpers::REXML::Attributes)</a><br />
|
|
44
|
+
<a href="classes/Request/Base/EventCollection.html#M000018">to_url (Request::Base::EventCollection)</a><br />
|
|
45
|
+
<a href="classes/Request/Action.html#M000023">to_url (Request::Action)</a><br />
|
|
46
|
+
<a href="classes/Request/GET_EARS_POSITION.html#M000015">to_url (Request::GET_EARS_POSITION)</a><br />
|
|
47
|
+
<a href="classes/Request/Query.html#M000025">to_url (Request::Query)</a><br />
|
|
48
|
+
<a href="classes/Request/Base/Event.html#M000021">to_url (Request::Base::Event)</a><br />
|
|
49
|
+
<a href="classes/Request/TtsMessage.html#M000028">to_url (Request::TtsMessage)</a><br />
|
|
50
|
+
<a href="classes/Request/SetEarsPosition.html#M000030">to_url (Request::SetEarsPosition)</a><br />
|
|
51
|
+
<a href="classes/Libastag/Rabbit.html#M000014">version (Libastag::Rabbit)</a><br />
|
|
52
|
+
<a href="classes/Libastag/Rabbit.html#M000013">wakeup! (Libastag::Rabbit)</a><br />
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</body>
|
|
56
|
+
</html>
|
data/doc/index.html
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
|
5
|
+
|
|
6
|
+
<!--
|
|
7
|
+
|
|
8
|
+
libastag API documentation
|
|
9
|
+
|
|
10
|
+
-->
|
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
12
|
+
<head>
|
|
13
|
+
<title>libastag API documentation</title>
|
|
14
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
15
|
+
</head>
|
|
16
|
+
<frameset rows="20%, 80%">
|
|
17
|
+
<frameset cols="25%,35%,45%">
|
|
18
|
+
<frame src="fr_file_index.html" title="Files" name="Files" />
|
|
19
|
+
<frame src="fr_class_index.html" name="Classes" />
|
|
20
|
+
<frame src="fr_method_index.html" name="Methods" />
|
|
21
|
+
</frameset>
|
|
22
|
+
<frame src="files/README.html" name="docwin" />
|
|
23
|
+
</frameset>
|
|
24
|
+
</html>
|
data/doc/rdoc-style.css
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
|
|
2
|
+
body {
|
|
3
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
|
4
|
+
font-size: 90%;
|
|
5
|
+
margin: 0;
|
|
6
|
+
margin-left: 40px;
|
|
7
|
+
padding: 0;
|
|
8
|
+
background: white;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
|
12
|
+
h1 { font-size: 150%; }
|
|
13
|
+
h2,h3,h4 { margin-top: 1em; }
|
|
14
|
+
|
|
15
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
|
16
|
+
a:hover { background: #039; color: #eef; }
|
|
17
|
+
|
|
18
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
|
19
|
+
td > a {
|
|
20
|
+
background: transparent;
|
|
21
|
+
color: #039;
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* and inside a section title */
|
|
26
|
+
.section-title > a {
|
|
27
|
+
background: transparent;
|
|
28
|
+
color: #eee;
|
|
29
|
+
text-decoration: none;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* === Structural elements =================================== */
|
|
33
|
+
|
|
34
|
+
div#index {
|
|
35
|
+
margin: 0;
|
|
36
|
+
margin-left: -40px;
|
|
37
|
+
padding: 0;
|
|
38
|
+
font-size: 90%;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
div#index a {
|
|
43
|
+
margin-left: 0.7em;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
div#index .section-bar {
|
|
47
|
+
margin-left: 0px;
|
|
48
|
+
padding-left: 0.7em;
|
|
49
|
+
background: #ccc;
|
|
50
|
+
font-size: small;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
div#classHeader, div#fileHeader {
|
|
55
|
+
width: auto;
|
|
56
|
+
color: white;
|
|
57
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
|
58
|
+
margin: 0;
|
|
59
|
+
margin-left: -40px;
|
|
60
|
+
border-bottom: 3px solid #006;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
div#classHeader a, div#fileHeader a {
|
|
64
|
+
background: inherit;
|
|
65
|
+
color: white;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
div#classHeader td, div#fileHeader td {
|
|
69
|
+
background: inherit;
|
|
70
|
+
color: white;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
div#fileHeader {
|
|
75
|
+
background: #057;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
div#classHeader {
|
|
79
|
+
background: #048;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
.class-name-in-header {
|
|
84
|
+
font-size: 180%;
|
|
85
|
+
font-weight: bold;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
div#bodyContent {
|
|
90
|
+
padding: 0 1.5em 0 1.5em;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
div#description {
|
|
94
|
+
padding: 0.5em 1.5em;
|
|
95
|
+
background: #efefef;
|
|
96
|
+
border: 1px dotted #999;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
|
100
|
+
color: #125;;
|
|
101
|
+
background: transparent;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
div#validator-badges {
|
|
105
|
+
text-align: center;
|
|
106
|
+
}
|
|
107
|
+
div#validator-badges img { border: 0; }
|
|
108
|
+
|
|
109
|
+
div#copyright {
|
|
110
|
+
color: #333;
|
|
111
|
+
background: #efefef;
|
|
112
|
+
font: 0.75em sans-serif;
|
|
113
|
+
margin-top: 5em;
|
|
114
|
+
margin-bottom: 0;
|
|
115
|
+
padding: 0.5em 2em;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/* === Classes =================================== */
|
|
120
|
+
|
|
121
|
+
table.header-table {
|
|
122
|
+
color: white;
|
|
123
|
+
font-size: small;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.type-note {
|
|
127
|
+
font-size: small;
|
|
128
|
+
color: #DEDEDE;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.xxsection-bar {
|
|
132
|
+
background: #eee;
|
|
133
|
+
color: #333;
|
|
134
|
+
padding: 3px;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.section-bar {
|
|
138
|
+
color: #333;
|
|
139
|
+
border-bottom: 1px solid #999;
|
|
140
|
+
margin-left: -20px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
.section-title {
|
|
145
|
+
background: #79a;
|
|
146
|
+
color: #eee;
|
|
147
|
+
padding: 3px;
|
|
148
|
+
margin-top: 2em;
|
|
149
|
+
margin-left: -30px;
|
|
150
|
+
border: 1px solid #999;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.top-aligned-row { vertical-align: top }
|
|
154
|
+
.bottom-aligned-row { vertical-align: bottom }
|
|
155
|
+
|
|
156
|
+
/* --- Context section classes ----------------------- */
|
|
157
|
+
|
|
158
|
+
.context-row { }
|
|
159
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
|
160
|
+
.context-item-value { font-size: small; color: #448; }
|
|
161
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
|
162
|
+
|
|
163
|
+
/* --- Method classes -------------------------- */
|
|
164
|
+
.method-detail {
|
|
165
|
+
background: #efefef;
|
|
166
|
+
padding: 0;
|
|
167
|
+
margin-top: 0.5em;
|
|
168
|
+
margin-bottom: 1em;
|
|
169
|
+
border: 1px dotted #ccc;
|
|
170
|
+
}
|
|
171
|
+
.method-heading {
|
|
172
|
+
color: black;
|
|
173
|
+
background: #ccc;
|
|
174
|
+
border-bottom: 1px solid #666;
|
|
175
|
+
padding: 0.2em 0.5em 0 0.5em;
|
|
176
|
+
}
|
|
177
|
+
.method-signature { color: black; background: inherit; }
|
|
178
|
+
.method-name { font-weight: bold; }
|
|
179
|
+
.method-args { font-style: italic; }
|
|
180
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
|
181
|
+
|
|
182
|
+
/* --- Source code sections -------------------- */
|
|
183
|
+
|
|
184
|
+
a.source-toggle { font-size: 90%; }
|
|
185
|
+
div.method-source-code {
|
|
186
|
+
background: #262626;
|
|
187
|
+
color: #ffdead;
|
|
188
|
+
margin: 1em;
|
|
189
|
+
padding: 0.5em;
|
|
190
|
+
border: 1px dashed #999;
|
|
191
|
+
overflow: hidden;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
195
|
+
|
|
196
|
+
/* --- Ruby keyword styles --------------------- */
|
|
197
|
+
|
|
198
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
|
199
|
+
|
|
200
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
|
201
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
|
202
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
|
203
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
|
204
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
|
205
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
|
206
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
|
207
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
|
208
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
data/lib/libastag.rb
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# Handy class/methods to control a Nabastag.
|
|
4
|
+
module Libastag
|
|
5
|
+
VERSION = '0.0.1'
|
|
6
|
+
|
|
7
|
+
require File.join( File.dirname(__FILE__), 'violet', 'violetapi.rb' )
|
|
8
|
+
|
|
9
|
+
# this class store all attribute of a Nabaztag.
|
|
10
|
+
# it receive events and retrieve information
|
|
11
|
+
# from your user account or your #Rabbit
|
|
12
|
+
# (see public methods).
|
|
13
|
+
class Rabbit
|
|
14
|
+
# used to check serial
|
|
15
|
+
SERIAL_MATCHER = /^[0-9A-F]+$/i
|
|
16
|
+
# used to check token
|
|
17
|
+
TOKEN_MATCHER = /^[0-9]+$/
|
|
18
|
+
|
|
19
|
+
#Serial number of the Nabaztag that will receive events
|
|
20
|
+
attr_reader :serial
|
|
21
|
+
# The token is a series of digits given when you activate the Nabaztag receiver.
|
|
22
|
+
# This extra identification limits the risks of spam, since, in order to send
|
|
23
|
+
# a message, you need to know both the serial number and the toke
|
|
24
|
+
attr_reader :token
|
|
25
|
+
# object that handle left ear, see #RabbitEar.
|
|
26
|
+
attr_reader :left_ear
|
|
27
|
+
# object that handle right ear, see #RabbitEar.
|
|
28
|
+
attr_reader :right_ear
|
|
29
|
+
# object that handle top led, see #RabbitLed.
|
|
30
|
+
attr_reader :top_led
|
|
31
|
+
# object that handle left led, see #RabbitLed.
|
|
32
|
+
attr_reader :left_led
|
|
33
|
+
# object that handle middle led, see #RabbitLed.
|
|
34
|
+
attr_reader :middle_led
|
|
35
|
+
# object that handle right led, see #RabbitLed.
|
|
36
|
+
attr_reader :right_led
|
|
37
|
+
# object that handle bottom led, see #RabbitLed.
|
|
38
|
+
attr_reader :bottom_led
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
public
|
|
42
|
+
# create a new Rabbit with given +serial+ and +token+.
|
|
43
|
+
# make a *basic* syntax check of +serial+ and +token+
|
|
44
|
+
# (see #SERIAL_MATCHER and #TOKEN_MATCHER), but it doesn't mean
|
|
45
|
+
# that they are valid.
|
|
46
|
+
def initialize serial, token
|
|
47
|
+
raise ArgumentError.new("bad serial : #{serial}") unless serial =~ SERIAL_MATCHER
|
|
48
|
+
raise ArgumentError.new("bad token : #{token }") unless token =~ TOKEN_MATCHER
|
|
49
|
+
@serial = serial.upcase
|
|
50
|
+
@token = token.to_i
|
|
51
|
+
# _________ _________
|
|
52
|
+
# / \ / \
|
|
53
|
+
@right_ear, @left_ear = RabbitEar.new(:right), RabbitEar.new(:left)
|
|
54
|
+
# | | | |
|
|
55
|
+
# | | | |
|
|
56
|
+
# | | | |
|
|
57
|
+
# | | | |
|
|
58
|
+
# | | | |
|
|
59
|
+
# | | | |
|
|
60
|
+
# | | | |
|
|
61
|
+
# | | | |
|
|
62
|
+
# | |_________________| |
|
|
63
|
+
# | | | |
|
|
64
|
+
# | | | |
|
|
65
|
+
# | |
|
|
66
|
+
# | |
|
|
67
|
+
# | | | |
|
|
68
|
+
# | |
|
|
69
|
+
# | ___ |
|
|
70
|
+
@top_led = RabbitLed.new(:top)
|
|
71
|
+
# | | |
|
|
72
|
+
# | |
|
|
73
|
+
# | |
|
|
74
|
+
# | |
|
|
75
|
+
@right_led, @middle_led, @left_led = RabbitLed.new(:right), RabbitLed.new(:middle), RabbitLed.new(:left)
|
|
76
|
+
# | |
|
|
77
|
+
# | |
|
|
78
|
+
# | |
|
|
79
|
+
# | |
|
|
80
|
+
# | |
|
|
81
|
+
# | | |
|
|
82
|
+
# / \
|
|
83
|
+
@bottom_led = RabbitLed.new :bottom
|
|
84
|
+
# -----------------------------------------------
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def name
|
|
89
|
+
# TODO
|
|
90
|
+
end
|
|
91
|
+
def asleep?
|
|
92
|
+
# TODO
|
|
93
|
+
end
|
|
94
|
+
def sleep!
|
|
95
|
+
# TODO
|
|
96
|
+
end
|
|
97
|
+
def awake?
|
|
98
|
+
# TODO
|
|
99
|
+
end
|
|
100
|
+
def wakeup!
|
|
101
|
+
# TODO
|
|
102
|
+
end
|
|
103
|
+
def version
|
|
104
|
+
# TODO
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class RabitLed
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class RabitEar
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
==violet/helpers.rb
|
|
3
|
+
some handy class/methods and modifications.
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
module Helpers
|
|
7
|
+
require 'rexml/document'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# REXML::Attributes#to_hash seems to be broken.
|
|
11
|
+
class REXML::Attributes
|
|
12
|
+
if defined? to_hash
|
|
13
|
+
alias :to_hash_old :to_hash
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# convert attributes to an instance of Hash.
|
|
17
|
+
def to_hash
|
|
18
|
+
h = Hash.new
|
|
19
|
+
self.each { |key,value| h[key.to_sym] = value }
|
|
20
|
+
h
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# ==Credits
|
|
26
|
+
# taken from active_support/inflector.rb,
|
|
27
|
+
# see http://rubyforge.org/projects/activesupport
|
|
28
|
+
#
|
|
29
|
+
#
|
|
30
|
+
# ==Summary
|
|
31
|
+
# Constantize tries to find a declared constant with the name specified
|
|
32
|
+
# in the string. It raises a NameError when the name is not in CamelCase
|
|
33
|
+
# or is not initialized.
|
|
34
|
+
#
|
|
35
|
+
#
|
|
36
|
+
# ==Examples
|
|
37
|
+
# Helpers.constantize("Module") #=> Module
|
|
38
|
+
# Helpers.constantize("Class") #=> Class
|
|
39
|
+
def Helpers.constantize(camel_cased_word)
|
|
40
|
+
unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ camel_cased_word
|
|
41
|
+
raise NameError.new("#{camel_cased_word.inspect} is not a valid constant name!")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
Object.module_eval("::#{$1}", __FILE__, __LINE__)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|