backend/analyzer/OtherFiles.go (48 lines of code) (raw):
package analyzer
import (
"bytes"
"io/ioutil"
"log"
"path/filepath"
"text/template"
)
type OtherFiles []struct {
Uuid string
FullPath string
BasePath string
}
func (f *OtherFiles) ConvertToHTML() (html string) {
var tpl bytes.Buffer
t := template.Must(template.New("OtherFiles.gohtml").
ParseFS(tmplFS, "OtherFiles.gohtml"))
err := t.Execute(&tpl, *f)
if err != nil {
log.Printf("Template 'OtherFiles' execution error: %s", err.Error())
}
return tpl.String()
}
func (f *OtherFiles) Append(path string) {
*f = append(*f, struct {
Uuid string
FullPath string
BasePath string
}{Uuid: getHash(path), FullPath: path, BasePath: filepath.Base(path)})
}
//FilterAnalyzedDirectories
func (f *OtherFiles) FilterAnalyzedDirectories(collectedFiles []string) OtherFiles {
s := OtherFiles{}
for _, file := range *f {
if i := SliceContains(collectedFiles, filepath.Dir(file.FullPath)); i == -1 {
s = append(s, file)
}
}
return s
}
func (f *OtherFiles) GetContent(fileUUID string) string {
for _, file := range *f {
if file.Uuid == fileUUID {
content, _ := ioutil.ReadFile(file.FullPath)
return string(content)
}
}
return ""
}