mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	cmd: fmt: Fix brace opening block indentation (#3153)
This fixes indentation for blocks starting with
a brace as:
```Caddyfile
{
    ...
}
```
Fixes #3144
Signed-off-by: Vaibhav <vrongmeal@gmail.com>
			
			
This commit is contained in:
		
							parent
							
								
									b62f8e0582
								
							
						
					
					
						commit
						f192ae5ea5
					
				@ -43,6 +43,12 @@ func Format(body []byte) []byte {
 | 
			
		||||
		err error
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	insertTabs := func(num int) {
 | 
			
		||||
		for tabs := num; tabs > 0; tabs-- {
 | 
			
		||||
			result.WriteRune('\t')
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for {
 | 
			
		||||
		prev = curr
 | 
			
		||||
		curr = next
 | 
			
		||||
@ -102,7 +108,7 @@ func Format(body []byte) []byte {
 | 
			
		||||
				if unicode.IsSpace(next) {
 | 
			
		||||
					indentation++
 | 
			
		||||
 | 
			
		||||
					if !unicode.IsSpace(prev) {
 | 
			
		||||
					if !unicode.IsSpace(prev) && !lineBegin {
 | 
			
		||||
						result.WriteRune(' ')
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
@ -114,10 +120,12 @@ func Format(body []byte) []byte {
 | 
			
		||||
					continue
 | 
			
		||||
				} else {
 | 
			
		||||
					lineBegin = false
 | 
			
		||||
					if indentation > 0 {
 | 
			
		||||
						for tabs := indentation; tabs > 0; tabs-- {
 | 
			
		||||
							result.WriteRune('\t')
 | 
			
		||||
						}
 | 
			
		||||
					if curr == '{' && unicode.IsSpace(next) {
 | 
			
		||||
						// If the block is global, i.e., starts with '{'
 | 
			
		||||
						// One less indentation for these blocks.
 | 
			
		||||
						insertTabs(indentation - 1)
 | 
			
		||||
					} else {
 | 
			
		||||
						insertTabs(indentation)
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
 | 
			
		||||
@ -45,6 +45,18 @@ m {
 | 
			
		||||
	n { o
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  { q
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
{ r
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
`)
 | 
			
		||||
	expected := []byte(`
 | 
			
		||||
a
 | 
			
		||||
@ -75,6 +87,20 @@ m {
 | 
			
		||||
		o
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	q
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		r
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
`)
 | 
			
		||||
	testFormat(t, input, expected)
 | 
			
		||||
}
 | 
			
		||||
@ -110,6 +136,9 @@ b {
 | 
			
		||||
 | 
			
		||||
d { {$E}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
{ {$F}
 | 
			
		||||
}
 | 
			
		||||
`)
 | 
			
		||||
	expected := []byte(`
 | 
			
		||||
{$A}
 | 
			
		||||
@ -121,6 +150,10 @@ b {
 | 
			
		||||
d {
 | 
			
		||||
	{$E}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	{$F}
 | 
			
		||||
}
 | 
			
		||||
`)
 | 
			
		||||
	testFormat(t, input, expected)
 | 
			
		||||
}
 | 
			
		||||
@ -190,6 +223,6 @@ g {
 | 
			
		||||
func testFormat(t *testing.T, input, expected []byte) {
 | 
			
		||||
	output := Format(input)
 | 
			
		||||
	if string(output) != string(expected) {
 | 
			
		||||
		t.Errorf("Expected:\n%s\ngot:\n%s", string(output), string(expected))
 | 
			
		||||
		t.Errorf("Expected:\n%s\ngot:\n%s", string(expected), string(output))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user