From 2109dedc473944dbb38756cd48d0c44f996304c4 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 9 Aug 2023 08:54:37 +0200 Subject: Complete and cleanup function documentation in preparation for auto-extraction Also: - Move the $target.*() function family from functions-name.cxx to separate functions-target.cxx. - Get rid of the separate $process_path_ex.*() family, merging it with $process_path.*(). --- libbuild2/functions-project-name.cxx | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'libbuild2/functions-project-name.cxx') diff --git a/libbuild2/functions-project-name.cxx b/libbuild2/functions-project-name.cxx index 4a8394d..23523f0 100644 --- a/libbuild2/functions-project-name.cxx +++ b/libbuild2/functions-project-name.cxx @@ -13,6 +13,12 @@ namespace build2 { function_family f (m, "project_name"); + // $string() + // + // Return the string representation of a project name. See also the + // `$variable()` function below. + // + // Note that we must handle NULL values (relied upon by the parser // to provide conversion semantics consistent with untyped values). // @@ -21,6 +27,14 @@ namespace build2 return p != nullptr ? move (*p).string () : string (); }; + // $base([, ]) + // + // Return the base part (without the extension) of a project name. + // + // If is specified, then only remove that extension. Note that + // should not include the dot and the comparison is always + // case-insensitive. + // f["base"] += [](project_name p, optional ext) { return ext ? p.base (ext->c_str ()) : p.base (); @@ -31,7 +45,19 @@ namespace build2 return p.base (convert (move (ext)).c_str ()); }; + // $extension() + // + // Return the extension part (without the dot) of a project name or empty + // string if there is no extension. + // f["extension"] += &project_name::extension; + + // $variable() + // + // Return the string representation of a project name that is sanitized to + // be usable as a variable name. Specifically, `.`, `-`, and `+` are + // replaced with `_`. + // f["variable"] += &project_name::variable; // Project name-specific overloads from builtins. -- cgit v1.1