github.com/getgauge/gauge@v1.6.9/formatter/formatSpecification.go (about) 1 /*---------------------------------------------------------------- 2 * Copyright (c) ThoughtWorks, Inc. 3 * Licensed under the Apache License, Version 2.0 4 * See LICENSE in the project root for license information. 5 *----------------------------------------------------------------*/ 6 7 package formatter 8 9 import ( 10 "bytes" 11 12 "strings" 13 14 "github.com/getgauge/gauge/gauge" 15 ) 16 17 type formatter struct { 18 buffer bytes.Buffer 19 itemQueue *gauge.ItemQueue 20 } 21 22 func (formatter *formatter) Specification(specification *gauge.Specification) { 23 } 24 25 func (formatter *formatter) Heading(heading *gauge.Heading) { 26 if heading.HeadingType == gauge.SpecHeading { 27 formatter.buffer.WriteString(FormatHeading(heading.Value, "#")) 28 } else if heading.HeadingType == gauge.ScenarioHeading { 29 formatter.buffer.WriteString(FormatHeading(heading.Value, "##")) 30 } 31 } 32 33 func (formatter *formatter) Tags(tags *gauge.Tags) { 34 if !strings.HasSuffix(formatter.buffer.String(), "\n\n") { 35 formatter.buffer.WriteString("\n") 36 } 37 formatter.buffer.WriteString(FormatTags(tags)) 38 if formatter.itemQueue.Peek() != nil && (formatter.itemQueue.Peek().Kind() != gauge.CommentKind || strings.TrimSpace(formatter.itemQueue.Peek().(*gauge.Comment).Value) != "") { 39 formatter.buffer.WriteString("\n") 40 } 41 } 42 43 func (formatter *formatter) Table(table *gauge.Table) { 44 formatter.buffer.WriteString(strings.TrimPrefix(FormatTable(table), "\n")) 45 } 46 47 func (formatter *formatter) DataTable(dataTable *gauge.DataTable) { 48 if !dataTable.IsExternal { 49 formatter.Table(dataTable.Table) 50 } else { 51 formatter.buffer.WriteString(formatExternalDataTable(dataTable)) 52 } 53 } 54 55 func (formatter *formatter) TearDown(t *gauge.TearDown) { 56 formatter.buffer.WriteString(t.Value + "\n") 57 } 58 59 func (formatter *formatter) Scenario(scenario *gauge.Scenario) { 60 } 61 62 func (formatter *formatter) Step(step *gauge.Step) { 63 formatter.buffer.WriteString(FormatStep(step)) 64 } 65 66 func (formatter *formatter) Comment(comment *gauge.Comment) { 67 formatter.buffer.WriteString(FormatComment(comment)) 68 }