aboutsummaryrefslogtreecommitdiff
path: root/builtin/mainmenu_helper.lua
blob: 25ad072fd43bf679e393ddc05aa09b32a0f12fad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
--------------------------------------------------------------------------------
function dump(o, dumped)
	dumped = dumped or {}
	if type(o) == "number" then
		return tostring(o)
	elseif type(o) == "string" then
		return string.format("%q", o)
	elseif type(o) == "table" then
		if dumped[o] then
			return "<circular reference>"
		end
		dumped[o] = true
		local t = {}
		for k,v in pairs(o) do
			t[#t+1] = "" .. k .. " = " .. dump(v, dumped)
		end
		return "{" .. table.concat(t, ", ") .. "}"
	elseif type(o) == "boolean" then
		return tostring(o)
	elseif type(o) == "function" then
		return "<function>"
	elseif type(o) == "userdata" then
		return "<userdata>"
	elseif type(o) == "nil" then
		return "nil"
	else
		error("cannot dump a " .. type(o))
		return nil
	end
end

--------------------------------------------------------------------------------
function string:split(sep)
	local sep, fields = sep or ",", {}
	local pattern = string.format("([^%s]+)", sep)
	self:gsub(pattern, function(c) fields[#fields+1] = c end)
	return fields
end

--------------------------------------------------------------------------------
function string:trim()
	return (self:gsub("^%s*(.-)%s*$", "%1"))
end

--------------------------------------------------------------------------------
engine.get_game = function(index)
	local games = game.get_games()
	
	if index > 0 and index <= #games then
		return games[index]
	end
	
	return nil
end

--------------------------------------------------------------------------------
function fs_escape_string(text)
	if text ~= nil then
		while (text:find("\r\n") ~= nil) do
			local newtext = text:sub(1,text:find("\r\n")-1)
			newtext = newtext .. " " .. text:sub(text:find("\r\n")+3)
			
			text = newtext
		end
		
		while (text:find("\n") ~= nil) do
			local newtext = text:sub(1,text:find("\n")-1)
			newtext = newtext .. " " .. text:sub(text:find("\n")+1)
			
			text = newtext
		end
		
		while (text:find("\r") ~= nil) do
			local newtext = text:sub(1,text:find("\r")-1)
			newtext = newtext .. " " .. text:sub(text:find("\r")+1)
			
			text = newtext
		end
		
		text = string.gsub(text,"\\","\\\\")
		text = string.gsub(text,"%]","\\]")
		text = string.gsub(text,"%[","\\[")
		text = string.gsub(text,";","\\;")
		text = string.gsub(text,",","\\,")
	end
	return text
end

--------------------------------------------------------------------------------
function explode_textlist_event(text)
	
	local retval = {}
	retval.typ = "INV"
	
	local parts = text:split(":")
				
	if #parts == 2 then
		retval.typ = parts[1]:trim()
		retval.index= tonumber(parts[2]:trim())
		
		if type(retval.index) ~= "number" then
			retval.typ = "INV"
		end
	end
	
	return retval
end