String (str
)
All strings have the following methods. Strings are immutable, all operations return their results as a new string.
Returned by
String objects are returned by the following functions and methods:
get_option()
join_paths()
bool.to_string()
build_machine.cpu()
build_machine.cpu_family()
build_machine.endian()
build_machine.system()
build_tgt.full_path()
build_tgt.name()
build_tgt.path()
cfg_data.get()
cfg_data.get_unquoted()
compiler.get_argument_syntax()
compiler.get_define()
compiler.get_id()
compiler.get_linker_id()
compiler.version()
custom_idx.full_path()
custom_tgt.full_path()
dep.get_configtool_variable()
dep.get_pkgconfig_variable()
dep.get_variable()
dep.include_type()
dep.name()
dep.type_name()
dep.version()
external_program.full_path()
external_program.path()
int.to_string()
meson.backend()
meson.build_root()
meson.current_build_dir()
meson.current_source_dir()
meson.global_build_root()
meson.global_source_root()
meson.project_build_root()
meson.project_name()
meson.project_source_root()
meson.project_version()
meson.source_root()
meson.version()
runresult.stderr()
runresult.stdout()
str.format()
str.join()
str.replace()
str.strip()
str.substring()
str.to_lower()
str.to_upper()
str.underscorify()
String methods
str.contains()
Returns true
if string contains the string specified as the argument.
Signature
# Returns `true` if string contains the string specified as the argument
bool contains(
str fragment, # The string fragment to check
)
Example
target = 'x86_FreeBSD'
is_fbsd = target.to_lower().contains('freebsd')
# is_fbsd now has the boolean value 'true'
Arguments
The method str.contains()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
fragment |
str |
The string fragment to check |
|
str.endswith()
Returns true if string ends with the string specified as the argument.
Signature
# Returns true if string ends with the string specified as the argument
bool endswith(
str fragment, # The string fragment to check
)
Example
target = 'x86_FreeBSD'
is_bsd = target.to_lower().endswith('bsd') # boolean value 'true'
Arguments
The method str.endswith()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
fragment |
str |
The string fragment to check |
|
str.format()
Strings can be built using the string formatting functionality.
See the Meson syntax entry for more information.
Signature
# Strings can be built using the string formatting functionality
str format(
str fmt, # The string to format
int | bool | str value..., # The values to replace the @number@ placeholders in the format string
)
Example
template = 'string: @0@, number: @1@, bool: @2@'
res = template.format('text', 1, true)
# res now has value 'string: text, number: 1, bool: true'
Arguments
The method str.format()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
fmt |
str |
The string to format. The formatting works by replacing placeholders of type |
|
Additionally, the
method accepts between 0
and infinity
variadic
arguments (value...
) of type
.int
| bool
| str
The values to replace the @number@ placeholders in the format string.
str.join()
The opposite of split,
for example '.'.join(['a', 'b', 'c']
yields 'a.b.c'
.
Signature
# The opposite of split,
str join(
str strings..., # The strings to join with the current string
)
Example
# Similar to the Python str.join()
output = ' '.join(['foo', 'bar'])
# Output value is 'foo bar'
pathsep = ':'
path = pathsep.join(['/usr/bin', '/bin', '/usr/local/bin'])
# path now has the value '/usr/bin:/bin:/usr/local/bin'
Arguments
The
method accepts between 0
and infinity
variadic
arguments (strings...
) of type
.str
The strings to join with the current string.
Before Meson 0.60.0 this function only accepts a single positional argument of the type [[list[str]]].
(since 0.60.0)
str.replace()
Search all occurences of old
and and replace it with new
Signature
(since 0.58.0)
# Search all occurences of `old` and and replace it with `new`
str replace(
str old, # The substring to search
str new, # The replacement string
)
Example
# Replaces all instances of one substring with another
s = 'semicolons;as;separators'
s = s.replace('as', 'are')
# 's' now has the value of 'semicolons;are;separators'
Arguments
The method str.replace()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
old |
str |
The substring to search |
|
new |
str |
The replacement string |
|
str.split()
Splits the string at the specified character (or whitespace if not set) and returns the parts in an array.
Signature
# Splits the string at the specified character
list[str] split(
str [split_string], # Specifies the character / substring where to split the string
)
Example
# Similar to the Python str.split()
components = 'a b c d '.split()
# components now has the value ['a', 'b', 'c', 'd']
components = 'a b c d '.split(' ')
# components now has the value ['a', 'b', '', '', 'c', 'd', '']
Arguments
The method str.split()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
split_string |
str |
Specifies the character / substring where to split the string. |
[optional] |
str.startswith()
Returns true if string starts with the string specified as the argument.
Signature
# Returns true if string starts with the string specified as the argument
bool startswith(
str fragment, # The string fragment to check
)
Example
target = 'x86_FreeBSD'
is_x86 = target.startswith('x86') # boolean value 'true'
Arguments
The method str.startswith()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
fragment |
str |
The string fragment to check |
|
str.strip()
Removes leading/ending spaces and newlines from the string.
Signature
# Removes leading/ending spaces and newlines from the string
str strip(
str [strip_chars], # All characters in this string will be stripped
)
Example
# Similar to the Python str.strip(). Removes leading/ending spaces and newlines
define = ' -Dsomedefine '
stripped_define = define.strip()
# 'stripped_define' now has the value '-Dsomedefine'
Arguments
The method str.strip()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
strip_chars |
str |
All characters in this string will be stripped. |
(since 0.43.0) [optional] |
str.substring()
Returns a substring specified from start
to end
.
Both start
and end
arguments are optional, so, for example, 'foobar'.substring()
will return 'foobar'
.
The method accepts negative values where negative start
is relative to the end of
string len(string) - start
as well as negative end
.
Signature
(since 0.56.0)
# Returns a substring specified from `start` to `end`
str substring(
int [start], # The start position
int [end], # The end position
)
Example
# Similar to the Python str[start:end] syntax
target = 'x86_FreeBSD'
platform = target.substring(0, 3) # prefix string value 'x86'
system = target.substring(4) # suffix string value 'FreeBSD'
Example with negative values:
string = 'foobar'
string.substring(-5, -3) # => 'oo'
string.substring(1, -1) # => 'ooba'
Arguments
The method str.substring()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
start |
int |
The start position |
[optional] |
end |
int |
The end position |
[optional] |
str.to_int()
Converts the string to an int and throws an error if it can't be
Signature
int to_int()
Example
version = '1'
# Converts the string to an int and throws an error if it can't be
ver_int = version.to_int()
str.to_lower()
Converts all characters to lower case
Signature
str to_lower()
Example
target = 'x86_FreeBSD'
lower = target.to_lower() # t now has the value 'x86_freebsd'
str.to_upper()
Converts all characters to upper case
Signature
str to_upper()
Example
target = 'x86_FreeBSD'
upper = target.to_upper() # t now has the value 'X86_FREEBSD'
str.underscorify()
Creates a string where every non-alphabetical non-number character is replaced with _
.
Signature
str underscorify()
Example
name = 'Meson Docs.txt#Reference-manual'
# Replaces all characters other than `a-zA-Z0-9` with `_` (underscore)
# Useful for substituting into #defines, filenames, etc.
underscored = name.underscorify()
# underscored now has the value 'Meson_Docs_txt_Reference_manual'
str.version_compare()
Does semantic version comparison.
Signature
# Does semantic version comparison
bool version_compare(
str compare_string, # The string to compare to
)
Example
version = '1.2.3'
# Compare version numbers semantically
is_new = version.version_compare('>=2.0')
# is_new now has the boolean value false
# Supports the following operators: '>', '<', '>=', '<=', '!=', '==', '='
Meson version comparison conventions include:
'3.6'.version_compare('>=3.6.0') == false
It is best to be unambiguous and specify the full revision level to compare.
Arguments
The method str.version_compare()
accepts the following positional arguments:
Name | Type | Description | Tags |
---|---|---|---|
compare_string |
str |
The string to compare to. |
|
The results of the search are