all repos

clerk @ master

missing tooling for ledger/hledger

clerk/internal/linter/rule_missing_status.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
improve analyzer, 1 day ago
1
package linter
2
3
import (
4
	"olexsmir.xyz/clerk/internal/analyzer"
5
	"olexsmir.xyz/clerk/journal/ast"
6
)
7
8
// MissingStatus flags transactions with missing status.
9
type MissingStatus struct{}
10
11
func (MissingStatus) ID() RuleID         { return "missing-status" }
12
func (MissingStatus) Severity() Severity { return SeverityWarning }
13
func (m *MissingStatus) CheckJournal(an *analyzer.Analysis) []Find {
14
	var finds []Find
15
	for _, txn := range an.Transactions {
16
		if txn.Status.Value == ast.StatusNone {
17
			finds = append(finds, Find{
18
				Code:     m.ID(),
19
				Severity: m.Severity(),
20
				Message:  "transaction has no status",
21
				Span:     txn.Status.Span,
22
			})
23
		}
24
	}
25
	return finds
26
}