Home About Contact
リストから 任意の列数を持つ HTML テーブルを生成する

リストを n 個ごとに分割する ファイナルアンサー の応用例です。

ポケモンリストをHTMLテーブルに変換するのですが、 クライアントブラウザの幅に応じて 3列とか5列に切り替えたいとする・・・ということを考えます。

» Read More
リストを n 個ごとに分割する ファイナルアンサー

リストを n 個ごとに分割する その4 TypeScript 編の続きです。 このポストの元をたどると リストを n 個ごとに分割する kotlin 編にいきつく。

» Read More
リストを n 個ごとに分割する その4 TypeScript 編

React で名前の配列を4個ごとに区切ったサブリストをつくり、 それをテーブルのそれぞれ行として扱う必要が生じた。

リストを n 個ごとに分割する その3で 書いたコードを TypeScript に移植したので、その覚え書きです。

» Read More
Elm レコードの更新、それを Kotlin や TypeScript で記述する方法

データを更新するときにありがちな、そのデータのフィールドの一部だけを変更したい場合への各言語ごとの対処方法。

» Read More
Vite + React + TypeScript Hello, World!

覚え書きです。

» Read More
fern-parser をリリースした

The fern-parser logo

昨年くらいから断続的にテキストパーサーを調べて実験コードを書いてきた (この辺の話)のですが、 機能変更が落ち着いてきたのでとりあえず公開しました。TypeScript 版です。 ライセンスは MIT です。 このブログで書いてきたパーサーコンビネータは Kotlin で実装しているのですが、 それを TypeScript に移植してあれこれ修正したものです。 ライブラリ本体は TypeScript で書いていますが、パースするコードを書くときは JavaScript でゆるくかけるので楽です。

Kotlin 版では tailrec が使えたので深い再帰が発生してもスタックオーバーフローにはならないと思うのですが、 TypeScript 版はそのあたりの対策は今のところしていません。 そんな巨大なテキストをパースすることもないのかな。

» Read More
TypeScript で書いたコードを ExtendScript から使う

以前に 「Markdown to InDesign 開発入門」 という キンドル本を書いたのですが、書き直そうと思い始めた。 理由のひとつは、 内容が古くなってしまったこと、そして もうひとつは、パーサーコンビネーターを使えばもっと簡単にマークアップテキストをInDesign ドキュメントに 変換できるのではないか?と思い始めたから。

この本では、markdown テキストをパースするために既存の markdown パーサーライブラリを使っている。 その markdown パーサーを ExtendScript として作動させることができないので、 普通の Node.js でつくった markdown テキスト to JSON変換サーバーを用意してそっちで変換する、 という方法を使っている。 既存の markdown パーサーライブラリであるためパーサーを自分で書く必要もないのは 圧倒的なメリットだが、かなりややこしい話になってしまった。 使う側にしたらテキストをパースして InDesign ドキュメントに変換したいだけなのに (ローカルで変換サーバー起動するとか面倒なことを・・・)。

今使えるかどうか確認しているパーサーコンビネータは TypeScript で記述されているので、 ここではまずそのための事前調査としてごく簡単な TypeScript を ExtendScript で実行できるか試してみます。

» Read More
「改善版2024)Kotlin でパーサーコンビネータを実装する HtmlWriter の導入」のコードを TypeScript にする(その3)

その2の続きです。 今まではパーサーが letter, zeroOrMore しか用意していなかったので、 HelloWrold! などという中途半端な文字列をパースする例で説明していた。 今回は普通に Hello, World! 文字列をパースできるように、 one, and および seq パーサーを追加します。

» Read More
「改善版2024)Kotlin でパーサーコンビネータを実装する HtmlWriter の導入」のコードを TypeScript にする(その2)

その1のコードの HtmlBlock 部分の実装を差しかえられるように Generics にします。

» Read More
「改善版2024)Kotlin でパーサーコンビネータを実装する HtmlWriter の導入」のコードを TypeScript にする(その1)

改善版2024)Kotlin でパーサーコンビネータを実装する HtmlWriter の導入で書いたコードを TypeScript に書きかえます。

» Read More
ラスター画像をトレースして SVG にする試み

example 1

Vector Graphics を扱うアプリを書いているのだが、 普通の raster 画像のインポートをサポートしたい。

関連しそうな技術を調べてみると テキストから画像を生成するAIで、 ベクターデータを生成するものがあった。

これはすごいが、今のところはラスター画像をSVGに変換できればそれでよい。 さらに調べてみたところ potrace というものが存在していた。

このように白黒の raster 画像をベクターデータに変換するツールです。

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

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

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

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

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

ingredients-AST

» Read More