decode = function (encoded, callback) { var child = plantumlExecutor.exec([DECODE, encoded], callback) return { out: child.stdout } }
...
var app = express();
plantuml.useNailgun(); // Activate the usage of Nailgun
app.get('/png/:uml', function(req, res) {
res.set('Content-Type', 'image/png');
var decode = plantuml.decode(req.params.uml);
var gen = plantuml.generate({format: 'png'});
decode.out.pipe(gen.in);
gen.out.pipe(res);
});
app.get('/svg/:uml', function(req, res) {
...
encode = function (input, options, callback) { var args = arrangeArguments(input, options, callback) input = args.input options = args.options || {} callback = args.callback var encodeStream = new PlantumlEncodeStream() if (typeof callback === 'function') { var chunks = [] encodeStream.on('data', function (chunk) { chunks.push(chunk) }) encodeStream.on('end', function () { var data = Buffer.concat(chunks) callback(null, data.toString()) }) } if (!input) { return encodeFromStdin(encodeStream) } else { if (isPath(input, callback)) { return encodeFromFile(input, encodeStream) } else { return encodeFromText(input, encodeStream) } } }
...
gen.out.pipe(process.stdout)
}
}
function encode (file, options) {
var en
if (file) {
en = plantuml.encode(file)
} else if (options.text) {
en = plantuml.encode(options.text)
} else {
en = plantuml.encode()
process.stdin.pipe(en.in)
}
...
generate = function (input, options, callback) { var args = arrangeArguments(input, options, callback) input = args.input options = args.options || {} callback = args.callback var o = joinOptions([PIPE], options) var child = plantumlExecutor.exec(o, options.include, callback) if (!input) { return generateFromStdin(child) } else { if (isPath(input, callback)) { return generateFromFile(input, child) } else { return generateFromText(input, child) } } }
...
Diagrams can be created from source files.
```javascript
var plantuml = require('node-plantuml');
var fs = require('fs');
var gen = plantuml.generate("input-file");
gen.out.pipe(fs.createWriteStream("output-file.png");
```
If your application will be making multiple PlantUML requests, it might be a good idea to enable the usage of Nailgun.
Following is an example of a simple web server for generating images from encoded PlantUML source.
...
testdot = function (callback) { var child = plantumlExecutor.exec([TESTDOT]) var chunks = [] child.stdout.on('data', function (chunk) { chunks.push(chunk) }) child.stdout.on('end', function () { var data = Buffer.concat(chunks) var dotOkCheck = 'Installation seems OK. File generation OK' var dotOk = data.toString().indexOf(dotOkCheck) !== -1 if (typeof callback === 'function') callback(dotOk) }) return { out: child.stdout } }
...
function decode (url, options) {
var de = plantuml.decode(url)
de.out.pipe(process.stdout)
}
function testdot () {
var dot = plantuml.testdot()
dot.out.pipe(process.stdout)
}
commander.version(pack.version)
commander
.command('generate [file]')
...
useNailgun = function (callback) { var options = { address: LOCALHOST, port: GENERATE_PORT } nailgunServer = nailgun.createServer(options, function (port) { clientOptions = { host: LOCALHOST, port: port } ngClient.exec('ng-cp', [PLANTUML_JAR], clientOptions) ngClient.exec('ng-cp', [PLANTUML_NAIL_JAR], clientOptions) // Give Nailgun some time to load the classpath setTimeout(function () { nailgunRunning = true if (typeof callback === 'function') { callback() } }, 50) }) return nailgunServer }
...
```javascript
var express = require('express');
var plantuml = require('node-plantuml');
var app = express();
plantuml.useNailgun(); // Activate the usage of Nailgun
app.get('/png/:uml', function(req, res) {
res.set('Content-Type', 'image/png');
var decode = plantuml.decode(req.params.uml);
var gen = plantuml.generate({format: 'png'});
...
decode = function (encoded, callback) { var child = plantumlExecutor.exec([DECODE, encoded], callback) return { out: child.stdout } }
...
var app = express();
plantuml.useNailgun(); // Activate the usage of Nailgun
app.get('/png/:uml', function(req, res) {
res.set('Content-Type', 'image/png');
var decode = plantuml.decode(req.params.uml);
var gen = plantuml.generate({format: 'png'});
decode.out.pipe(gen.in);
gen.out.pipe(res);
});
app.get('/svg/:uml', function(req, res) {
...
encode = function (input, options, callback) { var args = arrangeArguments(input, options, callback) input = args.input options = args.options || {} callback = args.callback var encodeStream = new PlantumlEncodeStream() if (typeof callback === 'function') { var chunks = [] encodeStream.on('data', function (chunk) { chunks.push(chunk) }) encodeStream.on('end', function () { var data = Buffer.concat(chunks) callback(null, data.toString()) }) } if (!input) { return encodeFromStdin(encodeStream) } else { if (isPath(input, callback)) { return encodeFromFile(input, encodeStream) } else { return encodeFromText(input, encodeStream) } } }
...
gen.out.pipe(process.stdout)
}
}
function encode (file, options) {
var en
if (file) {
en = plantuml.encode(file)
} else if (options.text) {
en = plantuml.encode(options.text)
} else {
en = plantuml.encode()
process.stdin.pipe(en.in)
}
...
generate = function (input, options, callback) { var args = arrangeArguments(input, options, callback) input = args.input options = args.options || {} callback = args.callback var o = joinOptions([PIPE], options) var child = plantumlExecutor.exec(o, options.include, callback) if (!input) { return generateFromStdin(child) } else { if (isPath(input, callback)) { return generateFromFile(input, child) } else { return generateFromText(input, child) } } }
...
Diagrams can be created from source files.
```javascript
var plantuml = require('node-plantuml');
var fs = require('fs');
var gen = plantuml.generate("input-file");
gen.out.pipe(fs.createWriteStream("output-file.png");
```
If your application will be making multiple PlantUML requests, it might be a good idea to enable the usage of Nailgun.
Following is an example of a simple web server for generating images from encoded PlantUML source.
...
testdot = function (callback) { var child = plantumlExecutor.exec([TESTDOT]) var chunks = [] child.stdout.on('data', function (chunk) { chunks.push(chunk) }) child.stdout.on('end', function () { var data = Buffer.concat(chunks) var dotOkCheck = 'Installation seems OK. File generation OK' var dotOk = data.toString().indexOf(dotOkCheck) !== -1 if (typeof callback === 'function') callback(dotOk) }) return { out: child.stdout } }
...
function decode (url, options) {
var de = plantuml.decode(url)
de.out.pipe(process.stdout)
}
function testdot () {
var dot = plantuml.testdot()
dot.out.pipe(process.stdout)
}
commander.version(pack.version)
commander
.command('generate [file]')
...
useNailgun = function (callback) { var options = { address: LOCALHOST, port: GENERATE_PORT } nailgunServer = nailgun.createServer(options, function (port) { clientOptions = { host: LOCALHOST, port: port } ngClient.exec('ng-cp', [PLANTUML_JAR], clientOptions) ngClient.exec('ng-cp', [PLANTUML_NAIL_JAR], clientOptions) // Give Nailgun some time to load the classpath setTimeout(function () { nailgunRunning = true if (typeof callback === 'function') { callback() } }, 50) }) return nailgunServer }
...
```javascript
var express = require('express');
var plantuml = require('node-plantuml');
var app = express();
plantuml.useNailgun(); // Activate the usage of Nailgun
app.get('/png/:uml', function(req, res) {
res.set('Content-Type', 'image/png');
var decode = plantuml.decode(req.params.uml);
var gen = plantuml.generate({format: 'png'});
...
exec = function (argv, cwd, callback) { if (typeof argv === 'function') { callback = argv argv = undefined cwd = undefined } else if (typeof cwd === 'function') { callback = cwd cwd = undefined } var task if (nailgunRunning) { task = execWithNailgun(argv, cwd, callback) } else { task = execWithSpawn(argv, cwd, callback) } if (typeof callback === 'function') { var chunks = [] task.stdout.on('data', function (chunk) { chunks.push(chunk) }) task.stdout.on('end', function () { var data = Buffer.concat(chunks) callback(null, data) }) task.stdout.on('error', function () { callback(new Error('error while reading plantuml output'), null) }) } return task }
...
module.exports.generate = function (input, options, callback) {
var args = arrangeArguments(input, options, callback)
input = args.input
options = args.options || {}
callback = args.callback
var o = joinOptions([PIPE], options)
var child = plantumlExecutor.exec(o, options.include, callback)
if (!input) {
return generateFromStdin(child)
} else {
if (isPath(input, callback)) {
return generateFromFile(input, child)
} else {
...
useNailgun = function (callback) { var options = { address: LOCALHOST, port: GENERATE_PORT } nailgunServer = nailgun.createServer(options, function (port) { clientOptions = { host: LOCALHOST, port: port } ngClient.exec('ng-cp', [PLANTUML_JAR], clientOptions) ngClient.exec('ng-cp', [PLANTUML_NAIL_JAR], clientOptions) // Give Nailgun some time to load the classpath setTimeout(function () { nailgunRunning = true if (typeof callback === 'function') { callback() } }, 50) }) return nailgunServer }
...
```javascript
var express = require('express');
var plantuml = require('node-plantuml');
var app = express();
plantuml.useNailgun(); // Activate the usage of Nailgun
app.get('/png/:uml', function(req, res) {
res.set('Content-Type', 'image/png');
var decode = plantuml.decode(req.params.uml);
var gen = plantuml.generate({format: 'png'});
...