# The ini file used to read/store data
var ini_file: String
- init(file: String) do
- self.ini_file = file
- if file.file_exists then load
- end
+ init do if ini_file.file_exists then load
# Get the config value for `key`
#
# assert config.has_key("foo.bar")
# assert not config.has_key("zoo")
fun has_key(key: String): Bool do
- var children = roots
var parts = key.split(".").reversed
var node = get_root(parts.pop)
if node == null then return false
else if line.has_prefix(";") then
continue
else if line.has_prefix("[") then
- var key = line.trim.substring(1, line.length - 2)
+ line = line.trim
+ var key = line.substring(1, line.length - 2)
path = key
set_node(path, null)
else
private var roots = new Array[ConfigNode]
private fun set_node(key: String, value: nullable String) do
- var children = roots
var parts = key.split(".").reversed
var k = parts.pop
var root = get_root(k)
end
private fun get_node(key: String): nullable ConfigNode do
- var children = roots
var parts = key.split(".").reversed
var node = get_root(parts.pop)
while not parts.is_empty do
end
private class ConfigNode
- var parent: nullable ConfigNode
- var children = new HashMap[String, ConfigNode]
- var name: String writable
- var value: nullable String
- init(name: String) do
- self.name = name
- end
+ var parent: nullable ConfigNode = null
+ var children = new HashMap[String, ConfigNode]
+ var name: String is writable
+ var value: nullable String = null
fun key: String do
if parent == null then