mirror of
https://github.com/dlang/phobos.git
synced 2025-05-06 11:07:39 +03:00
Removed auto-decoding from std.algorithm.searching.balancedParens
This commit is contained in:
parent
2f25cdf076
commit
db1e5f80fb
1 changed files with 17 additions and 4 deletions
|
@ -233,14 +233,25 @@ bool balancedParens(Range, E)(Range r, E lPar, E rPar,
|
||||||
if (isInputRange!(Range) && is(typeof(r.front == lPar)))
|
if (isInputRange!(Range) && is(typeof(r.front == lPar)))
|
||||||
{
|
{
|
||||||
size_t count;
|
size_t count;
|
||||||
for (; !r.empty; r.popFront())
|
|
||||||
|
static if (is(Unqual!(ElementEncodingType!Range) == Unqual!E) && isNarrowString!Range)
|
||||||
{
|
{
|
||||||
if (r.front == lPar)
|
import std.utf : byCodeUnit;
|
||||||
|
auto rn = r.byCodeUnit;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alias rn = r;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; !rn.empty; rn.popFront())
|
||||||
|
{
|
||||||
|
if (rn.front == lPar)
|
||||||
{
|
{
|
||||||
if (count > maxNestingLevel) return false;
|
if (count > maxNestingLevel) return false;
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
else if (r.front == rPar)
|
else if (rn.front == rPar)
|
||||||
{
|
{
|
||||||
if (!count) return false;
|
if (!count) return false;
|
||||||
--count;
|
--count;
|
||||||
|
@ -250,7 +261,7 @@ if (isInputRange!(Range) && is(typeof(r.front == lPar)))
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@safe unittest
|
@safe pure unittest
|
||||||
{
|
{
|
||||||
auto s = "1 + (2 * (3 + 1 / 2)";
|
auto s = "1 + (2 * (3 + 1 / 2)";
|
||||||
assert(!balancedParens(s, '(', ')'));
|
assert(!balancedParens(s, '(', ')'));
|
||||||
|
@ -260,6 +271,8 @@ if (isInputRange!(Range) && is(typeof(r.front == lPar)))
|
||||||
assert(!balancedParens(s, '(', ')', 0));
|
assert(!balancedParens(s, '(', ')', 0));
|
||||||
s = "1 + (2 * 3 + 1) / (2 - 5)";
|
s = "1 + (2 * 3 + 1) / (2 - 5)";
|
||||||
assert(balancedParens(s, '(', ')', 0));
|
assert(balancedParens(s, '(', ')', 0));
|
||||||
|
s = "f(x) = ⌈x⌉";
|
||||||
|
assert(balancedParens(s, '⌈', '⌉'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue