Atul and I have updated the Command Conversion tutorial to reflect the
addition of CmdUtil.parserVersion.  For versions prior to 0.1.9, you
can just check to see if it returns a value.

 if (!CmdUtils.parserVersion || CmdUtils.parserVersion == 1)
   //parser 1 command here
 else
   //parser 2 command here

https://wiki.mozilla.org/Labs/Ubiquity/Parser_2_API_Conversion_Tutorial#Supporting_both_Parser_1_and_Parser_2_in_Your_Command_Feed

On Jul 10, 9:14 am, Heather <[email protected]> wrote:
> Actually, CmdUtils.parserVersion was added to 0.1.9 too, and will
> always return 1.  You are right that it will break for versions prior
> to 0.1.9.
>
> On Jul 10, 3:55 am, garyhodgson <[email protected]> wrote:
>
> > Hi,
>
> > I'm glad that the parserVersion hack is useful, but it's worth noting
> > that this is only useful for people who have upgraded to 0.5 or
> > greater.  To cater for people who have not upgraded, the function
> > still has to be defined in the command itself.  And if you do
> > implement it in the command itself please note the following...
>
> > The function added in CmdUtils (https://ubiquity.mozilla.com/hg/
> > ubiquity-firefox/rev/651ba8eea7bf) leaves out the following check:
>
> >         return (branch.getPrefType("parserVersion") != 0) ? 
> > branch.getIntPref
> > ("parserVersion") == 2 : false;
>
> > Versions prior to 0.5 of course do not have this parserVersion
> > preference and so getIntPref fails with an exception:
>
> >         [Exception... "Component returned failure code: 0x8000ffff
> > (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getIntPref]" nsresult:
> > "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: file:///
> > ... /extensions/[email protected]/modules/
> > sandboxfactory.js#ubiquity://command-editor-code :: parserVersion ::
> > line 5" data: no]
>
> > nsIPrefBranch seems to lack some basic functionality such as a
> > "hasPref" function, or even a nice degradation on the getPref
> > functions, and so using the following function works with versions
> > prior to 0.5:
>
> >         function parserVersion() {
> >                 var prefs = 
> > Components.classes["@mozilla.org/preferences-service;
> > 1"].getService(Components.interfaces.nsIPrefService);
> >                 var branch = prefs.getBranch("extensions.ubiquity.");
> >                 return (branch.getPrefType("parserVersion") != 0) ? 
> > branch.getIntPref
> > ("parserVersion") == 2 : false;
> >         }
>
> > Cheers,
> > Gary
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ubiquity-firefox" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/ubiquity-firefox?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to