Skip to content

Commit 3e4bf12

Browse files
committed
refactor: replace rust regex for markdown images
1 parent c734cd4 commit 3e4bf12

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/service/extract-img/find-img-link.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,18 @@ import { RsMatch, RsRegex } from '@/wasm'
1010
const dataUrlPat = r`data:image\/.*?,[a-zA-Z0-9+/]*?=?=?`
1111

1212
const imgTagDataUrlImgPat = r`(<img.*?src\s*=\s*")(${dataUrlPat})"[^/]*?\/?>`
13-
const mkdUrlImgPat = r`(!\[[^]]*\]\()([^)]+)\)`
1413
const imgTagUrlImgPat = r`(<img\s*.*?src\s*=\s*["'])(.*?)["'][^>]*?>`
1514
const mkdDataUrlImgPat = r`(!\[.*?]\()(${dataUrlPat})\)`
15+
16+
const markdownImages = /(?<prefix>!\[[^\]]*\]\()(?<uri>[^)\s]+)[^)]*\)/g
1617
const wikilinkImages = /!\[(\[.+?\])\][\s\S]+?(?<prefix>\1:\s*)(?<uri>.*?)\s+/g
1718
const exludeDomains = /\.cnblogs\.com/i
1819
const webUrlPrefix = /^https?:\/\//i
1920

2021
export const FILTER_BYTE_OFFSET = -9999
2122

2223
function getImagesWithTs(text: string) {
23-
return [...text.matchAll(wikilinkImages)].map(m => {
24+
return [...text.matchAll(markdownImages)].concat([...text.matchAll(wikilinkImages)]).map(m => {
2425
const uri = m.groups?.uri ?? ''
2526
return <ImgInfo>{
2627
byteOffset: FILTER_BYTE_OFFSET,
@@ -33,8 +34,7 @@ function getImagesWithTs(text: string) {
3334

3435
export function findImgLink(text: string): ImgInfo[] {
3536
const imgTagUrlImgMgs = RsRegex.matches(imgTagUrlImgPat, text) as RsMatch[]
36-
const mkdUrlImgMgs = RsRegex.matches(mkdUrlImgPat, text) as RsMatch[]
37-
const urlImgInfo = imgTagUrlImgMgs.concat(mkdUrlImgMgs).map(mg => {
37+
const urlImgInfo = imgTagUrlImgMgs.map(mg => {
3838
const data = mg.groups[2]
3939
const prefix = mg.groups[1]
4040
const byteOffset = mg.byte_offset + Buffer.from(prefix).length

0 commit comments

Comments
 (0)