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] | "\\" .)+;
symbol = word+ | quoted;
key-form:alias = symbol | symbol ("." symbol)+;
key-form:alias = symbol ("." symbol)*;
key = key-form;
group-key-form:alias = "[" key-form "]";
group-key = (comment "\n")? group-key-form | group-key-form;
group-key = (comment "\n")? "[" key-form "]";
value-chars:alias:nows = ([^\\"\n=# \b\f\r\t\v] | "\\" .)+;
value = value-chars+ | quoted;

View File

@ -65,12 +65,13 @@ func applyWhitespaceToSeq(s *sequenceDefinition) []definition {
items []SequenceItem
)
whitespace := SequenceItem{Name: whitespaceName, Min: 0, Max: -1}
for i, item := range s.items {
if item.Max >= 0 && item.Max <= 1 {
if i > 0 {
items = append(items, SequenceItem{Name: whitespaceName, Min: 0, Max: -1})
items = append(items, whitespace)
}
if item.Max >= 0 && item.Max <= 1 {
items = append(items, item)
continue
}
@ -78,7 +79,7 @@ func applyWhitespaceToSeq(s *sequenceDefinition) []definition {
singleItem := SequenceItem{Name: item.Name, Min: 1, Max: 1}
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)
restItems := SequenceItem{Name: restName, Min: 0, Max: -1}
@ -90,12 +91,16 @@ func applyWhitespaceToSeq(s *sequenceDefinition) []definition {
}
if item.Min > 0 {
if i > 0 {
items = append(items, whitespace)
}
items = append(items, singleItem, restItems)
continue
}
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)
items = append(items, SequenceItem{Name: optName, Min: 0, Max: 1})
}