X-Git-Url: http://nitlanguage.org diff --git a/lib/ini.nit b/lib/ini.nit index 232e7c5..241d22c 100644 --- a/lib/ini.nit +++ b/lib/ini.nit @@ -32,15 +32,12 @@ module ini # assert config.has_key("foo.bar") # assert config["foo.bar"] == "foobar" class ConfigTree - super Streamable + super Writable # 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` # @@ -103,7 +100,6 @@ class ConfigTree # 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 @@ -190,7 +186,7 @@ class ConfigTree # assert config["goo.boo.baz.bar"] == "gooboobazbar" fun load do roots.clear - var stream = new IFStream.open(ini_file) + var stream = new FileReader.open(ini_file) var path: nullable String = null while not stream.eof do var line = stream.read_line @@ -199,7 +195,8 @@ class ConfigTree 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 @@ -222,7 +219,6 @@ class ConfigTree 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) @@ -249,7 +245,6 @@ class ConfigTree 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 @@ -282,14 +277,11 @@ class ConfigTree 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