module Bindgen::Util
Defined in:
bindgen/util.crbindgen/util/create_by_name.cr
bindgen/util/find_matching.cr
bindgen/util/prefix.cr
bindgen/util/tribool.cr
Constant Summary
-
BACKREFERENCE_RX =
/\\(\d)/
-
Matches back-references in strings.
Class Method Summary
-
.format_bytes(bytes : Int, explicit_sign = false) : String
Formats the bytes amount as nice string.
-
.mangle_type_name(full_type_name : String)
Mangles the type name of full_type_name for the binding function: * A pointer-star is turned into
X
* A reference-ampersand is turned intoR
* Any non-word character is replaced with_
-
.mangle_type_names(full_type_names : String)
Mangles a list of type-names into a combined string.
-
.pattern_rewrite(pattern : String | Nil, groups) : String
Using the rewrite pattern, containing back-references, builds a new string.
-
.replace_backreferences(string : String, captures) : String
Replaces back-references in strings with captures from an existing
Array(String)
orRegex::MatchData
. -
.template(haystack : String, replacement : String | Nil = nil, env = ENV)
Templates the string haystack, replacing occurences of
%
with replacement. -
.uniq_by(list : Array, &)
Mimics Rubys
Enumerable#uniq_by
.
Class Method Detail
Formats the bytes amount as nice string.
Mangles the type name of full_type_name for the binding function:
- A pointer-star is turned into
X
- A reference-ampersand is turned into
R
- Any non-word character is replaced with
_
Mangles a list of type-names into a combined string.
Using the rewrite pattern, containing back-references, builds a new
string. If pattern is nil
, then groups[1]
, then groups[0]
is
returned (Whichever is non-nil first).
Replaces back-references in strings with captures from an existing
Array(String)
or Regex::MatchData
.
Templates the string haystack, replacing occurences of %
with
replacement. If replacement is nil
, this behaviour is disabled.
The user can also access environment variables using the syntax {NAME}
,
with NAME
being the variable name. A default fallback, in case the
NAME
is unset, can be provided through a pipe symbol: {NAME|default}
.
It's possible to fall back to the character expansion: {NAME|%}
Mimics Rubys Enumerable#uniq_by
. Takes a list, and makes all values
in it unique by yielding all pairs, keeping only those items where the
block returned a falsy value.
This method is O(n²)
, prefer Enumerable#uniq
if possible.