File to map: Difference between revisions
imported>Out of practice m Pseudo-Intellectual Pedantry |
No edit summary |
||
(26 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
{{ | |||
#vardefine:name|file_to_map}}{{ | |||
#vardefine:return_type|boolean}}{{ | |||
FunctionPage| | |||
name={{#var:name}}| | |||
function1={{Function| | |||
name={{#var:name}}| | |||
aggregate={{#var:aggregate}}| | |||
return_type={{#var:return_type}}| | |||
return_also={{#var:return_also}}| | |||
parameter1={{Param|string|file_to_load}}| | |||
parameter2={{Param|aggregate|map_to_fill}}| | |||
}}| | |||
function2={{Function| | |||
name={{#var:name}}| | |||
aggregate={{#var:aggregate}}| | |||
return_type={{#var:return_type}}| | |||
return_also={{#var:return_also}}| | |||
parameter1={{Param|string|file_to_load}}| | |||
parameter2={{Param|aggregate|map_to_fill}}| | |||
parameter3={{Param|boolean|compact}}| | |||
p1desc={{Pspan|file_to_load}} is the filename to load from| | |||
p2desc={{Pspan|map_to_fill}} is the map to populate with data| | |||
p3desc={{Pspan|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.| | |||
}}| | |||
<p> | function_description=<p>Loads data to the {{pspan|map_to_fill}} from a saved {{pspan|file_to_load}} in your KoLmafia "data" or "scripts" directory. Any data originally stored in the {{pspan|map_to_fill}} are wiped before loading the file. The {{pspan|compact}} parameter is not needed unless you specified it in the <code>[[map_to_file|map_to_file()]]</code> call that originally generated the file, in which case the values must match.</p> | ||
if | <p>This function returns <code>false</code> if the data loaded from {{pspan|file_to_load}} is invalid. Note that this function is ''extremely'' forgiving. If {{pspan|file_to_load}} does not exist, it will behave as though it is loading an empty file, and return <code>true</code>. If the file's contents do not match {{pspan|map_to_fill}}, it will still load it into {{pspan|map_to_fill}} on a best-effort basis and return <code>true</code>.</p> | ||
<p>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 [http://sourceforge.net/p/kolmafia/code/HEAD/tree/src/data/ KoLmafia source repository].| | |||
code1={{CodeSample| | |||
title=Code Sample| | |||
description=This sample loads a simple map that includes item names keyed by a number.| | |||
code= | |||
<syntaxhighlight lang="d"> | |||
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] ); | |||
} | } | ||
</syntaxhighlight> | |||
{ | }} | ||
print( " | If the file "SavedList.txt" had the following: | ||
<pre> | |||
0 StDoodle | |||
1 Grotfang | |||
</pre> | |||
Then the results would be: | |||
<pre> | |||
At index: 0 We find: StDoodle | |||
At index: 1 We find: Grotfang | |||
</pre> | |||
{{CodeSample| | |||
description=The following sample loads the full list of {{kolwiki|Category:Spleentacular Items|spleen-damaging items}} from [http://kolmafia.svn.sourceforge.net/viewvc/kolmafia/src/data/spleenhit.txt spleenhit.txt].| | |||
code=<syntaxhighlight lang="d"> | |||
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." ); | |||
</syntaxhighlight>| | |||
}}| | |||
see_also={{SeeAlso|buffer_to_file|file_to_array|file_to_buffer|map_to_file}}| | |||
more_info=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.<br /> | |||
Any line that begins with a number sign (<code>#</code>) is considered a comment, and is ignored by KoLmafia.| | |||
}} | |||
[[Category:Miscellaneous Functions]] | |||
Latest revision as of 05:44, 10 March 2021
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.