From 14c80aa64716ca1a19f670b2d81e672044b40e32 Mon Sep 17 00:00:00 2001 From: Kevin Amado Date: Fri, 18 Feb 2022 13:02:27 -0500 Subject: [PATCH] feat: more uniform family of elements --- src/rules/attr_set.rs | 10 ++++------ src/rules/pattern.rs | 31 +++++++++++++++++++------------ tests/cases/attr_set/out | 8 ++++---- tests/cases/inherit/out | 2 +- tests/cases/inherit_from/out | 2 +- tests/cases/key_value/out | 13 ++++--------- tests/cases/pattern/out | 9 +++++---- tests/cases/with/out | 8 ++++---- 8 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/rules/attr_set.rs b/src/rules/attr_set.rs index 98e7ca4..9e35069 100644 --- a/src/rules/attr_set.rs +++ b/src/rules/attr_set.rs @@ -116,7 +116,9 @@ pub fn rule( )); } crate::config::Layout::Wide => { - steps.push_back(crate::builder::Step::Whitespace); + if item_index > 1 { + steps.push_back(crate::builder::Step::Whitespace); + } steps .push_back(crate::builder::Step::Format(child.element)); } @@ -135,11 +137,7 @@ pub fn rule( steps.push_back(crate::builder::Step::NewLine); steps.push_back(crate::builder::Step::Pad); } - crate::config::Layout::Wide => { - if items_count > 0 { - steps.push_back(crate::builder::Step::Whitespace); - } - } + crate::config::Layout::Wide => {} } steps.push_back(crate::builder::Step::Format(child.element)); diff --git a/src/rules/pattern.rs b/src/rules/pattern.rs index 7e1f6f7..290a98d 100644 --- a/src/rules/pattern.rs +++ b/src/rules/pattern.rs @@ -28,6 +28,15 @@ pub fn rule( }) .count(); + let max_items = if node + .children_with_tokens() + .any(|element| element.kind() == rnix::SyntaxKind::TOKEN_ELLIPSIS) + { + 2 + } else { + 1 + }; + let layout = if has_comments || children.has_newlines() { &crate::config::Layout::Tall } else { @@ -103,19 +112,22 @@ pub fn rule( rnix::SyntaxKind::TOKEN_ELLIPSIS | rnix::SyntaxKind::NODE_PAT_ENTRY => { if let rnix::SyntaxKind::TOKEN_CURLY_B_OPEN = last_kind { - if items_count > 1 { + if has_comments_between_curly_b || items_count > max_items { steps.push_back(crate::builder::Step::NewLine); steps.push_back(crate::builder::Step::Pad); - } else { - steps.push_back(crate::builder::Step::Whitespace); } } if let rnix::SyntaxKind::TOKEN_COMMA | rnix::SyntaxKind::TOKEN_COMMENT = last_kind { - steps.push_back(crate::builder::Step::NewLine); - steps.push_back(crate::builder::Step::Pad); + if !has_comments_between_curly_b && items_count <= max_items + { + steps.push_back(crate::builder::Step::Whitespace); + } else { + steps.push_back(crate::builder::Step::NewLine); + steps.push_back(crate::builder::Step::Pad); + } } match layout { @@ -135,9 +147,7 @@ pub fn rule( } // , rnix::SyntaxKind::TOKEN_COMMA => { - if let rnix::SyntaxKind::TOKEN_COMMA - | rnix::SyntaxKind::TOKEN_COMMENT = last_kind - { + if let rnix::SyntaxKind::TOKEN_COMMENT = last_kind { steps.push_back(crate::builder::Step::NewLine); steps.push_back(crate::builder::Step::Pad); } @@ -158,10 +168,7 @@ pub fn rule( // } let child = children.get_next().unwrap(); steps.push_back(crate::builder::Step::Dedent); - if !has_comments_between_curly_b && items_count == 1 { - steps.push_back(crate::builder::Step::Whitespace); - } else if !has_comments_between_curly_b && items_count == 0 { - } else { + if has_comments_between_curly_b || items_count > max_items { if let rnix::SyntaxKind::NODE_PAT_ENTRY = last_kind { steps.push_back(crate::builder::Step::Token( rnix::SyntaxKind::TOKEN_COMMA, diff --git a/tests/cases/attr_set/out b/tests/cases/attr_set/out index 8383df3..177c08c 100644 --- a/tests/cases/attr_set/out +++ b/tests/cases/attr_set/out @@ -5,12 +5,12 @@ a */ } - { a = 1; } + {a = 1;} { a = 1; } - { b = 1; } + {b = 1;} { b = 1; /* @@ -33,7 +33,7 @@ */ } - rec { c = 1; } + rec {c = 1;} rec { c = 1; /* @@ -101,7 +101,7 @@ a = { a = rec { a = { - a = rec { a = { a = rec { a = { a = rec { a = {}; }; }; }; }; }; + a = rec {a = {a = rec {a = {a = rec {a = {};};};};};}; }; }; }; diff --git a/tests/cases/inherit/out b/tests/cases/inherit/out index c468f2b..ee5526a 100644 --- a/tests/cases/inherit/out +++ b/tests/cases/inherit/out @@ -7,7 +7,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ; } - { inherit b d; } + {inherit b d;} { inherit b diff --git a/tests/cases/inherit_from/out b/tests/cases/inherit_from/out index 237d15c..df98fd4 100644 --- a/tests/cases/inherit_from/out +++ b/tests/cases/inherit_from/out @@ -1,5 +1,5 @@ [ - { inherit (c) f h; } + {inherit (c) f h;} { inherit (c) diff --git a/tests/cases/key_value/out b/tests/cases/key_value/out index a13d348..518a676 100644 --- a/tests/cases/key_value/out +++ b/tests/cases/key_value/out @@ -1,7 +1,7 @@ rec /**/ { - a = { a = 1; }; + a = {a = 1;}; b = { a = @@ -76,7 +76,7 @@ rec */ ; }; - j = a: { b = 1; }; + j = a: {b = 1;}; k = a: { b = 1; c = 2; @@ -85,7 +85,7 @@ rec /* b */ - { b = 1; }; + {b = 1;}; m = a: /* b @@ -95,12 +95,7 @@ rec c = 2; }; n = pkgs: {}; - o = - { - pkgs, - ... - }: - {}; + o = {pkgs, ...}: {}; a /* diff --git a/tests/cases/pattern/out b/tests/cases/pattern/out index 0dca503..638e0d5 100644 --- a/tests/cases/pattern/out +++ b/tests/cases/pattern/out @@ -12,13 +12,14 @@ } @ inp: _) ({}: _) - ({ a }: _) + ({a}: _) ({ /**/ }: _) - ({ ... }: _) - ({ ... + ({...}: _) + ({ + ... /**/ }: _) @@ -1059,7 +1060,7 @@ }: _) - ({ a ? null }: _) + ({a ? null}: _) ({ /* a diff --git a/tests/cases/with/out b/tests/cases/with/out index b1bb4fd..85521f9 100644 --- a/tests/cases/with/out +++ b/tests/cases/with/out @@ -21,9 +21,9 @@ c) (with b; cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc) (with b; cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc) - { a = with b; 1; } - { a = with b; 1 + 1; } - { a = with b; { c = 1; }; } + {a = with b; 1;} + {a = with b; 1 + 1;} + {a = with b; {c = 1;};} { a = with b; { c = 1; @@ -40,7 +40,7 @@ a = with b; 1; # comment } - (with a; with b; with c; { a = 1; }) + (with a; with b; with c; {a = 1;}) (with a; with b; with c; {