all repos

clerk @ 25c8f80

missing tooling for ledger/hledger

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

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