@@ -130,6 +130,19 @@ function themepark:add_theme_dir(dir)
130130 table.insert (self .theme_path , dir .. ' /' )
131131end
132132
133+ function themepark :_read_and_exec (file , name )
134+ local script = file :read (' a*' )
135+ file :close ()
136+
137+ local func , msg = load (script , name , ' t' )
138+ if not func then
139+ msg = msg :gsub (' .*]:' , ' ' )
140+ error (name .. ' :' .. msg , 0 )
141+ end
142+
143+ return func (self )
144+ end
145+
133146-- ---------------------------------------------------------------------------
134147-- init_theme(THEME)
135148--
@@ -162,22 +175,25 @@ function themepark:init_theme(theme)
162175
163176 for _ , dir in ipairs (self .theme_path ) do
164177 local theme_dir = dir .. theme
165- local theme_file = theme_dir .. ' /init.lua'
178+ local init_file_name = theme_dir .. ' /init.lua'
166179 if self .debug then
167- print (" Themepark: Trying to load from '" .. theme_file .. " ' ..." )
180+ print (" Themepark: Trying to load from '" .. init_file_name .. " ' ..." )
168181 end
169- local file = io.open (theme_file )
170- if file then
171- local script = file :read (' a*' )
172- file :close ()
173-
174- local func , msg = load (script , theme_file , ' t' )
175- if not func then
176- error (' Loading ' .. theme_file .. ' failed: ' .. msg )
182+ local init_file = io.open (init_file_name )
183+ if init_file then
184+ self .themes [theme ] = self :_read_and_exec (init_file , init_file_name )
185+ self .themes [theme ].dir = theme_dir
186+
187+ local helper_file_name = theme_dir .. ' /helper.lua'
188+ if self .debug then
189+ print (" Themepark: Trying to load from '" .. helper_file_name .. " ' ..." )
190+ end
191+
192+ local helper_file = io.open (helper_file_name )
193+ if helper_file then
194+ self .themes [theme ].helper = self :_read_and_exec (helper_file , helper_file_name )
177195 end
178196
179- self .themes [theme ] = func (self )
180- self .themes [theme ].dir = theme_dir
181197 break
182198 end
183199 end
0 commit comments