File to map

From Kolmafia
Revision as of 05:44, 10 March 2021 by Philmasterplus (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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

buffer_to_file() | file_to_array() | file_to_buffer() | map_to_file()

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.