Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

Provides This method provides source builders who need to add javascript to the enrichment process with a single global set of variables and functions that can be used in the individual "scriptlets" other elements provide. The scripts provided (and same for the inputs) are executed once per source per harvest cycle.

For general information about using javascript with IKANOWS, see Using Javascript.

TODO

Table of Contents

Format

TOD convert to JSON

Code Block
languagejava
{
	"display": string, 
	"globals": { } // see GlobalScriptPojo below
}
//////////////////////////////////
	public static class GlobalScriptPojo {
		public List<String> imports; "imports": [ string ],// An optional list of URLs that get imported before the scripts below are run
		public List<String> scripts;"scripts": [ string ], // A list of (java)script code blocks that are evaluated in order (normally only need to specify one)
		public String scriptlang;"scriptlang":string, // Currently only "javascript" is supported
	}
}

Description

 

Globals is used to set functions that the other elements that use javascript can access.

FieldDescription 
imports

An optional list of URLs that get imported before the scripts below are run

 
scripts

A list of (java)script code blocks that are evaluated in order (normally only need to specify one)

 
scriptlang

Currently only "javascript" is supported

 

Examples

In the example below globals is used to declare some javascript functions.  They are accessed by the docMetadata elements below to set some metadata values for the documents.

Code Block
  {
            "globals": {
                "scripts": [
                    "function getAddressVal( addressStr, number) { try { var addressArray = addressStr.split(/ *, */); if (addressArray != null && addressArray.length > 0) { if (addressArray[number].toLowerCase()=='ny') { return 'new york'; } else if (addressArray[number].toLowerCase()=='long island' || addressArray[number].toLowerCase()=='li') { return 'medford'; } else { return addressArray[number]; } } else { return ''; } } catch (err) { return ''; } } function getRegion( code ) { if (code.toLowerCase()=='ny') {return 'New York';} else if (code.toLowerCase()=='nj') {return 'New Jersey';} else if (code.toLowerCase()=='ct') {return 'Connecticut';} else if (code.toLowerCase()=='md') {return 'Maryland';} else if (code.toLowerCase()=='va') {return 'Virginia';} else if (code.toLowerCase()=='pa') {return 'Pennsylvania';} else if (code.toLowerCase()=='nj') {return 'New Jersey';} else {return 'New York';} }"
                ]
            }
        },
        {
            "docMetadata": {
                "title": "$metadata.json.body",
                "description": "$metadata.json.body",
                "fullText": "$metadata.json.body",
                "publishedDate": "$SCRIPT(return _doc.metadata.json[0].postedTime.replace(/.[0-9]{3}Z/,'Z');)",
                "geotag": {
                    "lat": "$SCRIPT( try {return _doc.metadata.json[0].geo.coordinates[0];} catch (err) {return '';})",
                    "lon": "$SCRIPT( try {return _doc.metadata.json[0].geo.coordinates[1];} catch (err) {return '';})"
                }
            }

 

 

Panel

Footnotes:

Legacy documentation, replaces the following:

...

Description

Legacy documentation:

...

 

...

 

TODO