mirror of
https://github.com/thunderbrewhq/binana.git
synced 2026-04-17 15:33:54 +00:00
feat(binana): change tool to deposit generated files into an 'artifacts' folder that isn't retained by repository history
This commit is contained in:
parent
68f52b8efd
commit
47b08df145
44 changed files with 904 additions and 622 deletions
79
go/symbols/loader.go
Normal file
79
go/symbols/loader.go
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
package symbols
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const min_columns = 3
|
||||
|
||||
type loader struct {
|
||||
filename string
|
||||
input *bufio.Reader
|
||||
table *Table
|
||||
line_number int
|
||||
}
|
||||
|
||||
func (l *loader) read_line() (line string, err error) {
|
||||
line, err = l.input.ReadString('\n')
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
line = strings.TrimRight(line, "\r\n")
|
||||
l.line_number++
|
||||
return
|
||||
}
|
||||
|
||||
func (l *loader) parse_line(line string) (err error) {
|
||||
var table_entry TableEntry
|
||||
table_entry.Filename = l.filename
|
||||
table_entry.Linenumber = l.line_number
|
||||
|
||||
if line == "" {
|
||||
//err = fmt.Errorf("%w: %s:%d", ErrLineLeftEmpty, table_entry.Filename, table_entry.Linenumber)
|
||||
return
|
||||
}
|
||||
|
||||
if err = table_entry.Symbol.Parse(line); err != nil {
|
||||
err = fmt.Errorf("%w: %s:%d", err, table_entry.Filename, table_entry.Linenumber)
|
||||
return
|
||||
}
|
||||
|
||||
err = l.table.Insert(&table_entry)
|
||||
return
|
||||
}
|
||||
|
||||
func load(filename string, file io.Reader, table *Table) (err error) {
|
||||
l := new(loader)
|
||||
|
||||
l.input = bufio.NewReader(file)
|
||||
l.filename = filename
|
||||
l.table = table
|
||||
|
||||
var (
|
||||
line string
|
||||
)
|
||||
|
||||
for {
|
||||
line, err = l.read_line()
|
||||
if err != nil {
|
||||
if errors.Is(err, io.EOF) {
|
||||
err = nil
|
||||
break
|
||||
} else {
|
||||
err = fmt.Errorf("symbols: error reading at line %d: %w", l.line_number, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if err = l.parse_line(line); err != nil {
|
||||
err = fmt.Errorf("symbols: error parsing at line %d: %w", l.line_number, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue