Skip to content

Commit

Permalink
Merge pull request #509 from ranger-turtle/NewBuiltin
Browse files Browse the repository at this point in the history
Add EqualsIgnoreCase string builtin function
  • Loading branch information
xoofx committed Jun 11, 2023
2 parents 003e1ac + f844888 commit 1328529
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 0 deletions.
Expand Up @@ -45,6 +45,7 @@ List of all the builtin <string> functions:
downcase
empty
ends_with
equals_ignore_case
escape
handleize
hmac_sha1
Expand Down
2 changes: 2 additions & 0 deletions src/Scriban.Tests/TestFiles/400-builtins/430-string.out.txt
Expand Up @@ -84,3 +84,5 @@ Test Convert from string to numbers:
"123.2" | string.to_double + 1: 124.2
hello world
hello world
Is "Scriban" equal to "SCRIBAN": true
Is "Scriban" equal to "Liquid": false
2 changes: 2 additions & 0 deletions src/Scriban.Tests/TestFiles/400-builtins/430-string.txt
Expand Up @@ -84,3 +84,5 @@ Test Convert from string to numbers:
"123.2" | string.to_double + 1: {{ "123.2" | string.to_double + 1 }}
{{ "hello" | string.pad_right 10 }}world
hello{{ "world" | string.pad_left 10 }}
Is "Scriban" equal to "SCRIBAN": {{ "Scriban" | string.equals_ignore_case "SCRIBAN" }}
Is "Scriban" equal to "Liquid": {{ "Scriban" | string.equals_ignore_case "Liquid" }}
19 changes: 19 additions & 0 deletions src/Scriban/Functions/StringFunctions.cs
Expand Up @@ -305,6 +305,25 @@ public static bool EndsWith(string text, string value)
return text.EndsWith(value);
}

/// <summary>
/// Returns a boolean indicating whether the input string is equal to specified string 'value'. Comparison is case insensitive.
/// </summary>
/// <param name="text">The input string</param>
/// <param name="value">The string to compare</param>
/// <returns><c>true</c> if `text` is equal to string `value`, ignoring case</returns>
/// <remarks>
/// ```scriban-html
/// {{ "Scriban" | string.equals_ignore_case "SCRIBAN" }}
/// ```
/// ```html
/// true
/// ```
/// </remarks>
public static bool EqualsIgnoreCase(string text, string value)
{
return text?.Equals(value, StringComparison.InvariantCultureIgnoreCase) ?? false;
}

/// <summary>
/// Returns a url handle from the input string.
/// </summary>
Expand Down
1 change: 1 addition & 0 deletions src/Scriban/Runtime/CustomFunction.Generated.cs
Expand Up @@ -27,6 +27,7 @@ static DynamicCustomFunction()
BuiltinFunctionDelegates.Add(typeof(Scriban.Functions.MathFunctions).GetMethod(nameof(Scriban.Functions.MathFunctions.IsNumber), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly), method => new Functionbool_object(method));
BuiltinFunctionDelegates.Add(typeof(Scriban.Functions.StringFunctions).GetMethod(nameof(Scriban.Functions.StringFunctions.Contains), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly), method => new Functionbool_string_string(method));
BuiltinFunctionDelegates.Add(typeof(Scriban.Functions.StringFunctions).GetMethod(nameof(Scriban.Functions.StringFunctions.EndsWith), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly), method => new Functionbool_string_string(method));
BuiltinFunctionDelegates.Add(typeof(Scriban.Functions.StringFunctions).GetMethod(nameof(Scriban.Functions.StringFunctions.EqualsIgnoreCase), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly), method => new Functionbool_string_string(method));
BuiltinFunctionDelegates.Add(typeof(Scriban.Functions.StringFunctions).GetMethod(nameof(Scriban.Functions.StringFunctions.StartsWith), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly), method => new Functionbool_string_string(method));
BuiltinFunctionDelegates.Add(typeof(Scriban.Functions.StringFunctions).GetMethod(nameof(Scriban.Functions.StringFunctions.Empty), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly), method => new Functionbool_string(method));
BuiltinFunctionDelegates.Add(typeof(Scriban.Functions.StringFunctions).GetMethod(nameof(Scriban.Functions.StringFunctions.Whitespace), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly), method => new Functionbool_string(method));
Expand Down

0 comments on commit 1328529

Please sign in to comment.