Iguana 5.5

What’s new in 5.5.1


Major enhancements

Extensive new help system [top]

Calling a function but can’t figure out what you need to define? Don’t panic! We are proud to introduce a whole new level of interactive scripting help that is fully integrated with our powerful auto-completion tool. Not only will the Iguana Translator auto-complete modules, functions and variables as you type, but now it also provides extensive, on-the-spot help to make sure that you are using these items correctly.

In previous versions, it was difficult to figure out exactly how to use an argument or a variable. There was really only one method: type out the function without parameters to force an error message. The error message would then offer some additional help:

With our new help system in place, not only will Iguana intuitively offer you this information without being asked, but it will offer you even more information. Now Iguana can explain what you need, what is optional, and the syntax required to complete the function correctly:

Additional Information

Significant feature enhancements to our auto-completion tool [top]

Auto-completion includes a whole new set of capabilities:

  • Auto-completion help is no longer restricted to parsed message data. Now Iguana will offer suggestions for any globally or locally defined item: modules, functions, variables, parameters, etc.
  • You don’t need to know the correct variable/module/function name in advance. You can simply start typing a word and auto-completion will guess your intention and offer you a list of potential matches.
  • You don’t need to “ask” or activate auto-completion manually. Iguana will automatically offer help the moment you start typing anything that resembles either a global or local item.
  • Auto-completion is now fully integrated with a new help system that provides extensive on-the-spot scripting support.

Additional Information

Database Connection Objects, recommended best practices [top]

Advantages of the new style connection objects:

  • Connections are not pooled, resulting in safer transactions:
    • Create dedicated connections using db.connect()
    • Legacy connections are pooled so it is possible (rarely) to receive a different connection and rollback a transaction
      Note: If network connectivity to the database is lost, a rollback will occur with new and legacy connections
  • NEW! The ability to check a connection to confirm that the database is still available:
    • Use the conn:check() method to test a connection

Additional Information

Translator API Reference: db.conn: New database methods [top]

Advantages of the new style connection objects:

  • Connections are not pooled, resulting in safer transactions:
    • Create dedicated connections using db.connect()
    • Legacy connections are pooled so it is possible (rarely) to receive a different connection and rollback a transaction
      Note: If network connectivity to the database is lost, a rollback will occur with new and legacy connections
  • NEW! The ability to check a connection to confirm that the database is still available:
    • Use the conn:check() method to test a connection

Additional Information

Improved sample data management tools [top]

Improvements have been made to the sample message browser:

  • You can add individual messages
  • You can delete individual or multiple messages
  • Messages can be given a name
  • Clicking a message row will select it for editing (previously an icon had to be clicked)
  • The usability of the sample message browser has been greatly improved

Additional Information

Additional control over user access [top]

We’ve added two new permission options to the Edit Role dialog:

  • View Logs allows users to view logs.
  • Translator IDE allows users to access the Iguana Translator Editor to edit code.

We also modified an existing option: Edit no longer includes the right to edit code in the Translator Editor.

Additional Information

New error and warning icons in the Dashboard [top]

New icons have been added to the Dashboard so that you can immediately see when errors or warnings have occurred:

Icon Meaning
This icon indicates a warning, although the channel will continue to run.
When this icon is red, an error has occurred and the channel will not run.When this icon is yellow, a warning has occurred but the channel will continue to run.

The most common issues flagged by these new icons are milestone-related:

This is a great way to ensure that your milestones are up to date!

The same  icons are used for issues in the channel properties dialog:

Additional Information

New milestone status icons in the Iguana Editor [top]

To help you keep track of milestone status, new icons have been added to the Project Files panel in the Iguana Editor:

Icon Meaning
This yellow (!) icon indicates that a file was changed since the last milestone.
This green (+) icon indicates that a file was created since the last milestone.

Note: If the yellow (!) is displayed at the top of the Project Files window, it indicates that the project was changed since the last milestone:

Additional Information

Nested annotation blocks for loops [top]

New navigation controls have been added to help display loops in annotations. We believe this is much clearer method, and it works brilliantly for nested loops:

In previous versions, loops were printed sequentially (separated by commas):

If you get a feeling of déjà vu, it is because this looks very similar to how annotations display repeated calls to functions:

For longer loop annotations, you had to scroll to the right to see everything. Even then, there was still a risk that the results might be incomplete (truncated):

Our new nested loops are brilliant!

Note: Notice the 4th or “extra” repetition:

In the last repetition, the condition is tested and the loop is not executed. It is the philosophy of Iguana to show you exactly what is happening in the code; therefore, this last repetition is included.

Additional Information

Color-coded annotation tree views [top]

All annotation tree views are now colorized for easier viewing! This might not seem like a big change, but now it’s much easier to differentiate between fields names and data at a glance (particularly for XML trees).

As you can see with our side-by-side comparisons below, the Iguana 5.5 colorized trees on the LEFT are far easier to browse:

XML Example

HL7

DB query result

JSON tree

Lua table

Note: Notice that the Lua table and the JSON tree are identical! That’s because a JSON tree uses a Lua table.

Additional Information

New auto-completion on/off toggle [top]

Once you get familiar with Iguana and more confident scripting code, you may find our handy auto-completion feature to be distracting at times. Well, now you can turn it off! In Iguana 5.5.1 a new button has been added to the Translator toolbar that toggles auto-completion on and off:

Note: In Iguana 5.6 the toolbar has been updated again, and this button is no longer available, see: Showing and Hiding Annotations for details.

Additional Information

Improved docking feature [top]

You can now reorder docked annotation tabs using drag-and-drop gestures:

Simply drag the docked window to a new location:

Additional Information

Minor changes and bug fixes

Bug fix Iguana 5.5.1: When zero was selected from a database, it was converted to NULL [top]

In previous versions of Iguana, the integer zero (0) was converted to NULL (”) when it was returned from a database. In Iguana 5.5.1, zero is now correctly returned as zero.

Additional Information

Bug fix Iguana 5.5.1: When nil values were saved to a database by db.merge, they were converted to zero [top]

In previous versions of Iguana, nil (NULL) values were converted to zero (0) when being saved to a database by db.merge. In Iguana 5.5.1, nil is now correctly saved as NULL.

Additional Information

Bug fix Iguana 5.5.1: When nil date values were saved to a database by db.merge, they were converted to 1899-12-31[top]

In previous versions of Iguana, nil (NULL) date values were converted to 1899-12-30 00:00:00 (or “zero date”) when being saved to a database by db.merge. In Iguana 5.5.1, nil date values are now correctly saved as NULL.

Additional Information

Sample message data can be included in a project zip file [top]

Exporting a translator project as a zip file now provides the option to include sample data.

If a project zip file contains sample data, there are three import options:

  • Import and replace any current sample data
  • Import and append to current data
  • Do not import the sample data

Additional Information

New help functions allow you to produce customized help [top]

Iguana 5.5 introduces new help functions that allow you to create help for your own library code. You can also change the help for built-in functions, if needed.

These are the available help functions:

Additional Information

You can now specify a base URL for email notification links [top]

It is now possible for email notifications to specify a custom URL for the “Iguana Host Name for Email Links” field, instead of just a hostname.

For instance, specifying http://externalip:9999 in the field will make all links use that url as the base url for links. This will allow the use of external proxy services to reach Iguana resources from links in notification emails.

If the value in the field does not begin with http:// or https://, then the previous behavior is assumed, where the protocol and port will be derived from Iguana’s settings.

Additional Information

The iguana.project.<xxx> variables have been changed to functions [top]

In Iguana 5.5, the iguana.project ‘variables’ (guid, files and root) have been changed to functions.

So instead of using variables like this:

trace("This project's GUID is: " .. iguana.project.guid)

trace('The project is located in ' .. iguana.workingDir() .. iguana.project.root)

local files = iguana.project.files
trace('This is the location of the "main" file for the project ' .. iguana.workingDir() .. files['main.lua'])

One would simply use function calls like this:

trace("This project's GUID is: " .. iguana.project.guid())

trace('The project is located in ' .. iguana.workingDir() .. iguana.project.root())

local files = iguana.project.files()
trace('This is the location of the "main" file for the project ' .. iguana.workingDir() .. files['main.lua'])

If you are one of the lucky few people currently using iguana.project.guid in your script, there is an easy solution to dealing with this change! When upgrading to Iguana 5.5, simply make the change shown above.

If you use iguana.project.guid in several places throughout a project, placing the following code at the top of your script is a quick fix and gets things “back to how they used to be”:

if type(iguana.project.guid) == 'function' then
   iguana.project.guid = iguana.project.guid()
end

This code will work correctly in Iguana 5.0.13 and up, as iguana.project.guid will be a variable containing the project GUID rather than a function that returns it. As such, this code can still be used regardless of the 5.5 change.

Note: The same principle will work for iguana.project.files and iguana.project.root.