Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


ATON stands for "AT Object Notation." It functions in a similar manner to JSON, the main difference being that property values are allowed to contain unescaped line breaks in ATON. Property keys are indicated by starting a line with the "@" symbol, followed by the property name, then a colon (:) and then the property value. Here is a simple example of an ATON file:

ATON file:
@key1: value1
@key2: value2
@key3: value3
JavaScript object:
   key1: "value1",
   key2: "value2",
   key3: "value3"

More examples of the ATON syntax can be found on the ATON website. ATON content is converted from a string into a JavaScript object with the .parse() method. The process can be reversed by using the .stringify() method.

Using in Node applications

This module can be installed for use in node by installing globally with the command:

$ npm install -g aton

If you want to use only locally within a node project, then install as a package dependency with the command:

$ npm install --save aton

Here is an example of loading the module into a node script and processing an ATON string. This string contains many of the capabilities of ATON, including type-casting and property hierarchies.

  • key1 is a single-line value.
  • key2 has a multi-line value, containing a literal newline.
  • key3 has an object as its value.
  • key3b is a floating-point number.
  • key3c has three integer values which are packed into a JavaScript array.
var aton = require('aton');
var ATON = new aton();

var atonString = '';
atonString += '@@type:key3c:Integer\n';
atonString += '@@type:key3b:Number\n';
atonString += '@key1: value1\n';
atonString += '@key2: value2\n';
atonString += 'value2 continued\n';
atonString += '@@begin: key3\n';
atonString += '@key3a: value3a\n';
atonString += 'value3a continued\n';
atonString += 'value3a continued further\n';
atonString += '@key3b: 2.71828\n';
atonString += '@key3c: 1\n';
atonString += '@key3c: -45\n';
atonString += '@key3c: 3.14\n';
atonString += '@@end: value3\n';
atonString += '@key4: value4\n';
var obj = ATON.parse(atonString);
console.log('\n', obj);

The above code should output the following text to the console:

@key1: value1
@key2: value2
value2 continued
@@begin: key3
@key3a: value3a
value3a continued
value3a continued further
@key3b: 2.71828
@key3c: 1
@key3c: -45
@key3c: 3.14
@@end: value3
@key4: value4

 { key1: 'value1',
  key2: 'value2\nvalue2 continued',
   { key3a: 'value3a\nvalue3a continued\nvalue3a continued further',
     key3b: 2.71828,
     key3c: [ 1, -45, 3 ] },
  key4: 'value4' }

Whitespace before and after a parameter value is removed automatically during the conversion process. Also notice that multi-line values contain an escaped newline character in the translation to a JavaScript object. Meta entries starting with "@@TYPE" set the data type for parameters with a given name, such as "Number" to parse the property value as a number and "Integer" to parse as an integer.

Using in a web browser

The JavaScript files for ATON can also be used within a webpage by including the main JavaScript file for ATON:

<script src="aton.js"></script>

Visit the ATON homepage to try an online demo of ATON parser running within a webpage.

Testing the code

Input and output from the code can be tested using mocha and the JavaScript files in the test directory. To test from a node installation:

$ npm install   # to download mocha dependency if necessary
$ npm test


The website for ATON documentation is

And the corresponding GitHub repository is


AT object notation






No releases published


No packages published