From 9fd3fb126331032fabcacfb2dbb1f4b3a408d45d Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Thu, 18 Aug 2022 17:45:34 -0400 Subject: [PATCH] Added basic ToString method to TypeSection --- parser/tree-tostring.go | 22 ++++++++++++++++++++++ parser/tree.go | 7 ++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/parser/tree-tostring.go b/parser/tree-tostring.go index 75698ca..a22f964 100644 --- a/parser/tree-tostring.go +++ b/parser/tree-tostring.go @@ -46,6 +46,11 @@ func (tree *SyntaxTree) ToString (indent int) (output string) { output += doIndent(indent, "---\n") + typeSectionKeys := sortMapKeysAlphabetically(tree.typeSections) + for _, name := range typeSectionKeys { + output += tree.typeSections[name].ToString(indent) + } + dataSectionKeys := sortMapKeysAlphabetically(tree.dataSections) for _, name := range dataSectionKeys { output += tree.dataSections[name].ToString(indent) @@ -246,3 +251,20 @@ func (section *DataSection) ToString (indent int) (output string) { } return } + +func (section *TypeSection) ToString (indent int) (output string) { + output += doIndent ( + indent, + "type ", + section.permission.ToString(), " ", + section.name, ":", + section.what.ToString()) + + if section.defaultValue.value == nil { + // TODO: print out members + } else { + output += " " + section.defaultValue.ToString(0, false) + output += "\n" + } + return +} diff --git a/parser/tree.go b/parser/tree.go index 99b93d3..8f409ea 100644 --- a/parser/tree.go +++ b/parser/tree.go @@ -176,8 +176,9 @@ type TypeSection struct { location file.Location name string - what Type - permission types.Permission + what Type + permission types.Permission + defaultValue Argument // this should be 1 dimensional for now. - members map[string] TypeMember + members map[string] TypeMember }