Skip to content

Commit dd2ddff

Browse files
committed
wip: More metrics
1 parent 2cfcbc5 commit dd2ddff

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/formatter.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@ impl<'a> Formatter<'a> {
240240
|| self
241241
.next_non_whitespace_token(1)
242242
.is_some_and(|t| t.kind != TokenKind::OpenParen)
243-
|| span_info.arguments != 0)
243+
|| span_info.blocks != 1
244+
|| self.options.max_inline_block < span_info.max_inner_span)
244245
{
245246
self.indentation.increase_top_level(span_info);
246247
self.add_new_line(query);
@@ -576,13 +577,25 @@ impl<'a> Formatter<'a> {
576577
let mut block_level = self.block_level;
577578
let mut full_span = 0;
578579
let mut arguments = 0;
580+
let mut blocks = 0;
581+
let mut max_nesting = 0;
582+
let mut max_inner_span = 0;
583+
let mut inner_span = 0;
579584

580585
for token in self.tokens[self.index..].iter().skip(1) {
581586
match token.kind {
582587
TokenKind::OpenParen => {
588+
if block_level == self.block_level {
589+
blocks += 1
590+
}
583591
block_level += 1;
584592
}
585593
TokenKind::CloseParen => {
594+
max_nesting = max_nesting.max(block_level);
595+
max_inner_span = max_inner_span.max(inner_span);
596+
if block_level == self.block_level.saturating_add(1) {
597+
inner_span = 0;
598+
}
586599
block_level = block_level.saturating_sub(1);
587600
if block_level < self.block_level {
588601
break;
@@ -601,6 +614,7 @@ impl<'a> Formatter<'a> {
601614
}
602615
TokenKind::Operator if token.value == "," && block_level == self.block_level => {
603616
arguments += 1;
617+
blocks += 1;
604618
}
605619
_ => {}
606620
}
@@ -611,6 +625,9 @@ impl<'a> Formatter<'a> {
611625
SpanInfo {
612626
full_span,
613627
arguments,
628+
blocks,
629+
max_nesting,
630+
max_inner_span,
614631
}
615632
}
616633

src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ pub enum QueryParams {
101101
pub(crate) struct SpanInfo {
102102
pub full_span: usize,
103103
pub arguments: usize,
104+
pub blocks: usize,
105+
pub max_inner_span: usize,
106+
pub max_nesting: usize,
104107
}
105108

106109
#[cfg(test)]

0 commit comments

Comments
 (0)