From 0f9078e9d7a2a5943cc108c08179d771b4a77c06 Mon Sep 17 00:00:00 2001 From: fisker Date: Wed, 5 Mar 2025 13:32:58 +0800 Subject: [PATCH] feat: add `TokenStore#get{Loc,Range}()` --- src/external/token-store/index.ts | 20 ++++++++++++++++++++ test/tokens.js | 15 +++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/external/token-store/index.ts b/src/external/token-store/index.ts index a0bdabb..3369210 100644 --- a/src/external/token-store/index.ts +++ b/src/external/token-store/index.ts @@ -751,4 +751,24 @@ export default class TokenStore { filter: isCommentToken, }) } + + /** + * Returns the location of the given node or token. + * @param nodeOrToken The node or token to get the location of. + * @returns The location of the node or token. + */ + // eslint-disable-next-line class-methods-use-this + public getLoc(nodeOrToken: HasLocation) { + return nodeOrToken.loc + } + + /** + * Returns the range of the given node or token. + * @param nodeOrToken The node or token to get the range of. + * @returns The range of the node or token. + */ + // eslint-disable-next-line class-methods-use-this + public getRange(nodeOrToken: HasLocation) { + return nodeOrToken.range + } } diff --git a/test/tokens.js b/test/tokens.js index 51a68c2..de37029 100644 --- a/test/tokens.js +++ b/test/tokens.js @@ -285,4 +285,19 @@ describe("services.getTemplateBodyTokenStore", () => { assert.deepStrictEqual(actual, ["div", ">"]) }) }) + + describe("TokenStore#get{Range,Loc}()", () => { + it("should return loc and range.", () => { + const { + templateBody: { + children: [node], + tokens: [token], + }, + } = ast + assert.equal(typeof tokens.getRange(node)[0], "number") + assert.equal(typeof tokens.getRange(token)[1], "number") + assert.equal(typeof tokens.getLoc(node).start.line, "number") + assert.equal(typeof tokens.getLoc(node).end.column, "number") + }) + }) }) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy