The beginnings of a foreach function equivalent in ObjectScript. The syntax is limited yet makes object iteration more modular.
Make sure you have git and Docker desktop installed.
Open terminal and clone/git pull the repo into any local directory
$ git clone [email protected]:DaveAldon/ObjectScript-Foreach.git
Open the terminal in this directory and run:
$ docker-compose build
- Run the IRIS container with your project:
$ docker-compose up -d
If you'd like to this is in action immediately, just call the "SampleMethod" function.
Open InterSystems IRIS terminal:
$ docker-compose exec iris iris session iris
USER>zn "IRISAPP"
IRISAPP>write ##class(Iteration.Loop).SampleMethod()
Dynamic 1
Dynamic 2
This function sends a simple variable with some elements, and calls on a sample method that writes it's parameter out to the console.
This function has three parameters: the object we're iterating through, the string name of the method running on each element, and the optional class location of the method. Currently the objects you can iterate through are limited to Dynamic Arrays and Dynamic Objects. Json objects can only capture the value pair, not the keys yet. And globals are in the works.
Here is an example of how to call this:
USER>set YOUR_VARIABLE = ["some","thing"]
USER>do ##class(Iteration.Loop).Foreach(YOUR_VARIABLE,"METHODNAME")
USER>some
USER>thing
METHODNAME is a method you define in the same class as where you call this, or if it's in another class you need to include the class name as a third parameter of the foreach. The method you want to make and call on each iteration can look like this (it's equivalent in other languages is the code that goes inside the foreach block):
ClassMethod METHODNAME(pMes) As %Status
{
write pMes, !
return $$$OK
}
This repository is ready to code in VSCode with ObjectScript plugin. Install VSCode, Docker and ObjectScript plugins and open the folder in VSCode.
Right-click on docker-compose.yml file and click Compose Restart
Once docker will finish starting procedure and show:
Creating objectscript-contest-template_iris_1 ... done
Click on the ObjectScript status bar and select Refresh connection in the menu. Wait for VSCode to make connection and show something like "localhost:32778[IRISAPP] - Connected"
You can start coding after that. Open Loop.cls in VSCode, make changes and save - the class will be compiled by IRIS on 'Save'.
2020-03-22 - v1.1 - Compatibility with InterSystems Online Programming Contest 2020
2019-09-19 - v1.0 - Initial commit of functions with features outlined in description