@hankei6km/hast-util-trim-element
v0.1.0
Published
hast utility to trim an element
Downloads
7
Readme
hast-util-trim-element
Element(主に <p> を想定)から先頭と末尾の空白や改行(含む <br>)などを削除する hast ユーティリティ.
Install
npm install @hankei6km/hast-util-trim-elementUsage
import { h } from 'hastscript'
import { toHtml } from 'hast-util-to-html'
import { trimElement } from '@hankei6km/hast-util-trim-element'
const tree = h('p', [{ type: 'comment', value: 'コメント' }, '\u00A0\u00A0\u00A0\u00A0', h('span', []), ' ', h('br'), h('strong', ' \u3000あいうえお'), h('br'), 'かきくけこ', h('br'), h('strong', ['さしすせそ ']), h('br'), ' '])
console.log(toHtml(tree))
trimElement(tree)
console.log(toHtml(tree))yield:
<p><!--コメント--> <span></span> <br><strong> あいうえお</strong><br>かきくけこ<br><strong>さしすせそ </strong><br> </p>
<p><!--コメント--><strong>あいうえお</strong><br>かきくけこ<br><strong>さしすせそ</strong></p>API
trimElement(element, [options])
element 内の先頭または末尾の空白や改行を削除する。element は hast の Element ノードまたは Element['children'] の配列。
options.recursiveTagNames
element 内の子ノードで options.recursiveTagNames に含まれるタグ名を持つ要素があった場合、その子要素も再帰的にトリムする、null で全て無視(RegExp または hast-util-is-element の Test、デフォルトは /^(a|strong|em|span|del|u|s|b|sub|sup)$/iu)。
options.trimExistingEmptyText
element 内の子ノードをトリムする際に、既に空のテキストノード({"type": "text", "value": ""})もトリムするか?しない場合はそこで処理を停止する(boolean、デフォルトは true)。
options.trimExistingEmptyElement
element 内の子ノードをトリムする際に、既に空の要素もトリムするか?しない場合は空の要素を残して処理を継続する(boolean、デフォルトは true)。
options.trimBecameEmptyElement
element 内の子ノードをトリムする際に、再帰的なトリムにより空になった要素もトリムするか?しない場合は空の要素を残して処理を継続する(boolean、デフォルトは true)。
options.startFilter
element 内の先頭からトリムする際に、挙動をカスタマイズするためのフィルター。
startFilter のフィールド
trimTextMatcher: 先頭のテキストノードからトリムするテキストを決定するマッチャー(RegExp、デフォルトは/^\s+/u)。trimTagNameMatcher: 先頭のelementノードをトリムするかを決定するマッチャー、nullで全て無視(RegExpまたはhast-util-is-elementのTest、デフォルトは/^br$/iu)。stopTagNameMatcher: 先頭のelementノードを見つけた際に、トリムを停止するかを決定するマッチャー、nullで全て無視(RegExpまたはhast-util-is-elementのTest、デフォルトは/^(img|hr|input|meta|link|area|base|col|embed|source|track|wbr)$/iu)。他の条件より優先される(例: 子要素が 0 個は継続されるが、stopTagNameMatcherにマッチした場合は処理が停止される)。
options.endFilter
element 内の末尾からトリムする際に、挙動をカスタマイズするためのフィルター。
endFilter のフィールド
trimTextMatcher: 末尾のテキストノードからトリムするテキストを決定するマッチャー(RegExp、デフォルトは/\s+$/u)。trimTagNameMatcher: 末尾のelementノードをトリムするかを決定するマッチャー、nullで全て無視(RegExpまたはhast-util-is-elementのTest、デフォルトは/^br$/iu)。stopTagNameMatcher: 末尾のelementノードを見つけた際に、トリムを停止するかを決定するマッチャー、nullで全て無視(RegExpまたはhast-util-is-elementのTest、デフォルトは/^(img|hr|input|meta|link|area|base|col|embed|source|track|wbr)$/iu)。他の条件より優先される(例: 子要素が 0 個は継続されるが、stopTagNameMatcherにマッチした場合は処理が停止される)。
License
MIT License
Copyright (c) 2025 hankei6km
