Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

liquidmetal

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

liquidmetal

A mimetic poly-alloy of the Quicksilver scoring algorithm, essentially LiquidMetal. `</Schwarzenegger Voice>`

  • 1.3.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
95
increased by239.29%
Maintainers
1
Weekly downloads
 
Created
Source

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, Alfred, 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.


How You Can Help

Square Cash Gratipay Book a Codementor session

If you like this project, buy me a coffee, donate via Gratipay, or book a session with me on Codementor.

Bitcoin: 1rmm5tv6f997JK5bLcGbRCZyVjZUPkQ2m

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

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 (Quicksilver.js) is case sensitive and doesn't give added weight to camel case strings; whereas, LiquidMetal is case insensitive and does give added weight to uppercase letters in camel case strings.

Todo

  • More tests
  • Consider tweaking the scores for "trailing" characters
  • Improve implementation of highest score matching (LiquidMetal currently returns the highest scoring match for an abbreviation, but is inefficient)
  • See if it's possible to tune the performance further

Author

Ryan McGeary (@rmm5t)

Other

MIT License

Copyright (c) 2009-2014, Ryan McGeary (ryan -[at]- mcgeary [dot] org)

FAQs

Package last updated on 30 Sep 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc