mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-01 22:57: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 {
|
return (error make {
|
||||||
msg: 'First line must be empty'
|
msg: 'First line must be empty'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($string !~ '(?ms)\n\s*$') {
|
if ($string !~ '\n\s*$') {
|
||||||
return (error make {
|
return (error make {
|
||||||
msg: 'Last line must contain only whitespace indicating the dedent'
|
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
|
# Get number of spaces on the last line
|
||||||
let indent = $string
|
let indent = $string
|
||||||
| str replace -r '(?ms).*\n( *)$' '$1'
|
| str replace -r '(?s).*\n( *)$' '$1'
|
||||||
| str length
|
| str length
|
||||||
|
|
||||||
# Skip the first and last lines
|
# Skip the first and last lines
|
||||||
let lines = (
|
let lines = (
|
||||||
$string
|
$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
|
# Use `split` instead of `lines`, since `lines` will
|
||||||
# drop legitimate trailing empty lines
|
# drop legitimate trailing empty lines
|
||||||
| split row "\n"
|
| split row "\n"
|
||||||
|
@ -89,5 +89,5 @@ export def main []: string -> string {
|
||||||
| to text
|
| to text
|
||||||
# Remove the trailing newline which indicated
|
# Remove the trailing newline which indicated
|
||||||
# indent level
|
# 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
|
$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:
|
# Test 7:
|
||||||
# Error - Does not contain an empty last line
|
# Error - Does not contain an empty last line
|
||||||
assert error {||
|
assert error {||
|
||||||
|
@ -88,6 +95,15 @@ export def "test str dedent" [] {
|
||||||
$s | 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:
|
# Test 8:
|
||||||
# Error - Line 1 does not have enough indentation
|
# Error - Line 1 does not have enough indentation
|
||||||
assert error {||
|
assert error {||
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue