ltsv

package
v1.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2023 License: MIT Imports: 7 Imported by: 1

README

ltsv

This package provides support for reading and writing LTSV format.

Examples

package main

import (
	"os"
	
	"github.com/mithrandie/go-text"
	"github.com/mithrandie/go-text/ltsv"
)

func main() {
	fp, err := os.Open("example.txt")
	if err != nil {
		panic("file open error")
	}
	defer func() {
		if err = fp.Close(); err != nil {
			panic(err.Error())
		}
	}()
	
	r, _ := ltsv.NewReader(fp, text.UTF8)
	r.WithoutNull = true
	recordSet, err := r.ReadAll()
	if err != nil {
		panic("ltsv read error")
	}
	
	header := r.Header.Fields()
	lineBreak := r.DetectedLineBreak
	
	wfp, err := os.Create("example_new.ltsv")
	if err != nil {
		panic("file open error")
	}
	defer func() {
		if err = wfp.Close(); err != nil {
			panic(err.Error())
		}
	}()

	w, err := ltsv.NewWriter(wfp, header, lineBreak, text.UTF8)
	if err != nil {
		panic("ltsv writer generation error")
	}
	
	for _, record := range recordSet {
		r := make([]string, 0, len(record))
		for _, field := range record {
			r = append(r, string(field))
		}
		if err = w.Write(r); err != nil {
			panic(err.Error())
		}
	}
	if err = w.Flush(); err != nil {
		panic(err.Error())
	}
}

Documentation

Overview

Package ltsv is a Go library to read and write LTSV format.

Index

Constants

This section is empty.

Variables

View Source
var FieldValueTable = &unicode.RangeTable{
	R16: []unicode.Range16{
		{Lo: 0x0001, Hi: 0x0008, Stride: 1},
		{Lo: 0x000B, Hi: 0x000B, Stride: 1},
		{Lo: 0x000C, Hi: 0x000C, Stride: 1},
		{Lo: 0x000E, Hi: 0xFFFF, Stride: 1},
	},
	R32: []unicode.Range32{
		{Lo: 0x10000, Hi: 0xfffff, Stride: 1},
	},
}
View Source
var LabelTable = &unicode.RangeTable{
	R16: []unicode.Range16{
		{Lo: 0x002D, Hi: 0x002D, Stride: 1},
		{Lo: 0x002E, Hi: 0x002E, Stride: 1},
		{Lo: 0x0030, Hi: 0x0039, Stride: 1},
		{Lo: 0x0041, Hi: 0x005A, Stride: 1},
		{Lo: 0x005F, Hi: 0x005F, Stride: 1},
		{Lo: 0x0061, Hi: 0x007A, Stride: 1},
	},
}

Functions

This section is empty.

Types

type Header struct {
	// contains filtered or unexported fields
}

func NewHeader

func NewHeader() *Header

func (*Header) Add

func (h *Header) Add(key string)

func (*Header) Exists

func (h *Header) Exists(key string) bool

func (*Header) Fields

func (h *Header) Fields() []string

func (*Header) Len

func (h *Header) Len() int

type Reader

type Reader struct {
	WithoutNull bool

	Header            *Header
	DetectedLineBreak text.LineBreak
	// contains filtered or unexported fields
}

func NewReader

func NewReader(r io.Reader, enc text.Encoding) (*Reader, error)

func (*Reader) Read

func (r *Reader) Read() ([]text.RawText, error)

func (*Reader) ReadAll

func (r *Reader) ReadAll() ([][]text.RawText, error)

type Record

type Record map[string][]byte

func (Record) Clear

func (r Record) Clear()

func (Record) Write

func (r Record) Write(key string, value []byte)

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

func NewWriter

func NewWriter(w io.Writer, header []string, lineBreak text.LineBreak, enc text.Encoding) (*Writer, error)

func (*Writer) Flush

func (e *Writer) Flush() error

func (*Writer) Write

func (e *Writer) Write(record []string) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL