MCPcopy Index your code
hub / github.com/codeaashu/claude-code / expandTabs

Function expandTabs

src/ink/tabstops.ts:9–46  ·  view source on GitHub ↗
(
  text: string,
  interval = DEFAULT_TAB_INTERVAL,
)

Source from the content-addressed store, hash-verified

7const DEFAULT_TAB_INTERVAL = 8
8
9export function expandTabs(
10 text: string,
11 interval = DEFAULT_TAB_INTERVAL,
12): string {
13 if (!text.includes('\t')) {
14 return text
15 }
16
17 const tokenizer = createTokenizer()
18 const tokens = tokenizer.feed(text)
19 tokens.push(...tokenizer.flush())
20
21 let result = ''
22 let column = 0
23
24 for (const token of tokens) {
25 if (token.type === 'sequence') {
26 result += token.value
27 } else {
28 const parts = token.value.split(/(\t|\n)/)
29 for (const part of parts) {
30 if (part === '\t') {
31 const spaces = interval - (column % interval)
32 result += ' '.repeat(spaces)
33 column += spaces
34 } else if (part === '\n') {
35 result += part
36 column = 0
37 } else {
38 result += part
39 column += stringWidth(part)
40 }
41 }
42 }
43 }
44
45 return result
46}
47

Callers 1

measureTextNodeFunction · 0.85

Calls 4

createTokenizerFunction · 0.85
feedMethod · 0.80
pushMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected