Documentation
      ¶
    
    
  
    
  
    Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Matcher ¶
type Matcher struct {
	Pattern string // pattern to match against input (default: leading whitespace)
	// contains filtered or unexported fields
}
    Matcher can be used to remove or add a prefix from / to each row of a table.
This is useful for re-formatting tables which are embedded in e.g. code comments.
Example ¶
package main
import (
	"fmt"
	"strings"
	"codeberg.org/japh/psv/encoding/prefix"
)
func main() {
	testCases := []struct {
		pattern string
		line    string
		prefix  string
		content string
		name    string
	}{
		{"", "", "", "", "empty line"},
		{"", "  abc", "  ", "abc", "indented line"},
		{"", "// abc", "", "// abc", "unexpected comment"},
		{"//", "// abc", "// ", "abc", "expected comment"},
		{"//", "  //  //    abc", "  //  //    ", "abc", "multiple comments"},
		{"# //", " #    //  abc", " #    //  ", "abc", "multiple comments with variable whitespace"},
		{"# //", " //    #  abc", " ", "//    #  abc", "unexpected comments with variable whitespace"},
	}
	for _, tc := range testCases {
		// set up a prefix pattern (equivalent to `psv -i {pattern}`)
		splitter := &prefix.Matcher{}
		splitter.SetPrefixPattern(tc.pattern)
		// split a line into its prefix and content parts
		p, c := splitter.SplitLine(tc.line)
		fmt.Println("---")
		fmt.Printf("Test:    %s\n", tc.name)
		fmt.Printf("pattern: %q\n", tc.pattern)
		fmt.Printf("input:   %q\n", tc.line)
		fmt.Printf("prefix:  [%s%s]\n", p, strings.Repeat("_", len(c)))
		fmt.Printf("content: [%s%s]\n", strings.Repeat("_", len(p)), c)
	}
}
Output: --- Test: empty line pattern: "" input: "" prefix: [] content: [] --- Test: indented line pattern: "" input: " abc" prefix: [ ___] content: [__abc] --- Test: unexpected comment pattern: "" input: "// abc" prefix: [______] content: [// abc] --- Test: expected comment pattern: "//" input: "// abc" prefix: [// ___] content: [___abc] --- Test: multiple comments pattern: "//" input: " // // abc" prefix: [ // // ___] content: [____________abc] --- Test: multiple comments with variable whitespace pattern: "# //" input: " # // abc" prefix: [ # // ___] content: [__________abc] --- Test: unexpected comments with variable whitespace pattern: "# //" input: " // # abc" prefix: [ ____________] content: [_// # abc]
func (*Matcher) ClearPrefixPattern ¶
func (pm *Matcher) ClearPrefixPattern()
func (*Matcher) SetPrefixPattern ¶
 Click to show internal directories. 
   Click to hide internal directories.