More refactor to move state to be handled by dedicated entities
This commit is contained in:
parent
ce7a0f5a38
commit
b397566aaf
36
main.go
36
main.go
|
@ -1,9 +1,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
// TODO implement dynamic comment token selection, could maybe work similar to entityTracker{}
|
||||
|
@ -15,10 +13,6 @@ const (
|
|||
ignore = statusDir + "/vendor"
|
||||
)
|
||||
|
||||
var (
|
||||
keywords = []string{"todo", "fixme"}
|
||||
)
|
||||
|
||||
func main() {
|
||||
tf := NewTodoFinder()
|
||||
|
||||
|
@ -29,33 +23,3 @@ func main() {
|
|||
|
||||
spew.Dump(tf.foundTree)
|
||||
}
|
||||
|
||||
func isGoFile(name string) bool {
|
||||
if len(name) < 3 {
|
||||
return false
|
||||
}
|
||||
last := name[len(name)-3:]
|
||||
return last == ".go"
|
||||
}
|
||||
|
||||
func buildRegexPattern(keywords []string) string {
|
||||
kwp := makeRegexKeywords(keywords)
|
||||
return fmt.Sprintf("//.*((%s)(.*))", kwp)
|
||||
}
|
||||
|
||||
func makeRegexKeywords(keywords []string) (out string) {
|
||||
for i, kw := range keywords {
|
||||
for _, r := range kw {
|
||||
lower := unicode.ToLower(r)
|
||||
upper := unicode.ToUpper(r)
|
||||
|
||||
out += fmt.Sprintf("[%s,%s]", string(lower), string(upper))
|
||||
}
|
||||
|
||||
if i+1 < len(keywords) {
|
||||
out += "|"
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
|
11
todo.go
11
todo.go
|
@ -16,8 +16,17 @@ func (t *todo) Path() []string {
|
|||
}
|
||||
|
||||
sp := strings.Split(t.Filepath, "/")
|
||||
sp = trimPath(sp)
|
||||
sp = t.trimPath(sp)
|
||||
t.filePathSlice = sp
|
||||
|
||||
return t.filePathSlice
|
||||
}
|
||||
|
||||
func (t *todo) trimPath(path []string) []string {
|
||||
ignoreList := []string{"..", "status-go"}
|
||||
if path[0] == ignoreList[0] && path[1] == ignoreList[1] {
|
||||
path = path[2:]
|
||||
}
|
||||
|
||||
return path
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"regexp"
|
||||
"strings"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
type node struct {
|
||||
|
@ -19,12 +21,15 @@ type TodoFinder struct {
|
|||
|
||||
// openTodo tracks if subsequent comment lines should be included in the last to-do's description
|
||||
openTodo *todo
|
||||
|
||||
keywords []string
|
||||
}
|
||||
|
||||
func NewTodoFinder() TodoFinder {
|
||||
return TodoFinder{
|
||||
FoundTable: []*todo{},
|
||||
foundTree: &node{Name: "root", Type: "dir"},
|
||||
keywords: []string{"todo", "fixme"},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,7 +39,7 @@ func (tf *TodoFinder) AddTodo(t *todo) {
|
|||
}
|
||||
|
||||
func (tf *TodoFinder) FindInDir(dir string) error {
|
||||
r, err := regexp.Compile(buildRegexPattern(keywords))
|
||||
r, err := regexp.Compile(tf.buildRegexPattern())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -68,7 +73,7 @@ func (tf *TodoFinder) FindInDir(dir string) error {
|
|||
}
|
||||
}
|
||||
|
||||
if !isGoFile(f.Name()) {
|
||||
if !tf.isGoFile(f.Name()) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -145,11 +150,32 @@ func (n node) getTypeFromPath(path []string) string {
|
|||
return "dir"
|
||||
}
|
||||
|
||||
func trimPath(path []string) []string {
|
||||
ignoreList := []string{"..", "status-go"}
|
||||
if path[0] == ignoreList[0] && path[1] == ignoreList[1] {
|
||||
path = path[2:]
|
||||
func (tf TodoFinder) isGoFile(name string) bool {
|
||||
if len(name) < 3 {
|
||||
return false
|
||||
}
|
||||
last := name[len(name)-3:]
|
||||
return last == ".go"
|
||||
}
|
||||
|
||||
func (tf TodoFinder) buildRegexPattern() string {
|
||||
kwp := tf.makeRegexKeywords()
|
||||
return fmt.Sprintf("//.*((%s)(.*))", kwp)
|
||||
}
|
||||
|
||||
func (tf TodoFinder) makeRegexKeywords() (out string) {
|
||||
for i, kw := range tf.keywords {
|
||||
for _, r := range kw {
|
||||
lower := unicode.ToLower(r)
|
||||
upper := unicode.ToUpper(r)
|
||||
|
||||
out += fmt.Sprintf("[%s,%s]", string(lower), string(upper))
|
||||
}
|
||||
|
||||
if i+1 < len(tf.keywords) {
|
||||
out += "|"
|
||||
}
|
||||
}
|
||||
|
||||
return path
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue