From 3265fb995652759706364421cb20a8027a7524de Mon Sep 17 00:00:00 2001 From: William Toohey Date: Wed, 19 Oct 2016 23:46:48 +1000 Subject: [PATCH] firstSong name now uses fuzzy instead of exact match --- src/js/HuesCore.js | 10 +++++++--- src/js/string_score.min.js | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 src/js/string_score.min.js diff --git a/src/js/HuesCore.js b/src/js/HuesCore.js index 856fb1c..1439cbd 100644 --- a/src/js/HuesCore.js +++ b/src/js/HuesCore.js @@ -453,12 +453,16 @@ class HuesCore { setSongByName(name) { let songs = this.resourceManager.enabledSongs; + let bestSong = 0; + let bestScore = 0; for(let i = 0; i < songs.length; i++) { - if(songs[i].title == name) { - return this.setSong(i); + let score = songs[i].title.score(name); + if(score > bestScore) { + bestScore = score; + bestSong = i; } } - return this.setSong(0); // fallback + return this.setSong(bestSong); } /* To set songs via reference instead of index - used in HuesEditor */ diff --git a/src/js/string_score.min.js b/src/js/string_score.min.js new file mode 100644 index 0000000..9a58a17 --- /dev/null +++ b/src/js/string_score.min.js @@ -0,0 +1,3 @@ +// String Scoring Algorithm 0.1.22 | (c) 2009-2015 Joshaven Potter +// MIT License: http://opensource.org/licenses/MIT | https://github.com/joshaven/string_score +String.prototype.score=function(e,f){if(this===e)return 1;if(""===e)return 0;var d=0,a,g=this.toLowerCase(),n=this.length,h=e.toLowerCase(),k=e.length,b;a=0;var l=1,m,c;f&&(m=1-f);if(f)for(c=0;cd&&(d+=.15);return d};