mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-11-24 16:20:08 +01:00
Add a simple level file parser
This commit is contained in:
parent
c178a5c63e
commit
08db98f41c
1 changed files with 40 additions and 0 deletions
40
helpers.gd
40
helpers.gd
|
@ -84,3 +84,43 @@ func careful_delete(path_inside):
|
||||||
else:
|
else:
|
||||||
game.global_shell.cd(game.tmp_prefix_inside)
|
game.global_shell.cd(game.tmp_prefix_inside)
|
||||||
game.global_shell.run("rm -rf '%s'" % path_inside)
|
game.global_shell.run("rm -rf '%s'" % path_inside)
|
||||||
|
|
||||||
|
func parse(file):
|
||||||
|
var text = read_file(file)
|
||||||
|
var result = {}
|
||||||
|
var current_section
|
||||||
|
|
||||||
|
var section_regex = RegEx.new()
|
||||||
|
section_regex.compile("^\\[(.*)\\]$")
|
||||||
|
|
||||||
|
var assignment_regex = RegEx.new()
|
||||||
|
assignment_regex.compile("^([a-z ]+)=(.*)$")
|
||||||
|
|
||||||
|
for line in text.split("\n"):
|
||||||
|
# Skip comments.
|
||||||
|
if line.substr(0, 1) == ";":
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Parse a [section name].
|
||||||
|
var m = section_regex.search(line)
|
||||||
|
if m:
|
||||||
|
current_section = m.get_string(1)
|
||||||
|
result[current_section] = ""
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Parse a direct=assignment.
|
||||||
|
m = assignment_regex.search(line)
|
||||||
|
if m:
|
||||||
|
var key = m.get_string(1).strip_edges()
|
||||||
|
var value = m.get_string(2).strip_edges()
|
||||||
|
result[key] = value
|
||||||
|
continue
|
||||||
|
|
||||||
|
# At this point, the line is just content belonging to the current section.
|
||||||
|
if current_section:
|
||||||
|
result[current_section] += line + "\n"
|
||||||
|
|
||||||
|
for key in result:
|
||||||
|
result[key] = result[key].strip_edges()
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
Loading…
Reference in a new issue