Details
-
Type:
Defect
-
Status:
Open
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: Release 1.6
-
Fix Version/s: Release 1.6
-
Component/s: None
-
Labels:None
-
Patch:Code and Test
Description
clojure.string/triml and trimr use Character/isWhitespace to determine whether a character is whitespace, but trim uses some other definition of white space character. For example:
user=> (use 'clojure.string)
nil
user=> (def s " \u2002 foo")
#'user/s
user=> (trim s)
"? foo"
user=> (triml s)
"foo"
The attached patch changes trim to use Character/isWhitespace. I suppose other possibilities are to change triml and trimr to use trim's notion of whitespace, whatever that is, or to just leave these functions inconsistent with each other. It does seem that it would be a nice property that (trim s) is equal to (triml (trimr s)) for all strings.
The patch also changes triml to only call .length on s once.
Attachments
Activity
Rich Hickey
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Fix Version/s | Release 1.5 [ 10150 ] |
Stuart Halloway
made changes -
| Fix Version/s | Release 1.5 [ 10150 ] | |
| Fix Version/s | Release 1.6 [ 10157 ] |
Aaron Bedra
made changes -
| Assignee | Aaron Bedra [ aaron ] |
Aaron Bedra
made changes -
| Affects Version/s | Release 1.3 [ 10038 ] | |
| Affects Version/s | Release 1.2 [ 10037 ] | |
| Affects Version/s | Release 1.6 [ 10157 ] |
Question for Rich: do we want to be consistent across the different trim fns (per this patch) or consistent with Java, which uses one definition of whitespace in Character/isWhitespace, and a different definition in String/trim?