12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package nginx
- import (
- "bufio"
- "github.com/emirpasic/gods/stacks/linkedliststack"
- "strings"
- )
- func fmtCode(content string) (fmtContent string) {
- fmtContent = fmtCodeWithIndent(content, 0)
- return
- }
- func fmtCodeWithIndent(content string, indent int) (fmtContent string) {
- /*
- Format content
- 1. TrimSpace for each line
- 2. use stack to count how many \t should add
- */
- stack := linkedliststack.New()
- scanner := bufio.NewScanner(strings.NewReader(content))
- for scanner.Scan() {
- text := scanner.Text()
- text = strings.TrimSpace(text)
- before := stack.Size()
- for _, char := range text {
- matchParentheses(stack, char)
- }
- after := stack.Size()
- fmtContent += strings.Repeat("\t", indent)
- if before == after {
- fmtContent += strings.Repeat("\t", stack.Size()) + text + "\n"
- } else {
- fmtContent += text + "\n"
- }
- }
- fmtContent = strings.Trim(fmtContent, "\n")
- return
- }
|