File to map

From Kolmafia
Revision as of 03:32, 14 July 2010 by imported>PhilmASTErpLus (Fixed capitalization and added comment stuff. I would prefer to have an entire section or article devoted to text file structure, though.)
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. 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 the operation's success. If map_to_fill has not been delcared, this function will abort (as oppossed to returning false).

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" );

foreach itm, spleen_hit in spleen_hits
   print( itm + " will damage " + spleen_hit + " of your spleen." );

You can load any information stored in the data file, as long as your map contains the appropriate data types.

See Also

map_to_file()

More Information

Data in the text file needs to be 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.