annyang_rails 1.0.0 → 1.1.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.
- checksums.yaml +8 -8
- data/app/assets/javascripts/annyang.js +40 -16
- data/lib/annyang_rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTAwMzQ2Nzg5ODM2NzI5ODhkMTE0ZDZmN2JlY2ExMzBhYTkyNzExZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDFjNWVmYTJkODcxODY1NjU0MWE0NWEzMzNjZDFkNDdhMDhjMjkxNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZWJjYjFmMDEyMjFjMWJmMzBlODlkOTlkNTM2MTY0MmE1MTg4Zjc0ZTdmYTBm
|
10
|
+
ZjhjZDU4ZGI0MzBmYjZiNDUzZDQzNjJkMjA2NzlkNTlmMWY1YjE5MTBlYWY2
|
11
|
+
MGRiOGYzN2EzMDMwYTg2ZGY3OWRkZjk0OTFhZWRkNjU1MTdjNWY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Y2EzZDBjZGExYTIzYzljNGYxOTdjNzNkMDc0NWRiMzYwZjIwYzY4NTdmZGFh
|
14
|
+
MDljYzViOTNjNTRmODZlY2E3Mzg2MDcwODlmNWI5MTk2NDU0MTQyZTRmYzA4
|
15
|
+
MThlZTI0YzY3ZjA0OTViMGQ2MDJjMWU4M2NkZDE5NTYzMGE5M2Q=
|
@@ -1,9 +1,9 @@
|
|
1
1
|
//! annyang
|
2
|
-
//! version : 1.
|
2
|
+
//! version : 1.1.0
|
3
3
|
//! author : Tal Ater @TalAter
|
4
4
|
//! license : MIT
|
5
5
|
//! https://www.TalAter.com/annyang/
|
6
|
-
(function () {
|
6
|
+
(function (undefined) {
|
7
7
|
"use strict";
|
8
8
|
|
9
9
|
// Save a reference to the global object (window in the browser)
|
@@ -20,12 +20,11 @@
|
|
20
20
|
// This is done as early as possible, to make it as fast as possible for unsupported browsers
|
21
21
|
if (!SpeechRecognition) {
|
22
22
|
root.annyang = null;
|
23
|
-
return
|
23
|
+
return undefined;
|
24
24
|
}
|
25
25
|
|
26
|
-
var commandsList;
|
26
|
+
var commandsList = [];
|
27
27
|
var recognition;
|
28
|
-
var lang = 'en-US';
|
29
28
|
var callbacks = { start: [], error: [], end: [], result: [], resultMatch: [], resultNoMatch: [], errorNetwork: [], errorPermissionBlocked: [], errorPermissionDenied: [] };
|
30
29
|
var autoRestart;
|
31
30
|
var lastStartedAt = 0;
|
@@ -56,11 +55,28 @@
|
|
56
55
|
});
|
57
56
|
};
|
58
57
|
|
58
|
+
var initIfNeeded = function() {
|
59
|
+
if (!isInitialized()) {
|
60
|
+
root.annyang.init({}, false);
|
61
|
+
}
|
62
|
+
};
|
63
|
+
|
64
|
+
var isInitialized = function() {
|
65
|
+
return recognition !== undefined;
|
66
|
+
};
|
67
|
+
|
59
68
|
root.annyang = {
|
60
69
|
// Initialize annyang with a list of commands to recognize.
|
61
70
|
// e.g. annyang.init({'hello :name': helloFunction})
|
62
71
|
// annyang understands commands with named variables, splats, and optional words.
|
63
|
-
init: function(commands) {
|
72
|
+
init: function(commands, resetCommands) {
|
73
|
+
|
74
|
+
// resetCommands defaults to true
|
75
|
+
if (resetCommands === undefined) {
|
76
|
+
resetCommands = true;
|
77
|
+
} else {
|
78
|
+
resetCommands = !!resetCommands;
|
79
|
+
}
|
64
80
|
|
65
81
|
// Abort previous instances of recognition already running
|
66
82
|
if (recognition && recognition.abort) {
|
@@ -74,7 +90,7 @@
|
|
74
90
|
recognition.maxAlternatives = 5;
|
75
91
|
recognition.continuous = true;
|
76
92
|
// Sets the language to the default 'en-US'. This can be changed with annyang.setLanguage()
|
77
|
-
recognition.lang =
|
93
|
+
recognition.lang = 'en-US';
|
78
94
|
|
79
95
|
recognition.onstart = function() { invokeCallbacks(callbacks.start); };
|
80
96
|
|
@@ -147,8 +163,12 @@
|
|
147
163
|
};
|
148
164
|
|
149
165
|
// build commands list
|
150
|
-
|
151
|
-
|
166
|
+
if (resetCommands) {
|
167
|
+
commandsList = [];
|
168
|
+
}
|
169
|
+
if (commands.length) {
|
170
|
+
this.addCommands(commands);
|
171
|
+
}
|
152
172
|
},
|
153
173
|
|
154
174
|
// Start listening (asking for permission first, if needed).
|
@@ -156,8 +176,9 @@
|
|
156
176
|
// Receives an optional options object:
|
157
177
|
// { autoRestart: true }
|
158
178
|
start: function(options) {
|
179
|
+
initIfNeeded();
|
159
180
|
options = options || {};
|
160
|
-
if (options.autoRestart !==
|
181
|
+
if (options.autoRestart !== undefined) {
|
161
182
|
autoRestart = !!options.autoRestart;
|
162
183
|
} else {
|
163
184
|
autoRestart = true;
|
@@ -169,7 +190,9 @@
|
|
169
190
|
// abort the listening session (aka stop)
|
170
191
|
abort: function() {
|
171
192
|
autoRestart = false;
|
172
|
-
|
193
|
+
if (isInitialized) {
|
194
|
+
recognition.abort();
|
195
|
+
}
|
173
196
|
},
|
174
197
|
|
175
198
|
// Turn on output of debug messages to the console. Ugly, but super-handy!
|
@@ -184,16 +207,17 @@
|
|
184
207
|
// Set the language the user will speak in. If not called, defaults to 'en-US'.
|
185
208
|
// e.g. 'fr-FR' (French-France), 'es-CR' (Español-Costa Rica)
|
186
209
|
setLanguage: function(language) {
|
187
|
-
|
188
|
-
|
189
|
-
recognition.lang = language;
|
190
|
-
}
|
210
|
+
initIfNeeded();
|
211
|
+
recognition.lang = language;
|
191
212
|
},
|
192
213
|
|
193
214
|
// Add additional commands that annyang will respond to. Similar in syntax to annyang.init()
|
194
215
|
addCommands: function(commands) {
|
195
216
|
var cb,
|
196
217
|
command;
|
218
|
+
|
219
|
+
initIfNeeded();
|
220
|
+
|
197
221
|
for (var phrase in commands) {
|
198
222
|
if (commands.hasOwnProperty(phrase)) {
|
199
223
|
cb = root[commands[phrase]] || commands[phrase];
|
@@ -228,7 +252,7 @@
|
|
228
252
|
// start, error, end, result, resultMatch, resultNoMatch, errorNetwork, errorPermissionBlocked, errorPermissionDenied
|
229
253
|
// Can also optionally receive a context for the callback function as the third argument
|
230
254
|
addCallback: function(type, callback, context) {
|
231
|
-
if (callbacks[type] ===
|
255
|
+
if (callbacks[type] === undefined) {
|
232
256
|
return;
|
233
257
|
}
|
234
258
|
var cb = root[callback] || callback;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: annyang_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guy Israeli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|