フィルターを使用すると、[[テンプレート|Web Clipperテンプレート]]内の[[変数]]を加工できます。フィルターは `{{variable|filter}}` という構文で変数に適用されます。 - フィルターは `prompt`、`meta`、`selector`、`schema` 変数を含むあらゆる種類の[[変数]]に対応しています。 - フィルターはチェーン(連鎖)可能で、例えば `{{variable|filter1|filter2}}` のように記述し、追加された順番に適用されます。 ## 日付 日付の変換と加工を行います。 ### `date` 日付を指定されたフォーマットに変換します。[リファレンスを参照](https://day.js.org/docs/en/display/format)。 - `{{date|date:"YYYY-MM-DD"}}` は現在の日付を「YYYY-MM-DD」形式に変換します。 - `date:("outputFormat", "inputFormat")` で入力フォーマットを指定できます。例:`"12/01/2024"|date:("YYYY-MM-DD", "MM/DD/YYYY")` は「12/01/2024」を解析し `"2024-12-01"` を返します。 ### `date_modify` 指定された時間を加算または減算して日付を加工します。[リファレンスを参照](https://day.js.org/docs/en/manipulate/add)。 - `"2024-12-01"|date_modify:"+1 year"` は `"2025-12-01"` を返します - `"2024-12-01"|date_modify:"- 2 months"` は `"2024-10-01"` を返します ### `duration` ISO 8601 の期間文字列または秒数をフォーマットされた時間文字列に変換します。使用可能なトークン:`HH`(ゼロ埋め時間)、`H`(時間)、`mm`(ゼロ埋め分)、`m`(分)、`ss`(ゼロ埋め秒)、`s`(秒)。 - `"PT1H30M"|duration:"HH:mm:ss"` は `"01:30:00"` を返します。 - `"3665"|duration:"H:mm:ss"` は `"1:01:05"` を返します。 - パラメータなしで `duration` を設定すると、1時間以上の場合は `HH:mm:ss`、1時間未満の場合は `mm:ss` を使用します。 - ISO 8601 の期間文字列(例:`PT6702S`、`PT1H30M`)と秒数の両方に対応しています。 ## テキストの変換と大文字化 テキスト文字列をある形式から別の形式に変換します。 ### `camel` テキストを `camelCase` に変換します。 ### `capitalize` 値の最初の文字を大文字にし、残りを小文字に変換します。例:`"hELLO wORLD"|capitalize` は `"Hello world"` を返します。 ### `decode_uri` URIエンコードされた文字列をデコードします。例:`"%E4%BD%A0%E5%A5%BD"|decode_uri` は `"你好"` を返します。 - `"hello%20world"|decode_uri` は `"hello world"` を返します。 - デコードに失敗した場合(不正なURIシーケンスなど)は元の文字列を返します。 ### `kebab` テキストを `kebab-case` に変換します。 ### `lower` テキストを `lowercase`(小文字)に変換します。 ### `pascal` テキストを `PascalCase` に変換します。 ### `replace` 指定されたテキストの出現箇所を置換します: - 単純な置換:`"hello!"|replace:",":""` はすべてのカンマを削除します。 - 複数の置換:`"hello world"|replace:("e":"a","o":"0")` は `"hall0 w0rld"` を返します。 - 置換は指定された順番に適用されます。 - 指定したテキストを削除するには、置換値として `""` を使用します。 - 特殊文字 `: | { } ( ) ' "` は、検索語で使用する場合バックスラッシュでエスケープしてください。例:`\:` でリテラルのコロンを検索します。 JavaScript正規表現構文を使用した正規表現がサポートされています: - すべての母音を置換:`"hello world"|replace:"/[aeiou]/g":"*"` → `"h*ll* w*rld"` - 大文字小文字を区別しない:`"HELLO world"|replace:"/hello/i":"hi"` → `"hi world"` - 複数の正規表現:`"hello world"|replace:("/[aeiou]/g":"*","/\s+/":"-")` → `"h*ll*-w*rld"` - 使用可能なフラグ:`g`(グローバル)、`i`(大文字小文字区別なし)、`m`(複数行)、`s`(dotAll)、`u`(unicode)、`y`(sticky) ### `safe_name` テキストを安全なファイル名に変換します。 - デフォルトでは、`safe_name` は最も保守的なサニタイズルールを適用します。 - `safe_name:os` でOS固有のルールを適用できます。`os` には `windows`、`mac`、`linux` を指定でき、そのオペレーティングシステムのルールのみを適用します。 ### `snake` テキストを `snake_case` に変換します。 ### `title` テキストを `Title Case`(タイトルケース)に変換します。例:`"hello world"|title` は `"Hello World"` を返します。 ### `trim` 文字列の両端から空白を除去します。 - `" hello world "|trim` は `"hello world"` を返します。 ### `uncamel` camelCaseまたはPascalCaseをスペース区切りの単語に変換します。`title` や `capitalize` などの他のフィルターでさらにフォーマットできます。 - `"camelCase"|uncamel` は `"camel case"` を返します。 - `"PascalCase"|uncamel` は `"pascal case"` を返します。 ### `upper` 値を大文字に変換します。例:`"hello world"|upper` は `"HELLO WORLD"` を返します。 ## テキストの書式設定 [[基本的な書式構文]]と[[高度な書式構文]]をテキストに適用します。 ### `blockquote` 入力の各行に Markdown の引用プレフィックス(`> `)を追加します。 ### `callout` オプションのパラメータを持つ[[コールアウト]]を作成します:`{{variable|callout:("type", "title", foldState)}}` - `type` はコールアウトの種類で、デフォルトは「info」です - `title` はコールアウトのタイトルで、デフォルトは空です - `foldState` は折りたたみ状態を設定するブール値です(trueで折りたたみ、falseで展開、nullで折りたたみ不可) ### `footnote` 配列またはオブジェクトを Markdown の脚注リストに変換します。 - 配列の場合:`["first item","second item"]|footnote` は `[^1]: first item` などを返します。 - オブジェクトの場合:`{"First Note": "Content 1", "Second Note": "Content 2"}|footnote` は `[^first-note]: Content 1` などを返します。 ### `fragment_link` 文字列や配列を[テキストフラグメント](https://developer.mozilla.org/en-US/docs/Web/URI/Fragment/Text_fragments)リンクに変換します。リンクテキストのデフォルトは「link」です。 - `highlights|fragment_link` は `Highlight content [link](text-fragment-url)` を返します - `highlights|fragment_link:"custom title"` は `Highlight content [custom title](text-fragment-url)` を返します ### `image` 文字列、配列、またはオブジェクトを Markdown の画像構文に変換します。 - 文字列の場合:`"image.jpg"|image:"alt text"` は `![alt text](image.jpg)` を返します。 - 配列の場合:`["image1.jpg","image2.jpg"]|image:"alt text"` は、すべての画像に同じ代替テキストを持つ Markdown 画像文字列の配列を返します。 - オブジェクトの場合:`{"image1.jpg": "Alt 1", "image2.jpg": "Alt 2"}|image` はオブジェクトのキーから代替テキストを取得した Markdown 画像文字列を返します。 ### `link` 文字列、配列、またはオブジェクトを Markdown のリンク構文に変換します([[フィルター#`wikilink`|wikilink]]と混同しないでください)。 - 文字列の場合:`"url"|link:"author"` は `[author](url)` を返します。 - 配列の場合:`["url1","url2"]|link:"author"` は、すべてのリンクに同じテキストを持つ Markdown リンクの配列を返します。 - オブジェクトの場合:`{"url1": "Author 1", "url2": "Author 2"}|link` はオブジェクトのキーに一致するテキストを持つ Markdown リンクを返します。 ### `list` 配列を Markdown のリストに変換します。 - `list` で箇条書きに変換します。 - `list:task` でタスクリストに変換します。 - `list:numbered` で番号付きリストに変換します。 - `list:numbered-task` で番号付きのタスクリストに変換します。 ### `table` 配列またはオブジェクトの配列を[[高度な書式構文#表|Markdown の表]]に変換します: - オブジェクトの配列の場合、オブジェクトのキーをヘッダーとして使用します。 - 配列の配列の場合、各ネストされた配列を行として表を作成します。 - 単純な配列の場合、「Value」をヘッダーとする単一列の表を作成します。 - カスタム列ヘッダーは次のように指定できます:`table:("Column 1", "Column 2", "Column 3")`。単純な配列で使用すると、指定された列数に基づいてデータを自動的に行に分割します。 ### `wikilink` 文字列、配列、またはオブジェクトを Obsidian の[[ノートをリンクする|ウィキリンク]]構文に変換します。 - 文字列の場合:`"page"|wikilink` は `[[page]]` を返します。 - エイリアス付き文字列の場合:`"page"|wikilink:"alias"` は `[[page|alias]]` を返します。 - 配列の場合:`["page1","page2"]|wikilink` はエイリアスなしのウィキリンクの配列を返します。 - エイリアス付き配列の場合:`["page1","page2"]|wikilink:"alias"` はすべてのリンクに同じエイリアスを持つウィキリンクの配列を返します。 - オブジェクトの場合:`{"page1": "alias1", "page2": "alias2"}|wikilink` はキーをページ名、値をエイリアスとするウィキリンクを返します。 ## 数値 ### `calc` 数値に対して基本的な算術演算を実行します。 - 対応する演算子:`+`、`-`、`*`、`/`、`**`(または `^`)累乗。 - 例:`5|calc:"+10"` は `15` を返します。 - 例:`2|calc:"**3"` は `8`(2の3乗)を返します。 - 入力が数値でない場合は元の文字列を返します。 ### `length` 文字列の長さ、配列の要素数、またはオブジェクトのキー数を返します。 - 文字列の場合:`"hello"|length` は `5` を返します。 - 配列の場合:`["a","b","c"]|length` は `3` を返します。 - オブジェクトの場合:`{"a":1,"b":2}|length` は `2` を返します。 ### `round` 数値を最も近い整数、または指定された小数点以下の桁数に丸めます。 - パラメータなし:`3.7|round` は `4` を返します。 - 小数点以下の桁数を指定:`3.14159|round:2` は `3.14` を返します。 ## HTML処理 HTMLコンテンツを処理し、HTMLを Markdown に変換します。入力の[[変数]]にはHTMLコンテンツが含まれている必要があります。例えば `{{fullHtml}}`、`{{contentHtml}}`、または `{{selectorHtml:}}` 変数を使用します。 ### `markdown` 文字列を [[Obsidian Flavored Markdown]] 形式の文字列に変換します。 - `{{contentHtml}}`、`{{fullHtml}}`、および `{{selectorHtml:cssSelector}}` のようなセレクター変数など、HTMLを返す変数と組み合わせると便利です。 ### `remove_attr` HTMLタグから指定された属性のみを削除します。 - 例:`"<div class="test" id="example">Content</div>"|remove_attr:"class"` は `<div id="example">Content</div>` を返します。 - 複数の属性:`{{fullHtml|remove_attr:("class,style,id")}}` ### `remove_html` 文字列から指定されたHTML要素とそのコンテンツを削除します。 - タグ名、クラス、またはIDに対応しています。例:`{{fullHtml|remove_html:("img,.class-name,#element-id")}}` - コンテンツを削除せずにHTMLタグや属性のみを削除するには、`strip_tags` や `strip_attr` フィルターを使用してください。 ### `remove_tags` 指定されたHTMLタグのみを削除します。タグのコンテンツは保持されます。 - 例:`"<p>Hello <b>world</b>!</p>"|remove_tags:"b"` は `"<p>Hello world!</p>"` を返します。 - 複数のタグ:`{{fullHtml|remove_tags:("a,em,strong")}}` ### `replace_tags` HTMLタグを置換します。タグのコンテンツと属性は維持されます。 - `{{fullHtml|replace_tags:"strong":"h2"}}` はすべての `<strong>` タグを `<h2>` に置換します。 ### `strip_attr` 文字列から**すべての**HTML属性を削除します。 - 特定の属性を残すには `strip_attr:("class, id")` を使用します。 - 例:`"<div class="test" id="example">Content</div>"|strip_attr:("class")` は `<div id="example">Content</div>` を返します。 ### `strip_md` **すべての** Markdown の書式を削除し、プレーンテキスト文字列を返します。例えば `**text**` を `text` に変換します。 - ボールド、イタリック、ハイライト、見出し、コード、引用ブロック、表、タスクリスト、ウィキリンクなど、書式付きテキストを書式なしのプレーンテキストに変換します。 - 表、脚注、画像、HTML要素は完全に削除されます。 ### `strip_tags` 文字列から**すべての**HTMLタグを削除します。タグ内のコンテンツは保持されます。 - 特定のタグを残すには `strip_tags:("p,strong,em")` を使用します。 - 例:`"<p>Hello <b>world</b>!</p>"|strip_tags:("b")` は `Hello <b>world</b>!` を返します。 ## 配列とオブジェクト 配列とオブジェクトを処理します。 ### `first` 配列の最初の要素を文字列として返します。 - `["a","b","c"]|first` は `"a"` を返します。 - 入力が配列でない場合は、入力をそのまま返します。 ### `join` 配列の要素を文字列に結合します。 - `["a","b","c"]|join` は `"a,b,c"` を返します。 - カスタム区切り文字を指定できます:`["a","b","c"]|join:" "` は `"a b c"` を返します。`join:"\n"` で要素を改行で区切ります。 - `split` や `slice` の後に使用すると便利です:`"a,b,c,d"|split:","|slice:1,3|join:" "` は `"b c"` を返します。 ### `last` 配列の最後の要素を文字列として返します。 - `["a","b","c"]|last` は `"c"` を返します。 - 入力が配列でない場合は、入力をそのまま返します。 ### `map` `map:item => item.property` の構文を使用して配列の各要素に変換を適用します。ネストされたプロパティには `map:item => item.nested.property` を使用します。 - `[{gem: "obsidian", color: "black"}, {gem: "amethyst", color: "purple"}]|map:item => item.gem` は `["obsidian", "amethyst"]` を返します。 - オブジェクトリテラルや複雑な式には括弧を使用します:`map:item => ({key: value})`。例:`[{gem: "obsidian", color: "black"}, {gem: "amethyst", color: "purple"}]|map:item => ({name: item.gem, color: item.color})` は `[{name: "obsidian", color: "black"}, {name: "amethyst", color: "purple"}]` を返します。 文字列リテラルもサポートされています。例:`["rock", "pop"]|map:item => "genres/${item}"` は `["genres/rock", "genres/pop"]` を返します。 `map` と `template` フィルターを組み合わせることができます。例:`map:item => ({name: ${item.gem}, color: item.color})|template:"- ${name} is ${color}\n"`。文字列リテラルのmapでは、テンプレート内で `${str}` を使用します。例:`["rock", "pop"]|map:item => "genres/${item}"|template:"- ${str}"`。 注意:`map` の内部では組み込みフィルターを使用できません。これは、例えば配列の各値をトリムする処理を `map` で行うことはできないことを意味します。 ### `merge` 配列に新しい値を追加します。 - 配列の場合:`["a","b"]|merge:("c","d")` は `["a","b","c","d"]` を返します。 - 単一の値:`["a","b"]|merge:"c"` は `["a","b","c"]` を返します。 - 入力が配列でない場合、新しい配列を作成します:`"a"|merge:("b","c")` は `["a","b","c"]` を返します。 - 値を引用符で囲むことができます:`["a"]|merge:('b,"c,d",e')` は `["a","b","c,d","e"]` を返します。 ### `nth` CSSスタイルのnth-child構文とグループパターンを使用して、配列のn番目の要素を保持します。すべての位置は1ベースです(最初の要素は位置1)。 - `array|nth:3` は3番目の要素のみを保持します。 - `array|nth:3n` は3番目ごとの要素を保持します(3、6、9など)。 - `array|nth:n+3` は3番目以降のすべての要素を保持します。 繰り返し構造のグループパターン構文: - `array|nth:1,2,3:5` は5要素のグループから位置1、2、3を保持します。例:`[1,2,3,4,5,6,7,8,9,10]|nth:1,2,3:5` は `[1,2,3,6,7,8]` を返します。 ### `object` オブジェクトデータを操作します: - `object:array` はオブジェクトをキーと値のペアの配列に変換します。 - `object:keys` はオブジェクトのキーの配列を返します。 - `object:values` はオブジェクトの値の配列を返します。 - 例:`{"a":1,"b":2}|object:array` は `[["a",1],["b",2]]` を返します。 ### `slice` 文字列や配列の一部を抽出します。 - 文字列の場合:`"hello"|slice:1,4` は `"ell"` を返します。 - 配列の場合:`["a","b","c","d"]|slice:1,3` は `["b","c"]` を返します。 - パラメータが1つだけの場合、そのインデックスから末尾までスライスします:`"hello"|slice:2` は `"llo"` を返します。 - 負のインデックスは末尾から数えます:`"hello"|slice:-3` は `"llo"` を返します。 - 2番目のパラメータは排他的です:`"hello"|slice:1,4` はインデックス1、2、3の文字を含みます。 - 2番目のパラメータに負の値を使用すると、末尾から要素を除外します:`"hello"|slice:0,-2` は `"hel"` を返します。 ### `split` 文字列を部分文字列の配列に分割します。 - `"a,b,c"|split:","` は `["a","b","c"]` を返します。 - `"hello world"|split:" "` は `["hello","world"]` を返します。 - 区切り文字が指定されない場合、各文字で分割します:`"hello"|split` は `["h","e","l","l","o"]` を返します。 - 正規表現を区切り文字として使用できます:`"a1b2c3"|split:[0-9]` は `["a","b","c"]` を返します。 ### `template` `object|template:"Template with ${variable}"` の構文を使用して、オブジェクトまたはオブジェクトの配列にテンプレート文字列を適用します。 - ネストされたプロパティにアクセス:`{"gem":{"name":"Obsidian"}}|template:"${gem.name}"` は `"Obsidian"` を返します。 - オブジェクトの場合:`{"gem":"obsidian","hardness":5}|template:"${gem} has a hardness of ${hardness}"` は `"obsidian has a hardness of 5"` を返します。 - 配列の場合:`[{"gem":"obsidian","hardness":5},{"gem":"amethyst","hardness":7}]|template:"- ${gem} has a hardness of ${hardness}\n"` はフォーマットされたリストを返します。 `map` からの文字列リテラルと `${str}` を組み合わせて使用できます: - 例:`["rock", "pop"]|map:item => "genres/${item}"|template:"- ${str}"` はフォーマットされたリストを返します。 ### `unique` 配列やオブジェクトから重複する値を削除します。 - プリミティブの配列の場合:`[1,2,2,3,3]|unique` は `[1,2,3]` を返します。 - オブジェクトの配列の場合:`[{"a":1},{"b":2},{"a":1}]|unique` は `[{"a":1},{"b":2}]` を返します。 - オブジェクトの場合、重複する値を持つプロパティを削除し、最後に出現したキーを保持します。 - 文字列の場合、入力をそのまま返します。