Skip to content

oguna/jsmigemo

Repository files navigation

jsmigemo

Node.js CI npm version

JavaScriptでMigemoを利用するためのライブラリ

Install from npm

$ npm install jsmigemo

Install from CDN

https://cdn.jsdelivr.net/npm/jsmigemo/dist/<filename><filename> の部分に、用途に応じて以下のファイル名を指定してください。

Format Default Minified
ESModule jsmigemo.mjs jsmigemo.min.mjs
CommonJS jsmigemo.cjs jsmigemo.min.cjs
IIFE jsmigemo.iife.js jsmigemo.min.iife.js

DefaultとMinifiedの違いは以下です。

  • Defaultは、ソースコードを1つにまとめただけの、変数名もそのまま残っているJSファイルです。開発時にはこちらをご利用ください。
  • Minifiedは、ファイルサイズを小さくするための様々な処理をしたJSファイルです。配布時にはこちらをご利用ください。

ESModuleとCommonJS、IIFEの違いは以下です。

  • ESModuleは、最近のバンドラやNode.JS、モダンブラウザなど幅広く利用できるフォーマットです。
  • CommonJSは、browserifyやwebpack1のような古いバンドラでの利用を意図したフォーマットです。
  • IIFEは、レガシーブラウザやESModuleの利用できない環境(例えばローカルのJSファイル)での利用を意図したフォーマットです。

HOW TO USE

CLI

$ npm install jsmigemo
$ jsmigemo
QUERY: kensaku
PATTERN: (kensaku|けんさく|ケンサク|建策|憲[作冊]|検索|献策|研削|羂索|kensaku|ケンサク)

Node.js

import { readFile } from "node:fs/promises";
import { CompactDictionary, Migemo } from "jsmigemo";

const data = await readFile("migemo-compact-dict");
const buffer = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);

const dict = new CompactDictionary(buffer);
const migemo = new Migemo();
migemo.setDict(dict);

console.log(migemo.query("kensaku"));
//=> (kensaku|けんさく|ケンサク|建策|憲[作冊]|検索|献策|研削|羂索|kensaku|ケンサク)

Deno

import { CompactDictionary, Migemo } from "https://cdn.jsdelivr.net/npm/jsmigemo/dist/jsmigemo.min.mjs";

const data = await Deno.readFile("./migemo-compact-dict");
const dict = new CompactDictionary(data.buffer);
const migemo = new Migemo();
migemo.setDict(dict);

console.log(migemo.query("kensaku"));
//=> (kensaku|けんさく|ケンサク|建策|憲[作冊]|検索|献策|研削|羂索|kensaku|ケンサク)

Browser

<input id="queryInput" type="text" placeholder="kensaku">
<pre id="regexOutput"></pre>

<script src="https://cdn.jsdelivr.net/npm/jsmigemo/dist/jsmigemo.min.iife.js"></script>
<script>
  const DICT_URL = "https://cdn.jsdelivr.net/npm/jsmigemo/migemo-compact-dict";

  const queryInput = document.getElementById("queryInput");
  const regexOutput = document.getElementById("regexOutput");

  let migemo = null;

  async function setup() {
    const response = await fetch(DICT_URL);
    if (!response.ok) {
      throw new Error(`HTTP ${response.status}`);
    }

    const buffer = await response.arrayBuffer();
    const dict = new window.jsmigemo.CompactDictionary(buffer);
    migemo = new window.jsmigemo.Migemo();
    migemo.setDict(dict);
  }

  queryInput.addEventListener("input", () => {
    if (!migemo) {
      return;
    }
    regexOutput.textContent = migemo.query(queryInput.value.trim());
  });

  setup().catch((error) => {
    regexOutput.textContent = `辞書の読み込みに失敗: ${error.message}`;
  });
</script>

辞書ファイルの生成

> node  bin/jsmigemo-dict.mjs <text-dict-file> <compact-dict-file>

<text-dict-file> は、C/Miemoで使われているテキスト形式の辞書ファイルです。 <compact-dict-file> は、出力ファイル名です。

ライセンス

本ライブラリに付属の辞書ファイルは、MITライセンスのプロジェクトから生成されています。 yet-another-migemo-dict

本プロジェクト配下のファイルは、MIT LICENSEのもとで配布します。

About

migemo on javascript

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors