* @param {string} text * @param {Quote | boolean} preferredQuoteOrPreferSingleQuote * @returns {Quote}
(text, preferredQuoteOrPreferSingleQuote)
| 29 | * @returns {Quote} |
| 30 | */ |
| 31 | function getPreferredQuote(text, preferredQuoteOrPreferSingleQuote) { |
| 32 | const { preferred, alternate } = |
| 33 | preferredQuoteOrPreferSingleQuote === true || |
| 34 | preferredQuoteOrPreferSingleQuote === SINGLE_QUOTE |
| 35 | ? SINGLE_QUOTE_SETTINGS |
| 36 | : DOUBLE_QUOTE_SETTINGS; |
| 37 | const { length } = text; |
| 38 | let preferredQuoteCount = 0; |
| 39 | let alternateQuoteCount = 0; |
| 40 | |
| 41 | // `for..of` loop is known slower |
| 42 | for (let index = 0; index < length; index++) { |
| 43 | const codePoint = text.charCodeAt(index); |
| 44 | if (codePoint === preferred.codePoint) { |
| 45 | preferredQuoteCount++; |
| 46 | } else if (codePoint === alternate.codePoint) { |
| 47 | alternateQuoteCount++; |
| 48 | } |
| 49 | } |
| 50 | |
| 51 | return (preferredQuoteCount > alternateQuoteCount ? alternate : preferred) |
| 52 | .character; |
| 53 | } |
| 54 | |
| 55 | export { DOUBLE_QUOTE, getPreferredQuote, SINGLE_QUOTE }; |
no outgoing calls
no test coverage detected
searching dependent graphs…