Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e9e4f41012 | |||
| 602a0892bf | |||
| 1b29590bc6 | |||
| 0b38f343b5 | |||
| f6762dd639 | |||
| 91a9a3b949 | |||
| 1f793a659b | |||
| 85c7757cff | |||
| e8d4529ff3 | |||
| 83f6ea4c0a | |||
| 51984d1dba |
@@ -0,0 +1,7 @@
|
||||
path_classifiers:
|
||||
docs:
|
||||
- docs
|
||||
generated:
|
||||
- dist
|
||||
test:
|
||||
- test
|
||||
@@ -1,6 +1,9 @@
|
||||
[](https://www.npmjs.com/package/fa-diagrams)
|
||||
[](https://travis-ci.org/Klemek/fa-diagrams)
|
||||
[](https://github.com/boyter/scc/#badges-beta)
|
||||
[](https://coveralls.io/github/Klemek/fa-diagrams?branch=master)
|
||||
[](https://lgtm.com/projects/g/Klemek/fa-diagrams/context:javascript)
|
||||
[](https://lgtm.com/projects/g/Klemek/fa-diagrams/alerts/)
|
||||
|
||||
# fa-diagrams
|
||||
**SVG diagrams built from Font-Awesome icons**
|
||||
@@ -392,6 +395,37 @@ links:
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>TOML data (click)</summary>
|
||||
<p>
|
||||
|
||||
<!-- data: example1 -->
|
||||
```toml
|
||||
[[nodes]]
|
||||
name = "node1"
|
||||
icon = "laptop-code"
|
||||
color = "#4E342E"
|
||||
bottom = "my app"
|
||||
|
||||
[[nodes]]
|
||||
name = "node2"
|
||||
icon = "globe"
|
||||
color = "#455A64"
|
||||
bottom = "world"
|
||||
|
||||
[[links]]
|
||||
from = "node1"
|
||||
to = "node2"
|
||||
color = "#333333"
|
||||
bottom = '"hello"'
|
||||
|
||||
[links.top]
|
||||
icon = "envelope"
|
||||
|
||||
```
|
||||
</p>
|
||||
</details>
|
||||
|
||||
### Example 2 : Web App
|
||||
|
||||

|
||||
@@ -551,4 +585,88 @@ links:
|
||||
|
||||
```
|
||||
</p>
|
||||
</details>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>TOML data (click)</summary>
|
||||
<p>
|
||||
|
||||
<!-- data: example2 -->
|
||||
```toml
|
||||
[options.placing]
|
||||
diagonals = false
|
||||
|
||||
[options.rendering.icons]
|
||||
color = "#00695C"
|
||||
|
||||
[options.rendering.links]
|
||||
color = "#26A69A"
|
||||
|
||||
[options.rendering.texts]
|
||||
color = "#004D40"
|
||||
font = "mono"
|
||||
font-size = 12
|
||||
margin = 0.25
|
||||
|
||||
[options.rendering.sub-icons]
|
||||
color = "#004D40"
|
||||
|
||||
[[nodes]]
|
||||
name = "client"
|
||||
icon = "laptop"
|
||||
bottom = "user"
|
||||
|
||||
[[nodes]]
|
||||
name = "page"
|
||||
icon = "file-code"
|
||||
top = "index.html"
|
||||
|
||||
[[nodes]]
|
||||
name = "js"
|
||||
icon = "js-square"
|
||||
bottom = "front-end"
|
||||
|
||||
[[nodes]]
|
||||
name = "server"
|
||||
icon = "node"
|
||||
bottom = "back-end"
|
||||
|
||||
[[nodes]]
|
||||
name = "db"
|
||||
icon = "database"
|
||||
|
||||
[[links]]
|
||||
from = "client"
|
||||
to = "page"
|
||||
|
||||
[[links]]
|
||||
from = "page"
|
||||
to = "js"
|
||||
type = "double"
|
||||
bottom = "VueJS"
|
||||
direction = "down"
|
||||
|
||||
[links.top]
|
||||
icon = "vuejs"
|
||||
|
||||
[[links]]
|
||||
from = "js"
|
||||
to = "server"
|
||||
type = "split-double"
|
||||
direction = "right"
|
||||
|
||||
[links.top]
|
||||
text = "Ajax"
|
||||
|
||||
[links.bottom]
|
||||
text = "JSON"
|
||||
|
||||
[[links]]
|
||||
from = "db"
|
||||
to = "server"
|
||||
type = "double"
|
||||
bottom = "Sequelize"
|
||||
|
||||
```
|
||||
</p>
|
||||
</details>
|
||||
|
||||
+10
-1
@@ -1,6 +1,7 @@
|
||||
const fs = require('fs');
|
||||
const yaml = require('js-yaml');
|
||||
const svg2img = require('svg2img');
|
||||
const toml = require('@iarna/toml');
|
||||
|
||||
const rendering = require('./src/rendering')({
|
||||
'scale': 0.05,
|
||||
@@ -52,6 +53,7 @@ const generatePreview = (name, exportSample, data) => {
|
||||
const jsRegex = new RegExp(`\\/\\/ data: ${name}([\\s\\S](?!};))*\n};`, 'm');
|
||||
const jsonRegex = new RegExp(`<!-- data: ${name} -->\\n\`\`\`json([\\s\\S](?!\`\`\`))*`, 'm');
|
||||
const yamlRegex = new RegExp(`<!-- data: ${name} -->\\n\`\`\`yaml([\\s\\S](?!\`\`\`))*`, 'm');
|
||||
const tomlRegex = new RegExp(`<!-- data: ${name} -->\\n\`\`\`toml([\\s\\S](?!\`\`\`))*`, 'm');
|
||||
|
||||
// JS object
|
||||
if (jsRegex.test(readme)) {
|
||||
@@ -73,9 +75,16 @@ ${JSON.stringify(data, null, 2)}`);
|
||||
\`\`\`yaml
|
||||
${yaml.safeDump(data)}`);
|
||||
}
|
||||
// TOML
|
||||
if (tomlRegex.test(readme)) {
|
||||
console.log(`preview ${name}: found TOML definition`);
|
||||
readme = readme.replace(tomlRegex, `<!-- data: ${name} -->
|
||||
\`\`\`toml
|
||||
${toml.stringify(data)}`);
|
||||
}
|
||||
|
||||
if (exportSample)
|
||||
fs.writeFileSync('docs/sample.yml', yaml.safeDump(data), {encoding: 'utf-8'});
|
||||
fs.writeFileSync('docs/sample.toml', toml.stringify(data), {encoding: 'utf-8'});
|
||||
const svg = faDiagrams.compute(data);
|
||||
fs.writeFileSync(`preview/${name}.svg`, svg, {encoding: 'utf-8'});
|
||||
svg2img(svg, function(error, buffer) {
|
||||
|
||||
+14
-9
@@ -3,9 +3,9 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>fa-diagrams example</title>
|
||||
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/js-yaml@3.13.1/dist/js-yaml.min.js"></script>
|
||||
<script src="jquery.min.js"></script>
|
||||
<script src="github-cdn.js"></script>
|
||||
<script src="toml-parser.js"></script>
|
||||
<style>
|
||||
* {
|
||||
padding: 0;
|
||||
@@ -44,13 +44,15 @@
|
||||
</head>
|
||||
<body>
|
||||
<div id="left">
|
||||
<textarea id="input" autocomplete="false" spellcheck="false"></textarea>
|
||||
<textarea id="input" autocomplete="false" spellcheck="false">loading...</textarea>
|
||||
</div>
|
||||
<div id="right"></div>
|
||||
<div id="right">loading...</div>
|
||||
<script>
|
||||
$(document).ready(() => {
|
||||
github('klemek/fa-diagrams').loadScripts('dist/fa-diagrams-data.min.js', 'dist/fa-diagrams.min.js').then(function () {
|
||||
$.get('sample.yml', (data) => {
|
||||
|
||||
github('klemek/fa-diagrams').loadScripts('dist/fa-diagrams-data.min.js', 'dist/fa-diagrams.min.js').then(() => {
|
||||
|
||||
$.get('sample.toml', (data) => {
|
||||
$('#input').val(data).trigger('paste');
|
||||
});
|
||||
|
||||
@@ -67,13 +69,16 @@
|
||||
data[key] = data[key].replace(/\\n/gm, '\n');
|
||||
});
|
||||
};
|
||||
let data = jsyaml.load($('#input').val());
|
||||
const parser = new TOMLParser();
|
||||
parser.parse($('#input').val());
|
||||
let data = parser.finish();
|
||||
console.log(data);
|
||||
findLineBreaks(data);
|
||||
$('#right').html(faDiagrams.compute(data));
|
||||
} catch (err) {
|
||||
$('#right').html(`<h2>${err.toString().replace(/\n/gm, '<br>')}</h2>`);
|
||||
$('#right').html(`<h2>${err.toString().replace(/\n/gm, '<br>')}</h2><h3>(More info at <a target="_blank" href="https://github.com/Klemek/fa-diagrams">fa-diagrams</a> and <a target="_blank" href="https://github.com/toml-lang/toml">TOML</a>)</h3>`);
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
}, 500);
|
||||
});
|
||||
});
|
||||
|
||||
Vendored
+2
File diff suppressed because one or more lines are too long
@@ -0,0 +1,73 @@
|
||||
[options.placing]
|
||||
diagonals = false
|
||||
|
||||
[options.rendering.icons]
|
||||
color = "#00695C"
|
||||
|
||||
[options.rendering.links]
|
||||
color = "#26A69A"
|
||||
|
||||
[options.rendering.texts]
|
||||
color = "#004D40"
|
||||
font = "mono"
|
||||
font-size = 12
|
||||
margin = 0.25
|
||||
|
||||
[options.rendering.sub-icons]
|
||||
color = "#004D40"
|
||||
|
||||
[[nodes]]
|
||||
name = "client"
|
||||
icon = "laptop"
|
||||
bottom = "user"
|
||||
|
||||
[[nodes]]
|
||||
name = "page"
|
||||
icon = "file-code"
|
||||
top = "index.html"
|
||||
|
||||
[[nodes]]
|
||||
name = "js"
|
||||
icon = "js-square"
|
||||
bottom = "front-end"
|
||||
|
||||
[[nodes]]
|
||||
name = "server"
|
||||
icon = "node"
|
||||
bottom = "back-end"
|
||||
|
||||
[[nodes]]
|
||||
name = "db"
|
||||
icon = "database"
|
||||
|
||||
[[links]]
|
||||
from = "client"
|
||||
to = "page"
|
||||
|
||||
[[links]]
|
||||
from = "page"
|
||||
to = "js"
|
||||
type = "double"
|
||||
bottom = "VueJS"
|
||||
direction = "down"
|
||||
|
||||
[links.top]
|
||||
icon = "vuejs"
|
||||
|
||||
[[links]]
|
||||
from = "js"
|
||||
to = "server"
|
||||
type = "split-double"
|
||||
direction = "right"
|
||||
|
||||
[links.top]
|
||||
text = "Ajax"
|
||||
|
||||
[links.bottom]
|
||||
text = "JSON"
|
||||
|
||||
[[links]]
|
||||
from = "db"
|
||||
to = "server"
|
||||
type = "double"
|
||||
bottom = "Sequelize"
|
||||
@@ -1,52 +0,0 @@
|
||||
options:
|
||||
placing:
|
||||
diagonals: false
|
||||
rendering:
|
||||
icons:
|
||||
color: '#00695C'
|
||||
links:
|
||||
color: '#26A69A'
|
||||
texts:
|
||||
color: '#004D40'
|
||||
font: mono
|
||||
font-size: 12
|
||||
margin: 0.25
|
||||
sub-icons:
|
||||
color: '#004D40'
|
||||
nodes:
|
||||
- name: client
|
||||
icon: laptop
|
||||
bottom: user
|
||||
- name: page
|
||||
icon: file-code
|
||||
top: index.html
|
||||
- name: js
|
||||
icon: js-square
|
||||
bottom: front-end
|
||||
- name: server
|
||||
icon: node
|
||||
bottom: back-end
|
||||
- name: db
|
||||
icon: database
|
||||
links:
|
||||
- from: client
|
||||
to: page
|
||||
- from: page
|
||||
to: js
|
||||
type: double
|
||||
top:
|
||||
icon: vuejs
|
||||
bottom: VueJS
|
||||
direction: down
|
||||
- from: js
|
||||
to: server
|
||||
type: split-double
|
||||
direction: right
|
||||
top:
|
||||
text: Ajax
|
||||
bottom:
|
||||
text: JSON
|
||||
- from: db
|
||||
to: server
|
||||
type: double
|
||||
bottom: Sequelize
|
||||
+1603
File diff suppressed because it is too large
Load Diff
Generated
+10
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "fa-diagrams",
|
||||
"version": "1.0.2",
|
||||
"version": "1.0.3",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -217,6 +217,12 @@
|
||||
"minimist": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"@iarna/toml": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.3.tgz",
|
||||
"integrity": "sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg==",
|
||||
"dev": true
|
||||
},
|
||||
"@jest/console": {
|
||||
"version": "24.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz",
|
||||
@@ -4291,9 +4297,9 @@
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.14",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
|
||||
"integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.memoize": {
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@iarna/toml": "^2.2.3",
|
||||
"browserify": "^16.3.0",
|
||||
"coveralls": "^3.0.4",
|
||||
"jest": "^24.8.0",
|
||||
|
||||
Reference in New Issue
Block a user