技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Orderlyの構造を見て挫折したメモ、とりあえず解析だけ。

そも、JsonSchema って何よ?って人はここ参照。

Orderly ライブラリ https://github.com/nparry/orderly4jvm がJsonSchemaのDraftV2までの対応なので、V4 入れようかと思ったのだが、関数丸1個作り直ししないといけなくなって挫折したメモ。
やろうとしたのは patternProperties ぶち込もうとしたわけだ。
更新対象は、com.nparry.orderly.JsonSchema で、使ってるライブラリは lift だ。
処理があるのは、checkProp 関数で 208 行目近辺のcase分岐で処理を行っている。
で、patternProperties 近辺を埋め込むなら、

(obj("properties", { props => checkObj(o, props, path, bool("additionalProperties", true)) }) getOrElse ok())

このあたりの筈と思ったわけだ。
が、残念なことに、現状この構造は複数のプロパティが関連して処理のパターンが分岐するようにはなっていないようだ。
逆に言えば、ほかのプロパティと処理が競合しないものについては結構安直に追加できる構造ではある。

読み方としては、「properties」を拾ってみてなければNone、あれば props にバインドして checkObj を実行。Objectでない場合はエラーをかえしていると。

たぶんこの辺丸っとリプレースしないとダメなんだよなぁきっと、、、コード読んだ感触的には目的は独自フォーマットでJSONをバリデートしたかっただけで、JsonSchemaサポートはおまけなんだろうなきっと。
自力で作るほうがよさそうな悪寒。