tools: print the offending markdown source line, for errors and warnings

pull/8265/head
Delyan Angelov 2021-01-24 00:13:21 +02:00
parent 1f99d1e025
commit b04b8d438b
No known key found for this signature in database
GPG Key ID: 66886C0F12D595ED
1 changed files with 9 additions and 3 deletions

View File

@ -22,7 +22,7 @@ fn wprintln(s string) {
fn main() { fn main() {
if os.args.len == 1 { if os.args.len == 1 {
println('Usage: checks the passed markdown files for correct ```v ``` code blocks, println('Usage: checks the passed markdown files for correct ```v ``` code blocks,
and for other style violations. like too long lines/links etc... and for other style violations. like too long lines/links etc...
a) `v run cmd/tools/check-md.v -all` - will check *all* .md files in the folders. a) `v run cmd/tools/check-md.v -all` - will check *all* .md files in the folders.
b) `v run cmd/tools/check-md.v doc/docs.md` - will only check a single file. b) `v run cmd/tools/check-md.v doc/docs.md` - will only check a single file.
@ -61,18 +61,23 @@ These are:
if line.len > too_long_line_length { if line.len > too_long_line_length {
if mdfile.state == .vexample { if mdfile.state == .vexample {
wprintln(wline(file_path, i, line.len, 'long V example line')) wprintln(wline(file_path, i, line.len, 'long V example line'))
wprintln(line)
warnings++ warnings++
} else if mdfile.state == .codeblock { } else if mdfile.state == .codeblock {
wprintln(wline(file_path, i, line.len, 'long code block line')) wprintln(wline(file_path, i, line.len, 'long code block line'))
wprintln(line)
warnings++ warnings++
} else if line.starts_with('|') { } else if line.starts_with('|') {
wprintln(wline(file_path, i, line.len, 'long table')) wprintln(wline(file_path, i, line.len, 'long table'))
wprintln(line)
warnings++ warnings++
} else if line.contains('https') { } else if line.contains('https') {
wprintln(wline(file_path, i, line.len, 'long link')) wprintln(wline(file_path, i, line.len, 'long link'))
wprintln(line)
warnings++ warnings++
} else { } else {
eprintln(eline(file_path, i, line.len, 'line too long')) eprintln(eline(file_path, i, line.len, 'line too long'))
eprintln(line)
errors++ errors++
} }
} }
@ -129,7 +134,8 @@ fn rtext(s string) string {
} }
fn wline(file_path string, lnumber int, column int, message string) string { fn wline(file_path string, lnumber int, column int, message string) string {
return btext('$file_path:${lnumber + 1}:${column + 1}:') + btext(mtext(' warn:')) + rtext(' $message') return btext('$file_path:${lnumber + 1}:${column + 1}:') + btext(mtext(' warn:')) +
rtext(' $message')
} }
fn eline(file_path string, lnumber int, column int, message string) string { fn eline(file_path string, lnumber int, column int, message string) string {
@ -155,7 +161,7 @@ enum MDFileParserState {
} }
struct MDFile { struct MDFile {
path string path string
mut: mut:
examples []VCodeExample examples []VCodeExample
current VCodeExample current VCodeExample