{"__v":0,"_id":"562d247e26a0a10d00ad6c02","category":{"__v":1,"_id":"562d247b26a0a10d00ad6be7","pages":["562d247e26a0a10d00ad6bfc","562d247e26a0a10d00ad6bfd","562d247e26a0a10d00ad6bfe","562d247e26a0a10d00ad6bff","562d247e26a0a10d00ad6c00","562d247e26a0a10d00ad6c01","562d247e26a0a10d00ad6c02","562d247e26a0a10d00ad6c03","562d247e26a0a10d00ad6c04"],"project":"55ba86e68f4ef01900c0ae1f","version":"562d247a26a0a10d00ad6be2","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-07-30T22:45:50.984Z","from_sync":false,"order":7,"slug":"autocode-elements","title":"Hacking Autocode"},"project":"55ba86e68f4ef01900c0ae1f","user":"55ba86a810133e2b00feb6bc","version":{"__v":10,"_id":"562d247a26a0a10d00ad6be2","project":"55ba86e68f4ef01900c0ae1f","createdAt":"2015-10-25T18:50:34.678Z","releaseDate":"2015-10-25T18:50:34.678Z","categories":["562d247b26a0a10d00ad6be3","562d247b26a0a10d00ad6be4","562d247b26a0a10d00ad6be5","562d247b26a0a10d00ad6be6","562d247b26a0a10d00ad6be7","562d247b26a0a10d00ad6be8","562d247b26a0a10d00ad6be9","566f8106f11d5a0d007226fa","566fb8be1dabd80d00b1206c","566fb8c4cbb2fb0d00f7c4c0","566fb8c9e10ecb0d0004edd0","566fb8ea6995210d003aaa65","566fb8fce10ecb0d0004edd1","566fb901e10ecb0d0004edd2","566fb90e81801f0d00802d60","566fb9126995210d003aaa66"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-30T22:53:43.671Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":6,"body":"[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Since Processors interact directly with Crystal, they must be written in JavaScript and/or CoffeeScript.\"\n}\n[/block]\nProcessors update Specifications to meet the requirements of Schematics.\n\nThis allows more control and flexibility of your input. Some examples include:\n\n- manipulating data to add/remove data from a Specification\n- adding contents from a file to a Specification\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Examples\"\n}\n[/block]\nIn this example, a Schematic for routes expects an object of objects. Each object has a key which is used as the filename of each route. If an object doesn't have a URI value, it uses the key/name as the URI:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"module.exports = function(val) {\\n  for (var name in val) {\\n    if (!val[name].uri) {\\n      val[name].uri = '/' + name;\\n    }\\n  }\\n  return val;\\n};\",\n      \"language\": \"javascript\",\n      \"name\": \"processor.js\"\n    }\n  ]\n}\n[/block]","excerpt":"Prepares specifications for schematics.","slug":"processors","type":"basic","title":"Processors"}

Processors

Prepares specifications for schematics.

[block:callout] { "type": "info", "body": "Since Processors interact directly with Crystal, they must be written in JavaScript and/or CoffeeScript." } [/block] Processors update Specifications to meet the requirements of Schematics. This allows more control and flexibility of your input. Some examples include: - manipulating data to add/remove data from a Specification - adding contents from a file to a Specification [block:api-header] { "type": "basic", "title": "Examples" } [/block] In this example, a Schematic for routes expects an object of objects. Each object has a key which is used as the filename of each route. If an object doesn't have a URI value, it uses the key/name as the URI: [block:code] { "codes": [ { "code": "module.exports = function(val) {\n for (var name in val) {\n if (!val[name].uri) {\n val[name].uri = '/' + name;\n }\n }\n return val;\n};", "language": "javascript", "name": "processor.js" } ] } [/block]