generated at
deno-asearch
Deno用asearch

機能
done曖昧一致したかどうか
doneその時のあいまい度
これはnode-asearchにはない機能

実装したいこと
1回の遷移ごとの状態遷移機械をdeno testしたい
よく考えたら、ある距離以内でマッチしているかどうか判定するだけなら全てのレジスタを一つずつマスクする必要ないじゃん!
全てのレジスタをORしたやつをマスクすればいい
ある距離以内でのマッチを判定する関数は削除した
ワイルドカードにマッチしたら、曖昧度を1だけ増やしたい
マッチした箇所
そもそも取得できるのかどうかすらわからない
ビットパラレル手法によるアライメントアルゴリズムによると、algorithmを工夫すれば取得できるらしいが…

修正点
unpackをfor loopに置き換えた
ついでにiteratorにして、不要な配列生成・破棄をなくす
arraybuffer止めた
shiftpad を固定長配列ではなくMap (JavaScript)として保持すればいいのでは?
どうせハッシュテーブルだし、そんなに検索に時間をかけないだろう
その他refactoring
いっそwasmを手書きしてみるか?
unicode変換できるのかな?

バグ

実装
rust-asearchをweb assemblyにして使う
Rust側
TS側
wasmは予めUint8Arrayに変換しておく
umd版を用意しておく
web workerから使えるようにする

2022-02-11
12:56:06 release 0.3.0
test() のJSDocの解説がおかしいので直す
最大距離ではなく、ちょうどその距離にマッチするかどうかを調べる
12:27:07 done
2022-01-23
16:38:37 release 0.2.1
16:27:13 CI入れた
2022-01-19
2021-11-13
13:14:22 0cbc02
Deno Nested test APIで書き換えた
テストデータを追加しやすいように構造を変えた
08:08:53 92bb426
全てのUnicode charctersに対応した
多分ほんの少しだけ速くなった
ほとんど誤差程度だが
メモリ消費量を抑えた
遷移可能テーブルを、必要な文字の分だけ作るようにした
2021-10-11
19:47:57 まずはnode-asearchと同じものを実装した
19:03:56 一旦TypeScriptだけで書いたやつを作っておく

mod.ts
export * from "https://raw.githubusercontent.com/takker99/deno-asearch/0.4.0/mod.ts";

↓でコンパイルが通らない……
wasm-bindgen関連で型定義が違うと怒られる
Rustの型システムを1からしっかり読み込まないと先には進めなさそう
References
lib.rs
use asearch::Asearch; use wasm_bindgen::prelude::*; #[wasm_bindgen] pub struct ClosureHandle(Closure<dyn FnMut(&str, u8) -> bool>); #[wasm_bindgen] pub fn asearch(source: &str) -> ClosureHandle { let asearch = Asearch::new(source); let cb = Closure::wrap(Box::new(move |text, ambig| { asearch.find(text, ambig); }) as Box<dyn FnMut(&str,u8) -> bool>); ClosureHandle(cb) }

Cargo.toml
[package] name = "deno-asearch" version = "0.1.0" authors = ["takker"] edition = "2018" [lib] crate-type = ["cdylib"] [dependencies] wasm-bindgen = "0.2.73" asearch = "0.1.2"

#2022-08-23 06:22:00
#2022-07-17 18:43:32
#2022-07-11 13:41:28
#2022-02-11 11:25:20
#2022-01-31 06:13:17
#2022-01-23 15:25:47
#2022-01-19 13:58:02
#2022-01-18 20:38:30
#2022-01-08 22:32:02
#2021-10-12 09:44:18
#2021-10-11 19:05:06
#2021-06-16 12:15:14