Most Javascript programmers are more than happy with regular expressions. However, there are times when something like wildcards ('?' for one character and '*' for many) would be helpful.
Jack Handy's first and last (it seems) article on CodeProject implemented a wildcard string compare (also known as 'globbing') function in C. Below I present my port of that function to Javascript.
As a newbie Javascript programmer (4 weeks in as of 2010-11-30), I've pleasantly surprised by the expressive power of Javascript. What has caught my eye recently is the power of .prototype., so this implementation of matchesWild() is declared as a prototype extending the String class.
Here's the code, with some commentary:Apart from the comments, notice the way Javascript adds a method to an object, defining an anonymous function with, in this case, one parameter, and assigning it as a prototype.The C version did all kinds of interesting things with pointers. Javascript doesn't have that kind of stuff (AFAICT), so I had to do the equivalent with numeric offsets and substr().
Perhaps there are better ways of doing this. I have tried to do this kind of thing before, but this code seems to do a pretty good job of it and hasn't failed thus far.
What should be noted, and perhaps dealt with, is that there is no explicit check for calling the method without a parameter. If one does this, an error is raised. Chrome's V8 raises "TypeError: Cannot call method 'substr' of undefined".And now some examples (evaluated using macports's JavaScript-C 1.7.0 2007-10-03)Outputs:More Javascript coming soon. In the meantime, enjoy.
© Bruce M. Axtens, 2010
Past (20 years or so) and present code. A variety of languages and platforms. Some gems. More gravel. Some useful stuff and some examples of how not to do it.
Tuesday, November 30, 2010
Tuesday, November 16, 2010
[iSync] Nokia 5000d-2
After looking around for a while I finally figured out how to get Apple iSync to talk reliably to my Nokia 5000d-2. Most of the other 'solutions' assume that the 5000 is a Series 60 phone. It is in fact a series 40 phone, thus the
The image for the phone was downloaded from ericfish.com and copied into the /Applications/iSync.app/Contents/PlugIns/ApplePhoneConduit.syncdevice/Contents/PlugIns/PhoneModelsSync.phoneplugin/Contents/Resources/ folder.
The following code was merged into the MetaClasses.plist file in /Applications/iSync.app/Contents/PlugIns/ApplePhoneConduit.syncdevice/Contents/PlugIns/PhoneModelsSync.phoneplugin/Contents/Resources/
I hope someone finds this helpful. It certainly makes things a bit easier for me. Now all I have to do is figure out how to manage the SMS subsystem. Gammu looks promising, once I figure out the link error. More on that another time.
© Bruce M. Axtens, 2010
family.com.nokia.series40.3rdEd.bus.bt
.The image for the phone was downloaded from ericfish.com and copied into the /Applications/iSync.app/Contents/PlugIns/ApplePhoneConduit.syncdevice/Contents/PlugIns/PhoneModelsSync.phoneplugin/Contents/Resources/ folder.
The following code was merged into the MetaClasses.plist file in /Applications/iSync.app/Contents/PlugIns/ApplePhoneConduit.syncdevice/Contents/PlugIns/PhoneModelsSync.phoneplugin/Contents/Resources/
I hope someone finds this helpful. It certainly makes things a bit easier for me. Now all I have to do is figure out how to manage the SMS subsystem. Gammu looks promising, once I figure out the link error. More on that another time.
© Bruce M. Axtens, 2010
Labels:
5000d-2,
Apple,
iSync,
MetaClasses.plist,
Nokia
Subscribe to:
Posts (Atom)