mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-01 06:37:46 +00:00
Remove multi-line flag from regexes (#903)
Minor fix on `str dedent` - I erroneously used the regex multi-line flag `(?m)` in several patterns where it shouldn't have been. For the most part, this was harmless, but it did surface an error when I was working on updating the themes. Fixed these and added two new tests that would have caught the issue.
This commit is contained in:
parent
8557653047
commit
8bf899c6c2
2 changed files with 21 additions and 5 deletions
|
@ -35,13 +35,13 @@ export def main []: string -> string {
|
|||
}
|
||||
}
|
||||
|
||||
if ($string !~ '(?ms)^\s*\n') {
|
||||
if ($string !~ '^\s*\n') {
|
||||
return (error make {
|
||||
msg: 'First line must be empty'
|
||||
})
|
||||
}
|
||||
|
||||
if ($string !~ '(?ms)\n\s*$') {
|
||||
if ($string !~ '\n\s*$') {
|
||||
return (error make {
|
||||
msg: 'Last line must contain only whitespace indicating the dedent'
|
||||
})
|
||||
|
@ -49,13 +49,13 @@ export def main []: string -> string {
|
|||
|
||||
# Get number of spaces on the last line
|
||||
let indent = $string
|
||||
| str replace -r '(?ms).*\n( *)$' '$1'
|
||||
| str replace -r '(?s).*\n( *)$' '$1'
|
||||
| str length
|
||||
|
||||
# Skip the first and last lines
|
||||
let lines = (
|
||||
$string
|
||||
| str replace -r '(?ms)^[^\n]*\n(.*)\n[^\n]*$' '$1'
|
||||
| str replace -r '(?s)^[^\n]*\n(.*)\n[^\n]*$' '$1'
|
||||
# Use `split` instead of `lines`, since `lines` will
|
||||
# drop legitimate trailing empty lines
|
||||
| split row "\n"
|
||||
|
@ -89,5 +89,5 @@ export def main []: string -> string {
|
|||
| to text
|
||||
# Remove the trailing newline which indicated
|
||||
# indent level
|
||||
| str replace -r '(?ms)(.*)\n$' '$1'
|
||||
| str replace -r '(?s)(.*)\n$' '$1'
|
||||
}
|
|
@ -80,6 +80,13 @@ export def "test str dedent" [] {
|
|||
$s | str dedent
|
||||
}
|
||||
|
||||
# Test 6.1:
|
||||
# Error - Does not contain an empty first line
|
||||
assert error {||
|
||||
let s = "Error\n \nTesting\n"
|
||||
$s | str dedent
|
||||
}
|
||||
|
||||
# Test 7:
|
||||
# Error - Does not contain an empty last line
|
||||
assert error {||
|
||||
|
@ -88,6 +95,15 @@ export def "test str dedent" [] {
|
|||
$s | str dedent
|
||||
}
|
||||
|
||||
# Test 7.1:
|
||||
# Error - Does not contain an empty last line
|
||||
assert error {||
|
||||
let s = "
|
||||
|
||||
Error"
|
||||
$s | str dedent
|
||||
}
|
||||
|
||||
# Test 8:
|
||||
# Error - Line 1 does not have enough indentation
|
||||
assert error {||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue