Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Rewrite element with rehype.

License

NotificationsYou must be signed in to change notification settings

jaywcjlove/rehype-rewrite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Usingmy app is also a way tosupport me:
KeyzerVidwall HubVidCropVidwallMousio HintMousioMusicerAudioerFileSentinelFocusCursorVideoerKeyClickerDayBarIconedMousioQuick RSSQuick RSSWeb ServeCopybook GeneratorDevTutor for SwiftUIRegexMateTime PassageIconize FolderTextsound SaverCreate Custom SymbolsDevHubResume RevisePalette GeniusSymbol Scribe

rehype-rewrite

Buy me a coffeeDownloadsNPM versionBuildCoverage Statusnpm bundle sizeRepo Dependents

Rewrite element withrehype.

Installation

This package isESM only: Node 12+ is needed to use it and it must beimport instead ofrequire.

npm install rehype-rewrite

Usage

🚧 Migrate from rehype-rewritev2.x tov3.x.

rehype()- .use(rehypeRewrite, (node, index, parent) => {})+ .use(rehypeRewrite, {+   rewrite: (node, index, parent) => {}+ })
import{rehype}from'rehype';importrehypeRewritefrom'rehype-rewrite';importstringifyfrom'rehype-stringify';consthtml=`<h1>header</h1>`;consthtmlStr=rehype().data('settings',{fragment:true}).use(rehypeRewrite,{rewrite:(node,index,parent)=>{if(node.type=='text'&&node.value=='header'){node.value=''}}}).use(stringify).processSync(html).toString()
<h1>header</h1>

Output:

<h1></h1>

Options

import{Plugin}from'unified';import{Root,Element,ElementContent,RootContent}from'hast';/** Get the node tree source code string */exportdeclareconstgetCodeString:(data?:ElementContent[],code?:string)=>string;exportdeclaretypeRehypeRewriteOptions={/**   * Select an element to be wrapped. Expects a string selector that can be passed to hast-util-select ([supported selectors](https://github.com/syntax-tree/hast-util-select/blob/master/readme.md#support)).   * If `selector` is not set then wrap will check for a body all elements.   */selector?:string;/** Rewrite Element. */rewrite(node:Root|RootContent,index:number|null,parent:Root|Element|null):void;};declareconstremarkRewrite:Plugin<[RehypeRewriteOptions?],Root>;exportdefaultremarkRewrite;

selector?: string;

Select an element to be wrapped. Expects a string selector that can be passed to hast-util-select (supported selectors). Ifselector is not set then wrap will check for a body all elements.

rewrite(node, index, parent): void;

Rewrite element.

Example

Example 1

import{rehype}from'rehype';importrehypeRewritefrom'rehype-rewrite';importstringifyfrom'rehype-stringify';consthtml=`<h1>header</h1><h1>header</h1><h1>header</h1>`;consthtmlStr=rehype().data('settings',{fragment:true}).use(rehypeRewrite,{selector:'h1',rewrite:(node)=>{if(node.type==='element'){node.properties.className='test';}}}).use(stringify).processSync(html).toString()
<h1>header</h1><h1>header</h1><h1class="title3">header</h1>

Output:

<h1class="test">header</h1><h1class="test">header</h1><h1class="test">header</h1>

Example 2

import{rehype}from'rehype';importrehypeRewritefrom'rehype-rewrite';importstringifyfrom'rehype-stringify';consthtml=`<h1>header</h1>`;consthtmlStr=rehype().use(rehypeRewrite,{rewrite:(node)=>{if(node.type=='element'&&node.tagName=='body'){node.properties={ ...node.properties,style:'color:red;'}}}}).use(stringify).processSync(html).toString()
<h1>header</h1>

Output:

<html><head></head><bodystyle="color:red;"><h1>header</h1></body></html>

Example 3

import{rehype}from'rehype';importrehypeRewritefrom'rehype-rewrite';importstringifyfrom'rehype-stringify';consthtml=`<h1>hello</h1>`;consthtmlStr=rehype().data('settings',{fragment:true}).use(rehypeRewrite,{rewrite:(node)=>{if(node.type=='element'&&node.tagName=='h1'){node.children=[ ...node.children,{type:'element',tagName:'span',properties:{},children:[{type:'text',value:' world'}]}]}}}).use(stringify).processSync(html).toString()
<h1>hello</h1>

Output:

<h1>hello<span> world</span></h1>

Example 4

import{unified}from'unified';importremarkParsefrom'remark-parse';importrehypeRawfrom'rehype-raw';importremark2rehypefrom'remark-rehype';importrehypeRewritefrom'rehype-rewrite';importstringifyfrom'rehype-stringify';consthtml=`<h1>hello</h1>`;consthtmlStr=unified().use(remarkParse).use(remark2rehype,{allowDangerousHtml:true}).use(rehypeRaw).use(rehypeRewrite,{rewrite:(node)=>{if(node.type=='element'&&node.tagName=='h1'){node.properties={ ...node.properties,style:'color:red;'}}}}).use(stringify).processSync(html).toString()
<h1>hello</h1>

Output:

<h1style="color:red;">Hello World!</h1>

Related

Contributors

As always, thanks to our amazing contributors!

Made withaction-contributors.

License

MIT ©Kenny Wong


[8]ページ先頭

©2009-2025 Movatter.jp