
特定のドメインにあるメールアドレスかどうかなどをチェックするシンプルなJavaScriptのライブラリ、IDCheckerをつくりました。
テストファースト、AIしあげなライブラリの作り方。
1. 使うイメージでテストコードをかく
import * as t from "https://deno.land/std/testing/asserts.ts";
import { IDChecker } from "./IDChecker.js";
Deno.test("simple", () => {
const ts = new IDChecker([
"*@test.com",
"abc@test2.com",
"ghi@*",
]);
t.assertEquals(ts.check("abc@test.com"), true);
t.assertEquals(ts.check("def@test.com"), true);
t.assertEquals(ts.check("@test.com"), true);
t.assertEquals(ts.check("test.com"), false);
t.assertEquals(ts.check("abc@test2.com"), true);
t.assertEquals(ts.check("abc@test3.com"), false);
t.assertEquals(ts.check("ghi@test3.com"), true);
t.assertEquals(ts.check("ghi@test4.com"), true);
});
今回ほしいのは後方一致と完全一致でしたが、ついでに前方一致も作っておくことにします。(よくばりすぎに注意!)
2. テストが通るように実装する
export class IDChecker {
constructor(list) {
this.list = list;
}
check(s) {
for (const item of this.list) {
if (item.startsWith("*")) {
if (s.endsWith(item.substring(1))) return true;
} else if (item.endsWith("*")) {
if (s.startsWith(item.substring(0, item.length - 1))) return true;
} else if (item == s) {
return true;
}
}
return false;
}
}
割と簡単ですが、コンパクトにテストできるの大事!
3. AIにドキュメントやロゴを作ってもらいチェック!

「code4fukui/IDChecker」
できあがり!
ついでに英語ドキュメントもできちゃいます!
つくろう、OSS、オープンソースソフトウェア!