ISL

ISL

ISL is a low-code interpreted scripting language and runtime container designed to provide developers and non-developers an easy way to write, test, and deploy user developed code inside any service.

The ISL supports an intuitive simplified syntax with features that make data acquisition and data transformations easy with minimal lines of code. In addition, the language supports easy extensibility allowing it to be used as a multi-purpose service extensibility language.

The ISL can be embedded in any JVM based project to provide runtime based extensibility through a fast and lightweight runtime.

Overview

ISL is a WYSIWYG scripting language designed for data transformations of JSON to JSON objects.

⌨️ If it looks like a JSON it’s a valid ISL :)

⏩ Checkout the Overview for examples and the basics of the ISL.

⏩ Checkout the QuickStart Guide for how to use ISL in 2 minutes.

‼️ Checkout the Best Practices to understand how to run ISL efficiently.

Example

In the most simple form the ISL is a JSON transformation language:

Given Input JSON:

{
  "title": "IPod Nano - 8GB",
  "body_html": "It's the small iPod with a big idea: Video.",
  "id": 632910392,
  "images": [
    {
      "id": 850703190,
      "src": "http://example.com/burton.jpg"
    }
  ],
  "options": {
    "name": "Color",
    "values": ["Pink", "Red", "Green", "Black"]
  },
  "status": "active",
  "tags": "Emotive, Flash Memory, MP3, Music",
  "updated_at": 1645004735,
  "vendor": "Apple"
}

And Transformation: ISL Transformation

Will output:

{
  "id": 632910392,
  "name": "IPod Nano - 8GB",
  "short_description": "IPod Nano - 8GB by Apple",
  "primary_image": {
    "id": 850703190,
    "url": "http://example.com/burton.jpg"
  },
  "is_active": true,
  "option_name": "Color",
  "option_values": "Pink,Red,Green,Black",
  "updated": "2022-02-47 09:45"
}

Major Features

Learning And Support

See the documentation in this repository for comprehensive guides and examples.

JSON DSL

For Kotlin users ISL also bring a new JSON based DSL to simplify the creation of JSON nodes from Kotlin:

import com.intuit.isl.dsl.*

val value = node {
    put ("first name", "John")
    put ("last name", "Smith")
    put ("age", 23 )

    array ("addresses")[
        node ("work"){
            put("line1", "123 Intuit Way")
        }
    ]
}


val jsonNode = value.node;  // access the internal JsonNode that was generated

Latest Version

Check the releases page for the latest version.

Change Log

Checkout out the changelog for the changes.