q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d5f1a58d7191b33a9d39197e47acd32bf5eccf8d

commit d5f1a58d7191b33a9d39197e47acd32bf5eccf8d
Author: Daniel Kolesa <[email protected]>
Date:   Wed Oct 1 10:44:44 2014 +0100

    elua: refactor and fix generated lualian output
---
 src/bin/elua/modules/lualian.lua | 94 ++++++++++++++++++----------------------
 1 file changed, 42 insertions(+), 52 deletions(-)

diff --git a/src/bin/elua/modules/lualian.lua b/src/bin/elua/modules/lualian.lua
index 7a5ebe7..4cc3232 100644
--- a/src/bin/elua/modules/lualian.lua
+++ b/src/bin/elua/modules/lualian.lua
@@ -346,6 +346,21 @@ local Event = Node:clone {
     end
 }
 
+local gen_ns = function(klass, s)
+    local nspaces = klass:namespaces_get():to_array()
+    if #nspaces > 1 then
+        local lnspaces = {}
+        for i = 2, #nspaces do
+            lnspaces[i] = '"' .. nspaces[i]:lower() .. '"'
+        end
+        s:write("local __M = util.get_namespace(M, { ",
+            table.concat(lnspaces, ", "), " })\n")
+        return "__M"
+    else
+        return "M"
+    end
+end
+
 local Mixin = Node:clone {
     __ctor = function(self, klass, ch, evs)
         self.klass    = klass
@@ -362,30 +377,11 @@ local Mixin = Node:clone {
         self:gen_ffi(s)
         s:write("]]\n\n")
 
-        local nspaces = self.klass:namespaces_get():to_array()
-        local mname
-        if #nspaces > 1 then
-            local lnspaces = {}
-            for i = 2, #nspaces do
-                lnspaces[i] = '"' .. nspaces[i]:lower() .. '"'
-            end
-            s:write("local __M = util.get_namespace(M, { ",
-                table.concat(lnspaces, ", "), " })\n")
-            mname = "__M"
-        else
-            mname = "M"
-        end
-
-        s:write(([[
-local __class = __lib.%s_class_get()
-
-%s.%s = eo.class_register("%s", nil, {
-]]):format(self.prefix, mname, self.klass:name_get(),
-        self.klass:full_name_get()))
+        gen_ns(self.klass, s)
 
+        s:write("__body = {\n")
         self:gen_children(s)
-
-        s:write("}, __class)\n")
+        s:write("}\n")
     end,
 
     gen_ffi = function(self, s)
@@ -429,35 +425,11 @@ local Class = Node:clone {
         self:gen_ffi(s)
         s:write("]]\n\n")
 
-        local nspaces = self.klass:namespaces_get():to_array()
-        local mname
-        if #nspaces > 1 then
-            local lnspaces = {}
-            for i = 2, #nspaces do
-                lnspaces[i] = '"' .. nspaces[i]:lower() .. '"'
-            end
-            s:write("local __M = util.get_namespace(M, { ",
-                table.concat(lnspaces, ", "), " })\n")
-            mname = "__M"
-        else
-            mname = "M"
-        end
-
-        local kn = self.klass:full_name_get()
-
-        s:write(([[
-local __class = __lib.%s_class_get()
-
-eo.class_register("%s", %s, {
-]]):format(self.prefix, kn, self.parent and ('"' .. self.parent .. '"') or 
"nil"))
+        local mname = gen_ns(self.klass, s)
 
+        s:write("__body = {\n")
         self:gen_children(s)
-
-        s:write("}, __class)\n\n")
-
-        for i, v in ipairs(self.mixins) do
-            s:write(("eo.class_mixin(\"%s\", \"%s\")\n"):format(kn, v))
-        end
+        s:write("}\n")
 
         -- write the constructor
         s:write(([[
@@ -480,9 +452,14 @@ local File = Node:clone {
     end,
 
     generate = function(self, s)
+        local kls  = self.klass
+        local ckls = self.children[1]
+
+        local kn  = kls:full_name_get()
+        local par = ckls.parent
+
         dom:log(log.level.INFO, "Generating for file: " .. self.fname)
-        dom:log(log.level.INFO, "  Class            : "
-            .. self.klass:full_name_get())
+        dom:log(log.level.INFO, "  Class            : " .. kn)
 
         s:write(([[
 -- EFL LuaJIT bindings: %s (class %s)
@@ -490,14 +467,27 @@ local File = Node:clone {
 
 local cutil = require("cutil")
 local util  = require("util")
+local ffi   = require("ffi")
 local eo    = require("eo")
 
 local M     = ...
 
 local __lib
+local __class
+local __body
 
 local init = function()
     __lib = util.lib_load("%s")
+    __class = __lib.%s_class_get()
+    eo.class_register("%s", %s, __body, __class)
+]]):format(self.fname, kn, self.libname, ckls.prefix, kn,
+           par and ('"' .. par .. '"') or "nil"))
+
+        if ckls.mixins then for i, v in ipairs(ckls.mixins) do
+            s:write(("    eo.class_mixin(\"%s\", \"%s\")\n"):format(kn, v))
+        end end
+
+        s:write(([[
 end
 
 local shutdown = function()
@@ -506,7 +496,7 @@ end
 
 cutil.init_module(init, shutdown)
 
-]]):format(self.fname, self.klass:full_name_get(), self.libname, self.libname))
+]]):format(self.libname))
 
         self:gen_children(s)
 

-- 


Reply via email to