json-to-alfred

1.2.0 • Public • Published

This utility takes JSON and outputs the XML required for the Script Filter in Workflows for the wonderful Mac App Alfred. It can be used in other node.js modules or as a command line utility.

Basic Usage

Command Line

json-to-alfred path/to/data.json

That will output the XML Alfred is looking for. Keep in mind that it is best to use absolute paths in Alfred's Script Filters, a quick which json-to-alfred can tell you where it is.

Node.js Modules

var jsonToAlfred = require('json-to-alfred');
var data = {
    "results": [
        {
            "title": "Title of Result",
            "subtitle": "Subtitle",
            "arg": "Argument passed to next Alfred Workflow item as {query}"
        },
        {
            "title": "2nd title",
            "subtitle": "2nd subtitle",
            "arg": "2nd arg"
        }
    ]
};
 
var xml = jsonToAlfred.createItems(data);
console.log(xml);

Creating single records

Alternatively, you could take this approach, which would result in the same as above.

var jsonToAlfred = require('json-to-alfred');
var data = {
    "results": [
        {
            "title": "Title of Result",
            "subtitle": "Subtitle",
            "arg": "Argument passed to next Alfred Workflow item as {query}"
        },
        {
            "title": "2nd title",
            "subtitle": "2nd subtitle",
            "arg": "2nd arg"
        }
    ]
};
 
console.log(jsonToAlfred.prefix);
data.results.forEach(function(result) {
    console.log(jsonToAlfred.createItem(result));
});
console.log(jsonToAlfred.suffix);

Properties

jsonToAlfred.prefix

Output the prefix of the XML:

<?xml version="1.0" encoding="utf-8"?> <items>

jsonToAlfred.suffix

Output the suffix of the XML:

</items>

Methods

jsonToAlfred.createItem(result)

Take JSON or a JS Object result that is this format:

{
  "uid": "uid here",
  "arg": "arg here",
  "title": "title here",
  "subtitle": "subtitle",
  "copy": "text to copy here",
  "largeType": "display large text here"
}

which will output this:

<item uid="uid here" arg="arg here" valid="YES" autocomplete="title here">
  <title>title here</title>
  <subtitle>subtitle</subtitle>
  <text type="copy">text to copy here</text>
  <text type="largetype">display large text here</text>
</item>

jsonToAlfred.createItems(results)

The all in one solution; this calls jsonToAlfred.prefix, then loops through results passed in - an array of result objects (see above) and calls jsonToAlfred.createitem() on each one, then calls jsonToAlfred.suffix to close it all.

Dependents (1)

Package Sidebar

Install

npm i json-to-alfred

Weekly Downloads

0

Version

1.2.0

License

MIT

Last publish

Collaborators

  • evanlovely