asciidoctor-diagram 2.1.2 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +12 -0
- data/docs/antora.yml +1 -1
- data/docs/modules/ROOT/pages/index.adoc +1 -1
- data/docs/modules/ROOT/partials/advanced.adoc +49 -6
- data/docs/modules/ROOT/partials/create_diagram.adoc +45 -43
- data/docs/modules/ROOT/partials/uris.adoc +3 -2
- data/lib/asciidoctor-diagram.rb +1 -0
- data/lib/asciidoctor-diagram/a2s.rb +1 -0
- data/lib/asciidoctor-diagram/a2s/extension.rb +4 -0
- data/lib/asciidoctor-diagram/barcode.rb +11 -0
- data/lib/asciidoctor-diagram/barcode/converter.rb +157 -0
- data/lib/asciidoctor-diagram/barcode/dependencies.rb +10 -0
- data/lib/asciidoctor-diagram/barcode/extension.rb +47 -0
- data/lib/asciidoctor-diagram/barcode/svg_outputter.rb +12 -0
- data/lib/asciidoctor-diagram/blockdiag.rb +1 -0
- data/lib/asciidoctor-diagram/blockdiag/extension.rb +5 -0
- data/lib/asciidoctor-diagram/bpmn.rb +1 -0
- data/lib/asciidoctor-diagram/bpmn/extension.rb +4 -0
- data/lib/asciidoctor-diagram/bytefield.rb +1 -0
- data/lib/asciidoctor-diagram/bytefield/extension.rb +4 -0
- data/lib/asciidoctor-diagram/diagram_processor.rb +52 -4
- data/lib/asciidoctor-diagram/diagram_source.rb +16 -0
- data/lib/asciidoctor-diagram/diagrams.rb +1 -0
- data/lib/asciidoctor-diagram/diagrams/extension.rb +4 -0
- data/lib/asciidoctor-diagram/ditaa.rb +1 -0
- data/lib/asciidoctor-diagram/ditaa/extension.rb +4 -0
- data/lib/asciidoctor-diagram/dpic.rb +1 -0
- data/lib/asciidoctor-diagram/dpic/extension.rb +4 -0
- data/lib/asciidoctor-diagram/erd.rb +1 -0
- data/lib/asciidoctor-diagram/erd/extension.rb +4 -0
- data/lib/asciidoctor-diagram/gnuplot.rb +1 -0
- data/lib/asciidoctor-diagram/gnuplot/extension.rb +4 -0
- data/lib/asciidoctor-diagram/graphviz.rb +1 -0
- data/lib/asciidoctor-diagram/graphviz/extension.rb +4 -0
- data/lib/asciidoctor-diagram/lilypond.rb +1 -0
- data/lib/asciidoctor-diagram/lilypond/extension.rb +4 -0
- data/lib/asciidoctor-diagram/meme.rb +1 -0
- data/lib/asciidoctor-diagram/meme/extension.rb +14 -16
- data/lib/asciidoctor-diagram/mermaid.rb +1 -0
- data/lib/asciidoctor-diagram/mermaid/extension.rb +4 -0
- data/lib/asciidoctor-diagram/msc.rb +1 -0
- data/lib/asciidoctor-diagram/msc/extension.rb +4 -0
- data/lib/asciidoctor-diagram/nomnoml.rb +1 -0
- data/lib/asciidoctor-diagram/nomnoml/extension.rb +4 -0
- data/lib/asciidoctor-diagram/pikchr.rb +1 -0
- data/lib/asciidoctor-diagram/pikchr/extension.rb +4 -0
- data/lib/asciidoctor-diagram/plantuml.rb +1 -0
- data/lib/asciidoctor-diagram/plantuml/extension.rb +8 -0
- data/lib/asciidoctor-diagram/salt.rb +1 -0
- data/lib/asciidoctor-diagram/shaape.rb +1 -0
- data/lib/asciidoctor-diagram/shaape/extension.rb +4 -0
- data/lib/asciidoctor-diagram/smcat.rb +1 -0
- data/lib/asciidoctor-diagram/smcat/extension.rb +4 -0
- data/lib/asciidoctor-diagram/svgbob.rb +1 -0
- data/lib/asciidoctor-diagram/svgbob/extension.rb +4 -0
- data/lib/asciidoctor-diagram/symbolator.rb +1 -0
- data/lib/asciidoctor-diagram/symbolator/extension.rb +4 -0
- data/lib/asciidoctor-diagram/syntrax.rb +1 -0
- data/lib/asciidoctor-diagram/syntrax/converter.rb +1 -1
- data/lib/asciidoctor-diagram/syntrax/extension.rb +4 -0
- data/lib/asciidoctor-diagram/tikz.rb +1 -0
- data/lib/asciidoctor-diagram/tikz/extension.rb +4 -0
- data/lib/asciidoctor-diagram/umlet.rb +1 -0
- data/lib/asciidoctor-diagram/umlet/extension.rb +4 -0
- data/lib/asciidoctor-diagram/vega.rb +2 -0
- data/lib/asciidoctor-diagram/vega/extension.rb +4 -0
- data/lib/asciidoctor-diagram/version.rb +1 -1
- data/lib/asciidoctor-diagram/wavedrom.rb +1 -0
- data/lib/asciidoctor-diagram/wavedrom/extension.rb +4 -0
- data/spec/a2s_spec.rb +4 -0
- data/spec/barcode_spec.rb +176 -0
- data/spec/blockdiag_spec.rb +4 -0
- data/spec/bpmn_spec.rb +4 -0
- data/spec/bytefield_spec.rb +4 -0
- data/spec/diagrams_spec.rb +4 -0
- data/spec/ditaa_spec.rb +4 -0
- data/spec/dpic_spec.rb +4 -0
- data/spec/erd_spec.rb +4 -0
- data/spec/gnuplot_spec.rb +4 -0
- data/spec/graphviz_spec.rb +4 -0
- data/spec/lilypond_spec.rb +4 -0
- data/spec/mermaid_spec.rb +4 -0
- data/spec/msc_spec.rb +4 -0
- data/spec/nomnoml_spec.rb +4 -0
- data/spec/pikchr_spec.rb +4 -0
- data/spec/plantuml_spec.rb +30 -1
- data/spec/shaape_spec.rb +4 -0
- data/spec/shared_examples.rb +161 -0
- data/spec/smcat_spec.rb +4 -0
- data/spec/svgbob_spec.rb +4 -0
- data/spec/symbolator_spec.rb +4 -0
- data/spec/syntrax_spec.rb +4 -0
- data/spec/test_helper.rb +3 -1
- data/spec/tikz_spec.rb +4 -0
- data/spec/umlet_spec.rb +3 -0
- data/spec/vega_spec.rb +5 -0
- data/spec/wavedrom_spec.rb +4 -0
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3bb7f41e7e990ee0daaa88f39381764b379e6c14306c92e8f1e2357c736d06f
|
4
|
+
data.tar.gz: 4b83756e522e433023555cb88100e104a19114131d036407f64c3866c55427f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cf522712d792040de6f53a28fc378be74cf1193449eb80e7fb7684f194b0123d1e99a96349937e777f08d80c3d74b8918526eac48fba15f01a757ee0ff5adb0
|
7
|
+
data.tar.gz: 0c766a4cdb12d395aa8a1d90b4c92be755e09c556ee5c7cb3b0c81d7150d17aa670c52063cdca655c4c26fe63533698f5e6f887e8c3689061ee1d323d56d1b7c
|
data/CHANGELOG.adoc
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
= Asciidoctor-diagram Changelog
|
2
2
|
|
3
|
+
== 2.2.0
|
4
|
+
|
5
|
+
Enhancements::
|
6
|
+
|
7
|
+
* All diagram macros can now be used as inline macros
|
8
|
+
* Add support for barcodes
|
9
|
+
|
10
|
+
Bug Fixes::
|
11
|
+
|
12
|
+
* Issue #358: Improve error handling when rendering is delegated to an external server (@ahus1)
|
13
|
+
* Issue #350: Restore support for document level `syntrax-style` attribute.
|
14
|
+
|
3
15
|
== 2.1.2
|
4
16
|
|
5
17
|
Enhancements::
|
data/docs/antora.yml
CHANGED
@@ -5,7 +5,7 @@ include::partial$uris.adoc[]
|
|
5
5
|
|
6
6
|
Asciidoctor Diagram is a set of Asciidoctor extensions that enable you to add diagrams, which you describe using plain text, to your AsciiDoc document.
|
7
7
|
|
8
|
-
The extensions supports the {uri-a2s}[AsciiToSVG], BlockDiag ({uri-blockdiag}[BlockDiag], {uri-seqdiag}[SeqDiag], {uri-actdiag}[ActDiag], {uri-nwdiag}[NwDiag]), {uri-bytefield}[Bytefield-SVG], {uri-ditaa}[Ditaa], {uri-dpic}[dpic], {uri-erd}[Erd], {uri-gnuplot}[Gnuplot], {uri-dot}[GraphViz], {uri-mermaid}[Mermaid], {uri-mscgen}[Msc], {uri-nomnoml}[Nomnoml], {uri-pikchr}[Pikchr], {uri-plantuml}[PlantUML], {uri-shaape}[Shaape], {uri-smcat}[State Machine Cat], {uri-svgbob}[SvgBob], {uri-symbolator}[Symbolator], {uri-syntrax}[Syntrax], {uri-umlet}[UMLet], {uri-vega}[Vega], {uri-vegalite}[Vega-Lite] and {uri-wavedrom}[WaveDrom] syntax.
|
8
|
+
The extensions supports the {uri-a2s}[AsciiToSVG], BlockDiag ({uri-blockdiag}[BlockDiag], {uri-seqdiag}[SeqDiag], {uri-actdiag}[ActDiag], {uri-nwdiag}[NwDiag]), {uri-bytefield}[Bytefield-SVG], {uri-ditaa}[Ditaa], {uri-dpic}[dpic], {uri-erd}[Erd], {uri-gnuplot}[Gnuplot], {uri-dot}[GraphViz], {uri-mermaid}[Mermaid], {uri-mscgen}[Msc], {uri-nomnoml}[Nomnoml], {uri-pikchr}[Pikchr], {uri-plantuml}[PlantUML], {uri-shaape}[Shaape], {uri-smcat}[State Machine Cat], {uri-svgbob}[SvgBob], {uri-symbolator}[Symbolator], {uri-syntrax}[Syntrax] / {uri-jsyntrax}[JSyntrax], {uri-umlet}[UMLet], {uri-vega}[Vega], {uri-vegalite}[Vega-Lite] and {uri-wavedrom}[WaveDrom] syntax.
|
9
9
|
|
10
10
|
Each extension runs the diagram processor to generate an SVG, PNG, or TXT file from the input text.
|
11
11
|
The generated file is then inserted into your converted document.
|
@@ -26,17 +26,17 @@ You can then manually register the extensions at the appropriate times using the
|
|
26
26
|
|
27
27
|
This document explains the various features of asciidoctor-diagram blocks using ditaa diagrams as an example.
|
28
28
|
|
29
|
-
=== Diagram
|
29
|
+
=== Diagram Macros
|
30
30
|
|
31
|
-
The diagram extensions can also be used in
|
31
|
+
The diagram extensions can also be used in inline, or block macro form.
|
32
32
|
|
33
33
|
.Anatomy of a diagram block macro
|
34
34
|
----
|
35
|
-
|
35
|
+
diagram-type::source-file-name[format=output-format] // <1> <2> <3>
|
36
36
|
----
|
37
|
-
<1> The macro name
|
37
|
+
<1> The macro name specifies the diagram syntax that is being used.
|
38
38
|
<2> The source file name specifies the external file that contains the diagram source code.
|
39
|
-
<3> The
|
39
|
+
<3> The `format` attribute determines the output image format to use. If a format is not specified, the default output format for the chosen diagram type will be used.
|
40
40
|
|
41
41
|
When the source file name is a relative path it is resolved with respect to the location of the document being processed.
|
42
42
|
|
@@ -93,7 +93,7 @@ The following table lists the tools that are required for each diagram type, the
|
|
93
93
|
|smcat |{uri-smcat}[State Machine Cat] |`smcat`
|
94
94
|
|svgbob |{uri-svgbob}[SvgBob] |`svgbob`
|
95
95
|
|symbolator |{uri-symbolator}[Symbolator] |`symbolator`
|
96
|
-
|syntrax |{uri-syntrax}[Syntrax]
|
96
|
+
|syntrax |{uri-syntrax}[Syntrax]/{uri-jsyntrax}[JSyntrax] |`syntrax`
|
97
97
|
|tikz |A TeX distribution that supports {uri-tikz}[TikZ] |`pdflatex` and `pdf2svg`
|
98
98
|
|umlet |{uri-umlet}[Umlet] |`umlet`
|
99
99
|
|vega |{uri-vega}[vg2png] and/or {uri-vega}[vg2png] |`vg2png` and `vg2svg`
|
@@ -120,6 +120,35 @@ The target of the block macro tells the extension which image to use as backgrou
|
|
120
120
|
The first two positional attributes are `top` and `bottom` and are used for the top and bottom label.
|
121
121
|
Occurrences of `//` surrounded by whitespace are interpreted as line breaks.
|
122
122
|
|
123
|
+
[[barcode]]
|
124
|
+
=== The Barcode Extension
|
125
|
+
|
126
|
+
The barcode extension provides barcode rendering.
|
127
|
+
Barcode macros can be specified using blocks, inline macros or block macros using one of the following templates.
|
128
|
+
|
129
|
+
[source, asciidoc]
|
130
|
+
------
|
131
|
+
// Barcode block
|
132
|
+
[<type>, <attributes>] <1> <2>
|
133
|
+
----
|
134
|
+
<content> <3>
|
135
|
+
----
|
136
|
+
|
137
|
+
// Barcode block macro
|
138
|
+
<type>::<content>[<attributes>]
|
139
|
+
|
140
|
+
// Barcode inline macro
|
141
|
+
<type>::<content>[<attributes>]
|
142
|
+
------
|
143
|
+
<1> Type barcode type. One of `bookland`, `codabar`, `code25`, `code25iata`, `code25interleaved`, `code39`, `code93`, `code128`, `code128a`, `code128b`, `code128c`, `ean8`, `ean13`, `gs1_128`, `qrcode`, or `upca`.
|
144
|
+
<2> Barcode attributes (see the <<barcode_attributes>> attributes section)
|
145
|
+
<3> The content to encode in the barcode
|
146
|
+
|
147
|
+
By default the `content` field of the barcode macros will be interpreted as the barcode content.
|
148
|
+
This works fine for simple barcodes, but for complex data (e.g., a vCard encoded as a QR code) this is not practical.
|
149
|
+
If the `external` attribute is set on a barcode macro, the target is interpreted as a file path.
|
150
|
+
The barcode content will then be obtained by reading the contents of the referenced file.
|
151
|
+
|
123
152
|
=== Diagram Attributes
|
124
153
|
|
125
154
|
Certain diagram types allow image generation to be customized using attributes.
|
@@ -174,6 +203,20 @@ If the maximum size is exceeded, POST requests are used instead
|
|
174
203
|
|noblur |unspecified |Disable drop-shadow blurring
|
175
204
|
|===
|
176
205
|
|
206
|
+
[[barcode_attributes]]
|
207
|
+
==== Barcode
|
208
|
+
|
209
|
+
[cols=">,<,<",options="header"]
|
210
|
+
|===
|
211
|
+
|Name |Default value |Description
|
212
|
+
|height |100 |The height of the bars. (1D only, 2D uses ydim)
|
213
|
+
|xdim |1 |The width of the narrowest bar in a barcode. Thicker bars are multiples of the xdim.
|
214
|
+
|ydim |Same as xdim |This is the same as xdim, but for the height of the blocks in a 2D barcode.
|
215
|
+
|margin |10 |The width of the quiet zone around the barcode.
|
216
|
+
|foreground |black |The color of the bars specified as a 3 or 6 digit hex RGB value or HTML color name.
|
217
|
+
|background |white |The color of the background specified as a 3 or 6 digit hex RGB value or HTML color name.
|
218
|
+
|===
|
219
|
+
|
177
220
|
==== Blockdiag
|
178
221
|
|
179
222
|
[cols=">,<,<",options="header"]
|
@@ -4,14 +4,14 @@ A diagram is written inside a literal block, which can accept several attributes
|
|
4
4
|
|
5
5
|
.Anatomy of a diagram
|
6
6
|
----
|
7
|
-
[diagram-type,
|
7
|
+
[diagram-type, target=output-file-name, format=output-format] // <1> <2> <3>
|
8
8
|
.... // <4>
|
9
9
|
Diagram in appropriate syntax
|
10
10
|
....
|
11
11
|
----
|
12
|
-
<1> The first
|
13
|
-
<2> The
|
14
|
-
<3> The
|
12
|
+
<1> The first value in the attribute list specifies the diagram syntax that is being used.
|
13
|
+
<2> The `target` attribute specifies the basename of the image file that will be generated. If this attribute is omitted an auto-generated name will be used instead.
|
14
|
+
<3> The `format` attribute determines the output image format to use. If a format is not specified, the default output format for the chosen diagram type will be used.
|
15
15
|
<4> Place the attribute list directly on top of the delimited literal block (+....+). You can also use an open block as an alternative (`--`).
|
16
16
|
|
17
17
|
The following diagram types and output formats are available:
|
@@ -20,38 +20,40 @@ The following diagram types and output formats are available:
|
|
20
20
|
|
21
21
|
[cols=">,5*^",options="header"]
|
22
22
|
|===
|
23
|
-
|Diagram Type
|
24
|
-
|{uri-a2s}[a2s]
|
25
|
-
|{uri-actdiag}[actdiag]
|
26
|
-
|
|
27
|
-
|{uri-
|
28
|
-
|{uri-
|
29
|
-
|{uri-
|
30
|
-
|{uri-
|
31
|
-
|{uri-
|
32
|
-
|{uri-
|
33
|
-
|{uri-
|
34
|
-
|{uri-
|
35
|
-
|
36
|
-
|{
|
37
|
-
|{uri-
|
38
|
-
|{uri-
|
39
|
-
|{uri-
|
40
|
-
|{uri-
|
41
|
-
|{uri-
|
42
|
-
|{uri-
|
43
|
-
|{uri-
|
44
|
-
|{uri-
|
45
|
-
|{uri-
|
46
|
-
|{uri-
|
47
|
-
|{uri-
|
48
|
-
|{uri-
|
49
|
-
|{uri-
|
50
|
-
|{uri-
|
51
|
-
|{uri-
|
52
|
-
|{uri-
|
53
|
-
|{uri-
|
54
|
-
|{uri-
|
23
|
+
|Diagram Type |gif |pdf |png |svg |txt
|
24
|
+
|{uri-a2s}[a2s] | | | |{check}|
|
25
|
+
|{uri-actdiag}[actdiag] | |{check}|{check}|{check}|
|
26
|
+
|<barcode,barcode>> | | |{check}| |{check}
|
27
|
+
|{uri-blockdiag}[blockdiag] | |{check}|{check}|{check}|
|
28
|
+
|{uri-bpmn}[bpmn] | |{check}|{check}|{check}|
|
29
|
+
|{uri-bytefield}[bytefield] | | | |{check}|
|
30
|
+
|{uri-diagrams}[diagrams] | |{check}|{check}|{check}|
|
31
|
+
|{uri-ditaa}[ditaa] | | |{check}|{check}|
|
32
|
+
|{uri-dpic}[dpic] | | | |{check}|
|
33
|
+
|{uri-erd}[erd] | | |{check}|{check}|
|
34
|
+
|{uri-gnuplot}[gnuplot] |{check}| |{check}|{check}|{check}
|
35
|
+
|{uri-dot}[graphviz] | |{check}|{check}|{check}|
|
36
|
+
|<<meme,meme>> |{check}| |{check}| |
|
37
|
+
|{uri-mermaid}[mermaid] | |{check}|{check}|{check}|
|
38
|
+
|{uri-mscgen}[msc] | | |{check}|{check}|
|
39
|
+
|{uri-nomnoml}[nomnoml] | | | |{check}|
|
40
|
+
|{uri-nwdiag}[nwdiag] | |{check}|{check}|{check}|
|
41
|
+
|{uri-packetdiag}[packetdiag] | |{check}|{check}|{check}|
|
42
|
+
|{uri-pikchr}[pikchr] | | | |{check}|
|
43
|
+
|{uri-plantuml}[plantuml] | | |{check}|{check}|{check}
|
44
|
+
|{uri-rackdiag}[rackdiag] | |{check}|{check}|{check}|
|
45
|
+
|{uri-seqdiag}[seqdiag] | |{check}|{check}|{check}|
|
46
|
+
|{uri-shaape}[shaape] | | |{check}|{check}|
|
47
|
+
|{uri-smcat}[smcat] | | | |{check}|
|
48
|
+
|{uri-svgbob}[svgbob] | | | |{check}|
|
49
|
+
|{uri-symbolator}[symbolator] | |{check}|{check}|{check}|
|
50
|
+
|{uri-syntrax}[syntrax] (Syntrax) | |{check}|{check}|{check}|
|
51
|
+
|{uri-jsyntrax}[syntrax] (JSyntrax)| | |{check}|{check}|
|
52
|
+
|{uri-tikz}[tikz] | |{check}| |{check}|
|
53
|
+
|{uri-umlet}[umlet] |{check}|{check}|{check}|{check}|
|
54
|
+
|{uri-vega}[vega] | | |{check}|{check}|
|
55
|
+
|{uri-vegalite}[vegalite] | | |{check}|{check}|
|
56
|
+
|{uri-wavedrom}[wavedrom] | | |{check}|{check}|
|
55
57
|
|===
|
56
58
|
|
57
59
|
:!check:
|
@@ -82,25 +84,25 @@ The example below illustrates the structure of a basic ditaa block written direc
|
|
82
84
|
....
|
83
85
|
----
|
84
86
|
|
85
|
-
The ditaa block above results in the following
|
87
|
+
The ditaa block above results in the following diagram.
|
86
88
|
|
87
89
|
.Rendered ditaa diagram
|
88
90
|
image::asciidoctor-diagram-process.png[Asciidoctor Diagram process diagram,650,319]
|
89
91
|
|
90
92
|
The rendered ditaa diagram above gets the file name `58372f7d2ceffae9e91fd0a7cbb080b6.png`.
|
91
93
|
That long number is the checksum of the source code calculated by asciidoctor-diagram.
|
92
|
-
If you want to give your
|
94
|
+
If you want to give your image files a more meaningful name, fill in the `target` attribute.
|
93
95
|
|
94
96
|
This can be done by either specifying it as the second positional attribute or as a named attribute.
|
95
97
|
Both examples below would result in a file called `ditaa-diagram.png`.
|
96
98
|
|
97
99
|
....
|
98
|
-
[ditaa, "ditaa-diagram"]
|
100
|
+
[ditaa, target="ditaa-diagram"]
|
99
101
|
----
|
100
102
|
<snip>
|
101
103
|
----
|
102
104
|
|
103
|
-
[ditaa,
|
105
|
+
[ditaa, "ditaa-diagram"]
|
104
106
|
----
|
105
107
|
<snip>
|
106
108
|
----
|
@@ -112,7 +114,7 @@ The example below illustrates the structure of a basic PlantUML block written di
|
|
112
114
|
.PlantUML Diagram Syntax
|
113
115
|
[source]
|
114
116
|
----
|
115
|
-
[plantuml, diagram-classes, png] // <1> <2> <3>
|
117
|
+
[plantuml, target=diagram-classes, format=png] // <1> <2> <3>
|
116
118
|
....
|
117
119
|
class BlockProcessor
|
118
120
|
class DiagramBlock
|
@@ -125,8 +127,8 @@ DiagramBlock <|-- PlantUmlBlock
|
|
125
127
|
....
|
126
128
|
----
|
127
129
|
<1> The diagram is written in PlantUML so the first positional attribute is assigned the `plantuml` diagram type.
|
128
|
-
<2> The name of the
|
129
|
-
<3> The output format is
|
130
|
+
<2> The name of the diagram file is given by the `target` attribute.
|
131
|
+
<3> The output format is specified using the `format` attribute
|
130
132
|
|
131
133
|
.Rendered PlantUML diagram
|
132
134
|
image::asciidoctor-diagram-classes.png[Asciidoctor Diagram classes diagram]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
:uri-a2s: https://github.com/
|
1
|
+
:uri-a2s: https://github.com/asciitosvg/asciitosvg
|
2
2
|
:uri-actdiag: http://blockdiag.com/en/actdiag/index.html
|
3
3
|
:uri-asciidoctor-api: http://asciidoctor.org/docs/user-manual/#api
|
4
4
|
:uri-asciidoctor-extensions: http://asciidoctor.org/docs/user-manual/#extension-points
|
@@ -31,10 +31,11 @@
|
|
31
31
|
:uri-svgbob: https://github.com/ivanceras/svgbobrus
|
32
32
|
:uri-symbolator: https://github.com/kevinpt/symbolator
|
33
33
|
:uri-syntrax: https://kevinpt.github.io/syntrax/
|
34
|
+
:uri-jsyntrax: https://atp-mipt.github.io/jsyntrax/
|
34
35
|
:uri-tikz: https://github.com/pgf-tikz/pgf
|
35
36
|
:uri-umlet: http://www.umlet.com/
|
36
37
|
:uri-vega: https://vega.github.io/vega/
|
37
38
|
:uri-vegalite: https://vega.github.io/vega-lite/
|
38
39
|
:uri-wavedrom: http://wavedrom.com
|
39
40
|
:uri-wavedromeditor: https://github.com/wavedrom/wavedrom.github.io/releases
|
40
|
-
:uri-wavedromcli: https://github.com/wavedrom/cli
|
41
|
+
:uri-wavedromcli: https://github.com/wavedrom/cli
|
data/lib/asciidoctor-diagram.rb
CHANGED
@@ -4,4 +4,5 @@ require_relative 'a2s/extension'
|
|
4
4
|
Asciidoctor::Extensions.register do
|
5
5
|
block Asciidoctor::Diagram::AsciiToSvgBlockProcessor, :a2s
|
6
6
|
block_macro Asciidoctor::Diagram::AsciiToSvgBlockMacroProcessor, :a2s
|
7
|
+
inline_macro Asciidoctor::Diagram::AsciiToSvgInlineMacroProcessor, :a2s
|
7
8
|
end
|
@@ -10,5 +10,9 @@ module Asciidoctor
|
|
10
10
|
class AsciiToSvgBlockMacroProcessor < DiagramBlockMacroProcessor
|
11
11
|
use_converter AsciiToSvgConverter
|
12
12
|
end
|
13
|
+
|
14
|
+
class AsciiToSvgInlineMacroProcessor < DiagramInlineMacroProcessor
|
15
|
+
use_converter AsciiToSvgConverter
|
16
|
+
end
|
13
17
|
end
|
14
18
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'asciidoctor/extensions'
|
2
|
+
require_relative 'barcode/extension'
|
3
|
+
require_relative 'barcode/converter'
|
4
|
+
|
5
|
+
Asciidoctor::Extensions.register do
|
6
|
+
Asciidoctor::Diagram::BarcodeConverter::BARCODE_TYPES.each do |type|
|
7
|
+
block Asciidoctor::Diagram::BarcodeBlockProcessor, type, :type => type
|
8
|
+
block_macro Asciidoctor::Diagram::BarcodeBlockMacroProcessor, type, :type => type
|
9
|
+
inline_macro Asciidoctor::Diagram::BarcodeInlineMacroProcessor, type, :type => type
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
require_relative '../diagram_converter'
|
2
|
+
require_relative 'dependencies'
|
3
|
+
|
4
|
+
module Asciidoctor
|
5
|
+
module Diagram
|
6
|
+
# @private
|
7
|
+
class BarcodeConverter
|
8
|
+
BARCODE_TYPES = [
|
9
|
+
:bookland,
|
10
|
+
:codabar,
|
11
|
+
:code25,
|
12
|
+
:code25iata,
|
13
|
+
:code25interleaved,
|
14
|
+
:code39,
|
15
|
+
:code93,
|
16
|
+
:code128,
|
17
|
+
:code128a,
|
18
|
+
:code128b,
|
19
|
+
:code128c,
|
20
|
+
:ean8,
|
21
|
+
:ean13,
|
22
|
+
:gs1_128,
|
23
|
+
:qrcode,
|
24
|
+
:upca,
|
25
|
+
]
|
26
|
+
|
27
|
+
include DiagramConverter
|
28
|
+
|
29
|
+
def supported_formats
|
30
|
+
[:png, :svg, :txt]
|
31
|
+
end
|
32
|
+
|
33
|
+
def collect_options(source)
|
34
|
+
options = {}
|
35
|
+
|
36
|
+
options[:xdim] = source.attr('xdim')
|
37
|
+
options[:ydim] = source.attr('ydim')
|
38
|
+
options[:margin] = source.attr('margin')
|
39
|
+
options[:height] = source.attr('height')
|
40
|
+
options[:foreground] = source.attr('foreground')
|
41
|
+
options[:background] = source.attr('background')
|
42
|
+
|
43
|
+
[:xdim, :ydim, :margin, :height].each { |o| options[o] = options[o].to_i if options[o] }
|
44
|
+
|
45
|
+
options
|
46
|
+
end
|
47
|
+
|
48
|
+
def convert(source, format, options)
|
49
|
+
BarcodeDependencies::BARCODE_DEPENDENCIES.each_pair { |n, v| source.ensure_gem(n, v) }
|
50
|
+
require 'barby'
|
51
|
+
|
52
|
+
code = source.code
|
53
|
+
type = source.config[:type]
|
54
|
+
|
55
|
+
case type
|
56
|
+
when :bookland
|
57
|
+
require 'barby/barcode/bookland'
|
58
|
+
barcode = Barby::Bookland.new(code)
|
59
|
+
when :codabar
|
60
|
+
require 'barby/barcode/codabar'
|
61
|
+
barcode = Barby::Codabar.new(code)
|
62
|
+
when :code25
|
63
|
+
require 'barby/barcode/code_25'
|
64
|
+
barcode = Barby::Code25.new(code)
|
65
|
+
when :code25iata
|
66
|
+
require 'barby/barcode/code_25_iata'
|
67
|
+
barcode = Barby::Code25IATA.new(code)
|
68
|
+
when :code25interleaved
|
69
|
+
require 'barby/barcode/code_25_interleaved'
|
70
|
+
barcode = Barby::Code25Interleaved.new(code)
|
71
|
+
when :code39
|
72
|
+
require 'barby/barcode/code_39'
|
73
|
+
barcode = Barby::Code39.new(code)
|
74
|
+
when :code93
|
75
|
+
require 'barby/barcode/code_93'
|
76
|
+
barcode = Barby::Code93.new(code)
|
77
|
+
when :code128
|
78
|
+
require 'barby/barcode/code_128'
|
79
|
+
barcode = Barby::Code128.new(code)
|
80
|
+
when :code128a
|
81
|
+
require 'barby/barcode/code_128'
|
82
|
+
barcode = Barby::Code128A.new(code)
|
83
|
+
when :code128b
|
84
|
+
require 'barby/barcode/code_128'
|
85
|
+
barcode = Barby::Code128B.new(code)
|
86
|
+
when :code128c
|
87
|
+
require 'barby/barcode/code_128'
|
88
|
+
barcode = Barby::Code128C.new(code)
|
89
|
+
when :ean8
|
90
|
+
require 'barby/barcode/ean_8'
|
91
|
+
barcode = Barby::EAN8.new(code)
|
92
|
+
when :ean13
|
93
|
+
require 'barby/barcode/ean_13'
|
94
|
+
barcode = Barby::EAN13.new(code)
|
95
|
+
when :gs1_128
|
96
|
+
require 'barby/barcode/code_128'
|
97
|
+
code = code.gsub /\([^)]+\)/ do |control|
|
98
|
+
case control.upcase
|
99
|
+
when '(FNC1)'
|
100
|
+
Barby::Code128::FNC1
|
101
|
+
when '(FNC2)'
|
102
|
+
Barby::Code128::FNC2
|
103
|
+
when '(FNC3)'
|
104
|
+
Barby::Code128::FNC3
|
105
|
+
when '(FNC4)'
|
106
|
+
Barby::Code128::FNC4
|
107
|
+
when '(CODEA)'
|
108
|
+
Barby::Code128::CODEA
|
109
|
+
when '(CODEB)'
|
110
|
+
Barby::Code128::CODEB
|
111
|
+
when '(CODEC)'
|
112
|
+
Barby::Code128::CODEC
|
113
|
+
when '(SHIFT)'
|
114
|
+
Barby::Code128::SHIFT
|
115
|
+
when '(SP)'
|
116
|
+
' '
|
117
|
+
else
|
118
|
+
control
|
119
|
+
end
|
120
|
+
end
|
121
|
+
code = code.gsub(/\s+/, '')
|
122
|
+
code = code.prepend(Barby::Code128::FNC1) unless code[0] == Barby::Code128::FNC1
|
123
|
+
barcode = Barby::Code128.new(code)
|
124
|
+
when :qrcode
|
125
|
+
BarcodeDependencies::QRCODE_DEPENDENCIES.each_pair { |n, v| source.ensure_gem(n, v) }
|
126
|
+
require 'barby/barcode/qr_code'
|
127
|
+
barcode = Barby::QrCode.new(code)
|
128
|
+
when :upca
|
129
|
+
require 'barby/barcode/ean_13'
|
130
|
+
barcode = Barby::UPCA.new(code)
|
131
|
+
else
|
132
|
+
raise "Unsupported barcode type: #{type}"
|
133
|
+
end
|
134
|
+
|
135
|
+
case format
|
136
|
+
when :png
|
137
|
+
BarcodeDependencies::PNG_DEPENDENCIES.each_pair { |n, v| source.ensure_gem(n, v) }
|
138
|
+
require 'barby/outputter/png_outputter'
|
139
|
+
require 'chunky_png/color'
|
140
|
+
options[:foreground] = ChunkyPNG::Color(options[:foreground]) if options[:foreground]
|
141
|
+
options[:background] = ChunkyPNG::Color(options[:background]) if options[:background]
|
142
|
+
barcode.to_png(options)
|
143
|
+
when :svg
|
144
|
+
require_relative 'svg_outputter'
|
145
|
+
options[:foreground] = "##{options[:foreground]}" if options[:foreground] =~ /^[0-9a-f]+$/i
|
146
|
+
options[:background] = "##{options[:background]}" if options[:background] =~ /^[0-9a-f]+$/i
|
147
|
+
barcode.to_svg(options)
|
148
|
+
when :txt
|
149
|
+
require 'barby/outputter/ascii_outputter'
|
150
|
+
barcode.to_ascii
|
151
|
+
else
|
152
|
+
raise "Unsupported format: #{format}"
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|