From bb130d2d6e6ea42629b17a57869f5e7e550df6fd Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Thu, 27 Jan 2022 19:24:11 +0900 Subject: [PATCH] Extract getStringWidth (#12173) --- src/common/util.js | 21 +-------------------- src/document/doc-printer.js | 3 ++- src/document/doc-utils.js | 1 + src/utils/get-string-width.js | 24 ++++++++++++++++++++++++ 4 files changed, 28 insertions(+), 21 deletions(-) create mode 100644 src/utils/get-string-width.js diff --git a/src/common/util.js b/src/common/util.js index 7826e0a0a..374486fd7 100644 --- a/src/common/util.js +++ b/src/common/util.js @@ -1,12 +1,10 @@ "use strict"; -const stringWidth = require("string-width"); const escapeStringRegexp = require("escape-string-regexp"); const getLast = require("../utils/get-last.js"); const { getSupportInfo } = require("../main/support.js"); const isNonEmptyArray = require("../utils/is-non-empty-array.js"); - -const notAsciiRegex = /[^\x20-\x7F]/; +const getStringWidth = require("../utils/get-string-width.js"); const getPenultimate = (arr) => arr[arr.length - 2]; @@ -518,23 +516,6 @@ function getMinNotPresentContinuousCount(str, target) { return max + 1; } -/** - * @param {string} text - * @returns {number} - */ -function getStringWidth(text) { - if (!text) { - return 0; - } - - // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width` - if (!notAsciiRegex.test(text)) { - return text.length; - } - - return stringWidth(text); -} - function addCommentHelper(node, comment) { const comments = node.comments || (node.comments = []); comments.push(comment); diff --git a/src/document/doc-printer.js b/src/document/doc-printer.js index 4b36f4093..1a45f78c6 100644 --- a/src/document/doc-printer.js +++ b/src/document/doc-printer.js @@ -1,7 +1,8 @@ "use strict"; -const { getStringWidth, getLast } = require("../common/util.js"); const { convertEndOfLineToChars } = require("../common/end-of-line.js"); +const getLast = require("../utils/get-last.js"); +const getStringWidth = require("../utils/get-string-width.js"); const { fill, cursor, indent } = require("./doc-builders.js"); const { isConcat, getDocParts } = require("./doc-utils.js"); diff --git a/src/document/doc-utils.js b/src/document/doc-utils.js index 015cf6ebb..7392976b1 100644 --- a/src/document/doc-utils.js +++ b/src/document/doc-utils.js @@ -1,4 +1,5 @@ "use strict"; + const getLast = require("../utils/get-last.js"); const { literalline, join } = require("./doc-builders.js"); diff --git a/src/utils/get-string-width.js b/src/utils/get-string-width.js new file mode 100644 index 000000000..90f6ba57f --- /dev/null +++ b/src/utils/get-string-width.js @@ -0,0 +1,24 @@ +"use strict"; + +const stringWidth = require("string-width"); + +const notAsciiRegex = /[^\x20-\x7F]/; + +/** + * @param {string} text + * @returns {number} + */ +function getStringWidth(text) { + if (!text) { + return 0; + } + + // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width` + if (!notAsciiRegex.test(text)) { + return text.length; + } + + return stringWidth(text); +} + +module.exports = getStringWidth;