「旦那、今度は補完計画ですか?」 『そや、ベースがシッカリしてるんで欲を出さんかったら、簡単かと思ってな』
※ VS code の HTML フォーマッタは表面(おもてずら)の空白削除しか行っていません (連続する 2個以上の空白を削除)
<body> ..<h1>. content.</h1>.. ..HTML:.Breadcrumbs.not.recognizing.HTML5.optional.tags.<br>.. ..<ul>.. ....<li>.※.foo.※.</li>.. ....<li>.※.bar.(→.ul).※.. ..</ul>.※.. ..<div>.※.. ....<pre>..※..baz..※.. ..※..<br>.. ..※..</pre>.※.. ..</div>.※.. </body>
<body> ..<h1>✔ content✔</h1> ..HTML:.Breadcrumbs.not.recognizing.HTML5.optional.tags✔<br> ..<ul> ....<li>✔※.foo.※✔</li> ....<li>✔※.bar.(→.ul).※ ..</ul>✔※ ..<div>✔※ ....<pre>..※..baz..※ ..※..<br> ..※✔</pre>✔※ ..</div>✔※ </body> <!-- ✔ Removed 11 spaces -->
address // 連絡先情報 article // 記事コンテンツ aside // 本論から外れたコンテンツ blockquote // 長い「ブロック」の引用 br // ※ (改行) dd // 定義リストで用語を説明 details // 折りたたみウィジェット dialog // ダイアログボックス div // 文書の一部 dl // 定義リスト dt // 定義語リストの用語 fieldset // フィールドセットのラベル figcaption // 図表のキャプション figure // キャプション(figcaption)を伴うメディアコンテンツをグループ化 footer // セクションまたはページのフッター form // 入力フォーム h1 // 見出しレベル 1-6 h2 // h3 // h4 // h5 // h6 // header // セクションまたはページのヘッダー hgroup // 見出し情報をグループ化 hr // 水平線 (区切り線) li // リストの項目 main // この文書で固有の中心的なコンテンツを含む nav // ナビゲーションのリンクを含む ol // 番号付きリスト pre // 整形済みテキスト p // 段落 section // ウェブページのセクション table // 表 td // ※ (表のデータ) th // ※ (表のヘッダ) tr // ※ (表の行部分) title // ※ (文書の題名) ul // 番号なしリスト
<a>, <span>, <mark> など文章の中で使用されるタグは対象外です
最初、<foo bar> の '>' が必須で '[^>]*?>' としていましたが、 '>' をオプションにすると '[^>]* ? (>?)' と'?'を削除しないと動きません (<foo bar[>]) (ちなみに '?' は最短一致、未指定は最長一致、'+' は強欲な数量子) 結果、次のタグを食われないよう '[^<>]*(>?)' と定義しました
これが、お約束の正規表現をフルに活用したアルゴリズムです
VS code の設定で 「Render Whitespace」を検索して「all」に設定すると空白文字が見えるようになります
「ネットの世界」の課題、前方参照で書いた正規表現: '(['\"]?)(.+)(\\1)' 'foo' → < ' >foo< ' > foo → <>foo<> foo' → <>foo ' <> 'foo → <> ' foo<> (この場合は後続のデータを食ってしまうので注意!) Java の前方参照は使えないと思い込んでましたが、こんな動きをするとは ^^);
クロスサイトスクリプティング (XSS)、 メタ文字をエスケープし無害化する & → & < → < > → > " → " ' → ' 怒られないよう ' を使ってましたが、" を使えばいいんですね! 質問を投げようと思い再確認したところ治っていました、Bug だったようです ^^);
Markuplint: 文字参照に 16進数を使用すると lint に怒られる OK, decimal: ▼ ▼ NG, Hex: ※▼ (▼) <!-- ※'&' をエスケープするよう怒られる -->
開発者自ら対応してくれました (日本人、メッセージが日本語なのが嬉しい) before: targetNode.raw.replace(/&(?:[a-z]+|#[0-9]+|x[0-9]);/gi, ... after: targetNode.raw.replace(/&(?:[a-z]+|#[0-9]+|#x[0-9a-f]+);/gi, ... コミット& 即アップグレード! プラグインはこう有りたいですね
Microsoft のバグ対応を見ていて関心することは「人材の豊富さです」 Issue を投げて 30分程度で担当が割り当てられます 前回の Issue #184129 (閉じタグとパン屑) は担当が交代しました (コーダが担当しているのかな?) 参考: 省略可能閉じタグ、 (英文)
「旦那、今回は楽勝でしたね?」 『そやな、別プロジェクトの部品(ブロック要素)を再利用したからな! 一から作らなあかんやったら、やってないやろな!』
『しかし、ワシが書く正規表現は一癖あるようで毎回 悩まされるな!』 「前回は 前方参照 でしたね?、旦那はパーサを正規表現で書くからですよ~」 『あれは、大当りや前方参照の癖を見切ったもんな!』