Home About
食品の原材料表記の括弧の多重入れ子文字列をパースしてトークンに分割する

たとえば無印良品のこの食品 フライパンでつくるミールキット 海老といかのアヒージョの商品表示情報のPDFをみると以下のような文字列が原材料名に記載されています。

ブロッコリー(エクアドル)、揚げじゃがいも(じゃがいも(国産)、植物油脂)、殻付き海老(インド)、いか(中国)、(一部にえび・いかを含む)

このように括弧が入れ子で多重に出現している文字列、しかも、一重/二重/三重・・・ n 重のバリエーションがある文字列をパースすることを考えたい。

最終的には以下のように括弧で括られた部分を AST(Abstract syntax tree) に 変換して、各トークンをその括弧の包含関係を生かした状態で把握できるようにしたい。

ingredients-AST

» Read More
UXP InDesign, TypeScript を使う (Denoを使用) require を回避

Deno を使えば TypeScript を使って UXP InDesign スクリプトをバンドルできることがわかった。 というのが前回のエントリー。 しかし、 require("uxp").storage.localFileSystem を使う場合なども機能するのだろうか? と思い立ち調査しました。 結論としては問題ありません。

結論だけ知りたい場合はこちらのレポジトリの read-text-ts をご覧ください。

» Read More
UXP InDesign, TypeScript を使う (Denoを使用)

Deno を使えば TypeScript を使って UXP InDesign スクリプトをバンドルできることがわかった。

以前軽く試したときは、deno bundle した段階で型関連のエラーが出てしまいバンドルできなかった。 でも考えてみたら(考えるほどでもないが)自分で型定義を用意して bundle 時とかコンパイル時に渡せば無問題なのでは? と思い立ち試したところ問題なくバンドルできた。

結論だけ知りたい場合はこちらのレポジトリの hello-world-ts を見てください。

このエントリーではごく簡単な UXP InDesign Scripting の例で説明します。

UXP InDesign Scripting Hello,World! with TypeScript

» Read More
やり直し UXP InDesign, SheetJS を利用して MSエクセルデータを扱う(Deno編)

UXP InDesign, SheetJS を利用して MSエクセルデータを扱う(rollup.js編)では、rollup.js を使ってスクリプトをひとつのファイルにまとめていました(バンドル)が、Deno を使ってバンドルできることがわかりました。

もっとも、あくまでここで検証した簡単なスクリプトについてうまくバンドルできたという話です。 いろいろなケース、とかすべてのケースで、Deno によるバンドル(rollup.js によるバンドルもそうですが)がうまくいくかはわかりません。

簡単に手順を書き残します。

» Read More
セルのアドレス生成をもっと簡単に計算したい

danfo.js 空のセルが存在するエクセルファイルを読み込み失敗するなど で SheetJSからセルの値を読み取るときに、セルアドレスを生成するためのコードで、行列を二重にループしていた。 これをもっと簡単に書きたい。

» Read More