File to map
Function Syntax
boolean file_to_map(string file_to_load ,aggregate map_to_fill )
boolean file_to_map(string file_to_load ,aggregate map_to_fill ,boolean compact )
- file_to_load is the filename to load from
- map_to_fill is the map to populate with data
- compact is an (optional) flag; if omitted or true, records that do not contain any aggregate values are expected to be written on a single line, rather that one line per field.
Loads data to the map_to_fill from a saved file_to_load in your KoLmafia "data" or "scripts" directory. Any data originally stored in the map_to_fill are wiped before loading the file. The compact parameter is not needed unless you specified it in the map_to_file()
call that originally generated the file, in which case the values must match.
This function returns false
if the data loaded from file_to_load is invalid. Note that this function is extremely forgiving. If file_to_load does not exist, it will behave as though it is loading an empty file, and return true
. If the file's contents do not match map_to_fill, it will still load it into map_to_fill on a best-effort basis and return true
.
You can also directly load internal data files used by KoLmafia, such as concoctions.txt and fullness.txt, by specifying their name—KoLmafia will automatically load the file for you. For a full list of internal data files used by KoLmafia, see the KoLmafia source repository.
Code Sample
This sample loads a simple map that includes item names keyed by a number.
string [int] my_list;
file_to_map( "SavedList.txt" , my_list);
for i from 0 to (count(my_list) - 1) {
print( "At index: " + i + " We find: " + my_list[i] );
}
If the file "SavedList.txt" had the following:
0 StDoodle 1 Grotfang
Then the results would be:
At index: 0 We find: StDoodle At index: 1 We find: Grotfang
The following sample loads the full list of spleen-damaging items from spleenhit.txt.
int [item] spleen_hits;
file_to_map( "spleenhit.txt" , spleen_hits );
foreach itm, spleen_hit in spleen_hits
print( itm + " will damage " + spleen_hit + " of your spleen." );
See Also
More Information
You can load any information stored in a data file, as long as your map contains the appropriate Data Types separated by tabs. Spaces are just considered to be part of a string.
Any line that begins with a number sign (#
) is considered a comment, and is ignored by KoLmafia.