Labs/Ubiquity/Ubiquity Source Tip Author Tutorial: Difference between revisions

Jump to navigation Jump to search
Line 406: Line 406:


Once you are familiar with writing commands, you should check out the [http://hg.toolness.com/ubiquity-firefox/file/6caa9d66b3bb/ubiquity/chrome/content/nlparser/en/nountypes.js nountypes.js], which has the implementation for most of the noun-types.  You can see what noun types are already available for your commands to use, what still needs to be written, and where the existing implementations could use improvement — and then come [[Labs/Ubiquity#Participation|get involved]] to help us improve them.
Once you are familiar with writing commands, you should check out the [http://hg.toolness.com/ubiquity-firefox/file/6caa9d66b3bb/ubiquity/chrome/content/nlparser/en/nountypes.js nountypes.js], which has the implementation for most of the noun-types.  You can see what noun types are already available for your commands to use, what still needs to be written, and where the existing implementations could use improvement — and then come [[Labs/Ubiquity#Participation|get involved]] to help us improve them.
=== Regexps as Noun Types ===
If none of the nountypes above is what you're looking for, there are several ways to define your own.  The simplest is to use a regular expression.  Suppose that (for whatever odd reason) you wanted your command to accept only arguments that begin with the letter N.  The following regexp matches words that start with N:
<pre>
  /^[nN]/
</pre>
You could use it as a noun type, like so:
<pre>
  arguments: [{role: "object",
              nountype: /^[nN]/,
              label: "word that starts with n"}]
</pre>
(Note that you do ''not'' put quotes around the regexp.)
A regexp nountype will reject input that doesn't match, but it doesn't know how to help the user by suggesting appropriate input.
=== Lists as Noun Types ===
=== Writing a Noun Type Object ===
The most involved way of creating a custom nountype is to write an object that implements a <code>suggest()</code> method (and, optionally, a <code>default()</code> method.)


Here's an example of what a noun type looks like:
Here's an example of what a noun type looks like:
1,007

edits

Navigation menu