summaryrefslogtreecommitdiff
path: root/scripts/context/lua/mtx-scite.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2013-05-20 03:20:28 +0300
committerMarius <mariausol@gmail.com>2013-05-20 03:20:28 +0300
commit5fc5cfb5014ddcc2942e13a559f4082fb66aa6e7 (patch)
tree53f81e99fac8c80ddd2fb70e233a7e5d5735722f /scripts/context/lua/mtx-scite.lua
parent13ec4b540e0d46c97fd7b089e0b7413da81e0a9f (diff)
downloadcontext-5fc5cfb5014ddcc2942e13a559f4082fb66aa6e7.tar.gz
beta 2013.05.20 02:00
Diffstat (limited to 'scripts/context/lua/mtx-scite.lua')
-rw-r--r--scripts/context/lua/mtx-scite.lua518
1 files changed, 259 insertions, 259 deletions
diff --git a/scripts/context/lua/mtx-scite.lua b/scripts/context/lua/mtx-scite.lua
index 47aa3d009..972edbfe6 100644
--- a/scripts/context/lua/mtx-scite.lua
+++ b/scripts/context/lua/mtx-scite.lua
@@ -1,259 +1,259 @@
-if not modules then modules = { } end modules ['mtx-scite'] = {
- version = 1.001,
- comment = "companion to mtxrun.lua",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
-local P, R, S, C, Ct, Cf, Cc, Cg = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Ct, lpeg.Cf, lpeg.Cc, lpeg.Cg
-local lpegmatch = lpeg.match
-local format, lower, gmatch = string.format, string.lower, string.gmatch
-
-local helpinfo = [[
-<?xml version="1.0"?>
-<application>
- <metadata>
- <entry name="name">mtx-scite</entry>
- <entry name="detail">Scite Helper Script</entry>
- <entry name="version">1.00</entry>
- </metadata>
- <flags>
- <category name="basic">
- <subcategory>
- <flag name="words"><short>convert spell-*.txt into spell-*.lua</short></flag>
- </subcategory>
- </category>
- </flags>
-</application>
-]]
-
-local application = logs.application {
- name = "mtx-scite",
- banner = "Scite Helper Script 1.00",
- helpinfo = helpinfo,
-}
-
-local report = application.report
-
-scripts = scripts or { }
-scripts.scite = scripts.scite or { }
-
--- todo: append to global properties else order of loading problem
--- linux problem ... files are under root protection so we need --install
---
--- local scitesignals = { "scite-context.rme", "context.properties" }
--- local screenfont = "lmtypewriter10-regular.ttf"
-
--- function scripts.scite.start(indeed)
--- local usedsignal, datapath, fullname, workname, userpath, fontpath
--- if os.type == "windows" then
--- workname = "scite.exe"
--- userpath = os.getenv("USERPROFILE") or ""
--- fontpath = os.getenv("SYSTEMROOT")
--- fontpath = (fontpath and file.join(fontpath,"fonts")) or ""
--- else
--- workname = "scite"
--- userpath = os.getenv("HOME") or ""
--- fontpath = ""
--- end
--- local binpaths = file.split_path(os.getenv("PATH")) or file.split_path(os.getenv("path"))
--- for i=1,#scitesignals do
--- local scitesignal = scitesignals[i]
--- local scitepath = resolvers.findfile(scitesignal,"other text files") or ""
--- if scitepath ~= "" then
--- scitepath = file.dirname(scitepath) -- data
--- if scitepath == "" then
--- scitepath = resolvers.cleanpath(lfs.currentdir())
--- else
--- usedsignal, datapath = scitesignal, scitepath
--- break
--- end
--- end
--- end
--- if not datapath or datapath == "" then
--- report("invalid datapath, maybe you need to regenerate the file database")
--- return false
--- end
--- if not binpaths or #binpaths == 0 then
--- report("invalid binpath")
--- return false
--- end
--- for i=1,#binpaths do
--- local p = file.join(binpaths[i],workname)
--- if lfs.isfile(p) and lfs.attributes(p,"size") > 10000 then -- avoind stub
--- fullname = p
--- break
--- end
--- end
--- if not fullname then
--- report("unable to locate %s",workname)
--- return false
--- end
--- local properties = dir.glob(file.join(datapath,"*.properties"))
--- local luafiles = dir.glob(file.join(datapath,"*.lua"))
--- local extrafont = resolvers.findfile(screenfont,"truetype font") or ""
--- local pragmafound = dir.glob(file.join(datapath,"pragma.properties"))
--- if userpath == "" then
--- report("unable to figure out userpath")
--- return false
--- end
--- local verbose = environment.argument("verbose")
--- local tobecopied, logdata = { }, { }
--- local function check_state(fullname,newpath)
--- local basename = file.basename(fullname)
--- local destination = file.join(newpath,basename)
--- local pa, da = lfs.attributes(fullname), lfs.attributes(destination)
--- if not da then
--- logdata[#logdata+1] = { "new : %s", basename }
--- tobecopied[#tobecopied+1] = { fullname, destination }
--- elseif pa.modification > da.modification then
--- logdata[#logdata+1] = { "outdated : %s", basename }
--- tobecopied[#tobecopied+1] = { fullname, destination }
--- else
--- logdata[#logdata+1] = { "up to date : %s", basename }
--- end
--- end
--- for i=1,#properties do
--- check_state(properties[i],userpath)
--- end
--- for i=1,#luafiles do
--- check_state(luafiles[i],userpath)
--- end
--- if fontpath ~= "" then
--- check_state(extrafont,fontpath)
--- end
--- local userpropfile = "SciTEUser.properties"
--- if os.name ~= "windows" then
--- userpropfile = "." .. userpropfile
--- end
--- local fullpropfile = file.join(userpath,userpropfile)
--- local userpropdata = io.loaddata(fullpropfile) or ""
--- local propfiledone = false
--- if pragmafound then
--- if userpropdata == "" then
--- logdata[#logdata+1] = { "error : no user properties found on '%s'", fullpropfile }
--- elseif string.find(userpropdata,"import *pragma") then
--- logdata[#logdata+1] = { "up to date : 'import pragma' in '%s'", userpropfile }
--- else
--- logdata[#logdata+1] = { "yet unset : 'import pragma' in '%s'", userpropfile }
--- userproperties = userpropdata .. "\n\nimport pragma\n\n"
--- propfiledone = true
--- end
--- else
--- if string.find(userpropdata,"import *context") then
--- logdata[#logdata+1] = { "up to date : 'import context' in '%s'", userpropfile }
--- else
--- logdata[#logdata+1] = { "yet unset : 'import context' in '%s'", userpropfile }
--- userproperties = userpropdata .. "\n\nimport context\n\n"
--- propfiledone = true
--- end
--- end
--- if not indeed or verbose then
--- report("used signal: %s", usedsignal)
--- report("data path : %s", datapath)
--- report("full name : %s", fullname)
--- report("user path : %s", userpath)
--- report("extra font : %s", extrafont)
--- end
--- if #logdata > 0 then
--- report("")
--- for k=1,#logdata do
--- local v = logdata[k]
--- report(v[1],v[2])
--- end
--- end
--- if indeed then
--- if #tobecopied > 0 then
--- report("warning : copying updated files")
--- for i=1,#tobecopied do
--- local what = tobecopied[i]
--- report("copying : '%s' => '%s'",what[1],what[2])
--- file.copy(what[1],what[2])
--- end
--- end
--- if propfiledone then
--- report("saving : '%s'",userpropfile)
--- io.savedata(fullpropfile,userpropdata)
--- end
--- os.launch(fullname)
--- end
--- end
-
--- local splitter = (Cf(Ct("") * (Cg(C(R("az","AZ","\127\255")^1) * Cc(true)) + P(1))^1,rawset) )^0
---
--- local function splitwords(words)
--- return lpegmatch(splitter,words) -- or just split and tohash
--- end
-
-local function splitwords(words)
- local w = { }
- for s in string.gmatch(words,"[a-zA-Z\127-255]+") do
- if #s > 2 then -- will become option
- w[lower(s)] = s
- end
- end
- return w
-end
-
--- maybe: lowerkey = UpperWhatever
-
-function scripts.scite.words()
- for i=1,#environment.files do
- local tag = environment.files[i]
- local tag = string.match(tag,"spell%-(..)%.") or tag
- local txtname = format("spell-%s.txt",tag)
- local luaname = format("spell-%s.lua",tag)
- local lucname = format("spell-%s.luc",tag)
- if lfs.isfile(txtname) then
- report("loading %s",txtname)
- local olddata = io.loaddata(txtname) or ""
- local words = splitwords(olddata)
- local min, max, n = 100, 1, 0
- for k, v in next, words do
- local l = #k
- if l < min then
- min = l
- end
- if l > max then
- max = l
- end
- n = n + 1
- end
- if min > max then
- min = max
- end
- local newdata = {
- words = words,
- source = oldname,
- min = min,
- max = max,
- n = n,
- }
- report("saving %q, %s words, %s shortest, %s longest",luaname,n,min,max)
- io.savedata(luaname,table.serialize(newdata,true))
- report("compiling %q",lucname)
- os.execute(format("luac -s -o %s %s",lucname,luaname))
- else
- report("no data file %s",txtname)
- end
- end
- report("you need to move the lua files to lexers/data")
-end
-
--- if environment.argument("start") then
--- scripts.scite.start(true)
--- elseif environment.argument("test") then
--- scripts.scite.start()
--- else
--- application.help()
--- end
-
-if environment.argument("words") then
- scripts.scite.words()
-elseif environment.argument("exporthelp") then
- application.export(environment.argument("exporthelp"),environment.files[1])
-else
- application.help()
-end
-
+if not modules then modules = { } end modules ['mtx-scite'] = {
+ version = 1.001,
+ comment = "companion to mtxrun.lua",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local P, R, S, C, Ct, Cf, Cc, Cg = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Ct, lpeg.Cf, lpeg.Cc, lpeg.Cg
+local lpegmatch = lpeg.match
+local format, lower, gmatch = string.format, string.lower, string.gmatch
+
+local helpinfo = [[
+<?xml version="1.0"?>
+<application>
+ <metadata>
+ <entry name="name">mtx-scite</entry>
+ <entry name="detail">Scite Helper Script</entry>
+ <entry name="version">1.00</entry>
+ </metadata>
+ <flags>
+ <category name="basic">
+ <subcategory>
+ <flag name="words"><short>convert spell-*.txt into spell-*.lua</short></flag>
+ </subcategory>
+ </category>
+ </flags>
+</application>
+]]
+
+local application = logs.application {
+ name = "mtx-scite",
+ banner = "Scite Helper Script 1.00",
+ helpinfo = helpinfo,
+}
+
+local report = application.report
+
+scripts = scripts or { }
+scripts.scite = scripts.scite or { }
+
+-- todo: append to global properties else order of loading problem
+-- linux problem ... files are under root protection so we need --install
+--
+-- local scitesignals = { "scite-context.rme", "context.properties" }
+-- local screenfont = "lmtypewriter10-regular.ttf"
+
+-- function scripts.scite.start(indeed)
+-- local usedsignal, datapath, fullname, workname, userpath, fontpath
+-- if os.type == "windows" then
+-- workname = "scite.exe"
+-- userpath = os.getenv("USERPROFILE") or ""
+-- fontpath = os.getenv("SYSTEMROOT")
+-- fontpath = (fontpath and file.join(fontpath,"fonts")) or ""
+-- else
+-- workname = "scite"
+-- userpath = os.getenv("HOME") or ""
+-- fontpath = ""
+-- end
+-- local binpaths = file.split_path(os.getenv("PATH")) or file.split_path(os.getenv("path"))
+-- for i=1,#scitesignals do
+-- local scitesignal = scitesignals[i]
+-- local scitepath = resolvers.findfile(scitesignal,"other text files") or ""
+-- if scitepath ~= "" then
+-- scitepath = file.dirname(scitepath) -- data
+-- if scitepath == "" then
+-- scitepath = resolvers.cleanpath(lfs.currentdir())
+-- else
+-- usedsignal, datapath = scitesignal, scitepath
+-- break
+-- end
+-- end
+-- end
+-- if not datapath or datapath == "" then
+-- report("invalid datapath, maybe you need to regenerate the file database")
+-- return false
+-- end
+-- if not binpaths or #binpaths == 0 then
+-- report("invalid binpath")
+-- return false
+-- end
+-- for i=1,#binpaths do
+-- local p = file.join(binpaths[i],workname)
+-- if lfs.isfile(p) and lfs.attributes(p,"size") > 10000 then -- avoind stub
+-- fullname = p
+-- break
+-- end
+-- end
+-- if not fullname then
+-- report("unable to locate %s",workname)
+-- return false
+-- end
+-- local properties = dir.glob(file.join(datapath,"*.properties"))
+-- local luafiles = dir.glob(file.join(datapath,"*.lua"))
+-- local extrafont = resolvers.findfile(screenfont,"truetype font") or ""
+-- local pragmafound = dir.glob(file.join(datapath,"pragma.properties"))
+-- if userpath == "" then
+-- report("unable to figure out userpath")
+-- return false
+-- end
+-- local verbose = environment.argument("verbose")
+-- local tobecopied, logdata = { }, { }
+-- local function check_state(fullname,newpath)
+-- local basename = file.basename(fullname)
+-- local destination = file.join(newpath,basename)
+-- local pa, da = lfs.attributes(fullname), lfs.attributes(destination)
+-- if not da then
+-- logdata[#logdata+1] = { "new : %s", basename }
+-- tobecopied[#tobecopied+1] = { fullname, destination }
+-- elseif pa.modification > da.modification then
+-- logdata[#logdata+1] = { "outdated : %s", basename }
+-- tobecopied[#tobecopied+1] = { fullname, destination }
+-- else
+-- logdata[#logdata+1] = { "up to date : %s", basename }
+-- end
+-- end
+-- for i=1,#properties do
+-- check_state(properties[i],userpath)
+-- end
+-- for i=1,#luafiles do
+-- check_state(luafiles[i],userpath)
+-- end
+-- if fontpath ~= "" then
+-- check_state(extrafont,fontpath)
+-- end
+-- local userpropfile = "SciTEUser.properties"
+-- if os.name ~= "windows" then
+-- userpropfile = "." .. userpropfile
+-- end
+-- local fullpropfile = file.join(userpath,userpropfile)
+-- local userpropdata = io.loaddata(fullpropfile) or ""
+-- local propfiledone = false
+-- if pragmafound then
+-- if userpropdata == "" then
+-- logdata[#logdata+1] = { "error : no user properties found on '%s'", fullpropfile }
+-- elseif string.find(userpropdata,"import *pragma") then
+-- logdata[#logdata+1] = { "up to date : 'import pragma' in '%s'", userpropfile }
+-- else
+-- logdata[#logdata+1] = { "yet unset : 'import pragma' in '%s'", userpropfile }
+-- userproperties = userpropdata .. "\n\nimport pragma\n\n"
+-- propfiledone = true
+-- end
+-- else
+-- if string.find(userpropdata,"import *context") then
+-- logdata[#logdata+1] = { "up to date : 'import context' in '%s'", userpropfile }
+-- else
+-- logdata[#logdata+1] = { "yet unset : 'import context' in '%s'", userpropfile }
+-- userproperties = userpropdata .. "\n\nimport context\n\n"
+-- propfiledone = true
+-- end
+-- end
+-- if not indeed or verbose then
+-- report("used signal: %s", usedsignal)
+-- report("data path : %s", datapath)
+-- report("full name : %s", fullname)
+-- report("user path : %s", userpath)
+-- report("extra font : %s", extrafont)
+-- end
+-- if #logdata > 0 then
+-- report("")
+-- for k=1,#logdata do
+-- local v = logdata[k]
+-- report(v[1],v[2])
+-- end
+-- end
+-- if indeed then
+-- if #tobecopied > 0 then
+-- report("warning : copying updated files")
+-- for i=1,#tobecopied do
+-- local what = tobecopied[i]
+-- report("copying : '%s' => '%s'",what[1],what[2])
+-- file.copy(what[1],what[2])
+-- end
+-- end
+-- if propfiledone then
+-- report("saving : '%s'",userpropfile)
+-- io.savedata(fullpropfile,userpropdata)
+-- end
+-- os.launch(fullname)
+-- end
+-- end
+
+-- local splitter = (Cf(Ct("") * (Cg(C(R("az","AZ","\127\255")^1) * Cc(true)) + P(1))^1,rawset) )^0
+--
+-- local function splitwords(words)
+-- return lpegmatch(splitter,words) -- or just split and tohash
+-- end
+
+local function splitwords(words)
+ local w = { }
+ for s in string.gmatch(words,"[a-zA-Z\127-255]+") do
+ if #s > 2 then -- will become option
+ w[lower(s)] = s
+ end
+ end
+ return w
+end
+
+-- maybe: lowerkey = UpperWhatever
+
+function scripts.scite.words()
+ for i=1,#environment.files do
+ local tag = environment.files[i]
+ local tag = string.match(tag,"spell%-(..)%.") or tag
+ local txtname = format("spell-%s.txt",tag)
+ local luaname = format("spell-%s.lua",tag)
+ local lucname = format("spell-%s.luc",tag)
+ if lfs.isfile(txtname) then
+ report("loading %s",txtname)
+ local olddata = io.loaddata(txtname) or ""
+ local words = splitwords(olddata)
+ local min, max, n = 100, 1, 0
+ for k, v in next, words do
+ local l = #k
+ if l < min then
+ min = l
+ end
+ if l > max then
+ max = l
+ end
+ n = n + 1
+ end
+ if min > max then
+ min = max
+ end
+ local newdata = {
+ words = words,
+ source = oldname,
+ min = min,
+ max = max,
+ n = n,
+ }
+ report("saving %q, %s words, %s shortest, %s longest",luaname,n,min,max)
+ io.savedata(luaname,table.serialize(newdata,true))
+ report("compiling %q",lucname)
+ os.execute(format("luac -s -o %s %s",lucname,luaname))
+ else
+ report("no data file %s",txtname)
+ end
+ end
+ report("you need to move the lua files to lexers/data")
+end
+
+-- if environment.argument("start") then
+-- scripts.scite.start(true)
+-- elseif environment.argument("test") then
+-- scripts.scite.start()
+-- else
+-- application.help()
+-- end
+
+if environment.argument("words") then
+ scripts.scite.words()
+elseif environment.argument("exporthelp") then
+ application.export(environment.argument("exporthelp"),environment.files[1])
+else
+ application.help()
+end
+