From 5c9cdc0ad16954dbd0a7af86001b6fd00ab365bb Mon Sep 17 00:00:00 2001 From: Arpad Ryszka Date: Sun, 29 Oct 2017 00:49:03 +0200 Subject: [PATCH] simplify inserted whitespaces --- keyval.parser | 5 ++--- whitespace.go | 17 +++++++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/keyval.parser b/keyval.parser index 609d8c5..496f144 100644 --- a/keyval.parser +++ b/keyval.parser @@ -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; diff --git a/whitespace.go b/whitespace.go index fee3c27..2683a37 100644 --- a/whitespace.go +++ b/whitespace.go @@ -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 i > 0 { - items = append(items, SequenceItem{Name: whitespaceName, Min: 0, Max: -1}) - } - if item.Max >= 0 && item.Max <= 1 { + if i > 0 { + items = append(items, whitespace) + } + 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}) }