Update react side for adjustments and multiple xpath matches.
Showing
1 changed file
with
6 additions
and
5 deletions
| 1 | import React from 'react' | 1 | import React from 'react' | 
| 2 | 2 | ||
| 3 | import { COMMENT_NODE, DOCUMENT_NODE, DOCTYPE_NODE, ELEMENT_NODE, TEXT_NODE } from 'ultrahtml' | 3 | import { COMMENT_NODE, DOCUMENT_NODE, DOCTYPE_NODE, ELEMENT_NODE, TEXT_NODE } from 'ultrahtml' | 
| 4 | import { parseHtml, createMatcher, findNode } from 'astro-wt/html' | 4 | import { parseHtml, createAdjuster, createMatcher, findNode } from 'astro-wt/html' | 
| 5 | import { decode } from 'html-entities' | 5 | import { decode } from 'html-entities' | 
| 6 | 6 | ||
| 7 | export const ReparseStaticChildren = (replaceOptions, Component) => (props) => { | 7 | export const ReparseStaticChildren = (replaceOptions, Component) => (props) => { | 
| ... | @@ -43,13 +43,14 @@ export const CreateReplacement = (Element, propsOrCreator) => (matchOptions) => | ... | @@ -43,13 +43,14 @@ export const CreateReplacement = (Element, propsOrCreator) => (matchOptions) => | 
| 43 | export const DeleteHandler = () => null | 43 | export const DeleteHandler = () => null | 
| 44 | 44 | ||
| 45 | export const Replace = (props) => { | 45 | export const Replace = (props) => { | 
| 46 | const { debug = 0, html, xpath, replacements } = props | 46 | const { debug = 0, html, xpath, adjustments, replacements } = props | 
| 47 | const doc = props.node ? props.node : parseHtml(html, { react: false }) | 47 | const adjuster = createAdjuster(adjustments) | 
| 48 | const node = xpath ? findNode(doc, xpath) : doc | 48 | const doc = props.node ? props.node : parseHtml(html, { adjuster }) | 
| 49 | const nodes = xpath ? findNode(doc, xpath, { single: false }) : [ doc ] | ||
| 49 | const replacers = Object.entries(replacements).map(([ selector, Handler ]) => [ createMatcher(selector), Handler ]) | 50 | const replacers = Object.entries(replacements).map(([ selector, Handler ]) => [ createMatcher(selector), Handler ]) | 
| 50 | const nextDebug = debug ? debug - 1 : 0 | 51 | const nextDebug = debug ? debug - 1 : 0 | 
| 51 | if (debug) console.log('Replace', { html, replacers, node }) | 52 | if (debug) console.log('Replace', { html, replacers, node }) | 
| 52 | const result = Match({ debug: nextDebug, node, replacers }) | 53 | const result = nodes.map(node => Match({ debug: nextDebug, node, replacers })) | 
| 53 | if (debug) console.log('Replace result', result) | 54 | if (debug) console.log('Replace result', result) | 
| 54 | return result | 55 | return result | 
| 55 | } | 56 | } | ... | ... | 
- 
Please register or sign in to post a comment