-
Notifications
You must be signed in to change notification settings - Fork 124
VRage.Game.ModAPI.Ingame.Utilities.MyIni
← Index ← Namespace Index
public class MyIni
A configuration class to parse and create a text string resembling the old fashioned INI format, but with support for multiline values.
Do not forget that parsing is a time-consuming task. Keep your parsing to a minimum.
Namespace: VRage.Game.ModAPI.Ingame.Utilities
Assembly: VRage.Game.dll
Using MyIni to deal with CustomData end-user configuration:
The CustomData:
[kernel]
output=DebugTextPanel
bootText=
|-- HAL9000 --
|Good morning, Dave.
The code:
MyIni _ini = new MyIni();
IMyTextPanel _outputTextPanel;
public Program()
{
MyIniParseResult result;
if (!_ini.TryParse(Me.CustomData, out result)
{
Echo($"CustomData error:\nLine {result}");
}
// Get the kernel section's output value. If this value is set, the system attempts
// to retrieve a text panel with the value set. Otherwise output is ignored.
var name = _ini.Get("kernel", "output").ToString();
if (name != null)
{
_outputTextPanel = GridTerminalSystem.GetBlockWithName<IMyTextPanel>(name);
if (_outputTextPanel == null)
Echo($"No text panel named {name}");
}
// Get the kernel section's boottext value. If no value is given, a default value will be returned.
var bootText = _ini.Get("kernel", "bootText").ToString("Kernel is starting up...");
_outputTextPanel?.WritePublicText(bootText);
}
public void Main() {
// Do your stuff. Only parse the configuration when you have to.
}
Using MyIni to deal with internal storage:
MyIni _storage = new MyIni();
Vector3D _startupPosition;
bool _hasTarget;
Vector3D _currentTarget;
public Program()
{
// You only need to parse here in the constructor.
if (_ini.TryParse(Storage)
{
var str = _ini.Get("state", "startupPosition").ToString();
Vector3D.TryParse(str, out _startupPosition);
str = _ini.Get("state", "currentTarget").ToString();
Vector3D.TryParse(str, out _currentTarget);
_hasTarget = _ini.Get("state", "hasTarget").ToBoolean();
}
else
{
// Set up defaults, the storage is nonexistent or corrupt
_startupPosition = Me.CubeGrid.Position;
}
}
public void Save()
{
// You only need to update Storage when the Save method is called.
_ini.Set("state", "startupPosition", _startupPosition);
_ini.Set("state", "currentTarget", _currentTarget);
Storage = _ini.ToString();
}
public void Main() {
// Do your stuff
}
This class is NOT THREAD SAFE as it's optimized for programmable block use.
string EndComment { get; set; }
Get or set a comment to be placed after the last section or item. Is
null
if the section does not exist or has no comment.
string EndContent { get; set; }
You can terminate a configuration stream by entering "---" on a separate line. This property will contain all the content after this line.
static bool HasSection(string config, string section)
Determines if the given configuration contains what looks like the given section. It does not verify that the content is actually in a valid format, just if there's a line starting with [section].
void AddSection(string section)
Adds an empty section
Empties this configuration
bool ContainsKey(string section, string name)
Determines whether a configuration key (section/key) exists in the currently parsed configuration.
bool ContainsKey(MyIniKey key)
Determines whether a configuration key (section/key) exists in the currently parsed configuration.
bool ContainsSection(string section)
Determines whether a section of a given name exists in the currently parsed configuration.
void Delete(string section, string name)
Deletes the given configuration key.
Deletes the given configuration key.
bool DeleteSection(string section)
Deletes an entire selection
MyIniValue Get(string section, string name)
Gets the MyIniValue of the given configuration key.
Gets the MyIniValue of the given configuration key.
string GetComment(string section, string name)
Gets any comment that might be associated with the given key. Returns
null
if the key does not exist or has no comment.
string GetComment(MyIniKey key)
Gets any comment that might be associated with the given key. Returns
null
if the key does not exist or has no comment.
void GetKeys(string section, List<MyIniKey> keys)
Fills the provided list with the configuration keys within the given section.
void GetKeys(List<MyIniKey> keys)
Fills the provided list with all configuration keys within the currently parsed configuration.
string GetSectionComment(string section)
Get any comment that might be associated with the given section. Returns
null
if the section does not exist or has no comment.
void GetSections(List<string> names)
Fills the provided list with the names of all the sections in the currently parsed configuration.
Forces regeneration of the ini content. Only really useful if you want to reformat the configuration file.
void Set(string section, string name, string value)
Sets the value of the given configuration key.
void Set(MyIniKey key, string value)
Sets the value of the given configuration key.
void Set(string section, string name, bool value)
Sets the value of the given configuration key.
void Set(MyIniKey key, bool value)
Sets the value of the given configuration key.
void Set(string section, string name, byte value)
Sets the value of the given configuration key.
void Set(MyIniKey key, byte value)
Sets the value of the given configuration key.
void Set(string section, string name, sbyte value)
Sets the value of the given configuration key.
void Set(MyIniKey key, sbyte value)
Sets the value of the given configuration key.
void Set(string section, string name, ushort value)
Sets the value of the given configuration key.
void Set(MyIniKey key, ushort value)
Sets the value of the given configuration key.
void Set(string section, string name, short value)
Sets the value of the given configuration key.
void Set(MyIniKey key, short value)
Sets the value of the given configuration key.
void Set(string section, string name, uint value)
Sets the value of the given configuration key.
void Set(MyIniKey key, uint value)
Sets the value of the given configuration key.
void Set(string section, string name, int value)
Sets the value of the given configuration key.
void Set(MyIniKey key, int value)
Sets the value of the given configuration key.
void Set(string section, string name, ulong value)
Sets the value of the given configuration key.
void Set(MyIniKey key, ulong value)
Sets the value of the given configuration key.
void Set(string section, string name, long value)
Sets the value of the given configuration key.
void Set(MyIniKey key, long value)
Sets the value of the given configuration key.
void Set(string section, string name, float value)
Sets the value of the given configuration key.
void Set(MyIniKey key, float value)
Sets the value of the given configuration key.
void Set(string section, string name, double value)
Sets the value of the given configuration key.
void Set(MyIniKey key, double value)
Sets the value of the given configuration key.
void Set(string section, string name, decimal value)
Sets the value of the given configuration key.
void Set(MyIniKey key, decimal value)
Sets the value of the given configuration key.
void SetComment(string section, string name, string comment)
Sets a comment on a given item. The item must already exist. Set the comment to
null
to remove it.
void SetComment(MyIniKey key, string comment)
Sets a comment on a given item. The item must already exist. Set the comment to
null
to remove it.
void SetEndComment(string comment)
Sets a comment to be placed after the last section or item. Set the comment to
null
to remove it.
void SetSectionComment(string section, string comment)
Sets a comment on a given section. The section must already exist. Set the comment to
null
to remove it.
Generates a configuration file from the currently parsed configuration
Attempts to parse the given content as a configuration file.
bool TryParse(string content, out MyIniParseResult result)
Attempts to parse the given content as a configuration file.
bool TryParse(string content, string section, out MyIniParseResult result)
Attempts to parse the given content as a configuration file. OBSERVE: Use only for read-only operations. If you parse a single section and run ToString() , you will only get the parsed section, the rest will be discarded.
bool TryParse(string content, string section)
Attempts to parse the given content as a configuration file. OBSERVE: Use only for read-only operations. If you parse a single section and run ToString() , you will only get the parsed section, the rest will be discarded.
Do you have questions, comments, suggestions for improvements? Is there something I can do better? Did I make a mistake? Please add an issue here, and prefix your issue title with Wiki. Thank you, your help will be very appreciated!