Skip to content

Commit 3dbcbba

Browse files
committed
Add arguments to defineFunction() calls for optional parameters feature
1 parent 4c80e09 commit 3dbcbba

File tree

4 files changed

+45
-25
lines changed

4 files changed

+45
-25
lines changed

occultist.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "string",
3-
"version": "1.0.2",
3+
"version": "1.0.3",
44
"description": "String library of the Chaos language.",
55
"tags": ["official", "string", "str"],
66
"type": "extension",

string.c

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -655,37 +655,53 @@ int KAOS_EXPORT KaosRegister(struct Kaos _kaos)
655655
{
656656
kaos = _kaos;
657657

658+
struct KaosValue split_optional_delimiter;
659+
char *split_optional_delimiter_value = " ";
660+
split_optional_delimiter.s = malloc(1 + strlen(split_optional_delimiter_value));
661+
strcpy(split_optional_delimiter.s, split_optional_delimiter_value);
662+
struct KaosValue split_optional_params[] = {
663+
split_optional_delimiter
664+
};
665+
666+
struct KaosValue join_optional_separator;
667+
char *join_optional_separator_value = " ";
668+
join_optional_separator.s = malloc(1 + strlen(join_optional_separator_value));
669+
strcpy(join_optional_separator.s, join_optional_separator_value);
670+
struct KaosValue join_optional_params[] = {
671+
join_optional_separator
672+
};
673+
658674
// String Operations
659-
kaos.defineFunction("upper", K_STRING, K_ANY, upper_params_name, upper_params_type, upper_params_length);
660-
kaos.defineFunction("lower", K_STRING, K_ANY, lower_params_name, lower_params_type, lower_params_length);
661-
kaos.defineFunction("capitalize", K_STRING, K_ANY, capitalize_params_name, capitalize_params_type, capitalize_params_length);
662-
kaos.defineFunction("concat", K_STRING, K_ANY, concat_params_name, concat_params_type, concat_params_length);
663-
kaos.defineFunction("split", K_LIST, K_ANY, split_params_name, split_params_type, split_params_length);
664-
kaos.defineFunction("join", K_STRING, K_ANY, join_params_name, join_params_type, join_params_length);
675+
kaos.defineFunction("upper", K_STRING, K_ANY, upper_params_name, upper_params_type, upper_params_length, NULL, 0);
676+
kaos.defineFunction("lower", K_STRING, K_ANY, lower_params_name, lower_params_type, lower_params_length, NULL, 0);
677+
kaos.defineFunction("capitalize", K_STRING, K_ANY, capitalize_params_name, capitalize_params_type, capitalize_params_length, NULL, 0);
678+
kaos.defineFunction("concat", K_STRING, K_ANY, concat_params_name, concat_params_type, concat_params_length, NULL, 0);
679+
kaos.defineFunction("split", K_LIST, K_ANY, split_params_name, split_params_type, split_params_length, split_optional_params, 1);
680+
kaos.defineFunction("join", K_STRING, K_ANY, join_params_name, join_params_type, join_params_length, join_optional_params, 1);
665681

666682
// Searching & Replacing
667-
kaos.defineFunction("search", K_NUMBER, K_ANY, search_params_name, search_params_type, search_params_length);
668-
kaos.defineFunction("replace", K_STRING, K_ANY, replace_params_name, replace_params_type, replace_params_length);
683+
kaos.defineFunction("search", K_NUMBER, K_ANY, search_params_name, search_params_type, search_params_length, NULL, 0);
684+
kaos.defineFunction("replace", K_STRING, K_ANY, replace_params_name, replace_params_type, replace_params_length, NULL, 0);
669685

670686
// Information Functions
671-
kaos.defineFunction("length", K_NUMBER, K_ANY, length_params_name, length_params_type, length_params_length);
672-
kaos.defineFunction("is_empty", K_BOOL, K_ANY, is_empty_params_name, is_empty_params_type, is_empty_params_length);
673-
kaos.defineFunction("is_numeric", K_BOOL, K_ANY, is_numeric_params_name, is_empty_params_type, is_empty_params_length);
674-
kaos.defineFunction("is_alpha", K_BOOL, K_ANY, is_alpha_params_name, is_alpha_params_type, is_alpha_params_length);
675-
kaos.defineFunction("is_alnum", K_BOOL, K_ANY, is_alnum_params_name, is_alnum_params_type, is_alnum_params_length);
676-
kaos.defineFunction("is_space", K_BOOL, K_ANY, is_space_params_name, is_space_params_type, is_space_params_length);
677-
kaos.defineFunction("is_lower", K_BOOL, K_ANY, is_lower_params_name, is_lower_params_type, is_lower_params_length);
678-
kaos.defineFunction("is_upper", K_BOOL, K_ANY, is_upper_params_name, is_upper_params_type, is_upper_params_length);
687+
kaos.defineFunction("length", K_NUMBER, K_ANY, length_params_name, length_params_type, length_params_length, NULL, 0);
688+
kaos.defineFunction("is_empty", K_BOOL, K_ANY, is_empty_params_name, is_empty_params_type, is_empty_params_length, NULL, 0);
689+
kaos.defineFunction("is_numeric", K_BOOL, K_ANY, is_numeric_params_name, is_empty_params_type, is_empty_params_length, NULL, 0);
690+
kaos.defineFunction("is_alpha", K_BOOL, K_ANY, is_alpha_params_name, is_alpha_params_type, is_alpha_params_length, NULL, 0);
691+
kaos.defineFunction("is_alnum", K_BOOL, K_ANY, is_alnum_params_name, is_alnum_params_type, is_alnum_params_length, NULL, 0);
692+
kaos.defineFunction("is_space", K_BOOL, K_ANY, is_space_params_name, is_space_params_type, is_space_params_length, NULL, 0);
693+
kaos.defineFunction("is_lower", K_BOOL, K_ANY, is_lower_params_name, is_lower_params_type, is_lower_params_length, NULL, 0);
694+
kaos.defineFunction("is_upper", K_BOOL, K_ANY, is_upper_params_name, is_upper_params_type, is_upper_params_length, NULL, 0);
679695

680696
// String Constants
681-
kaos.defineFunction("whitespace", K_STRING, K_ANY, whitespace_params_name, whitespace_params_type, whitespace_params_length);
682-
kaos.defineFunction("ascii_lowercase", K_STRING, K_ANY, ascii_lowercase_params_name, ascii_uppercase_params_type, ascii_lowercase_params_length);
683-
kaos.defineFunction("ascii_uppercase", K_STRING, K_ANY, ascii_uppercase_params_name, ascii_uppercase_params_type, ascii_uppercase_params_length);
684-
kaos.defineFunction("ascii_letters", K_STRING, K_ANY, ascii_letters_params_name, ascii_letters_params_type, ascii_letters_params_length);
685-
kaos.defineFunction("digits", K_STRING, K_ANY, digits_params_name, digits_params_type, digits_params_length);
686-
kaos.defineFunction("hexdigits", K_STRING, K_ANY, hexdigits_params_name, hexdigits_params_type, hexdigits_params_length);
687-
kaos.defineFunction("octdigits", K_STRING, K_ANY, octdigits_params_name, octdigits_params_type, octdigits_params_length);
688-
kaos.defineFunction("punctuation", K_STRING, K_ANY, punctuation_params_name, punctuation_params_type, punctuation_params_length);
697+
kaos.defineFunction("whitespace", K_STRING, K_ANY, whitespace_params_name, whitespace_params_type, whitespace_params_length, NULL, 0);
698+
kaos.defineFunction("ascii_lowercase", K_STRING, K_ANY, ascii_lowercase_params_name, ascii_uppercase_params_type, ascii_lowercase_params_length, NULL, 0);
699+
kaos.defineFunction("ascii_uppercase", K_STRING, K_ANY, ascii_uppercase_params_name, ascii_uppercase_params_type, ascii_uppercase_params_length, NULL, 0);
700+
kaos.defineFunction("ascii_letters", K_STRING, K_ANY, ascii_letters_params_name, ascii_letters_params_type, ascii_letters_params_length, NULL, 0);
701+
kaos.defineFunction("digits", K_STRING, K_ANY, digits_params_name, digits_params_type, digits_params_length, NULL, 0);
702+
kaos.defineFunction("hexdigits", K_STRING, K_ANY, hexdigits_params_name, hexdigits_params_type, hexdigits_params_length, NULL, 0);
703+
kaos.defineFunction("octdigits", K_STRING, K_ANY, octdigits_params_name, octdigits_params_type, octdigits_params_length, NULL, 0);
704+
kaos.defineFunction("punctuation", K_STRING, K_ANY, punctuation_params_name, punctuation_params_type, punctuation_params_length, NULL, 0);
689705

690706
return 0;
691707
}

test.kaos

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ print string.capitalize("hello world")
77
print string.capitalize("")
88
print string.concat("hello", " world")
99
print string.split("A quick brown fox jumps over the lazy dog", " ")
10+
print string.split("A quick brown fox jumps over the lazy dog")
1011
list a = ["foo", "bar", "baz"]
1112
print string.join(a, " ")
13+
print string.join(a)
1214
print string.join(a, "")
1315

1416
// Searching & Replacing

test.out

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Hello world
44

55
hello world
66
['A', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
7+
['A', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
8+
foo bar baz
79
foo bar baz
810
foobarbaz
911
6

0 commit comments

Comments
 (0)