This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Thu Feb 05 16:52:55 -0800 2009 | |
| |
README.markdown | Mon Jun 15 06:36:11 -0700 2009 | |
| |
liquidmetal.js | Mon Feb 09 14:17:47 -0800 2009 | |
| |
test.html | Sat Feb 07 08:27:44 -0800 2009 |
README.markdown
LiquidMetal
A mimetic poly-alloy of the Quicksilver scoring algorithm, essentially
LiquidMetal. </Schwarzenegger Voice>
Flex matching short abbreviations against longer strings is a boon in productivity for typists. Applications like Quicksilver, LaunchBar, and Launchy have made this method of keyboard entry a popular one. It's time to bring this same functionality to web controls. LiquidMetal makes scoring long strings against abbreviations easy.
Usage
Include the library:
<script src="liquidmetal.js" type="text/javascript"></script>
Score any string against an abbreviation:
LiquidMetal.score("FooBar", "foo") //=> 0.950
LiquidMetal.score("FooBar", "fb") //=> 0.917
LiquidMetal.score("Foo Bar", "fb") //=> 0.929
LiquidMetal.score("Foo Bar", "baz") //=> 0.0
LiquidMetal.score("Foo Bar", "") //=> 0.8
All scores fall between a range of 0.0 (no match) to 1.0 (perfect match).
Inspired By
- Quicksilver and its scoreForAbbreviation algorithm by Alcor
- Quicksilver.js by Lachie Cox
Why?
- To satisfy my own requirements for the jquery.flexselect plugin
- The Quicksilver algorithm doesn't give proper weight to abbreviations that match the first character of the scored string.
- The Quicksilver algorithm is extremely slow for certain length string/abbreviation combinations because of its use of recursion. While slightly slower for shorter length string/abbreviation combinations, LiquidMetal outperforms the Quicksilver algorithm by orders of magnitude under other conditions.
- The javascript version of the Quicksilver algorithm is case sensitive and doesn't give added weight to camel case strings.
Todo
- More tests
- Consider tweaking the scores for "trailing" characters
- Some abbreviations are capable of yielding multiple scores. Return the highest score instead of just the first.
- See if it's possible to tune the performance further.
Author
Other
Copyright (c) 2009, Ryan McGeary (ryanonjavascript -[at]- mcgeary [dot] org)








