diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2016-06-04 16:11:22 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2016-06-04 16:11:22 -0400 |
| commit | 46562b4b62f6dd11dc19d401516d282c59de1cca (patch) | |
| tree | b37b33ecd7da52510b7f4ec1f8acc46ff5e0e9de /fuzzel_min.lua | |
| parent | 335da258f84a16233d3e7daaf382534a268af118 (diff) | |
| download | fuzzel-46562b4b62f6dd11dc19d401516d282c59de1cca.tar.gz fuzzel-46562b4b62f6dd11dc19d401516d282c59de1cca.tar.bz2 fuzzel-46562b4b62f6dd11dc19d401516d282c59de1cca.zip | |
Updated fuzzel to use the lua 5.1 way of doing modules
Diffstat (limited to 'fuzzel_min.lua')
| -rw-r--r-- | fuzzel_min.lua | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fuzzel_min.lua b/fuzzel_min.lua index d2cec2c..4e845b3 100644 --- a/fuzzel_min.lua +++ b/fuzzel_min.lua @@ -1,2 +1,2 @@ --This file has been minified! For the original, see cogarr.net/source/ -local a,b,c,d,e,f,g,h=string.len,string.byte,math.min,assert,pairs,ipairs,type,unpack;module("fuzzel")function LevenshtienDistance_extended(i,j,k,l,m,...)local n,o=a(i),a(j)local p={}for q=0,n do p[q]={}for r=0,o do p[q][r]=0 end end;for q=1,n do p[q][0]=q end;for r=1,o do p[0][r]=r end;for r=1,o do for q=1,n do local s=b(i,q)local t=b(j,r)p[q][r]=c(p[q-1][r]+m,p[q][r-1]+k,p[q-1][r-1]+(s==t and 0 or l))if arg[1]and q>1 and r>1 and s==b(j,r-1)and b(i,q-1)==t then p[q][r]=c(p[q][r],p[q-2][r-2]+(s==t and 0 or arg[2]))end end end;return p[n][o]end;function LevenshtienDistance(i,j)return LevenshtienDistance_extended(i,j,1,1,1,false,0)end;function LevenshteinRatio(i,j)return LevenshtienDistance(i,j)/a(i)end;function DamerauLevenshtienDistance_extended(i,j,k,l,m,u)return LevenshtienDistance_extended(i,j,k,l,m,true,u)end;function DamerauLevenshtienDistance(i,j)return DamerauLevenshtienDistance_extended(i,j,1,1,1,1)end;function DamerauLevenshtienRatio(i,j)return DamerauLevenshtienDistance(i,j)/a(i)end;function HammingDistance(i,j)local v=a(i)d(v==a(j),"Hamming Distance cannot be calculated on two strings of different lengths:\""..i.."\" \""..j.."\"")local w=0;for q=1,v do w=w+(b(i,q)~=b(j,q)and 1)end;return w end;function HammingRatio(i,j)return HammingDistance(i,j)/a(i)end;local function x(y,z,...)local A=g(arg[1])=="table"and e or f;local B=z(arg[1],y)local C=arg[1]for D,E in A(arg)do local F=z(E,y)if F<B then B=F;C=E end end;return C,B end;function FuzzySearchDistance(y,...)return h{x(y,DamerauLevenshtienDistance,...)}end;function FuzzySearchRatio(y,...)return h{x(y,DamerauLevenshtienRatio,...)}end;ld_e=LevenshtienDistance_extended;ld=LevenshtienDistance;lr=LevensteinRatio;dld_e=DamerauLevenshtienDistance_extended;dld=DamerauLevenshtienDistance;dlr=DamerauLevenshtienRatio;hd=HammingDistance;hr=HammingRatio;fsd=FuzzySearchDistance;fsr=FuzzySearchRatio +local a,b,c,d,e,f,g,h=string.len,string.byte,math.min,assert,pairs,ipairs,type,unpack;local i={}local function j(k,l,m,n,o,...)local p,q=a(k),a(l)local r={}for s=0,p do r[s]={}for t=0,q do r[s][t]=0 end end;for s=1,p do r[s][0]=s end;for t=1,q do r[0][t]=t end;for t=1,q do for s=1,p do local u=b(k,s)local v=b(l,t)r[s][t]=c(r[s-1][t]+o,r[s][t-1]+m,r[s-1][t-1]+(u==v and 0 or n))if arg[1]and s>1 and t>1 and u==b(l,t-1)and b(k,s-1)==v then r[s][t]=c(r[s][t],r[s-2][t-2]+(u==v and 0 or arg[2]))end end end;return r[p][q]end;function i.LevenshtienDistance_extended(k,l,m,n,o)return i.genericDistance(k,l,m,n,o)end;function i.LevenshtienDistance(k,l)return i.LevenshtienDistance_extended(k,l,1,1,1)end;function i.LevenshteinRatio(k,l)return i.LevenshtienDistance(k,l)/a(k)end;function i.DamerauLevenshtienDistance_extended(k,l,m,n,o,w)return j(k,l,m,n,o,true,w)end;function i.DamerauLevenshtienDistance(k,l)return i.DamerauLevenshtienDistance_extended(k,l,1,1,1,1)end;function i.DamerauLevenshtienRatio(k,l)return i.DamerauLevenshtienDistance(k,l)/a(k)end;function i.HammingDistance(k,l)local x=a(k)d(x==a(l),"Hamming Distance cannot be calculated on two strings of different lengths:\""..k.."\" \""..l.."\"")local y=0;for s=1,x do y=y+(b(k,s)~=b(l,s)and 1)end;return y end;function i.HammingRatio(k,l)return i.HammingDistance(k,l)/a(k)end;local function z(A,B,...)local C=g(arg[1])=="table"and arg[1]or arg;local D=B(C[1],A)local E=C[1]for F,G in e(C)do local H=B(G,A)if H<D then D=H;E=G end end;return E,D end;function i.FuzzySearchDistance(A,...)return h{z(A,i.DamerauLevenshtienDistance,...)}end;function i.FuzzySearchRatio(A,...)return h{z(A,i.DamerauLevenshtienRatio,...)}end;i.ld_e=i.LevenshtienDistance_extended;i.ld=i.LevenshtienDistance;i.lr=i.LevensteinRatio;i.dld_e=i.DamerauLevenshtienDistance_extended;i.dld=i.DamerauLevenshtienDistance;i.dlr=i.DamerauLevenshtienRatio;i.hd=i.HammingDistance;i.hr=i.HammingRatio;i.fsd=i.FuzzySearchDistance;i.fsr=i.FuzzySearchRatio;return i |
