Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --
- if not getAllUserSymbols then
- local mv,sf = getMemoryViewForm()
- if not mv.frmSymbolhandler then
- local mvHidden
- if not mv.Visible then mvHidden=true,mv.Show() end
- mv.miuserdefinedsymbols:OnClick()
- if mvHidden then mv.hide()end
- sf = mv.frmSymbolhandler
- sf.Hide()
- else
- sf = mv.frmSymbolhandler
- end
- function getAllUserSymbols()
- local lv, r = sf.ListView1,{}
- lv.beginUpdate()
- for i=lv.Items.Count-1,0,-1 do r[1+#r]=lv.Items[i].Caption end
- lv.endUpdate()
- return r
- end
- end
- if getAllUserSymbols then GetAllUserSymbols = getAllUserSymbols end
- function onSymbols(fn)
- local extractRE, trimRE = '%s*[;]%s*', "^%s*(.-)%s*$"
- local function gn(itms)
- if type(itms)=='string'then return fn(itms:match(trimRE))end
- end
- return function(tblOrStr)
- local r, cnt,s, ts = {}, 0, tblOrStr, type(tblOrStr)
- if ts=='string'then
- s = s:match(trimRE)
- local n,a,b = 1,s:find(extractRE)
- while a and b>=a do
- local itms = s:sub(n,a-1)
- cnt, r[1+#r],n,a,b = cnt+1,gn(itms),b+1,s:find(extractRE,b+1)
- end
- cnt,r[1+#r]=cnt+1,gn(s:sub(n))
- return r, cnt
- elseif ts=='table'then
- for i,itms in ipairs(s)do
- cnt, r[1+#r] = cnt+1, gn(itms)
- end
- return r, cnt
- end
- return nil,'not string list or table of symbols'
- end
- end
- OnSymbols = onSymbols
- -- to clear all user symbols:
- -- OnSymbols(unregisterSymbol)(getAllUserSymbols())
- -- other sample usage:
- -- OnSymbols(print)(' Symbol1; symbol2 ')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement