fmt: allow ascii art block comments (#9332)
parent
d92f9e77b0
commit
e554415123
|
@ -47,7 +47,7 @@ pub fn (mut f Fmt) comment(node ast.Comment, options CommentsOptions) {
|
||||||
mut s := node.text.trim_left('\x01')
|
mut s := node.text.trim_left('\x01')
|
||||||
mut out_s := '//'
|
mut out_s := '//'
|
||||||
if s != '' {
|
if s != '' {
|
||||||
if is_first_char_alphanumeric(s) {
|
if is_char_alphanumeric(s[0]) {
|
||||||
out_s += ' '
|
out_s += ' '
|
||||||
}
|
}
|
||||||
out_s += s
|
out_s += s
|
||||||
|
@ -59,20 +59,21 @@ pub fn (mut f Fmt) comment(node ast.Comment, options CommentsOptions) {
|
||||||
f.write(out_s)
|
f.write(out_s)
|
||||||
} else {
|
} else {
|
||||||
lines := node.text.trim_space().split_into_lines()
|
lines := node.text.trim_space().split_into_lines()
|
||||||
expected_line_count := node.pos.last_line - node.pos.line_nr
|
start_break := is_char_alphanumeric(node.text[0]) || node.text[0].is_space()
|
||||||
no_new_lines := lines.len > expected_line_count && !is_first_char_alphanumeric(lines[0])
|
end_break := is_char_alphanumeric(node.text.trim('\t').bytes().last())
|
||||||
|
|| node.text.bytes().last().is_space()
|
||||||
f.write('/*')
|
f.write('/*')
|
||||||
if !no_new_lines {
|
if start_break {
|
||||||
f.writeln('')
|
f.writeln('')
|
||||||
}
|
}
|
||||||
for line in lines {
|
for line in lines {
|
||||||
f.writeln(line)
|
f.writeln(line)
|
||||||
f.empty_line = false
|
f.empty_line = false
|
||||||
}
|
}
|
||||||
if no_new_lines {
|
if end_break {
|
||||||
f.remove_new_line({})
|
|
||||||
} else {
|
|
||||||
f.empty_line = true
|
f.empty_line = true
|
||||||
|
} else {
|
||||||
|
f.remove_new_line({})
|
||||||
}
|
}
|
||||||
f.write('*/')
|
f.write('*/')
|
||||||
}
|
}
|
||||||
|
@ -127,7 +128,7 @@ pub fn (mut f Fmt) import_comments(comments []ast.Comment, options CommentsOptio
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
mut out_s := if options.inline { ' ' } else { '' } + '//'
|
mut out_s := if options.inline { ' ' } else { '' } + '//'
|
||||||
if is_first_char_alphanumeric(ctext) {
|
if is_char_alphanumeric(ctext[0]) {
|
||||||
out_s += ' '
|
out_s += ' '
|
||||||
}
|
}
|
||||||
out_s += ctext
|
out_s += ctext
|
||||||
|
@ -135,9 +136,6 @@ pub fn (mut f Fmt) import_comments(comments []ast.Comment, options CommentsOptio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_first_char_alphanumeric(s string) bool {
|
fn is_char_alphanumeric(c byte) bool {
|
||||||
return match s[0] {
|
return c.is_letter() || c.is_digit()
|
||||||
`a`...`z`, `A`...`Z`, `0`...`9` { true }
|
|
||||||
else { false }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,14 +48,19 @@ fn assign_comments() {
|
||||||
// at the end
|
// at the end
|
||||||
}
|
}
|
||||||
|
|
||||||
fn linebreaks_in_block_comments() {
|
fn linebreaks_in_ascii_art_block_comments() {
|
||||||
/*
|
/*
|
||||||
block
|
+++
|
||||||
*/
|
*/
|
||||||
/*****
|
/*****
|
||||||
Want a long line of stars?
|
+++
|
||||||
no problem
|
|
||||||
*****/
|
*****/
|
||||||
|
/****
|
||||||
|
+++
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
+++
|
||||||
|
****/
|
||||||
}
|
}
|
||||||
|
|
||||||
fn map_comments() {
|
fn map_comments() {
|
||||||
|
|
Loading…
Reference in New Issue