diff options
author | Stuart Halloway <stu@thinkrelevance.com> | 2010-05-30 13:53:36 -0400 |
---|---|---|
committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-06-03 21:20:59 -0400 |
commit | 8ac69ede24a0c481f312008dbca8bee2bc6e1e73 (patch) | |
tree | de5828a915782b83e2e6a219dabcefb9c7c1c78d | |
parent | 2c9503a08aa25cfbc3744b8ea575f10dc432f0f2 (diff) |
abstraction fix to split: preserve vector nature of host return value #359
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
-rw-r--r-- | src/clj/clojure/string.clj | 11 | ||||
-rw-r--r-- | test/clojure/test_clojure/string.clj | 5 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/clj/clojure/string.clj b/src/clj/clojure/string.clj index e1ef3796..a4e77415 100644 --- a/src/clj/clojure/string.clj +++ b/src/clj/clojure/string.clj @@ -10,7 +10,8 @@ :author "Stuart Sierra"} clojure.string (:refer-clojure :exclude (replace reverse)) - (:import (java.util.regex Pattern))) + (:import (java.util.regex Pattern) + clojure.lang.LazilyPersistentVector)) (defn ^String reverse "Returns s with its characters reversed." @@ -123,10 +124,12 @@ (defn split "Splits string on a regular expression. Optional argument limit is - the maximum number of splits." + the maximum number of splits. Not lazy. Returns vector of the splits." {:added "1.2"} - ([^Pattern re ^String s] (seq (.split re s))) - ([^Pattern re limit ^String s] (seq (.split re s limit)))) + ([^String s ^Pattern re] + (LazilyPersistentVector/createOwning (.split re s))) + ([ ^String s ^Pattern re limit] + (LazilyPersistentVector/createOwning (.split re s limit)))) (defn ^String trim "Removes whitespace from both ends of string." diff --git a/test/clojure/test_clojure/string.clj b/test/clojure/test_clojure/string.clj index 8ee7cdee..d1996c7c 100644 --- a/test/clojure/test_clojure/string.clj +++ b/test/clojure/test_clojure/string.clj @@ -2,6 +2,11 @@ (:require [clojure.string :as s]) (:use clojure.test)) +(deftest t-split + (is (= ["a" "b"] (s/split "a-b" #"-"))) + (is (= ["a" "b-c"] (s/split "a-b-c" #"-" 2))) + (is (vector? (s/split "abc" #"-")))) + (deftest t-reverse (is (= "tab" (s/reverse "bat")))) |