Differences between revisions 17 and 33 (spanning 16 versions)
Revision 17 as of 2011-08-04 19:58:22
Size: 3740
Editor: KaiJaeger
Comment:
Revision 33 as of 2017-06-01 16:43:45
Size: 1329
Editor: KaiJaeger
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
<<TableOfContents>> = User Commands Int2Hex and Hex2Int =
Line 3: Line 3:
= User Command ADOC (Dyalog) =
== Overview ==
[[ADOC]] is a utility useful to generate documentation (semi-) automatically from class scripts as well as namespace scripts.
Although Dyalog comes from two built-in user commands for converting a hex number into an integer and vice versa (`]ToHex` and `]FromHex`), `fromHex` is too limited to be really useful.
Line 7: Line 5:
Obviously it makes sense to make ADOC's services available as a User Command.

This page offers a small class script `ADOC_UC.dyalog` which is designed to do exactly that.

== Assumptions ==
In order to make `ADOC` available as a user command the script `ADOC_UC.dyalog` ("UC" for User Command) attached to this page must go somewhere where Dyalog is able to find it. There are to options:

 * Move it into `Salt\Spice` inside the Dyalog installation folder. That's where the Dyalog User Commands are located.
 * Create a particular folder for your own User Commands.

Although the first option is certainly easier, it's actually the second one which is recommended. There are a couple of reasons:

 * Messing Dyalog scripts with your scripts is not a good idea.
 * When a new version of Dyalog arrives you are in trouble.
 * Having a separate folder for your own User Commands allows you to overwrite a Dyalog User Command with an improved version you are not going to loose in case of an update or a new version.

To make your own User Command folder work you have to do a couple of things:

 1. Add the folder to the SALT search path.
 1. Create another folder which is going to host the "real thing". A recommended name is "!UserCommandCode".
 1. Copy the script `ADOC.dyalog` from the [[ADOC]] page into that folder.
 1. Create a registry entry pointing to that new folder with the name `HKEY_CURRENT_USER\Software\Dyalog\Dyalog APL/W 12.1 Unicode\SALT\CodeFolder`

Note that the script attached to this page only deals with two issues:

 * Figure out what command the user wants to invoke, "Browse" or "List".
 * Find the real work horse and call it, see below.

In order to achieve that the script `ADOC_UC.dyalog` reads the `HKEY_CURRENT_USER\Software\Dyalog\Dyalog APL/W 12.1 Unicode\SALT\CodeFolder` from the Windows registry. It then tries to load the "real" ADOC script from that folder.

Note that not only our examples given on this page but also the code in `ADOC_UC.dyalog` all refer to version 12.1 Unicode of Dyalog. If your are using a different version of Dyalog of course you must change the script, otherwise it's not going to work.

== Samples ==
Given that the two different ADOC scripts went into the right folders, this would be a sample session:
For example, is one wishes to convert an error code returned by the Windows Task Scheduler:
Line 43: Line 8:
      ]?ADOC
"??" for general help, "?CMD" for more specific info on command CMD

 Group Name Description
 ===== ==== ===========
 ADOC ADOC.Browse Creates full documentation and displayes it in the default browser.
        ADOC.HELP Displays help regarding ADOC.
        ADOC.List Prints syntax of all public stuff to the session.

      ]?ADOC.Browse
Command "ADOC.Browse". Syntax: 1 arguments; accepts switches -b=
Script location: ........\....\....\ADOC

Gathers information from a class script, compiles
an HTML page with these pieces of information
and displays it in your default browser.

      ]?ADOC.List
Command "ADOC.List".
Script location: ........\...\...\ADOC

Prints a list with all sorts of information to the session
about all public stuff given in the script specified in the right argument

]ADOC.Help
Watch your browser

Shows extensive information about ADOC. It's basically doing `ADOC.Browse ADOC`.
      ]tohex 2147942667
must be 32 bits signed integer
Run[61] r←1 hex ##.THIS⍎r⊣⎕PP←34
       ∧
Line 73: Line 14:
== Download == With the excellent function `Hex` written and contributed by PhilLast - which is the internal engine of the two user commands - this can be avoided:
Line 75: Line 16:
[[attachment:ADOC_UC.zip | Download]] the script. {{{
      ]Int2hex 2147942667
8007010b
      ]Hex2Int 8007010b
2147942667
}}}
Line 77: Line 23:
== Version ==
The script is version 1.2.0 from 2011-08-04
This is Phil's underlying code:
Line 80: Line 25:
Author: KaiJaeger {{{
      Hex←{
          ⎕IO←0 ⋄ ⎕ML←1
          t←0∊⊃⍬⍴0⍴⊂⍵
          a←⎕D,'abcdef',⎕D,6⍴⎕A
          t:a⌷⍨⊂⍉16⊥⍣¯1⊢⍵
          16⊥⍉16|a⍳⍵
    ⍝ ⍵ dec-number or hex-string
    ⍝ ← hex-string or dec-number
    ⍝ accepts hex as CAPS or small
    ⍝ returns hex as small
    ⍝ dec to hex is rank increasing
    ⍝ hex to dec is rank decreasing
      }
}}}
Line 82: Line 41:
-- KaiJaeger <<DateTime(2011-08-04T19:54:50Z)>>

Authors: Logic=PhilLast, user command=KaiJaeger

User Commands Int2Hex and Hex2Int

Although Dyalog comes from two built-in user commands for converting a hex number into an integer and vice versa (]ToHex and ]FromHex), fromHex is too limited to be really useful.

For example, is one wishes to convert an error code returned by the Windows Task Scheduler:

      ]tohex 2147942667                              
must be 32 bits signed integer
Run[61] r←1 hex ##.THIS⍎r⊣⎕PP←34

With the excellent function Hex written and contributed by PhilLast - which is the internal engine of the two user commands - this can be avoided:

      ]Int2hex 2147942667                              
8007010b
      ]Hex2Int 8007010b
2147942667

This is Phil's underlying code:

      Hex←{
          ⎕IO←0 ⋄ ⎕ML←1
          t←0∊⊃⍬⍴0⍴⊂⍵
          a←⎕D,'abcdef',⎕D,6⍴⎕A
          t:a⌷⍨⊂⍉16⊥⍣¯1⊢⍵
          16⊥⍉16|a⍳⍵
    ⍝ ⍵ dec-number or hex-string
    ⍝ ← hex-string or dec-number
    ⍝   accepts hex as CAPS or small
    ⍝   returns hex as small
    ⍝   dec to hex is rank increasing
    ⍝   hex to dec is rank decreasing
      }

Authors: Logic=PhilLast, user command=KaiJaeger


CategoryDyalogUserCommands

UserCommands/Hex (last edited 2019-05-30 07:48:57 by KaiJaeger)