From 09d8bef935b66080a005387dca183784421c97a8 Mon Sep 17 00:00:00 2001 From: ScottPJones Date: Fri, 25 Feb 2022 18:26:02 -0500 Subject: [PATCH] Fix split on UniStr union (due to change in Base) --- Project.toml | 2 +- src/util.jl | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Project.toml b/Project.toml index c386ffb..ded0c9a 100644 --- a/Project.toml +++ b/Project.toml @@ -4,7 +4,7 @@ authors = ["ScottPJones "] keywords = ["Strings"] license = "MIT" uuid = "e79e7a6a-7bb1-5a4d-9d64-da657b06f53a" -version = "1.1.2" +version = "1.1.3" [deps] Unicode = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" diff --git a/src/util.jl b/src/util.jl index f77aa8f..7be3208 100644 --- a/src/util.jl +++ b/src/util.jl @@ -65,7 +65,6 @@ rpad(ch::Chr, cnt::Integer, pad::AbstractChar=' ') = const SetOfChars = Union{Tuple{Vararg{<:AbstractChar}},AbstractVector{<:AbstractChar},Set{<:AbstractChar}} -@static if !isdefined(Base, :eachsplit) function __split(str, splitter, limit::Integer, keep_empty::Bool, strs::Vector) pos = 1 lst = lastindex(str) @@ -86,7 +85,6 @@ function __split(str, splitter, limit::Integer, keep_empty::Bool, strs::Vector) end (keep_empty || pos <= lst) ? push!(strs, SubString(str, pos)) : strs end -end function __rsplit(str, splitter, limit::Integer, keep_empty::Bool, strs::Vector) res = find(Last, splitter, str) @@ -113,22 +111,25 @@ splitarr(::MaybeSub{String}) = SubString{String}[] splitarr(::MaybeSub{T}) where {T<:Str} = SubString{Str{basecse(T),Nothing,Nothing,Nothing}}[] -@static if !isdefined(Base, :eachsplit) +@static if isdefined(Base, :eachsplit) +const _SplitTypes = MaybeSub{<:Str{<:Union{_LatinCSE,_UCS2CSE,_UTF32CSE}}} +else +const _SplitTypes = MaybeSub{<:Str} Base._split(str::MaybeSub{<:Str}, splitter, limit, keepempty, vec) = __split(str, splitter, limit, keepempty, vec) +end -split(str::MaybeSub{<:Str}, splitter; +split(str::_SplitTypes, splitter; limit::Integer=0, keepempty::Bool=true, keep::Union{Nothing,Bool}=nothing) = __split(str, splitter, limit, checkkeep(keepempty, keep, :split), splitarr(str)) -split(str::MaybeSub{<:Str}, splitter::AbstractChar; +split(str::_SplitTypes, splitter::AbstractChar; limit::Integer=0, keepempty::Bool=true, keep::Union{Nothing,Bool}=nothing) = __split(str, isequal(splitter), limit, checkkeep(keepempty, keep, :split), splitarr(str)) -split(str::MaybeSub{<:Str}, splitter::SetOfChars; +split(str::_SplitTypes, splitter::SetOfChars; limit::Integer=0, keepempty::Bool=true, keep::Union{Nothing,Bool}=nothing) = __split(str, in(splitter), limit, checkkeep(keepempty, keep, :split), splitarr(str)) -end Base._rsplit(str::MaybeSub{<:Str}, splitter, limit, keepempty, vec) = __rsplit(str, splitter, limit, keepempty, vec)