From af827d2aee62b5342364a3700a8488e0e28a0e0c Mon Sep 17 00:00:00 2001 From: Jongsu Liam Kim Date: Mon, 18 Jun 2018 16:02:01 +0900 Subject: [PATCH] Rename `split/rsplit` function keyword argument from `keep` to `keepempty` --- README.md | 4 ++++ src/Compat.jl | 8 ++++++++ test/runtests.jl | 29 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/README.md b/README.md index 0450f2b85..7f044010e 100644 --- a/README.md +++ b/README.md @@ -415,6 +415,9 @@ Currently, the `@compat` macro supports the following syntaxes: * `isupper`, `islower`, `ucfirst` and `lcfirst` are now `isuppercase`, `islowercase`, `uppercasefirst` and `lowercasefirst` ([#26442]). +* `Compat.split` and `Compat.rsplit` accept `keepempty` keyword argument + if `splitter` is given as second argument ([#26634]) + * `isalpha` is now `isletter` ([#27077]). * `cfunction` is now `@cfunction` ([#26486]). @@ -649,6 +652,7 @@ includes this fix. Find the minimum version from there. [#26442]: https://github.com/JuliaLang/julia/issues/26442 [#26486]: https://github.com/JuliaLang/julia/issues/26486 [#26559]: https://github.com/JuliaLang/julia/issues/26559 +[#26634]: https://github.com/JuliaLang/julia/issues/26634 [#26660]: https://github.com/JuliaLang/julia/issues/26660 [#26670]: https://github.com/JuliaLang/julia/issues/26670 [#26850]: https://github.com/JuliaLang/julia/issues/26850 diff --git a/src/Compat.jl b/src/Compat.jl index 8d018b591..edde99a1f 100644 --- a/src/Compat.jl +++ b/src/Compat.jl @@ -1992,6 +1992,14 @@ end Base.atan(x::Real, y::Real) = atan2(x, y) end +# https://github.com/JuliaLang/julia/pull/26647 +@static if VERSION < v"0.7.0-DEV.4724" + rsplit(s::AbstractString, splitter; limit::Integer=0, keepempty::Bool=false) = + Base.rsplit(s, splitter; limit=limit, keep=keepempty) + split(s::AbstractString, splitter; limit::Integer=0, keepempty::Bool=false) = + Base.split(s, splitter; limit=limit, keep=keepempty) +end + include("deprecated.jl") end # module Compat diff --git a/test/runtests.jl b/test/runtests.jl index 7c8aee338..c84b803a7 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1882,4 +1882,33 @@ end @test atan(-1.0, -2.0) ≈ atan(0.5) - π @test atan(big"-1.0", big"-2.0") ≈ atan(big"0.5") - π +# 0.7.0-DEV.4724 +let + @test Compat.split("", ',' ; keepempty=false) == [] + @test Compat.split(",", ',' ; keepempty=false) == [] + @test Compat.split(",,", ','; keepempty=false) == [] + @test Compat.rsplit("", ',' ; keepempty=false) == [] + @test Compat.rsplit(",", ',' ; keepempty=false) == [] + @test Compat.rsplit(",,", ','; keepempty=false) == [] + + str = "a.:.ba..:..cba.:.:.dcba.:." + @test Compat.split(str, ".:."; keepempty=false) == ["a","ba.",".cba",":.dcba"] + @test Compat.split(str, ".:."; keepempty=true) == ["a","ba.",".cba",":.dcba",""] + @test Compat.split(str, ".:."; limit=3, keepempty=false) == ["a","ba.",".cba.:.:.dcba.:."] + @test Compat.split(str, ".:."; limit=3, keepempty=true) == ["a","ba.",".cba.:.:.dcba.:."] + @test Compat.rsplit(str, ".:."; keepempty=false) == ["a","ba.",".cba.:","dcba"] + @test Compat.rsplit(str, ".:."; keepempty=true) == ["a","ba.",".cba.:","dcba",""] + @test Compat.rsplit(str, ".:."; limit=3, keepempty=false) == ["a.:.ba.",".cba.:","dcba"] + @test Compat.rsplit(str, ".:."; limit=3, keepempty=true) == ["a.:.ba..:..cba.:","dcba",""] + + @test Compat.split(str, r"\.(:\.)+"; keepempty=false) == ["a","ba.",".cba","dcba"] + @test Compat.split(str, r"\.(:\.)+"; keepempty=true) == ["a","ba.",".cba","dcba",""] + @test Compat.split(str, r"\.(:\.)+"; limit=3, keepempty=false) == ["a","ba.",".cba.:.:.dcba.:."] + @test Compat.split(str, r"\.(:\.)+"; limit=3, keepempty=true) == ["a","ba.",".cba.:.:.dcba.:."] + @test Compat.split(str, r"\.+:\.+"; keepempty=false) == ["a","ba","cba",":.dcba"] + @test Compat.split(str, r"\.+:\.+"; keepempty=true) == ["a","ba","cba",":.dcba",""] + @test Compat.split(str, r"\.+:\.+"; limit=3, keepempty=false) == ["a","ba","cba.:.:.dcba.:."] + @test Compat.split(str, r"\.+:\.+"; limit=3, keepempty=true) == ["a","ba","cba.:.:.dcba.:."] +end + nothing