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  }