Oud2JSON
OuDia 形式の文字列を、JSON 文字列に変換するライブラリ。
.oud2
(OuDiaSecond 形式) にも対応済み。
使い方
$ npm install @route-builders/oud-to-json
TypeScript 用の型定義ファイルはライブラリ内にバンドルしています。
.oud -> .json
const { readFileSync, writeFileSync } = require("fs");
const { Oud2JSON } = require("@route-builders/oud-to-json");
const buffer = readFileSync("/path/to/file.oud");
const oj = new Oud2JSON(buffer);
writeFileSync("result.json", oj.parse());
通常の
.oud
ファイルは SJIS 形式なので、パース前に UTF-8 に変換する必要があります。encoding.js (encode-japanese)などを用いて文字コードを UTF-8 にしてあげてからパースします。
エンコーディング変換サンプル
import { readFileSync } from "fs";
import * as Encoder from "encoding-japanese";
const { Oud2JSON } = require("@route-builders/oud-to-json");
const buffer = readFileSync("/path/to/file.oud");
const encoding = Encoder.detect(buffer, ["SJIS", "UTF8"]);
if (!encoding) {
throw new Error();
}
const sources = Encoder.convert(buffer, {
to: "UNICODE",
from: encoding,
type: "string",
bom: false,
})
.replace(/\r/g, "")
.split("\n");
const oj = new Oud2JSON(sources);
// ...
.json -> .oud
const { writeFileSync } = require("fs");
const { JSON2Oud } = require("@route-builders/oud-to-json");
const json = '{"FileType":"OuDia.1.02","Rosen": ... }';
const jo = new JSON2Oud(json);
writeFileSync("result.oud", jo.parse());
エラー処理
ファイルパース時に不正な形式だとInvalidFileTypeError
を吐きます。
文字コードなど要注意。
developer
LICENSE
under the MIT License.