cuerdas.core
<<-
deprecated
(<<- s)
(<<- re s)
Unindent multiline text. Uses either a supplied regex or the shortest beginning-of-line to non-whitespace distance
DEPRECTED: replaced by uninindent
collapse-whitespace
(collapse-whitespace s)
Converts all adjacent whitespace characters to a single space.
concat
macro
(concat & params)
A macro variant of the clojure.core/str function that performs considerably faster string concatenation operation on CLJS (on JVM/CLJ it only applies basic simplification and then relies on the clojure.core/str
).
concat
macro
(concat & params)
A macro variant of the clojure.core/str function that performs considerably faster string concatenation operation on CLJS (on JVM/CLJ it only applies basic simplification and then relies on the clojure.core/str
).
css-selector
(css-selector s)
Output will be either: (js-selector “LeadingDash”) ;; => -leading-dash (js-selector “noLeadingDash”) ;; => no-leading-dash
accepts keywords and strings, with any standard delimiter
empty-or-nil?
deprecated
(empty-or-nil? s)
Convenient helper for check emptines or if value is nil
DEPRECATED: this is already covered by empty?
ffmt
macro
(ffmt s & params)
Alternative (to istr
) string formating macro, that performs simple string formating on the compile time (this means that the string should be known at compile time). Internally it uses the fast string concatenation mechanism implemented in the concat
macro.
If you don’t need the peculiarities of the istr
macro, this macro should be prefered.
It works with two basic forms: sequencial and indexed. Let seen an example:
(str/ffmt “url(%)” my-url) ; sequential (str/ffmt “url(%1)” my-url) ; indexed
ffmt
macro
(ffmt s & params)
Alternative (to istr
) string formating macro, that performs simple string formating on the compile time (this means that the string should be known at compile time). Internally it uses the fast string concatenation mechanism implemented in the concat
macro.
If you don’t need the peculiarities of the istr
macro, this macro should be prefered.
It works with two basic forms: sequencial and indexed. Let seen an example:
(str/ffmt “url(%)” my-url) ; sequential (str/ffmt “url(%1)” my-url) ; indexed
human
(human s)
Output will be: lower cased and space separated accepts strings and keywords
istr
macro
(istr & strings)
A string formating macro that works LIKE ES6 template literals but using clojure construcs and symbols for interpolation delimiters.
It accepts one or more strings; emits a concat
invocation that concatenates the string data and evaluated expressions contained within that argument.
Evaluation is controlled using ~{} and ~() forms. The former is used for simple value replacement using clojure.core/str; the latter can be used to embed the results of arbitrary function invocation into the produced string.
Examples:
user=> (def v 30.5) user=> (istr “This trial required ~{v}ml of solution.”) “This trial required 30.5ml of solution.” user=> (istr “There are ~(int v) days in November.”) “There are 30 days in November.”
user=> (def m {:a 1 2 3}) user=> (istr “The total for your order is $~(->> m :a (apply +)).”) “The total for your order is $6.”
user=> (istr "Just split a long interpolated string up into ~(-> m :a (get 0)), " "~(-> m :a (get 1)), or even ~(-> m :a (get 2)) separate strings " "if you don’t want a << expression to end up being e.g. ~(* 4 (int v)) " “columns wide.”) “Just split a long interpolated string up into 1, 2, or even 3 separate strings if you don’t want a << expression to end up being e.g. 120 columns wide.”
Note that quotes surrounding string literals within ~() forms must be escaped.
istr
macro
(istr & strings)
A string formating macro that works LIKE ES6 template literals but using clojure construcs and symbols for interpolation delimiters.
It accepts one or more strings; emits a concat
invocation that concatenates the string data and evaluated expressions contained within that argument.
Evaluation is controlled using ~{} and ~() forms. The former is used for simple value replacement using clojure.core/str; the latter can be used to embed the results of arbitrary function invocation into the produced string.
Examples:
user=> (def v 30.5) user=> (istr “This trial required ~{v}ml of solution.”) “This trial required 30.5ml of solution.” user=> (istr “There are ~(int v) days in November.”) “There are 30 days in November.”
user=> (def m {:a 1 2 3}) user=> (istr “The total for your order is $~(->> m :a (apply +)).”) “The total for your order is $6.”
user=> (istr "Just split a long interpolated string up into ~(-> m :a (get 0)), " "~(-> m :a (get 1)), or even ~(-> m :a (get 2)) separate strings " "if you don’t want a << expression to end up being e.g. ~(* 4 (int v)) " “columns wide.”) “Just split a long interpolated string up into 1, 2, or even 3 separate strings if you don’t want a << expression to end up being e.g. 120 columns wide.”
Note that quotes surrounding string literals within ~() forms must be escaped.
js-selector
(js-selector s)
Output will be either: (js-selector “-pascal-case-me”) ;; => PascalCaseMe (js-selector “camel-case-me”) ;; => camelCaseMe
accepts keywords and strings, with any standard delimiter
kebab
(kebab s)
Output will be: lower-cased-and-separated-with-dashes accepts strings and keywords
keyword
(keyword k)
(keyword n k)
Safer version of clojure keyword, accepting a symbol for the namespace and kebab-casing the key
letters?
(letters? s)
Checks if string contains only letters. This function will use all the unicode range.
lower
(lower s)
Converts string to all lower-case.
This function works in strictly locale independent way, if you want a localized version, just use locale-lower
ltrim
(ltrim s)
(ltrim s chs)
Removes whitespace or specified characters from left side of string.
nilv
macro
(nilv v)
Mark a expression string safe, if value is nil or undefined, the "" is returned.
nilv
macro
(nilv v)
Mark a expression string safe, if value is nil or undefined, the "" is returned.
pad
(pad s)
(pad s {:keys [length padding type], :or {length 0, padding " ", type :left}})
Pads the str with characters until the total string length is equal to the passed length parameter. By default, pads on the left with the space char.
pascal
(pascal s)
Output will be: CapitalizedAndTouchingTheNext accepts strings and keywords
phrase
(phrase s)
Output will be: Space separated with the first letter capitalized. accepts strings and keywords
prune
(prune s num)
(prune s num subs)
Truncates a string to a certain length and adds ‘…’ if necessary.
replace
(replace s match replacement)
Replaces all instance of match with replacement in s.
The replacement is literal (i.e. none of its characters are treated specially) for all cases above except pattern / string.
In match is pattern instance, replacement can contain $1, $2, etc. will be substituted with string that matcher the corresponding parenthesized group in pattern.
If you wish your replacement string to be used literary, use (cuerdas.regexp/escape replacement)
.
Example: (replace “Almost Pig Latin” #“\b(\w)(\w+)\b” “$2$1ay”) ;; => “lmostAay igPay atinLay”
replace-first
(replace-first s match replacement)
Replaces first instance of match with replacement in s.
rtrim
(rtrim s)
(rtrim s chs)
Removes whitespace or specified characters from right side of string.
slice
(slice s begin)
(slice s begin end)
Extracts a section of a string and returns a new string.
snake
(snake s)
Output will be: lower_cased_and_underscore_separated accepts strings and keywords
split
(split s)
(split s sep)
(split s sep num)
Splits a string on a separator a limited number of times. The separator can be a string, character or Pattern (clj) / RegExp (cljs) instance.
strip-newlines
(strip-newlines s)
Takes a string and replaces newlines with a space. Multiple lines are replaced with a single space.
strip-tags
(strip-tags s)
(strip-tags s tags)
(strip-tags s tags mapping)
Remove html tags from string.
substr-between
(substr-between s prefix suffix)
Find string that is nested in between two strings. Return first match
title
(title s)
Output will be: Each Word Capitalized And Separated With Spaces accepts strings and keywords
to-bool
(to-bool s)
Returns true for 1/on/true/yes string values (case-insensitive), false otherwise.
trim
(trim s)
(trim s chs)
Removes whitespace or specified characters from both ends of string.
unindent
(unindent s)
(unindent s re)
Unindent multiline text. Uses either a supplied regex or the shortest beginning-of-line to non-whitespace distance
unlines
(unlines s)
Returns a new string joining a list of strings with a newline char (\n).
unsafe-concat
macro
(unsafe-concat & params)
Unsafe variant of concat
. Does not add checks on unknown symbols.
unsafe-concat
macro
(unsafe-concat & params)
Unsafe variant of concat
. Does not add checks on unknown symbols.
unsafe-starts-with?
(unsafe-starts-with? s prefix)
UNSAFE version of starts-with? predicate
unsurround
(unsurround s surrounding)
Unsurround a string surrounded by another string or character.
upper
(upper s)
Converts string to all upper-case.
This function works in strictly locale independent way, if you want a localized version, just use locale-upper
word?
(word? s)
Checks if a string contains only the word characters. This function will use all the unicode range.