1
Fork 0
mirror of https://github.com/RGBCube/alejandra synced 2025-07-31 12:37:45 +00:00

feat: multiline strings done right

This commit is contained in:
Kevin Amado 2022-01-28 19:40:33 -05:00
parent a35638f586
commit a5e92895fa
No known key found for this signature in database
GPG key ID: FFF341057F503148
4 changed files with 48 additions and 11 deletions

View file

@ -36,7 +36,8 @@
It's written in [Rust](https://www.rust-lang.org/)
and formats [Nixpkgs](https://github.com/NixOS/nixpkgs)
in just a few seconds[^benchmark-specs].
in just a few seconds.
[^benchmark-specs]
| Cores | Seconds |
|:-----:|:--------:

View file

@ -38,7 +38,7 @@ pub fn rule(
.iter()
.filter(|e| e.kind() != rnix::SyntaxKind::TOKEN_STRING_CONTENT);
let mut lines: Vec<String> = elements[0..elements.len() - 1]
let content: String = elements[0..elements.len() - 1]
.iter()
.map(|element| match element.kind() {
rnix::SyntaxKind::TOKEN_STRING_CONTENT => {
@ -47,9 +47,23 @@ pub fn rule(
}
_ => placeholder.to_string(),
})
.collect::<String>()
.split('\n')
.map(|line| line.trim_end().to_string())
.collect();
let lines: Vec<String> =
content.split('\n').map(|line| line.to_string()).collect();
let should_trim_end: bool =
lines.len() >= 1 && lines[lines.len() - 1].trim().len() == 0;
let mut lines: Vec<String> = lines
.iter()
.map(|line| {
if should_trim_end {
line.trim_end().to_string()
} else {
line.to_string()
}
})
.collect();
// eprintln!("0: {:?}", lines);
@ -92,14 +106,18 @@ pub fn rule(
if portions.len() == 1 {
if portions[0].len() > 0 || index + 1 == lines.len() {
steps.push_back(crate::builder::Step::Pad);
if lines.len() > 1 {
steps.push_back(crate::builder::Step::Pad);
}
steps.push_back(crate::builder::Step::Token(
rnix::SyntaxKind::TOKEN_STRING_CONTENT,
portions[0].to_string(),
));
}
} else {
steps.push_back(crate::builder::Step::Pad);
if lines.len() > 1 {
steps.push_back(crate::builder::Step::Pad);
}
for (index, portion) in portions.iter().enumerate() {
steps.push_back(crate::builder::Step::Token(
rnix::SyntaxKind::TOKEN_STRING_CONTENT,

View file

@ -59,4 +59,13 @@
''
###
''-couch_ini ${ cfg.package }/etc/default.ini ${ configFile } ${ pkgs.writeText "couchdb-extra.ini" cfg.extraConfig } ${ cfg.configFile }''
###
''exec i3-input -F "mark %s" -l 1 -P 'Mark: ' ''
###
''exec i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Go to: ' ''
###
''"${ pkgs.name or "<unknown-name>" }";''
###
''
${pkgs.replace-secret}/bin/replace-secret '${placeholder}' '${secretFile}' '${targetFile}' ''
]

View file

@ -9,11 +9,11 @@
b
"
###
'' ''
''''
###
'' a''
''a''
###
'' ${ "" }''
''${ "" }''
###
'' ${ "" }
@ -57,7 +57,16 @@
[${ mkSectionName sectName }]
''
###
'' -couch_ini ${ cfg.package }/etc/default.ini ${ configFile } ${
''-couch_ini ${ cfg.package }/etc/default.ini ${ configFile } ${
pkgs.writeText "couchdb-extra.ini" cfg.extraConfig
} ${ cfg.configFile }''
###
''exec i3-input -F "mark %s" -l 1 -P 'Mark: ' ''
###
''exec i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Go to: ' ''
###
''"${ pkgs.name or "<unknown-name>" }";''
###
''
${ pkgs.replace-secret }/bin/replace-secret '${ placeholder }' '${ secretFile }' '${ targetFile }' ''
]