Comparing functions in namespace/class scripts
Forum rules
This forum is for discussing APL-related issues. If you think that the subject is off-topic, then the Chat forum is probably a better place for your thoughts !
This forum is for discussing APL-related issues. If you think that the subject is off-topic, then the Chat forum is probably a better place for your thoughts !
4 posts
• Page 1 of 1
Comparing functions in namespace/class scripts
With classic functions in a workspace, I can easily find out which (and when) functions have been changed by their timestamps. So I can quickly identify functions updated between version by the save workspace date and the function time stamp.
Under APL control, given two (or more) versions of a namespace scripts, how can I easily identify which functions in the scripts have been modified, added or deleted between the versions?
Is there a user command perhaps?
Under APL control, given two (or more) versions of a namespace scripts, how can I easily identify which functions in the scripts have been modified, added or deleted between the versions?
Is there a user command perhaps?
Ray Cannon
Please excuse any smelling pisstakes.
Please excuse any smelling pisstakes.
-
ray - Posts: 219
- Joined: Wed Feb 24, 2010 12:24 am
- Location: Blackwater, Camberley. UK
Re: Comparing functions in namespace/class scripts
It you save every function in its own file, SALT can keep track of their time stamps for you:
Note that this only works for tradfns and tradops.
]settings track atinfo
atinfo
⎕TS⊣⎕FX'fn' '42'
2018 8 6 18 26 5 282
]save fn /tmp/
\tmp\fn.dyalog
⎕DL 30
]load \tmp\fn.dyalog
fn
2⊃⎕AT'fn'
2018 8 6 18 26 5 0
⎕TS
2018 8 6 18 27 7 790
Note that this only works for tradfns and tradops.
-
Adam|Dyalog - Posts: 134
- Joined: Thu Jun 25, 2015 1:13 pm
Re: Comparing functions in namespace/class scripts
Ray
Your question makes me think you've been lucky enough not to have had many dealings with scripted spaces.
So you may not be aware that given a scripted space "myscript" you can request myscript.⎕nl 3 4 and given a function "myscript.myfunction" you can request its ⎕CR/⎕VR/⎕NR independently of the script as [say] myscript.⎕cr'myfunction'
So copying your versions from their source workspaces into different spaces ns1 and ns2 the intersect of functions is
Your question makes me think you've been lucky enough not to have had many dealings with scripted spaces.
So you may not be aware that given a scripted space "myscript" you can request myscript.⎕nl 3 4 and given a function "myscript.myfunction" you can request its ⎕CR/⎕VR/⎕NR independently of the script as [say] myscript.⎕cr'myfunction'
So copying your versions from their source workspaces into different spaces ns1 and ns2 the intersect of functions is
int←⊃∩/(ns1 ns2).myscript.⎕nl ¯3. And given the requisite number of encloses and eaches you can compare
(ns1 ns2).myscript.(⎕NR¨)⊂intAnd the two complements, the additions and deletions, will be
⊃~/(ns1 ns2).⎕nl ¯3and
⊃~/(ns2 ns2).⎕nl ¯3But given all that if you look at the APLTree library you'll probably find that Kai has already written exactly want you need.
-
Phil Last - Posts: 624
- Joined: Thu Jun 18, 2009 6:29 pm
- Location: Wessex
Re: Comparing functions in namespace/class scripts
Adam and Phil, thanks for your replied.
Adam,
My problem is that I have NOT written the scripted namespaces, so your idea of saving each function in its own file simply does not apply.
But if I do want to store functions via SALT I will certainly do exactly that.
I did something similar under mainframe STSC APL, and stored the timestamp in a trailing comment automatically whenever the function was updated.
Phil.
Your so right, I do avoid scripts whenever I can!
However I cannot avoid them when dealing with classes, and I have to use classes when using MiServer.
So for my own MiServer "Class" script, all my functions are stored under a namespace in a classic workspace, and included in the class vis:
So my scripted namespace/class contains no functions, and my functions in a classic namespace, all have standard timestamps.
The only minor problem is the namespace containing the functions, needs to exist in the workspace BEFORE the class is loaded into that workspace.
Your tips on comparing the functions via different namespaces are very useful. Thank you.
I have been comparing whole workspaces (back to Dyalog V7) by loading a second workspace into a temp namespace under ⎕SE with some utility tools. Combining these tools with your tips, will I think "do the job".
Thanks to both of you once again for all your useful ideas.
Ray
Adam,
My problem is that I have NOT written the scripted namespaces, so your idea of saving each function in its own file simply does not apply.
But if I do want to store functions via SALT I will certainly do exactly that.
I did something similar under mainframe STSC APL, and stored the timestamp in a trailing comment automatically whenever the function was updated.
Phil.
Your so right, I do avoid scripts whenever I can!
However I cannot avoid them when dealing with classes, and I have to use classes when using MiServer.
So for my own MiServer "Class" script, all my functions are stored under a namespace in a classic workspace, and included in the class vis:
- Code: Select all
:Class hex : MiPage
:Include #.hex_fns
:field public event ⍝ the triggered event - JQ.On supplies this
:field public what ⍝ the id of the element that triggered the event
:field public _Request
<snip> ...... </snip>
:Field FileData ← 0
:Field red_ant_brain←''
:Field black_ant_brain
:EndClass
So my scripted namespace/class contains no functions, and my functions in a classic namespace, all have standard timestamps.
The only minor problem is the namespace containing the functions, needs to exist in the workspace BEFORE the class is loaded into that workspace.
Your tips on comparing the functions via different namespaces are very useful. Thank you.
I have been comparing whole workspaces (back to Dyalog V7) by loading a second workspace into a temp namespace under ⎕SE with some utility tools. Combining these tools with your tips, will I think "do the job".
Thanks to both of you once again for all your useful ideas.
Ray
Ray Cannon
Please excuse any smelling pisstakes.
Please excuse any smelling pisstakes.
-
ray - Posts: 219
- Joined: Wed Feb 24, 2010 12:24 am
- Location: Blackwater, Camberley. UK
4 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 1 guest
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group