@prantlf/railroad-diagrams
Version:
JavaScript library and command-line tools for drawing railroad syntax diagrams to SVG.
1 lines • 7.51 kB
Source Map (JSON)
{"version":3,"file":"rrdlint","sources":["../rrdlint.js"],"sourcesContent":["import globSync from 'tiny-glob/sync';\nimport { readFileSync } from 'fs';\nimport { join, extname } from 'path';\nimport { safeLoad } from 'js-yaml';\nimport rr, { Diagram } from 'railroad-diagrams';\n\nconst args = process.argv;\nlet verbose = false;\nconst patterns = [];\nlet forcedInputType;\n\nfunction usage () {\n console.log(`Checks the syntax of railroad diagrams in JSON, YAML or JavaScript.\n\nUsage: rrdlint [option...] [pattern...]\n\nOptions:\n -i|--input <type> read input from json, yaml or javascript. defaults to json\n -v|--verbose print checked file names and error stacktrace\n -V|--version print version number\n -h|--help print usage instructions\n\nIf no file name pattern is provided, standard input will be read.\nIf no input type is provided, it will be inferred from the file extension:\n\".json\" -> json, \".yaml\" or \".yml\" -> yaml, \".js\" -> javascript.\n \nExamples:\n cat foo.yaml | rrdlint -i yaml\n rrdlint diagrams/*`);\n process.exit(0);\n}\n\nif (!args.length) usage();\n\nfor (let i = 2, l = args.length; i < l; ++i) {\n const arg = args[i];\n let match;\n if ((match = /^(?:-|--)(?:(no)-)?(\\w+)$/.exec(arg))) {\n switch (match[2]) {\n case 'v': case 'verbose':\n verbose = true;\n continue;\n case 'i': case 'input':\n forcedInputType = args[++i];\n if (forcedInputType !== 'json' && forcedInputType !== 'yaml' && forcedInputType !== 'javascript') {\n console.error(`Invalid input type: \"${forcedInputType}\".`);\n process.exit(2);\n }\n continue;\n case 'V': case 'version':\n console.log(JSON.parse(readFileSync(join(\n __dirname, '../package.json'), 'utf-8')).version);\n process.exit(0);\n continue;\n case 'h': case 'help':\n usage();\n }\n console.error(`Unknown option: \"${match[0]}\".`);\n process.exit(2);\n }\n patterns.push(arg);\n}\n\nif (patterns.length) {\n for (const pattern of patterns) {\n const names = globSync(pattern, { filesOnly: true });\n for (const name of names) {\n let inputType;\n if (forcedInputType === undefined) {\n const ext = extname(name);\n switch (ext) {\n case '.json': inputType = 'json'; break;\n case '.yml': case '.yaml': inputType = 'yaml'; break;\n case '.js': inputType = 'javascript';\n }\n } else {\n inputType = forcedInputType;\n }\n run({ name, code: readFileSync(name, 'utf-8') }, inputType);\n }\n }\n}\n\nfunction run (source, inputType) {\n try {\n switch (inputType) {\n case 'javascript':\n fromJavaScript(source.code); break;\n case 'yaml':\n Diagram.fromJSON(safeLoad(source.code)); break;\n case 'json':\n default:\n Diagram.fromJSON(JSON.parse(source.code));\n }\n if (verbose) console.log(`${source.name}: OK`);\n } catch (error) {\n console.error(`${source.name}: ${error.message}`);\n if (verbose) console.log(error.stack);\n process.exitCode = 1;\n }\n}\n\nfunction fromJavaScript (input) {\n global.rr = rr;\n const diagramFunctions = `const { ${Object.keys(rr).join(', ')} } = rr;`;\n const createDiagram = new Function(`${diagramFunctions}\n${input}`);\n createDiagram();\n}\n\nif (!patterns.length) {\n let input = '';\n process.stdin.setEncoding('utf8');\n process.stdin\n .on('data', chunk => (input += chunk))\n .on('end', () => {\n run({ name: 'snippet', code: input }, forcedInputType);\n })\n .resume();\n}\n"],"names":["readFileSync","join","extname","Diagram","safeLoad","rr"],"mappings":"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"}