@@ -10,17 +10,18 @@ import { RsMatch, RsRegex } from '@/wasm'
10
10
const dataUrlPat = r `data:image\/.*?,[a-zA-Z0-9+/]*?=?=?`
11
11
12
12
const imgTagDataUrlImgPat = r `(<img.*?src\s*=\s*")(${ dataUrlPat } )"[^/]*?\/?>`
13
- const mkdUrlImgPat = r `(!\[[^]]*\]\()([^)]+)\)`
14
13
const imgTagUrlImgPat = r `(<img\s*.*?src\s*=\s*["'])(.*?)["'][^>]*?>`
15
14
const mkdDataUrlImgPat = r `(!\[.*?]\()(${ dataUrlPat } )\)`
15
+
16
+ const markdownImages = / (?< prefix > ! \[ [ ^ \] ] * \] \( ) (?< uri > [ ^ ) \s ] + ) [ ^ ) ] * \) / g
16
17
const wikilinkImages = / ! \[ ( \[ .+ ?\] ) \] [ \s \S ] + ?(?< prefix > \1: \s * ) (?< uri > .* ?) \s + / g
17
18
const exludeDomains = / \. c n b l o g s \. c o m / i
18
19
const webUrlPrefix = / ^ h t t p s ? : \/ \/ / i
19
20
20
21
export const FILTER_BYTE_OFFSET = - 9999
21
22
22
23
function getImagesWithTs ( text : string ) {
23
- return [ ...text . matchAll ( wikilinkImages ) ] . map ( m => {
24
+ return [ ...text . matchAll ( markdownImages ) ] . concat ( [ ... text . matchAll ( wikilinkImages ) ] ) . map ( m => {
24
25
const uri = m . groups ?. uri ?? ''
25
26
return < ImgInfo > {
26
27
byteOffset : FILTER_BYTE_OFFSET ,
@@ -33,8 +34,7 @@ function getImagesWithTs(text: string) {
33
34
34
35
export function findImgLink ( text : string ) : ImgInfo [ ] {
35
36
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 => {
38
38
const data = mg . groups [ 2 ]
39
39
const prefix = mg . groups [ 1 ]
40
40
const byteOffset = mg . byte_offset + Buffer . from ( prefix ) . length
0 commit comments