EPUBパッチ
文字オフセットとオペレーション、でもいい
ソースコードのシンタックスハイライトのためには、surroundオペレーションがあるといい。
DOM RangeのsurroundContentsメソッドのようなの。
ソースコードの文字をパッチ内に書かなくて済むから、著作権侵害しないで済む。
ソースコード中にemとかでハイライトしてたりした場合、それを残したまま適用できる
要検討
パッケージドキュメントとか、コンテンツ以外へのパッチ
マニフェストアイテムを消したら参照先のファイルも消えるのか?とか
XML属性の操作
画像
SVG
CSS
フォント
動画
オーディオ
JavaScript
inner HTMLの変更や削除
CFIでHTML要素を指定することはできるが、シンタックスハイライトでは「inner HTMLをごっそりハイライト済みのHTMLと差し替えたい」となる。
子要素を全部削除し、新しい子要素やテキストノードを入れていく
innerHTML = ...という書き方ができれば楽だが気持ち悪い
「全部削除し」ができない気がする。ワイルドカードが必要
CFIで指定されたコンテナ要素(<code>とか)を差し替える、ということも考えられるが、あまりよくなさそう
属性をキープしたいわけだが、どんな属性をどんな値で持っているか分からない
CFI+XPathで組み合わせて使えばいいのかなあ。
HTML属性の変更や削除
試案
書かれた順番に適用
必要なプロパティ
オペレーション
適用箇所
オペレーションの種類
オペレーションに応じて、値
フォーマットバージョン
リリースアイデンティファイアー
ファイルフォーマットは何がいいか
ブラウザーで動かすならJSON
YAMLだと見やすい
参考
unidiffとかと違って元の文言がパッチに含まれない
ファイルサイズは削減できる
著作物にサードパーティがパッチを作るときには、著作権侵害を避けられる
操作は
add
replace
remove
対象は
要素
属性
名前空間宣言やURI
等の各種ノード
属性とかもXPathで指定できる。CFIには無い機能
そもそもCFIはなぜこれができないんだ? 想定されるユースケースは?
replace elementとreplace attributeといったように別々の操作を定義する必要がある?
操作は
add
remove
replace
move
copy
test
JSON PatchはXML Patchと同じ発想だけどこれは違う