From cbec1f3d90566f5f00fbdb5d8fbfa4fc3d0d130f Mon Sep 17 00:00:00 2001 From: progfay <19568747+progfay@users.noreply.github.com> Date: Sun, 23 Nov 2025 19:12:02 +0900 Subject: [PATCH] pass result of `RegExp.prototype.exec` to `NodeCreator` --- src/block/node/BlankNode.ts | 4 ++-- src/block/node/CodeNode.ts | 4 ++-- src/block/node/CommandLineNode.ts | 4 ++-- src/block/node/DecorationNode.ts | 4 ++-- src/block/node/ExternalLinkNode.ts | 4 ++-- src/block/node/FormulaNode.ts | 7 +++++-- src/block/node/GoogleMapNode.ts | 11 +++-------- src/block/node/HashTagNode.ts | 9 ++++++--- src/block/node/HelpfeelNode.ts | 4 ++-- src/block/node/IconNode.ts | 2 +- src/block/node/ImageNode.ts | 4 ++-- src/block/node/InternalLinkNode.ts | 2 +- src/block/node/NumberListNode.ts | 4 ++-- src/block/node/PlainNode.ts | 3 +-- src/block/node/QuoteNode.ts | 4 ++-- src/block/node/StrongIconNode.ts | 4 ++-- src/block/node/StrongImageNode.ts | 4 ++-- src/block/node/StrongNode.ts | 4 ++-- src/block/node/creator.ts | 4 ++-- 19 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/block/node/BlankNode.ts b/src/block/node/BlankNode.ts index 7e9e71ca..4f87c68c 100644 --- a/src/block/node/BlankNode.ts +++ b/src/block/node/BlankNode.ts @@ -6,9 +6,9 @@ import type { BlankNode, PlainNode } from "./type.ts"; const blankRegExp = /\[\s+\]/; -const createBlankNode: NodeCreator = (raw, opts) => +const createBlankNode: NodeCreator = ([raw], opts) => opts.context === "table" - ? createPlainNode(raw, opts) + ? createPlainNode(raw) : [ { type: "blank", diff --git a/src/block/node/CodeNode.ts b/src/block/node/CodeNode.ts index 6e610b39..1dbe56d4 100644 --- a/src/block/node/CodeNode.ts +++ b/src/block/node/CodeNode.ts @@ -6,9 +6,9 @@ import type { CodeNode, PlainNode } from "./type.ts"; const codeRegExp = /`.*?`/; -const createCodeNode: NodeCreator = (raw, opts) => +const createCodeNode: NodeCreator = ([raw], opts) => opts.context === "table" - ? createPlainNode(raw, opts) + ? createPlainNode(raw) : [ { type: "code", diff --git a/src/block/node/CommandLineNode.ts b/src/block/node/CommandLineNode.ts index da85375c..26f4684a 100644 --- a/src/block/node/CommandLineNode.ts +++ b/src/block/node/CommandLineNode.ts @@ -7,11 +7,11 @@ import type { CommandLineNode, PlainNode } from "./type.ts"; const commandLineRegExp = /^[$%] .+$/; const createCommandLineNode: NodeCreator = ( - raw: string, + [raw], opts, ) => { if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } const symbol = raw[0] ?? ""; diff --git a/src/block/node/DecorationNode.ts b/src/block/node/DecorationNode.ts index 6b15725b..5fb9f735 100644 --- a/src/block/node/DecorationNode.ts +++ b/src/block/node/DecorationNode.ts @@ -48,11 +48,11 @@ type AsteriskDecorationChar = export type Decoration = Exclude | AsteriskDecorationChar; const createDecorationNode: NodeCreator = ( - raw, + [raw], opts, ) => { if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } const separatorIndex = raw.indexOf(" "); diff --git a/src/block/node/ExternalLinkNode.ts b/src/block/node/ExternalLinkNode.ts index bd674a9f..23f4dec9 100644 --- a/src/block/node/ExternalLinkNode.ts +++ b/src/block/node/ExternalLinkNode.ts @@ -10,11 +10,11 @@ const bracketedUrlRegExp = /\[https?:\/\/[^\s\]]+\]/; const httpRegExp = /https?:\/\/[^\s]+/; const createExternalLinkNode: NodeCreator = ( - raw, + [raw], opts, ) => { if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } const inner = diff --git a/src/block/node/FormulaNode.ts b/src/block/node/FormulaNode.ts index 4608ba27..74a25e01 100644 --- a/src/block/node/FormulaNode.ts +++ b/src/block/node/FormulaNode.ts @@ -7,9 +7,12 @@ import type { FormulaNode, PlainNode } from "./type.ts"; const formulaWithTailHalfSpaceRegExp = /\[\$ .+? \]/; const formulaRegExp = /\[\$ [^\]]+\]/; -const createFormulaNode: NodeCreator = (raw, opts) => +const createFormulaNode: NodeCreator = ( + [raw], + opts, +) => opts.context === "table" - ? createPlainNode(raw, opts) + ? createPlainNode(raw) : [ { type: "formula", diff --git a/src/block/node/GoogleMapNode.ts b/src/block/node/GoogleMapNode.ts index c21b86a2..730c14e0 100644 --- a/src/block/node/GoogleMapNode.ts +++ b/src/block/node/GoogleMapNode.ts @@ -24,18 +24,13 @@ const parseCoordinate: (format: string) => Coordinate = (format) => { }; const createGoogleMapNode: NodeCreator = ( - raw, + match, opts, ) => { + const raw = match[0]; if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } - - const match = - raw.match(placeFirstGoogleMapRegExp) ?? - raw.match(coordFirstGoogleMapRegExp); - if (match === null) return []; - const isCoordFirst = raw.startsWith("[N") || raw.startsWith("[S"); const [, coord = "", place = ""] = isCoordFirst ? match diff --git a/src/block/node/HashTagNode.ts b/src/block/node/HashTagNode.ts index 3db4b9a2..8ed1b0d1 100644 --- a/src/block/node/HashTagNode.ts +++ b/src/block/node/HashTagNode.ts @@ -6,9 +6,12 @@ import type { HashTagNode, PlainNode } from "./type.ts"; const hashTagRegExp = /(?:^|\s)#\S+/; -const createHashTagNode: NodeCreator = (raw, opts) => { +const createHashTagNode: NodeCreator = ( + [raw], + opts, +) => { if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } if (raw.startsWith("#")) { @@ -25,7 +28,7 @@ const createHashTagNode: NodeCreator = (raw, opts) => { const tag = raw.substring(1); return [ - ...createPlainNode(space, opts), + ...createPlainNode(space), { type: "hashTag", raw: tag, diff --git a/src/block/node/HelpfeelNode.ts b/src/block/node/HelpfeelNode.ts index f4a3282f..bed8d3e2 100644 --- a/src/block/node/HelpfeelNode.ts +++ b/src/block/node/HelpfeelNode.ts @@ -7,11 +7,11 @@ import type { HelpfeelNode, PlainNode } from "./type.ts"; const helpfeelRegExp = /^\? .+$/; const createHelpfeelNode: NodeCreator = ( - raw, + [raw], opts, ) => opts.context === "table" - ? createPlainNode(raw, opts) + ? createPlainNode(raw) : [ { type: "helpfeel", diff --git a/src/block/node/IconNode.ts b/src/block/node/IconNode.ts index 0a0c140f..4d30b600 100644 --- a/src/block/node/IconNode.ts +++ b/src/block/node/IconNode.ts @@ -5,7 +5,7 @@ import type { IconNode } from "./type.ts"; const iconRegExp = /\[[^[\]]*\.icon(?:\*[1-9]\d*)?\]/; -const createIconNode: NodeCreator = (raw) => { +const createIconNode: NodeCreator = ([raw]) => { const target = raw.substring(1, raw.length - 1); const index = target.lastIndexOf(".icon"); const path = target.substring(0, index); diff --git a/src/block/node/ImageNode.ts b/src/block/node/ImageNode.ts index 7a625561..7bbe0605 100644 --- a/src/block/node/ImageNode.ts +++ b/src/block/node/ImageNode.ts @@ -20,9 +20,9 @@ const isImageUrl = (text: string): boolean => const isGyazoImageUrl = (text: string): boolean => /^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}(\/raw)?$/.test(text); -const createImageNode: NodeCreator = (raw, opts) => { +const createImageNode: NodeCreator = ([raw], opts) => { if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } const index = raw.search(/\s/); diff --git a/src/block/node/InternalLinkNode.ts b/src/block/node/InternalLinkNode.ts index 6fc24e35..db6f2941 100644 --- a/src/block/node/InternalLinkNode.ts +++ b/src/block/node/InternalLinkNode.ts @@ -5,7 +5,7 @@ import type { LinkNode } from "./type.ts"; const internalLinkRegExp = /\[\/?[^[\]]+\]/; -const createInternalLinkNode: NodeCreator = (raw) => { +const createInternalLinkNode: NodeCreator = ([raw]) => { const href = raw.substring(1, raw.length - 1); return [ { diff --git a/src/block/node/NumberListNode.ts b/src/block/node/NumberListNode.ts index b859ac43..11b1fd7c 100644 --- a/src/block/node/NumberListNode.ts +++ b/src/block/node/NumberListNode.ts @@ -7,11 +7,11 @@ import type { NumberListNode, PlainNode } from "./type.ts"; const numberListRegExp = /^[0-9]+\. .*$/; const createNumberListNode: NodeCreator = ( - raw, + [raw], opts, ) => { if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } const separatorIndex = raw.indexOf(" "); diff --git a/src/block/node/PlainNode.ts b/src/block/node/PlainNode.ts index 8a39c826..59c7b267 100644 --- a/src/block/node/PlainNode.ts +++ b/src/block/node/PlainNode.ts @@ -1,8 +1,7 @@ -import type { NodeCreator } from "./creator.ts"; import type { TerminateNodeParser } from "./index.ts"; import type { PlainNode } from "./type.ts"; -export const createPlainNode: NodeCreator = (raw) => [ +export const createPlainNode = (raw: string): [PlainNode] => [ { type: "plain", raw, diff --git a/src/block/node/QuoteNode.ts b/src/block/node/QuoteNode.ts index 8fa2de8c..c804d052 100644 --- a/src/block/node/QuoteNode.ts +++ b/src/block/node/QuoteNode.ts @@ -6,9 +6,9 @@ import type { PlainNode, QuoteNode } from "./type.ts"; const quoteRegExp = /^>.*$/; -const createQuoteNode: NodeCreator = (raw, opts) => +const createQuoteNode: NodeCreator = ([raw], opts) => opts.context === "table" - ? createPlainNode(raw, opts) + ? createPlainNode(raw) : [ { type: "quote", diff --git a/src/block/node/StrongIconNode.ts b/src/block/node/StrongIconNode.ts index f4efdd5a..c78bb62e 100644 --- a/src/block/node/StrongIconNode.ts +++ b/src/block/node/StrongIconNode.ts @@ -6,10 +6,10 @@ import type { PlainNode, StrongIconNode } from "./type.ts"; const strongIconRegExp = /\[\[[^[\]]*\.icon(?:\*\d+)?\]\]/; const createStrongIconNode: NodeCreator = ( - raw, + [raw], opts, ) => { - if (opts.context === "table") return createPlainNode(raw, opts); + if (opts.context === "table") return createPlainNode(raw); const target = raw.substring(2, raw.length - 2); const index = target.lastIndexOf(".icon"); diff --git a/src/block/node/StrongImageNode.ts b/src/block/node/StrongImageNode.ts index 34600314..8951647f 100644 --- a/src/block/node/StrongImageNode.ts +++ b/src/block/node/StrongImageNode.ts @@ -10,11 +10,11 @@ const strongGyazoImageRegExp = /\[\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}\]\]/; const createStrongImageNode: NodeCreator = ( - raw, + [raw], opts, ) => { if (opts.context === "table") { - return createPlainNode(raw, opts); + return createPlainNode(raw); } const src = raw.substring(2, raw.length - 2); diff --git a/src/block/node/StrongNode.ts b/src/block/node/StrongNode.ts index 11ae69f2..c3c2b7f1 100644 --- a/src/block/node/StrongNode.ts +++ b/src/block/node/StrongNode.ts @@ -7,9 +7,9 @@ import type { PlainNode, StrongNode } from "./type.ts"; const strongRegExp = /\[\[(?:[^[]|\[[^[]).*?\]*\]\]/; -const createStrongNode: NodeCreator = (raw, opts) => +const createStrongNode: NodeCreator = ([raw], opts) => opts.context === "table" - ? createPlainNode(raw, opts) + ? createPlainNode(raw) : [ { type: "strong", diff --git a/src/block/node/creator.ts b/src/block/node/creator.ts index 35e26157..e04c6761 100644 --- a/src/block/node/creator.ts +++ b/src/block/node/creator.ts @@ -3,7 +3,7 @@ import { convertToNodes } from "./index.ts"; import type { Node } from "./type.ts"; export type NodeCreator = ( - target: string, + match: RegExpExecArray, opts: NodeParserOption, ) => T[]; @@ -33,7 +33,7 @@ export const createNodeParser: NodeParserCreator = ( const left = text.substring(0, match.index); const right = text.substring(match.index + match[0].length); - const node = nodeCreator(match[0], opts); + const node = nodeCreator(match, opts); return [ ...convertToNodes(left, opts), ...node,