Advertisement
panraven

OnAllUserSymbol.lua

Nov 29th, 2020 (edited)
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.53 KB | None | 0 0
  1. --
  2.  
  3. if not getAllUserSymbols then
  4.   local mv,sf = getMemoryViewForm()
  5.   if not mv.frmSymbolhandler then
  6.     local mvHidden
  7.     if not mv.Visible then mvHidden=true,mv.Show() end
  8.     mv.miuserdefinedsymbols:OnClick()
  9.     if mvHidden then mv.hide()end
  10.     sf = mv.frmSymbolhandler
  11.     sf.Hide()
  12.   else
  13.     sf = mv.frmSymbolhandler
  14.   end
  15.   function getAllUserSymbols()
  16.     local lv, r = sf.ListView1,{}
  17.     lv.beginUpdate()
  18.     for i=lv.Items.Count-1,0,-1 do r[1+#r]=lv.Items[i].Caption end
  19.     lv.endUpdate()
  20.     return r
  21.   end
  22. end
  23.  
  24. if getAllUserSymbols then GetAllUserSymbols = getAllUserSymbols end
  25.  
  26. function onSymbols(fn)
  27.   local extractRE, trimRE = '%s*[;]%s*', "^%s*(.-)%s*$"
  28.   local function gn(itms)
  29.     if type(itms)=='string'then return fn(itms:match(trimRE))end
  30.   end
  31.   return function(tblOrStr)
  32.     local r, cnt,s, ts = {}, 0, tblOrStr, type(tblOrStr)
  33.     if ts=='string'then
  34.       s = s:match(trimRE)
  35.       local n,a,b = 1,s:find(extractRE)
  36.       while a and b>=a do
  37.         local itms = s:sub(n,a-1)
  38.         cnt, r[1+#r],n,a,b = cnt+1,gn(itms),b+1,s:find(extractRE,b+1)
  39.       end
  40.       cnt,r[1+#r]=cnt+1,gn(s:sub(n))
  41.       return r, cnt
  42.     elseif ts=='table'then
  43.       for i,itms in ipairs(s)do
  44.         cnt, r[1+#r] = cnt+1, gn(itms)
  45.       end
  46.       return r, cnt
  47.     end
  48.     return nil,'not string list or table of symbols'
  49.   end
  50. end
  51. OnSymbols = onSymbols
  52.  
  53. -- to clear all user symbols:
  54. -- OnSymbols(unregisterSymbol)(getAllUserSymbols())
  55. -- other sample usage:
  56. -- OnSymbols(print)(' Symbol1; symbol2 ')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement