@@ -10,17 +10,18 @@ import { RsMatch, RsRegex } from '@/wasm'
1010const dataUrlPat = r `data:image\/.*?,[a-zA-Z0-9+/]*?=?=?`
1111
1212const imgTagDataUrlImgPat = r `(<img.*?src\s*=\s*")(${ dataUrlPat } )"[^/]*?\/?>`
13- const mkdUrlImgPat = r `(!\[[^]]*\]\()([^)]+)\)`
1413const imgTagUrlImgPat = r `(<img\s*.*?src\s*=\s*["'])(.*?)["'][^>]*?>`
1514const mkdDataUrlImgPat = r `(!\[.*?]\()(${ dataUrlPat } )\)`
15+
16+ const markdownImages = / (?< prefix > ! \[ [ ^ \] ] * \] \( ) (?< uri > [ ^ ) \s ] + ) [ ^ ) ] * \) / g
1617const wikilinkImages = / ! \[ ( \[ .+ ?\] ) \] [ \s \S ] + ?(?< prefix > \1: \s * ) (?< uri > .* ?) \s + / g
1718const exludeDomains = / \. c n b l o g s \. c o m / i
1819const webUrlPrefix = / ^ h t t p s ? : \/ \/ / i
1920
2021export const FILTER_BYTE_OFFSET = - 9999
2122
2223function 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
3435export 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