route.builders Tech document

route.builders Tech document

Oud2JSON

GitHub
npm version

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.