aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ankarström <john@ankarstrom.se>2021-07-12 11:10:30 +0200
committerJohn Ankarström <john@ankarstrom.se>2021-07-12 11:10:30 +0200
commita187908c0e007ca4d1ab2ba7fbe15590fa48aaf5 (patch)
treef9d2aad54ef21d9ebba17ef8071e84c1acfa5c09
parent603eb4b926dd9785f5be33dce696d920a07899ed (diff)
downloadxutil-a187908c0e007ca4d1ab2ba7fbe15590fa48aaf5.tar.gz
isort: Comment and improve code
-rwxr-xr-xisort19
1 files changed, 16 insertions, 3 deletions
diff --git a/isort b/isort
index 27a589d..af7828e 100755
--- a/isort
+++ b/isort
@@ -2,7 +2,20 @@
# isort -- sort C variable declarations separated by commas
-s/([^,]*?)(\S+[,;])/$2/; $prefix = $1;
-s/;$/,/; @words = sort split /\s+/;
+# Extract words, save prefix.
+s/([^,]*?)(\S+[,;])/$2/;
+$prefix = $1;
+
+# Ensure all words end with comma.
+$semicolon = s/;$/,/;
+
+# Sort words.
+@words = sort {
+ ($x = $a) =~ s/^\*//;
+ ($y = $b) =~ s/^\*//;
+ $x cmp $y
+} split /\s+/;
+
+# Join words, add prefix and semicolon.
$_ = $prefix . (join ' ', @words) . "\n";
-s/,$/;/;
+s/,$/;/ if $semicolon;