aboutsummaryrefslogtreecommitdiff
path: root/gen_iface.lua
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2007-08-06 05:05:37 -0400
committermitchell <70453897+667e-11@users.noreply.github.com>2007-08-06 05:05:37 -0400
commit9cb58b78ef4f67201f3ff2b506307292fde8560a (patch)
treee421062cba6d7c3699097118da11520cef9dd5e6 /gen_iface.lua
parent9f18f8ab9acce36399aa34c1f11c966b792f3d2f (diff)
downloadtextadept-9cb58b78ef4f67201f3ff2b506307292fde8560a.tar.gz
textadept-9cb58b78ef4f67201f3ff2b506307292fde8560a.zip
Initial import of utility scripts.
Diffstat (limited to 'gen_iface.lua')
-rwxr-xr-xgen_iface.lua59
1 files changed, 59 insertions, 0 deletions
diff --git a/gen_iface.lua b/gen_iface.lua
new file mode 100755
index 00000000..c8320cb9
--- /dev/null
+++ b/gen_iface.lua
@@ -0,0 +1,59 @@
+#!/usr/bin/lua
+-- Copyright 2007 Mitchell mitchell<att>caladbolg.net. See LICENSE.
+
+local f = io.open('/usr/share/scite-st/src/scite/src/IFaceTable.cxx')
+local contents = f:read('*all')
+f:close()
+
+local constants = contents:match('ifaceConstants%[%] = (%b{})')
+local functions = contents:match('ifaceFunctions%[%] = (%b{})')
+local properties = contents:match('ifaceProperties%[%] = (%b{})')
+
+local out = ''
+
+local types = {
+ void = 0, int = 1, length = 2, position = 3, colour = 4, bool = 5,
+ keymod = 6, string = 7, stringresult = 8, cells = 9, textrange = 10,
+ findtext = 11, formatrange = 12
+}
+
+out = out..'textadept.constants = {\n'
+-- {"constant", value}
+for item in constants:sub(2, -2):gmatch('%b{}') do
+ local name, value = item:match('^{"(.-)",(.-)}')
+ local line = (" %s = %s,\n"):format(name, value)
+ out = out..line
+end
+out = out..'}\n\n'
+
+out = out..'textadept.buffer_functions = {\n'
+-- {"function", msg_id, iface_*, {iface_*, iface_*}}
+for item in functions:sub(2, -2):gmatch('%b{}') do
+ local name, msg_id, rt_type, p1_type, p2_type =
+ item:match('^{"(.-)"%D+(%d+)%A+iface_(%a+)%A+iface_(%a+)%A+iface_(%a+)')
+ name = name:gsub('([a-z])([A-Z])', '%1_%2')
+ name = name:gsub('([A-Z])([A-Z][a-z])', '%1_%2')
+ name = name:lower()
+ local line = (" %s = {%d, %d, %d, %d},\n"):format(
+ name, msg_id, types[rt_type], types[p1_type], types[p2_type])
+ out = out..line
+end
+out = out..'}\n\n'
+
+out = out..'textadept.buffer_properties = {\n'
+-- {"property", get_id, set_id, rt_type, p1_type}
+for item in properties:sub(2, -2):gmatch('%b{}') do
+ local name, get_id, set_id, rt_type, p1_type =
+ item:match('^{"(.-)"%D+(%d+)%D+(%d+)%A+iface_(%a+)%A+iface_(%a+)')
+ name = name:gsub('([a-z])([A-Z])', '%1_%2')
+ name = name:gsub('([A-Z])([A-Z][a-z])', '%1_%2')
+ name = name:lower()
+ local line = (" %s = {%d, %d, %d, %d},\n"):format(
+ name, get_id, set_id, types[rt_type], types[p1_type])
+ out = out..line
+end
+out = out..'}\n'
+
+f = io.open('/usr/share/textadept/lib/iface.lua', 'w')
+f:write(out)
+f:close()