simplify inserted whitespaces

This commit is contained in:
Arpad Ryszka 2017-10-29 00:49:03 +02:00
parent 89a5e3ae0d
commit 5c9cdc0ad1
2 changed files with 13 additions and 9 deletions

View File

@ -7,11 +7,10 @@ quoted:alias:nows = "\"" ([^\\"] | "\\" .)* "\"";
word:alias:nows = ([^\\"\n=#.\[\] \b\f\r\t\v] | "\\" .)+; word:alias:nows = ([^\\"\n=#.\[\] \b\f\r\t\v] | "\\" .)+;
symbol = word+ | quoted; symbol = word+ | quoted;
key-form:alias = symbol | symbol ("." symbol)+; key-form:alias = symbol ("." symbol)*;
key = key-form; key = key-form;
group-key-form:alias = "[" key-form "]"; group-key = (comment "\n")? "[" key-form "]";
group-key = (comment "\n")? group-key-form | group-key-form;
value-chars:alias:nows = ([^\\"\n=# \b\f\r\t\v] | "\\" .)+; value-chars:alias:nows = ([^\\"\n=# \b\f\r\t\v] | "\\" .)+;
value = value-chars+ | quoted; value = value-chars+ | quoted;

View File

@ -65,12 +65,13 @@ func applyWhitespaceToSeq(s *sequenceDefinition) []definition {
items []SequenceItem items []SequenceItem
) )
whitespace := SequenceItem{Name: whitespaceName, Min: 0, Max: -1}
for i, item := range s.items { for i, item := range s.items {
if i > 0 {
items = append(items, SequenceItem{Name: whitespaceName, Min: 0, Max: -1})
}
if item.Max >= 0 && item.Max <= 1 { if item.Max >= 0 && item.Max <= 1 {
if i > 0 {
items = append(items, whitespace)
}
items = append(items, item) items = append(items, item)
continue continue
} }
@ -78,7 +79,7 @@ func applyWhitespaceToSeq(s *sequenceDefinition) []definition {
singleItem := SequenceItem{Name: item.Name, Min: 1, Max: 1} singleItem := SequenceItem{Name: item.Name, Min: 1, Max: 1}
restName := patchName(item.Name, s.nodeName(), "wsrest") restName := patchName(item.Name, s.nodeName(), "wsrest")
restDef := newSequence(restName, Alias, []SequenceItem{{Name: whitespaceName, Min: 0, Max: -1}, singleItem}) restDef := newSequence(restName, Alias, []SequenceItem{whitespace, singleItem})
defs = append(defs, restDef) defs = append(defs, restDef)
restItems := SequenceItem{Name: restName, Min: 0, Max: -1} restItems := SequenceItem{Name: restName, Min: 0, Max: -1}
@ -90,12 +91,16 @@ func applyWhitespaceToSeq(s *sequenceDefinition) []definition {
} }
if item.Min > 0 { if item.Min > 0 {
if i > 0 {
items = append(items, whitespace)
}
items = append(items, singleItem, restItems) items = append(items, singleItem, restItems)
continue continue
} }
optName := patchName(item.Name, s.nodeName(), "wsopt") optName := patchName(item.Name, s.nodeName(), "wsopt")
optDef := newSequence(optName, Alias, []SequenceItem{singleItem, restItems}) optDef := newSequence(optName, Alias, []SequenceItem{whitespace, singleItem, restItems})
defs = append(defs, optDef) defs = append(defs, optDef)
items = append(items, SequenceItem{Name: optName, Min: 0, Max: 1}) items = append(items, SequenceItem{Name: optName, Min: 0, Max: 1})
} }