{"_id":"astra","_rev":"44-2e6ba6164d995a6690a65f4679280afe","name":"astra","description":"ASTRA is easy to use AST traverse library","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.1":{"name":"astra","version":"0.0.1","files":["./lib/ast_crush.js","./lib/astra.js","./lib/deep_compare.js","./index.js","./test/ast_crush.js","./test/astra.js","./test/deep_compare.js","./package.json","./README.md"],"dependencies":{"type-of-is":"~3.2.0","underscore":"~1.6.0"},"devDependencies":{"mocha":"~1.18.2","should":"~3.2.0"},"description":"ASTRA =========","_id":"astra@0.0.1","dist":{"shasum":"52d1d4b5ec588be98e827fbf13d3efabfcf7078c","tarball":"https://registry.npmjs.org/astra/-/astra-0.0.1.tgz","integrity":"sha512-/QBnrv+WQ5xurqcIBB8eyHt9saD9ZdGh3O+faBAgp9uBW1ysSYj+FN1i0Rg+7vPbag8Gg4xKUtVOIeL5J9V19w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5H86FtuP9HcL9md85wuOwJY150SsEy2huyrkED+qEogIgK5x7pW1WT6nV8WkNMLP0Up1x0f8FOQyivc3kHkKaQ0c="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"galkinrost","email":"galkinrost@gmail.com"},"maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}]},"0.0.3":{"name":"astra","version":"0.0.3","files":["lib/ast_crush.js","lib/astra.js","lib/deep_compare.js","index.js","test/ast_crush.js","test/astra.js","test/deep_compare.js"],"dependencies":{"type-of-is":"~3.2.0","underscore":"~1.6.0"},"devDependencies":{"mocha":"~1.18.2","should":"~3.2.0"},"description":"ASTRA =========","_id":"astra@0.0.3","dist":{"shasum":"35f0118c5e239d1b41d957c3bed84039e9305dd1","tarball":"https://registry.npmjs.org/astra/-/astra-0.0.3.tgz","integrity":"sha512-/syAhaWXOdaZAo5Hk/8+sNKcK1BwEFuk6RjXqa4BoZusJ6kXNM2wbp9Um5a60g2+O2y1pvXS3t15wJOkJ1B91w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvid6wTn4cpimNUqOcP6T8C3bv4YCzs8HNNa8dKyiKeQIgRxxU3cl0b9eB1CbgGKW1LUek2c7k3+MsgBPDv9RblKA="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"galkinrost","email":"galkinrost@gmail.com"},"maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}]},"0.0.5":{"name":"astra","version":"0.0.5","files":["lib/ast_crush.js","lib/astra.js","lib/deep_compare.js","index.js","test/ast_crush.js","test/astra.js","test/deep_compare.js"],"dependencies":{"type-of-is":"~3.2.0","underscore":"~1.6.0","async":"~0.6.2"},"devDependencies":{"mocha":"~1.18.2","should":"~3.2.0"},"description":"ASTRA =========","_id":"astra@0.0.5","dist":{"shasum":"ff68ce482555367ad2783201b856a65efacc88c2","tarball":"https://registry.npmjs.org/astra/-/astra-0.0.5.tgz","integrity":"sha512-3x1VYpXdUjv7uza6kvWkn/NE2KErGrQcad+ZJ2YHx8LUrLHrPNy1WGIpwdgSyJFVGdzhMq4x6Fj/9RC4J0Jxqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA4VYr5TdB4xK61ZCRbDwvq313EG474vtJkqWQNTquOnAiAN2j/w81d7z+J96EfvCvosOnI5bSG8G7RZpRmL8EHCJA=="}]},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"galkinrost","email":"galkinrost@gmail.com"},"maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}]},"0.0.6":{"name":"astra","version":"0.0.6","files":["lib/ast_crush.js","lib/astra.js","lib/deep_compare.js","lib/deep_scan.js","index.js","test/ast_crush.js","test/astra.js","test/deep_compare.js"],"dependencies":{"type-of-is":"~3.2.0","underscore":"~1.6.0","async":"~0.6.2"},"devDependencies":{"mocha":"~1.18.2","should":"~3.2.0"},"description":"ASTRA =========","_id":"astra@0.0.6","dist":{"shasum":"3dc6011625b01a9987656d891e98fc625fc71691","tarball":"https://registry.npmjs.org/astra/-/astra-0.0.6.tgz","integrity":"sha512-4nW3qSjKiprIgSFDMZ07tSqwNmQnhjO8VpxmkY+fgQl2Lec5dWxq4Oe3pCvsW3dY+j1EDlVj7zRmGRxyrO5BpQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEg/7CoCWgPsVXcLEcvqa6NNanWLHOqueN1T6zu7djkXAiEAyA4qGcRaM2B8VBJD1KFvEug89kfvZlmyv1Fmtz+NO20="}]},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"galkinrost","email":"galkinrost@gmail.com"},"maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}]},"0.0.7":{"name":"astra","version":"0.0.7","files":["lib/ast_crush.js","lib/astra.js","lib/deep_compare.js","lib/deep_scan.js","index.js","test/ast_crush.js","test/astra.js","test/deep_compare.js"],"dependencies":{"type-of-is":"~3.2.0","underscore":"~1.6.0","async":"~0.6.2"},"devDependencies":{"mocha":"~1.18.2","should":"~3.2.0"},"description":"ASTRA =========","_id":"astra@0.0.7","dist":{"shasum":"a0b7727df240e86f1dc431302aba9f80e6ae3da8","tarball":"https://registry.npmjs.org/astra/-/astra-0.0.7.tgz","integrity":"sha512-10pauZ1S8KR07hTM9TTZ1BzP824XojJdPUhJlYd1NRUW4sR/XPatU4oD11C361hY3l0SsAaQuxxHHaaK3f4ZYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICrhtoY29aOowhG5Jn+D5F9nz3psKWMbEaPw83sGsjA8AiEAkchf+NwohHxv6AwvcA32k7Hbc16s4ymeUlr4rlCga9w="}]},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"galkinrost","email":"galkinrost@gmail.com"},"maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}]},"1.0.0":{"name":"astra","description":"ASTRA is easy to use AST traverse library","version":"1.0.0","files":["lib","index.js","test"],"scripts":{"test":"mocha test/*.js -R list"},"dependencies":{"type-of-is":"~3.2.0","underscore":"~1.6.0","async":"~0.6.2"},"devDependencies":{"mocha":"~1.18.2","should":"~3.2.0"},"_id":"astra@1.0.0","dist":{"shasum":"809c2a9204171af82a59a93e2148448a25d4c149","tarball":"https://registry.npmjs.org/astra/-/astra-1.0.0.tgz","integrity":"sha512-hZY4T3lHfHXtsHvQegupJXXOSbQRmQYIVITrfmfBB4liQ8vK0yxzCgTDc3MDdxEKxKNnLlBqK7bgsPe5EhOzIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyyEb3ANt/mxSIXpj/SschKgxnYTKEUbba7MGh605ICwIhAKfoH8wPDLPWuxjHy9NIJO7gJclbrOhPBJEIrpAhPNUc"}]},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"galkinrost","email":"galkinrost@gmail.com"},"maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}]},"1.0.1":{"name":"astra","description":"ASTRA is easy to use AST traverse library","version":"1.0.1","repository":{"type":"git","url":"git://github.com/galkinrost/astra"},"files":["lib","index.js","test"],"scripts":{"test":"mocha test/*.js -R list"},"dependencies":{"type-of-is":"~3.2.0","underscore":"~1.6.0","async":"~0.6.2"},"devDependencies":{"mocha":"~1.18.2","should":"~3.2.0"},"bugs":{"url":"https://github.com/galkinrost/astra/issues"},"_id":"astra@1.0.1","dist":{"shasum":"1f9a949767ea45853aa9c522f2e875de9d30ebc3","tarball":"https://registry.npmjs.org/astra/-/astra-1.0.1.tgz","integrity":"sha512-EsVbAt8kOmotsnrP/xin7HFVLs84z+lgH6j6u6Y8vLpcqZMfIfAAv82fUllWM/pkLr/b4nJm1LOzffsGL5xb4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClgC1n41raq1VgwXior1/Hv5vOjBoH5qgimlGcCQt9mAIgIzTz4LrjlshTg0wLdH6KSHTvRwhx3N81odfoMuVLWL0="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"galkinrost","email":"galkinrost@gmail.com"},"maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}]}},"readme":"ASTRA\n=========\n\nASTRA is easy to use AST traverse library\n\nInstallation\n------------\n\n```sh\nnpm install --save astra\n```\n\nUsage\n------\n\n```javascript\n\nvar astra=require('astra');\n\nvar newAst=astra(ast)\n    .when(pattern,function(chunk){\n\n    })\n    .when(anotherPattern,function(chunk){\n\n    })\n    .run();\n\n```\n\nExamples\n------\nsimple\n```javascript\nvar newAst = astra(ast)\n    .when({\n        \"type\": \"Literal\",\n        \"value\": \"myDirective\",\n        \"raw\": \"\\\"myDirective\\\"\"\n    }, function (chunk) {\n        chunk.value = \"newMyDirective\";\n        chunk.raw = \"\\\"newMyDirective\\\"\"\n    })\n    .run();\n```\n<br>\nasync handler\n```javascript\nastra(ast, true)\n    .when({\n        \"type\": \"Literal\",\n        \"value\": \"myDirective\",\n        \"raw\": \"\\\"myDirective\\\"\"\n    }, function (chunk, done) {\n        chunk.value = \"newMyDirective\";\n        chunk.raw = \"\\\"newMyDirective\\\"\"\n        setTimeout(done, 1000);\n    })\n    .run(function (err, newAst) {\n                    ...\n    });\n```\n<br>\narray pattern (equivalent OR)\n```javascript\nvar newAst = astra(ast)\n    .when([\n        {\n            \"type\": \"Literal\",\n            \"value\": \"/app/templates/template.html\"\n\n        },\n        {\n            \"type\": \"Literal\",\n            \"value\": \"/app/styles/styles.css\"\n        }\n    ], function (chunk) {\n        chunk.value = \"\";\n        chunk.raw = \"\\\"\\\"\";\n    })\n    .run();\n```\n<br>\ncomplex pattern(** means deep child)\n```javascript\nvar newAst=astra(ast)\n    .when({\n        \"type\": \"FunctionExpression\",\n        \"params\": [\n            {\n                \"type\": \"Identifier\",\n                \"name\": \"$routeProvider\"\n            }\n        ],\n        \"**\": {\n            \"type\": \"CallExpression\",\n            \"callee\": {\n                \"type\": \"MemberExpression\",\n                \"property\": {\n                    \"type\": \"Identifier\",\n                    \"name\": \"when\"\n                }\n            },\n            \"**\": [\n                {\n                    \"type\": \"Property\",\n                    \"key\": {\n                        \"type\": \"Identifier\",\n                        \"name\": \"template\"\n                    },\n                    \"value\": {\n                        \"type\": \"Literal\"\n                    }\n                },\n                {\n                    \"type\": \"Property\",\n                    \"key\": {\n                        \"type\": \"Identifier\",\n                        \"name\": \"styles\"\n                    },\n                    \"value\": {\n                        \"type\": \"Literal\"\n                    }\n                }\n            ]\n        }\n    }, function (chunk) {\n        chunk.value.value='';\n    })\n    .run();\n```\n\nLicense\n----\n\nMIT\n\n","maintainers":[{"name":"galkinrost","email":"galkinrost@gmail.com"}],"time":{"modified":"2022-06-13T03:35:40.116Z","created":"2014-04-01T17:22:47.349Z","0.0.1":"2014-04-01T17:22:50.612Z","0.0.3":"2014-04-01T17:25:19.171Z","0.0.4":"2014-04-04T09:28:47.476Z","0.0.5":"2014-04-05T14:15:07.672Z","0.0.6":"2014-04-05T17:28:05.287Z","0.0.7":"2014-04-08T10:54:41.368Z","1.0.0":"2014-04-17T16:52:53.154Z","1.0.1":"2014-07-29T15:35:15.354Z"},"readmeFilename":"README.md","repository":{"type":"git","url":"git://github.com/galkinrost/astra"},"bugs":{"url":"https://github.com/galkinrost/astra/issues"}}