Engine 0.0.4
Game engine in lua
Loading...
Searching...
No Matches
meta.lua
Go to the documentation of this file.
1local application_default = require('src/lib/object/application')
2
3local function replace(src, meta, default)
4 if src and #src > 0 then
5 return (src
6 :gsub('{{id}}', meta.id or default.id)
7 :gsub('{{title}}', meta.title or default.title)
8 :gsub('{{author}}', meta.author or default.author)
9 :gsub('{{company}}', meta.company or default.company)
10 :gsub('{{version}}', meta.version or default.version)
11 :gsub('{{description}}', meta.description or default.description)
12 )
13 end
14 return ''
15end
16
17local function file(self, file)
18 local file_copy = string.format("%s", file)
19 self.pipeline[#self.pipeline + 1] = function()
20 if not self.loaded then return self end
21
22 local file_meta = io.open(file_copy, 'r')
23 local file_temp = io.open(file_copy..'.tmp', 'w')
24
25 repeat
26 local line = file_meta:read()
27 file_temp:write(replace(line, self.meta, application_default.meta), '\n')
28 until not line
29
30 file_meta:close()
31 file_temp:close()
32
33 os.remove(file_copy)
34 os.rename(file_copy..'.tmp', file_copy)
35 end
36 return self
37end
38
39local function stdout(self, format)
40 local format_copy = string.format("%s", format)
41 if format_copy == 'json' then
42 format_copy = '{"id":"{{id}}","title":"{{title}}","company":"{{company}}",'
43 format_copy = format_copy..'"version":"{{version}}","description":"{{description}}"}'
44 end
45 self.pipeline[#self.pipeline + 1] = function()
46 if not self.loaded then return self end
47 print(replace(format_copy, self.meta, application_default.meta))
48 end
49 return self
50end
51
52local function pipe(self)
53 return function()
54 self:run()
55 end
56end
57
58local function run(self)
59 local index = 1
60 while index <= #self.pipeline do
61 self.pipeline[index]()
62 index = index + 1
63 end
64 return self
65end
66
67local function current(game, application)
68 local metadata = game and #game > 0 and dofile(game)
69
70 if not application then
71 application = {
72 meta = application_default.meta,
73 pipeline={},
74 file=file,
76 pipe=pipe,
77 run=run
78 }
79 end
80
81 if metadata then
82 application.loaded = true
83 application.meta = metadata.meta
84 end
85
86 return application
87end
88
89local function late(game)
90 local game_copy = string.format("%s", game)
91 local application = current()
92 local eval = application.run
93 application.run = function()
94 current(game_copy, application)
95 eval(application)
96 end
97 return application
98end
99
100local P = {
102 late = late
103}
104
105return P
local function stdout(self, format)
local application_default
Definition meta.lua:1
local function replace(src, meta, default)
local function pipe(self)
local function current(game, application)
local function run(self)
local function late(game)
local function file(self, file)
local function require(std, game, application)
local os
Definition main.lua:1
local application
Definition main.lua:16
local game
Definition main.lua:17
local function line(x1, y1, x2, y2)