listfunc.inc Library for using strings as lists.
Posted: Sun Jun 06, 2004 12:14 am
I use string variables for keeping track of lists of things quite a bit, such as aggro lists, lists of tasks to complete, genbot commands, etc. Here is the .inc file I use for managing them.
[/code]
Code: Select all
|listfunc.inc
|Basic library of list functions using args and a string.
|Version 1.0
|Date:06/06/2004
|
| Note that the lists are double aliased, so to replace the 3rd element on a list
| stored in ${Mylist}, the call is /call ListReplacebyArg Mylist ${NewElement} 3
| Note the lack of ${} on Mylist.
|
||**
[listfunc]
version=1.0
**||
|
Sub ListDelbyArg(string sList,int sArg,string sDiv)
/if (!${Defined[sDiv]}) /varset sDiv |
/declare sright int local
/declare sleft int local
/declare splaceholder string local
/varset ${sList} ${sDiv}${${sList}}${sDiv}${sDiv}
/varset splaceholder ${String[${${sList}}].Arg[${sArg},${sDiv}]}
/varcalc sleft ${${sList}.Find[${sDiv}${splaceholder}${sDiv}]}
/varcalc sright ${sleft}+${String[${splaceholder}${sDiv}].Length}
/varset ${sList} ${${sList}.Left[${sleft}]}${${sList}.Right[-${sright}]}
/varset ${sList} ${${sList}.Left[-2].Right[-1]}
/if (Debug) /echo List ${${sList}} deleted arg ${sArg}
/return
Sub ListReplacebyArg(string sList,string sElement,string sArg,string sDiv)
/if (!${Defined[sDiv]}) /varset sDiv |
/varset ${sList} ${sDiv}${${sList}}${sDiv}${sDiv}
/declare sright int local
/declare sleft int local
/declare splaceholder string local
/varset splaceholder ${String[${${sList}}].Arg[${sArg},${sDiv}]}
/varcalc sleft ${${sList}.Find[${sDiv}${splaceholder}${sDiv}]}
/varcalc sright ${sleft}+${String[${splaceholder}${sDiv}].Length}
/varset ${sList} ${${sList}.Left[${sleft}]}${sElement}${sDiv}${${sList}.Right[-${sright}]}
/varset ${sList} ${${sList}.Left[-2].Right[-1]}
/if (Debug) /echo List ${${sList}} sElement ${sElement} repladed arg ${sArg}
/return
Sub ListDelbyName(string sList,string sName,string sDiv)
/if (!${Defined[sDiv]}) /varset sDiv |
/varset ${sList} ${sDiv}${${sList}}${sDiv}${sDiv}
/declare sright int local
/declare sleft int local
/varcalc sleft ${String[${sDiv}${${sList}}${sDiv}].Find[${sDiv}${sName}${sDiv}]}-1
/varcalc sright ${sleft}+${String[${sName}${sDiv}].Length}
/varset ${sList} ${${sList}.Left[${sleft}]}${${sList}.Right[-${sright}]}
/varset ${sList} ${${sList}.Left[-2].Right[-1]}
/if (Debug) /echo List ${${sList}} Deleted: ${sName}
/return
Sub ListAppendElement(string sList,string sElement,string sDiv)
/if (!${Defined[sDiv]}) /varset sDiv |
/if (${${sList}.Length}) {
/varset ${sList} ${${sList}}${sDiv}${sElement}
} else {
/varset ${sList} ${sElement}
}
/if (Debug) /echo List ${${sList}} Added: ${sElement}
/return
Sub ListPrependElement(string sList,string sElement,string sDiv)
/if (!${Defined[sDiv]}) /varset sDiv |
/if (${${sList}.Length}) {
/varset ${sList} ${sElement}${sDiv}${${sList}}
} else {
/varset ${sList} ${sElement}
}
/if (Debug) /echo List ${${sList}} Added: ${sElement}
/return