This PR introduces the functions `String.Slice.skipPrefix?`, `String.Slice.Pos.skip?`, `String.Slice.skipPrefixWhile`, `String.Slice.Pos.skipWhile` and redefines `String.Slice.takeWhile` and `String.Slice.dropWhile` to use these new functions.
55 lines
1.9 KiB
Text
55 lines
1.9 KiB
Text
/-
|
|
Copyright (c) 2025 Lean FRO, LLC. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Henrik Böving, Markus Himmel
|
|
-/
|
|
module
|
|
|
|
prelude
|
|
public import Init.Data.String.Pattern.Pred
|
|
|
|
set_option doc.verso true
|
|
|
|
/-!
|
|
This module defines the necessary instances to register {name}`Char` with the pattern framework.
|
|
-/
|
|
|
|
public section
|
|
|
|
namespace String.Slice.Pattern
|
|
|
|
namespace Char
|
|
|
|
instance {c : Char} : ForwardPattern c where
|
|
skipPrefixOfNonempty? s h := ForwardPattern.skipPrefixOfNonempty? (· == c) s h
|
|
skipPrefix? s := ForwardPattern.skipPrefix? (· == c) s
|
|
startsWith s := ForwardPattern.startsWith (· == c) s
|
|
|
|
instance {c : Char} : StrictForwardPattern c where
|
|
ne_startPos h q := StrictForwardPattern.ne_startPos (pat := (· == c)) h q
|
|
|
|
instance {c : Char} : LawfulForwardPattern c where
|
|
skipPrefixOfNonempty?_eq h := LawfulForwardPattern.skipPrefixOfNonempty?_eq (pat := (· == c)) h
|
|
startsWith_eq s := LawfulForwardPattern.startsWith_eq (pat := (· == c)) s
|
|
|
|
instance {c : Char} : ToForwardSearcher c (ToForwardSearcher.DefaultForwardSearcher (· == c)) where
|
|
toSearcher s := ToForwardSearcher.toSearcher (· == c) s
|
|
|
|
instance {c : Char} : BackwardPattern c where
|
|
skipSuffixOfNonempty? s h := BackwardPattern.skipSuffixOfNonempty? (· == c) s h
|
|
skipSuffix? s := BackwardPattern.skipSuffix? (· == c) s
|
|
endsWith s := BackwardPattern.endsWith (· == c) s
|
|
|
|
instance {c : Char} : StrictBackwardPattern c where
|
|
ne_endPos h q := StrictBackwardPattern.ne_endPos (pat := (· == c)) h q
|
|
|
|
instance {c : Char} : LawfulBackwardPattern c where
|
|
skipSuffixOfNonempty?_eq h := LawfulBackwardPattern.skipSuffixOfNonempty?_eq (pat := (· == c)) h
|
|
endsWith_eq s := LawfulBackwardPattern.endsWith_eq (pat := (· == c)) s
|
|
|
|
instance {c : Char} : ToBackwardSearcher c (ToBackwardSearcher.DefaultBackwardSearcher c) :=
|
|
.defaultImplementation
|
|
|
|
end Char
|
|
|
|
end String.Slice.Pattern
|