add_to_subarray simplified
git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6841 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
+18
-33
@@ -1,5 +1,4 @@
|
||||
// Cubescript Multidimensional Arrays
|
||||
|
||||
islists = [
|
||||
bool = 0
|
||||
loop i (listlen $arg1) [
|
||||
@@ -42,13 +41,12 @@ removeLeadingWhitespace = [
|
||||
reverseString = [
|
||||
oldstr = $arg1
|
||||
newstr = ""
|
||||
|
||||
loop i (strlen $oldstr) [
|
||||
newstr = (concatword $newstr (substr $oldstr (* (+ $i 1) -1) 1))
|
||||
]
|
||||
result $newstr
|
||||
]
|
||||
|
||||
// returns the subarray name of a open bracket position in an existing mdarray
|
||||
extractSubarrayName = [
|
||||
open_bracket_pos = $arg2
|
||||
subarray_name = ""
|
||||
@@ -63,7 +61,7 @@ extractSubarrayName = [
|
||||
]
|
||||
result (reverseString $subarray_name)
|
||||
]
|
||||
|
||||
// adds a new subarray to an existing mdarray
|
||||
MDArray_New_Subarray = [
|
||||
if (= (findlist (getalias $arg1) $arg2) -1) [
|
||||
add2list $arg1 $arg2
|
||||
@@ -74,7 +72,7 @@ MDArray_New_Subarray = [
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
// finds the open and close bracket pair positions of a subarray in an existing mdarray
|
||||
MDArray_Get_Bracket_Positions = [
|
||||
open_bracket_pos = (+ (strpos $arg1 $arg2) (+ (strlen $arg2) 1))
|
||||
close_bracket_pos = -1
|
||||
@@ -87,14 +85,13 @@ MDArray_Get_Bracket_Positions = [
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
// returns either an entire subarray or a single element from a subarray of an existing mdarray
|
||||
MDArray_Get = [
|
||||
mdarray = (getalias $arg1)
|
||||
target = (findlist $mdarray $arg2)
|
||||
|
||||
if (!= $target -1) [
|
||||
MDArray_Get_Bracket_Positions $mdarray $arg2
|
||||
|
||||
if (!= $close_bracket_pos -1) [
|
||||
+= open_bracket_pos 1 // skip the bracket itself when extracting the subarray with the line below
|
||||
-= close_bracket_pos 1
|
||||
@@ -112,7 +109,7 @@ MDArray_Get = [
|
||||
]
|
||||
] [ echo (red)Error: $arg2 is not a subarray of $arg1 ]
|
||||
]
|
||||
|
||||
// returns a list of all opening bracket "[" positions in an existing mdarray
|
||||
MDArray_Get_All_Opening_Bracket_Positions = [
|
||||
o_positions = ""
|
||||
loop i (strlen $arg1) [
|
||||
@@ -124,11 +121,11 @@ MDArray_Get_All_Opening_Bracket_Positions = [
|
||||
result $o_positions
|
||||
] [ result -1 ]
|
||||
]
|
||||
|
||||
// returns the number of subarrays in an existing mdarray
|
||||
MDArray_Get_Subarray_Count = [
|
||||
result (listlen (MDArray_Get_All_Opening_Bracket_Positions (getalias $arg1)))
|
||||
]
|
||||
|
||||
// returns a list of all subarray names in an existing mdarray
|
||||
MDArray_Get_All_Subarray_Names = [
|
||||
opening_brackets = (MDArray_Get_All_Opening_Bracket_Positions (getalias $arg1))
|
||||
subarray_names = ""
|
||||
@@ -138,7 +135,8 @@ MDArray_Get_All_Subarray_Names = [
|
||||
]
|
||||
result $subarray_names
|
||||
]
|
||||
|
||||
// searches the contents of all subarrays in an existing mdarray for a keyword
|
||||
// returns a list of all subarray names that have content with matches
|
||||
MDArray_Search = [
|
||||
mdarray = (getalias $arg1)
|
||||
token = $arg2
|
||||
@@ -155,7 +153,7 @@ MDArray_Search = [
|
||||
]
|
||||
result $search_results
|
||||
]
|
||||
|
||||
// deletes an entire subarray from an existing mdarray
|
||||
MDArray_Delete_Subarray = [
|
||||
orig_array = (getalias $arg1)
|
||||
target_subarray = $arg2
|
||||
@@ -166,9 +164,7 @@ MDArray_Delete_Subarray = [
|
||||
if (!= $target_pos -1) [
|
||||
loop h (strlen $orig_array) [
|
||||
if (< $h $target_pos) continue [
|
||||
if (strcmp (substr $orig_array $h 1) "]") [
|
||||
gotclose = $h; break
|
||||
]
|
||||
if (strcmp (substr $orig_array $h 1) "]") [ gotclose = $h; break ]
|
||||
]
|
||||
]
|
||||
delstr = (substr $orig_array $target_pos (- (+ $gotclose 1) $target_pos))
|
||||
@@ -176,7 +172,7 @@ MDArray_Delete_Subarray = [
|
||||
result (getalias $arg1)
|
||||
]
|
||||
]
|
||||
|
||||
// modifies an existing element in an existing subarray
|
||||
MDArray_Modify_Subarray = [
|
||||
original_subarray = (MDArray_Get $arg1 $arg2 -1)
|
||||
target_elem = $arg3
|
||||
@@ -186,10 +182,8 @@ MDArray_Modify_Subarray = [
|
||||
if (<= (countQuotes $original_subarray) 2) [
|
||||
original_subarray = (addpunct $original_subarray)
|
||||
]
|
||||
|
||||
loop j (listlen $original_subarray) [
|
||||
next_elem = (at $original_subarray $j)
|
||||
|
||||
if (= $j $target_elem) [
|
||||
if (> (listlen $new_elem) 1) [
|
||||
add2list new_subarray (addpunct $new_elem)
|
||||
@@ -203,27 +197,18 @@ MDArray_Modify_Subarray = [
|
||||
MDArray_Delete_Subarray $arg1 $arg2
|
||||
MDArray_New_Subarray $arg1 $arg2 $new_subarray
|
||||
]
|
||||
|
||||
// adds a new element to an existing subarray
|
||||
MDArray_Add_To_Subarray = [
|
||||
mdarray = (getalias $arg1)
|
||||
target_sub = (findlist $mdarray $arg2)
|
||||
to_add = $arg3
|
||||
|
||||
if (!= $target_sub -1) [
|
||||
if (!= (findlist $mdarray $arg2) -1) [
|
||||
subarray = (MDArray_Get $arg1 $arg2 -1)
|
||||
if (islists $to_add) [
|
||||
if (islists $subarray) [ newarray = (concat $subarray $to_add) ] [
|
||||
newarray = (concat (addpunct $subarray) $to_add)
|
||||
]
|
||||
] [
|
||||
if (islists $subarray) [ newarray = (concat $subarray (addpunct $to_add)) ] [
|
||||
newarray = (concat (addpunct $subarray) (addpunct $to_add))
|
||||
]
|
||||
]
|
||||
if (<= (countQuotes $subarray) 2) [ subarray = (addpunct $subarray) ]
|
||||
if (<= (countQuotes $to_add) 2) [ to_add = (addpunct $to_add) ]
|
||||
MDArray_Delete_Subarray $arg1 $arg2
|
||||
MDArray_New_Subarray $arg1 $arg2 (removeLeadingWhitespace $newarray)
|
||||
MDArray_New_Subarray $arg1 $arg2 (format "%1 %2" $subarray $to_add)
|
||||
]
|
||||
]
|
||||
|
||||
// some of these aliases can cause issues if they get stored in saved.cfg (missing bracket errors/etc.)
|
||||
addListOnQuit "bool MDArray_New_Subarray MDArray_Get_Bracket_Positions MDArray_Get reverseString MDArray_Get_All_Opening_Bracket_Positions MDArray_Get_Subarray_Count MDArray_Get_All_Subarray_Names extractSubarrayName MDArray_Search MDArray_Delete_Subarray MDArray_Modify_Subarray original_subarray target_elem new_elem new_subarray j next_elem islists hasQuotePair got_open_quote got_close_quote r i d mdarray subarray firstchar lastchar oldstr newstr subarray_names subarray_name tmpchar token subarrays search_results curarray orig_array target_subarray target_pos gotclose delstr h next_char"
|
||||
addListOnQuit "bool MDArray_New_Subarray MDArray_Get_Bracket_Positions MDArray_Get reverseString MDArray_Get_All_Opening_Bracket_Positions MDArray_Get_Subarray_Count MDArray_Get_All_Subarray_Names extractSubarrayName MDArray_Search MDArray_Delete_Subarray MDArray_Modify_Subarray original_subarray target_elem new_elem new_subarray j next_elem islists hasQuotePair got_open_quote got_close_quote r i d mdarray subarray firstchar lastchar oldstr newstr subarray_names subarray_name tmpchar token subarrays search_results curarray orig_array target_subarray target_pos gotclose delstr h next_char"
|
||||
|
||||
Reference in New Issue
Block a user