diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fba1960..4a844691 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ NOTE: Before publishing: - run `deno task update` to update all dependencies including telo misikeke - set parameters on `project-data.json` -- Remove details +- update this very document, don't forget to add release date --> +## 0.5.2 + +Released 14 March 2025 + +- Change "Add word" button into "Import word". + ## 0.5.1 +Released 9 Mar 2025 + - Fix adverb placement within verbs: "sina o lape pona" can now translate into "You should nicely sleep" instead of "You nicely should sleep". - Fix "token is not defined" bug when telo misikeke error messages is turned on. ## 0.5.0 +Released 9 Mar 2025 + ilo Token can now translate "o" imperative sentences such as "o toki" and "mi o lape". diff --git a/deno.json b/deno.json index 6dc90f14..12df7a11 100644 --- a/deno.json +++ b/deno.json @@ -62,6 +62,6 @@ "@std/regexp": "jsr:@std/regexp@^1.0.1", "@std/text": "jsr:@std/text@^1.0.11", "compromise": "npm:compromise@^14.14.3", - "esbuild": "npm:esbuild@^0.25.0" + "esbuild": "npm:esbuild@^0.25.1" } } diff --git a/deno.lock b/deno.lock index 13ae85bf..fb10f62a 100644 --- a/deno.lock +++ b/deno.lock @@ -15,7 +15,7 @@ "jsr:@std/regexp@^1.0.1": "1.0.1", "jsr:@std/text@^1.0.11": "1.0.11", "npm:compromise@^14.14.3": "14.14.4", - "npm:esbuild@0.25": "0.25.0" + "npm:esbuild@~0.25.1": "0.25.1" }, "jsr": { "@luca/esbuild-deno-loader@0.11.1": { @@ -67,80 +67,80 @@ } }, "npm": { - "@esbuild/aix-ppc64@0.25.0": { - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==" + "@esbuild/aix-ppc64@0.25.1": { + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==" }, - "@esbuild/android-arm64@0.25.0": { - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==" + "@esbuild/android-arm64@0.25.1": { + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==" }, - "@esbuild/android-arm@0.25.0": { - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==" + "@esbuild/android-arm@0.25.1": { + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==" }, - "@esbuild/android-x64@0.25.0": { - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==" + "@esbuild/android-x64@0.25.1": { + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==" }, - "@esbuild/darwin-arm64@0.25.0": { - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==" + "@esbuild/darwin-arm64@0.25.1": { + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==" }, - "@esbuild/darwin-x64@0.25.0": { - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==" + "@esbuild/darwin-x64@0.25.1": { + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==" }, - "@esbuild/freebsd-arm64@0.25.0": { - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==" + "@esbuild/freebsd-arm64@0.25.1": { + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==" }, - "@esbuild/freebsd-x64@0.25.0": { - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==" + "@esbuild/freebsd-x64@0.25.1": { + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==" }, - "@esbuild/linux-arm64@0.25.0": { - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==" + "@esbuild/linux-arm64@0.25.1": { + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==" }, - "@esbuild/linux-arm@0.25.0": { - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==" + "@esbuild/linux-arm@0.25.1": { + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==" }, - "@esbuild/linux-ia32@0.25.0": { - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==" + "@esbuild/linux-ia32@0.25.1": { + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==" }, - "@esbuild/linux-loong64@0.25.0": { - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==" + "@esbuild/linux-loong64@0.25.1": { + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==" }, - "@esbuild/linux-mips64el@0.25.0": { - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==" + "@esbuild/linux-mips64el@0.25.1": { + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==" }, - "@esbuild/linux-ppc64@0.25.0": { - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==" + "@esbuild/linux-ppc64@0.25.1": { + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==" }, - "@esbuild/linux-riscv64@0.25.0": { - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==" + "@esbuild/linux-riscv64@0.25.1": { + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==" }, - "@esbuild/linux-s390x@0.25.0": { - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==" + "@esbuild/linux-s390x@0.25.1": { + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==" }, - "@esbuild/linux-x64@0.25.0": { - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==" + "@esbuild/linux-x64@0.25.1": { + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==" }, - "@esbuild/netbsd-arm64@0.25.0": { - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==" + "@esbuild/netbsd-arm64@0.25.1": { + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==" }, - "@esbuild/netbsd-x64@0.25.0": { - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==" + "@esbuild/netbsd-x64@0.25.1": { + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==" }, - "@esbuild/openbsd-arm64@0.25.0": { - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==" + "@esbuild/openbsd-arm64@0.25.1": { + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==" }, - "@esbuild/openbsd-x64@0.25.0": { - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==" + "@esbuild/openbsd-x64@0.25.1": { + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==" }, - "@esbuild/sunos-x64@0.25.0": { - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==" + "@esbuild/sunos-x64@0.25.1": { + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==" }, - "@esbuild/win32-arm64@0.25.0": { - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==" + "@esbuild/win32-arm64@0.25.1": { + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==" }, - "@esbuild/win32-ia32@0.25.0": { - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==" + "@esbuild/win32-ia32@0.25.1": { + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==" }, - "@esbuild/win32-x64@0.25.0": { - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==" + "@esbuild/win32-x64@0.25.1": { + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==" }, "compromise@14.14.4": { "integrity": "sha512-QdbJwronwxeqb7a5KFK/+Y5YieZ4PE1f7ai0vU58Pp4jih+soDCBMuKVbhDEPQ+6+vI3vSiG4UAAjTAXLJw1Qw==", @@ -153,8 +153,8 @@ "efrt@2.7.0": { "integrity": "sha512-/RInbCy1d4P6Zdfa+TMVsf/ufZVotat5hCw3QXmWtjU+3pFEOvOQ7ibo3aIxyCJw2leIeAMjmPj+1SLJiCpdrQ==" }, - "esbuild@0.25.0": { - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "esbuild@0.25.1": { + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", "dependencies": [ "@esbuild/aix-ppc64", "@esbuild/android-arm", @@ -202,7 +202,7 @@ "jsr:@std/regexp@^1.0.1", "jsr:@std/text@^1.0.11", "npm:compromise@^14.14.3", - "npm:esbuild@0.25" + "npm:esbuild@~0.25.1" ] } } diff --git a/dictionary/parser.ts b/dictionary/parser.ts index be3b02a1..b81146ef 100644 --- a/dictionary/parser.ts +++ b/dictionary/parser.ts @@ -42,6 +42,7 @@ function lex(parser: Parser): Parser { const comment = match(/#[^\n\r]*/, "comment"); const spaces = sourceOnly(all(choiceOnlyOne(match(/\s/, "space"), comment))); const backtick = matchString("`", "backtick"); +const colon = matchString(":", "colon"); const tokiPonaWord = lex(match(/[a-z][a-zA-Z]*/, "word")); const openParenthesis = lex(matchString("(", "open parenthesis")); @@ -49,7 +50,6 @@ const closeParenthesis = lex(matchString(")", "close parenthesis")); const openBracket = lex(matchString("[", "open bracket")); const closeBracket = lex(matchString("]", "close bracket")); const comma = lex(matchString(",", "comma")); -const colon = lex(matchString(":", "colon")); const semicolon = lex(matchString(";", "semicolon")); const slash = lex(matchString("/", "slash")); diff --git a/dictionary/test.ts b/dictionary/test.ts new file mode 100644 index 00000000..00efe7d6 --- /dev/null +++ b/dictionary/test.ts @@ -0,0 +1,8 @@ +import { assertMatch } from "@std/assert/match"; +import { dictionary } from "./dictionary.ts"; + +Deno.test("definition source has leading space", () => { + for (const [word, { src }] of dictionary) { + assertMatch(src, /^\s/, `Error at ${word}`); + } +}); diff --git a/dist/index.html b/dist/index.html index 48719ccc..81395156 100644 --- a/dist/index.html +++ b/dist/index.html @@ -144,8 +144,8 @@

>(Help)

- - + +