Files
hakorune/apps/tests/phase29ab_pattern7_splitscan_nearmiss_ok_min.hako

40 lines
1.1 KiB
Plaintext

// Phase 29ac P3: Pattern7 split-scan near-miss fixup (contract-aligned OK)
// Origin: phase29ab_pattern7_splitscan_contract_min.hako (else step was i = i + 2)
// Expect: split("a,b,c", ",") -> length 3
static box StringUtils {
split_from_nearmiss_ok(s, separator) {
local result = new ArrayBox()
if separator.length() == 0 {
result.push(s)
return result
}
local start = 0
local i = 0
loop(i <= s.length() - separator.length()) {
if s.substring(i, i + separator.length()) == separator {
result.push(s.substring(start, i))
start = i + separator.length()
i = start
} else {
// Contract requirement for SplitScan: else step must be i = i + 1.
i = i + 1
}
}
if start <= s.length() {
result.push(s.substring(start, s.length()))
}
return result
}
}
static box Main {
main() {
local result = StringUtils.split_from_nearmiss_ok("a,b,c", ",")
return result.length()
}
}