asciidoctor-diagram 2.2.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +159 -0
  3. data/README.adoc +17 -13
  4. data/lib/asciidoctor-diagram/a2s/converter.rb +7 -2
  5. data/lib/asciidoctor-diagram/barcode/converter.rb +83 -78
  6. data/lib/asciidoctor-diagram/blockdiag/converter.rb +12 -2
  7. data/lib/asciidoctor-diagram/bpmn/converter.rb +4 -1
  8. data/lib/asciidoctor-diagram/bytefield/converter.rb +4 -1
  9. data/lib/asciidoctor-diagram/d2/converter.rb +57 -0
  10. data/lib/asciidoctor-diagram/d2/extension.rb +18 -0
  11. data/lib/asciidoctor-diagram/d2.rb +8 -0
  12. data/lib/asciidoctor-diagram/dbml/converter.rb +27 -0
  13. data/lib/asciidoctor-diagram/dbml/extension.rb +18 -0
  14. data/lib/asciidoctor-diagram/dbml.rb +8 -0
  15. data/lib/asciidoctor-diagram/diagram_processor.rb +49 -9
  16. data/lib/asciidoctor-diagram/diagram_source.rb +35 -33
  17. data/lib/asciidoctor-diagram/diagrams/converter.rb +4 -1
  18. data/lib/asciidoctor-diagram/ditaa/converter.rb +15 -7
  19. data/lib/asciidoctor-diagram/ditaa/ditaa-2.2.0.jar +0 -0
  20. data/lib/asciidoctor-diagram/dpic/converter.rb +4 -1
  21. data/lib/asciidoctor-diagram/erd/converter.rb +5 -2
  22. data/lib/asciidoctor-diagram/gnuplot/converter.rb +7 -1
  23. data/lib/asciidoctor-diagram/graphviz/converter.rb +4 -1
  24. data/lib/asciidoctor-diagram/graphviz_py/converter.rb +4 -1
  25. data/lib/asciidoctor-diagram/http/converter.rb +16 -7
  26. data/lib/asciidoctor-diagram/http/server.rb +2 -2
  27. data/lib/asciidoctor-diagram/lilypond/converter.rb +3 -2
  28. data/lib/asciidoctor-diagram/meme/converter.rb +29 -3
  29. data/lib/asciidoctor-diagram/mermaid/converter.rb +4 -2
  30. data/lib/asciidoctor-diagram/msc/converter.rb +6 -2
  31. data/lib/asciidoctor-diagram/nomnoml/converter.rb +4 -1
  32. data/lib/asciidoctor-diagram/penrose/converter.rb +53 -0
  33. data/lib/asciidoctor-diagram/penrose/extension.rb +18 -0
  34. data/lib/asciidoctor-diagram/penrose.rb +8 -0
  35. data/lib/asciidoctor-diagram/pikchr/converter.rb +4 -1
  36. data/lib/asciidoctor-diagram/pintora/converter.rb +60 -0
  37. data/lib/asciidoctor-diagram/pintora/extension.rb +18 -0
  38. data/lib/asciidoctor-diagram/pintora.rb +8 -0
  39. data/lib/asciidoctor-diagram/plantuml/converter.rb +256 -43
  40. data/lib/asciidoctor-diagram/plantuml/plantuml-2.2.4.jar +0 -0
  41. data/lib/asciidoctor-diagram/shaape/converter.rb +4 -1
  42. data/lib/asciidoctor-diagram/smcat/converter.rb +5 -1
  43. data/lib/asciidoctor-diagram/structurizr/converter.rb +69 -0
  44. data/lib/asciidoctor-diagram/structurizr/extension.rb +52 -0
  45. data/lib/asciidoctor-diagram/structurizr/renderers.rb +63 -0
  46. data/lib/asciidoctor-diagram/structurizr/structurizr-2.2.2.jar +0 -0
  47. data/lib/asciidoctor-diagram/structurizr.rb +7 -0
  48. data/lib/asciidoctor-diagram/svgbob/converter.rb +6 -2
  49. data/lib/asciidoctor-diagram/symbolator/converter.rb +4 -1
  50. data/lib/asciidoctor-diagram/syntrax/converter.rb +72 -17
  51. data/lib/asciidoctor-diagram/syntrax/syntrax-2.2.0.jar +0 -0
  52. data/lib/asciidoctor-diagram/tikz/converter.rb +5 -2
  53. data/lib/asciidoctor-diagram/umlet/converter.rb +4 -1
  54. data/lib/asciidoctor-diagram/util/base64.rb +25 -0
  55. data/lib/asciidoctor-diagram/util/cli.rb +11 -3
  56. data/lib/asciidoctor-diagram/util/cli_generator.rb +1 -0
  57. data/lib/asciidoctor-diagram/util/java.rb +15 -7
  58. data/lib/asciidoctor-diagram/util/java_jruby.rb +14 -0
  59. data/lib/asciidoctor-diagram/util/java_socket.rb +4 -0
  60. data/lib/asciidoctor-diagram/util/server-2.2.3.jar +0 -0
  61. data/lib/asciidoctor-diagram/util/svg.rb +5 -3
  62. data/lib/asciidoctor-diagram/vega/converter.rb +5 -3
  63. data/lib/asciidoctor-diagram/version.rb +1 -1
  64. data/lib/asciidoctor-diagram/wavedrom/converter.rb +38 -24
  65. data/lib/asciidoctor-diagram.rb +5 -0
  66. metadata +32 -115
  67. data/Rakefile +0 -9
  68. data/docs/antora.yml +0 -3
  69. data/docs/modules/ROOT/images/asciidoctor-diagram-classes.png +0 -0
  70. data/docs/modules/ROOT/images/asciidoctor-diagram-process.png +0 -0
  71. data/docs/modules/ROOT/pages/index.adoc +0 -21
  72. data/docs/modules/ROOT/partials/advanced.adoc +0 -365
  73. data/docs/modules/ROOT/partials/create_diagram.adoc +0 -134
  74. data/docs/modules/ROOT/partials/generate.adoc +0 -15
  75. data/docs/modules/ROOT/partials/installation.adoc +0 -19
  76. data/docs/modules/ROOT/partials/uris.adoc +0 -41
  77. data/examples/Gemfile +0 -3
  78. data/examples/README.adoc +0 -18
  79. data/examples/design.adoc +0 -78
  80. data/examples/features.adoc +0 -189
  81. data/lib/asciidoctor-diagram/ditaa/ditaa-1.3.21.jar +0 -0
  82. data/lib/asciidoctor-diagram/plantuml/plantuml-1.3.21.jar +0 -0
  83. data/lib/asciidoctor-diagram/util/server-1.3.21.jar +0 -0
  84. data/spec/a2s_spec.rb +0 -33
  85. data/spec/barcode_spec.rb +0 -176
  86. data/spec/blockdiag_spec.rb +0 -20
  87. data/spec/bpmn_spec.rb +0 -60
  88. data/spec/bytefield_spec.rb +0 -96
  89. data/spec/diagrams_spec.rb +0 -27
  90. data/spec/ditaa_spec.rb +0 -191
  91. data/spec/dpic_spec.rb +0 -23
  92. data/spec/erd_spec.rb +0 -96
  93. data/spec/gnuplot_spec.rb +0 -229
  94. data/spec/graphviz_py_spec.rb +0 -33
  95. data/spec/graphviz_spec.rb +0 -24
  96. data/spec/lilypond_spec.rb +0 -17
  97. data/spec/man.jpg +0 -0
  98. data/spec/meme_spec.rb +0 -67
  99. data/spec/mermaid_spec.rb +0 -198
  100. data/spec/msc_spec.rb +0 -37
  101. data/spec/nomnoml_spec.rb +0 -36
  102. data/spec/pikchr_spec.rb +0 -73
  103. data/spec/plantuml_spec.rb +0 -772
  104. data/spec/shaape_spec.rb +0 -20
  105. data/spec/shared_examples.rb +0 -764
  106. data/spec/smcat_spec.rb +0 -30
  107. data/spec/svgbob_spec.rb +0 -33
  108. data/spec/symbolator_spec.rb +0 -27
  109. data/spec/syntrax_spec.rb +0 -22
  110. data/spec/test_helper.rb +0 -113
  111. data/spec/tikz_spec.rb +0 -181
  112. data/spec/umlet_spec.rb +0 -32
  113. data/spec/vega_spec.rb +0 -133
  114. data/spec/wavedrom_spec.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c2f34fcc568a14ae6c72579b4a9e8ef429cbc1b023ae9c20945084a212ad844
4
- data.tar.gz: 7a11bdd3d63d22c3e472671b9a3e74ea3945edf80757350aaf6bfde690a9c392
3
+ metadata.gz: 993b52833cbee514282ba62841b0dfafc69760770884a42ea24843b6e9b58224
4
+ data.tar.gz: 38d9215b0859313c6610ec6876b65e2fee4437b87bcc1f2a01465c39db8dedc4
5
5
  SHA512:
6
- metadata.gz: ec745e7abc74b9ab114922de70fcc2fe01cd367cb60b1d47e90ee28ce120c7082400fa7d7176c2b0c9f47ea0a643a19dde64861d63460920b19e4157ff1aa706
7
- data.tar.gz: 9bc01b94478a69b8782e5fe7c3ffffa95cc9dbdbbc5092f64f3dfc340f84bdc65d0cb62c72445fbb3dbcce12befe2f4d6011782542ade71681e2a9636393872d
6
+ metadata.gz: 15477c98c7d90da97ce45106f2f6159b26eb60caeeb0e9d36a700959e15aba484449334ba31c4d74e1bb6806f3360d477e1c424242ad2c3657dd2135d4d9b89f
7
+ data.tar.gz: 18b93c67ac75d7916eab56073b92a49c6a22ec52be0bc48bc5431d967d2c2a7968d570146a2c53acbf773452453b67dc76c539b69e5e3c9ce9df2d857d9d9cff
data/CHANGELOG.adoc CHANGED
@@ -1,5 +1,164 @@
1
1
  = Asciidoctor-diagram Changelog
2
2
 
3
+ == 3.0.0
4
+
5
+ Breaking Changes::
6
+
7
+ * Asciidoctor Diagram no longer has a runtime dependency on the https://rubygems.org/gems/asciidoctor-diagram-ditaamini[asciidoctor-diagram-ditaamini] and https://rubygems.org/gems/asciidoctor-diagram-plantuml[asciidoctor-diagram-plantuml] gems.
8
+ These gems will now have to be installed and required explicitly if necessary.
9
+
10
+ Enhancements::
11
+
12
+ * Issue #478: Add support for PlantUML native image builds (@fliiiix)
13
+
14
+ == 2.3.2
15
+
16
+ Enhancements::
17
+
18
+ * Issue #465: Add support for https://pintorajs.vercel.app/[Pintora]
19
+ * Issue #476: Use PlantUML's Smetana layout engine by default if Graphviz cannot be located
20
+ * Issue #477: Improve support for using plantuml.com as PlantUML rendering server
21
+ * Add support for Structurizr JSON workspaces
22
+ * Prefer non-PDF formats when rendering with HTML backend
23
+
24
+ == 2.3.1
25
+
26
+ Enhancements::
27
+
28
+ * Issue #423: Add support for loading JSyntrax via the `asciidoctor-diagram-jsyntrax` gem (@inponomarev)
29
+ * Issue #464: Remove usage of 'base64' gem to resolve Ruby 3.3+ compatibility issues
30
+
31
+ Bugfixes::
32
+
33
+ * Issue #459: Fix lookup of `wavedrom-cli` location on Windows
34
+
35
+ == 2.3.0
36
+
37
+ Enhancements::
38
+
39
+ * Issue #457: Relaxed Java version requirement from 11 to 1.8 (for tools that support it)
40
+
41
+ == 2.2.18
42
+
43
+ Enhancements::
44
+
45
+ * Add opt-in support for the PlantUML Smetana layout engine
46
+
47
+ == 2.2.17
48
+
49
+ Bugfixes::
50
+
51
+ * Issue #455: Fix regression in reading of UTF-8 source files introduced in 2.2.15
52
+
53
+ == 2.2.16
54
+
55
+ Bugfixes::
56
+
57
+ * Issue #453: Avoid internal error when WaveDrom cannot be located
58
+
59
+ == 2.2.15
60
+
61
+ Enhacements::
62
+
63
+ * Issue #453: Improve error message when WaveDrom cannot be located
64
+
65
+ Bugfixes::
66
+
67
+ * Issue #428: Improve support for reading UTF-16 encoded source files
68
+ * Issue #449: Fix resolving of relative `!include` paths in Structurizr DSL input.
69
+
70
+ == 2.2.14
71
+
72
+ Bugfixes::
73
+
74
+ * Issue #441: Fix regression in Wavedrom integration.
75
+
76
+ == 2.2.13
77
+
78
+ Enhancements::
79
+
80
+ * Issue #436: Allow diagram caching to be disabled using the `nocache` option.
81
+
82
+ Bugfixes::
83
+
84
+ * Issue #437: Set working directory when generating diagrams.
85
+ * Issue #439: Resolve errors when using relative imports in D2 diagrams
86
+
87
+ == 2.2.12
88
+
89
+ Enhancements::
90
+
91
+ * Issue #431: Reduce gem file size
92
+ * Resolve loading errors when loading the PlantUML and Struturizr extensions individually
93
+
94
+ == 2.2.11
95
+
96
+ Bugfixes::
97
+
98
+ * Issue #424: avoid invalid filename characters on Windows
99
+
100
+ == 2.2.10
101
+
102
+ Enhancements::
103
+
104
+ * The location of JSyntrax and Structurizr can now also be specified using Java system properties when using JRuby.
105
+ * Add initial https://penrose.cs.cmu.edu[Penrose] support
106
+
107
+ Bugfixes::
108
+
109
+ * Ensure Structurizr themes are loaded when rendering images
110
+ * Issue #416: Silence Asciidoctor warning when using inline macros
111
+ * Issue #417: Avoid reusing images when block type is different but source code is identical
112
+ * Remove usage of LilyPond's 'safe' option since it's no longer supported
113
+
114
+
115
+ == 2.2.9
116
+
117
+ Bugfixes::
118
+
119
+ * Resolve UTF-8 encoding error when generating SVG for GS1-128 barcodes
120
+ * Issue #409: Second attempt at fixing handling of the D2 `sketch` attribute
121
+ * Issue #415: Resolve NoMethodError when using Structurizr blocks
122
+
123
+ == 2.2.8
124
+
125
+ Enhancements::
126
+
127
+ * Add support for reusing JSyntrax subprocess instances to improve performance when rendering many syntax diagrams (@gitrbond, @inponomarev)
128
+ * Issue #386: Add basic https://structurizr.com[Structurizr] support
129
+
130
+ Bugfixes::
131
+
132
+ * Issue #409: Fix handling of the D2 `sketch` attribute
133
+ * Issue #410: Ensure current directory is always set to document base directory when invoking subprocesses
134
+
135
+ == 2.2.7
136
+
137
+ Enhancements::
138
+
139
+ * Issue #407: Add https://d2lang.com[D2] support
140
+
141
+ == 2.2.6
142
+
143
+ Enhancements::
144
+
145
+ * Add support for PlantUML 1.2023.x
146
+
147
+ == 2.2.5
148
+
149
+ Enhancements::
150
+
151
+ * Issue #401: Add passthrough `txt` output format support for A2S, Ditaa, and Svgbob
152
+ * Issue #402: Add https://github.com/kaishuu0123/erd-go[erd-go] support
153
+ * Issue #404: Add https://github.com/mscgenjs[mscgenjs] support
154
+
155
+ == 2.2.4
156
+
157
+ Enhancements::
158
+
159
+ * Issue #399: Add support for PlantUML theme attribute
160
+ * Add DBML support via https://github.com/softwaretechnik-berlin/dbml-renderer[dbml-renderer]
161
+
3
162
  == 2.2.3
4
163
 
5
164
  Enhancements::
data/README.adoc CHANGED
@@ -2,9 +2,9 @@
2
2
  Pepijn Van_Eeckhoudt <https://github.com/pepijnve[@pepijnve]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>
3
3
  :description: README for the Asciidoctor Diagram extension for Asciidoctor.
4
4
 
5
- image:https://github.com/asciidoctor/asciidoctor-diagram/workflows/Linux%20unit%20tests/badge.svg?branch=master["Linux Build Status", link="https://github.com/asciidoctor/asciidoctor-diagram/actions?query=workflow%3A%22Linux+unit+tests%22"]
6
- image:https://github.com/asciidoctor/asciidoctor-diagram/workflows/macOS%20unit%20tests/badge.svg?branch=master["macOS Build Status", link="https://github.com/asciidoctor/asciidoctor-diagram/actions?query=workflow%3A%22macOS+unit+tests%22"]
7
- image:https://github.com/asciidoctor/asciidoctor-diagram/workflows/Windows%20unit%20tests/badge.svg?branch=master["Windows Build Status", link="https://github.com/asciidoctor/asciidoctor-diagram/actions?query=workflow%3A%22Windows+unit+tests%22"]
5
+ image:https://github.com/asciidoctor/asciidoctor-diagram/workflows/Linux%20unit%20tests/badge.svg?branch=main["Linux Build Status", link="https://github.com/asciidoctor/asciidoctor-diagram/actions?query=workflow%3A%22Linux+unit+tests%22"]
6
+ // image:https://github.com/asciidoctor/asciidoctor-diagram/workflows/macOS%20unit%20tests/badge.svg?branch=main["macOS Build Status", link="https://github.com/asciidoctor/asciidoctor-diagram/actions?query=workflow%3A%22macOS+unit+tests%22"]
7
+ // image:https://github.com/asciidoctor/asciidoctor-diagram/workflows/Windows%20unit%20tests/badge.svg?branch=main["Windows Build Status", link="https://github.com/asciidoctor/asciidoctor-diagram/actions?query=workflow%3A%22Windows+unit+tests%22"]
8
8
  image:https://badge.fury.io/rb/asciidoctor-diagram.svg[Gem Version, link=https://rubygems.org/gems/asciidoctor-diagram]
9
9
 
10
10
  Asciidoctor Diagram is a set of Asciidoctor extensions that enable you to add diagrams, which you describe using plain text, to your AsciiDoc document.
@@ -23,16 +23,20 @@ The example below shows an embedded Ditaa diagram block.
23
23
  ---------
24
24
  [ditaa]
25
25
  ----
26
- +-------------+
27
- | asciidoctor |-----------+
28
- | diagram | |
29
- +-------------+ | image
30
- ^ |
31
- | diagram source |
32
- | v
33
- +--------+ +-----+-------+ /---------------\
34
- | adoc |-->+ asciidoctor + | HTML + image |
35
- +--------+ +-------------+ \---------------/
26
+ +-------------+
27
+ | Diagram +----------------+
28
+ | Renderer | |
29
+ +-------------+ |
30
+ | Asciidoctor | |
31
+ | Diagram | |
32
+ +-------------+ | Image
33
+ ^ |
34
+ | Diagram source |
35
+ +---------------+ | v
36
+ | Asciidoc | +------+------+ /-------+------\
37
+ | with embedded +------>+ Asciidoctor +------->| Beautiful |
38
+ | diagram {d}| +-------------+ HTML | Output |
39
+ +---------------+ \--------------/
36
40
  ----
37
41
  ---------
38
42
 
@@ -10,7 +10,7 @@ module Asciidoctor
10
10
  include CliGenerator
11
11
 
12
12
  def supported_formats
13
- [:svg]
13
+ [:svg, :txt]
14
14
  end
15
15
 
16
16
  def collect_options(source)
@@ -24,6 +24,8 @@ module Asciidoctor
24
24
  end
25
25
 
26
26
  def convert(source, format, options)
27
+ return source.to_s if format == :txt
28
+
27
29
  sx = options[:sx]
28
30
  sy = options[:sy]
29
31
  scale = options[:scale]
@@ -47,7 +49,10 @@ module Asciidoctor
47
49
  args << '-f' << font
48
50
  end
49
51
 
50
- args
52
+ {
53
+ :args => args,
54
+ :chdir => source.base_dir
55
+ }
51
56
  end
52
57
  end
53
58
 
@@ -27,7 +27,7 @@ module Asciidoctor
27
27
  include DiagramConverter
28
28
 
29
29
  def supported_formats
30
- [:png, :svg, :txt]
30
+ [:svg, :png, :txt]
31
31
  end
32
32
 
33
33
  def collect_options(source)
@@ -52,84 +52,88 @@ module Asciidoctor
52
52
  code = source.code
53
53
  type = source.config[:type]
54
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
55
+ begin
56
+ case type
57
+ when :bookland
58
+ require 'barby/barcode/bookland'
59
+ barcode = Barby::Bookland.new(code)
60
+ when :codabar
61
+ require 'barby/barcode/codabar'
62
+ barcode = Barby::Codabar.new(code)
63
+ when :code25
64
+ require 'barby/barcode/code_25'
65
+ barcode = Barby::Code25.new(code)
66
+ when :code25iata
67
+ require 'barby/barcode/code_25_iata'
68
+ barcode = Barby::Code25IATA.new(code)
69
+ when :code25interleaved
70
+ require 'barby/barcode/code_25_interleaved'
71
+ barcode = Barby::Code25Interleaved.new(code)
72
+ when :code39
73
+ require 'barby/barcode/code_39'
74
+ barcode = Barby::Code39.new(code)
75
+ when :code93
76
+ require 'barby/barcode/code_93'
77
+ barcode = Barby::Code93.new(code)
78
+ when :code128
79
+ require 'barby/barcode/code_128'
80
+ barcode = Barby::Code128.new(code)
81
+ when :code128a
82
+ require 'barby/barcode/code_128'
83
+ barcode = Barby::Code128A.new(code)
84
+ when :code128b
85
+ require 'barby/barcode/code_128'
86
+ barcode = Barby::Code128B.new(code)
87
+ when :code128c
88
+ require 'barby/barcode/code_128'
89
+ barcode = Barby::Code128C.new(code)
90
+ when :ean8
91
+ require 'barby/barcode/ean_8'
92
+ barcode = Barby::EAN8.new(code)
93
+ when :ean13
94
+ require 'barby/barcode/ean_13'
95
+ barcode = Barby::EAN13.new(code)
96
+ when :gs1_128
97
+ require 'barby/barcode/code_128'
98
+ gs1_code = code.gsub /\([^)]+\)/ do |control|
99
+ case control.upcase
100
+ when '(FNC1)'
101
+ Barby::Code128::FNC1
102
+ when '(FNC2)'
103
+ Barby::Code128::FNC2
104
+ when '(FNC3)'
105
+ Barby::Code128::FNC3
106
+ when '(FNC4)'
107
+ Barby::Code128::FNC4
108
+ when '(CODEA)'
109
+ Barby::Code128::CODEA
110
+ when '(CODEB)'
111
+ Barby::Code128::CODEB
112
+ when '(CODEC)'
113
+ Barby::Code128::CODEC
114
+ when '(SHIFT)'
115
+ Barby::Code128::SHIFT
116
+ when '(SP)'
117
+ ' '
118
+ else
119
+ control
120
+ end
119
121
  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}"
122
+ gs1_code = gs1_code.gsub(/\s+/, '')
123
+ gs1_code = gs1_code.prepend(Barby::Code128::FNC1) unless gs1_code[0] == Barby::Code128::FNC1
124
+ barcode = Barby::Code128.new(gs1_code)
125
+ when :qrcode
126
+ BarcodeDependencies::QRCODE_DEPENDENCIES.each_pair { |n, v| source.ensure_gem(n, v) }
127
+ require 'barby/barcode/qr_code'
128
+ barcode = Barby::QrCode.new(code)
129
+ when :upca
130
+ require 'barby/barcode/ean_13'
131
+ barcode = Barby::UPCA.new(code)
132
+ else
133
+ raise "Unsupported barcode type: #{type}"
134
+ end
135
+ rescue ArgumentError
136
+ raise "Invalid #{type} data"
133
137
  end
134
138
 
135
139
  case format
@@ -142,6 +146,7 @@ module Asciidoctor
142
146
  barcode.to_png(options)
143
147
  when :svg
144
148
  require_relative 'svg_outputter'
149
+ options[:title] = code
145
150
  options[:foreground] = "##{options[:foreground]}" if options[:foreground] =~ /^[0-9a-f]+$/i
146
151
  options[:background] = "##{options[:background]}" if options[:background] =~ /^[0-9a-f]+$/i
147
152
  barcode.to_svg(options)
@@ -13,19 +13,29 @@ module Asciidoctor
13
13
  [:png, :pdf, :svg]
14
14
  end
15
15
 
16
+ def collect_options(source)
17
+ {
18
+ :font_path => source.attr('fontpath')
19
+ }
20
+ end
21
+
16
22
  def convert(source, format, options)
17
23
  # On Debian based systems the Python 3.x packages python3-(act|block|nw|seq)diag executables with
18
24
  # a '3' suffix.
19
25
  cmd_name = self.class.const_get(:TOOL)
20
26
  alt_cmd_name = "#{cmd_name}3"
21
27
 
22
- font_path = source.attr('fontpath')
28
+ font_path = options[:font_path]
23
29
 
24
30
  generate_stdin(source.find_command(cmd_name, :alt_cmds => [alt_cmd_name]), format.to_s, source.to_s) do |tool_path, output_path|
25
31
  args = [tool_path, '-a', '-o', Platform.native_path(output_path), "-T#{format.to_s}"]
26
32
  args << "-f#{Platform.native_path(font_path)}" if font_path
27
33
  args << '-'
28
- args
34
+
35
+ {
36
+ :args => args,
37
+ :chdir => source.base_dir
38
+ }
29
39
  end
30
40
  end
31
41
  end
@@ -54,7 +54,10 @@ module Asciidoctor
54
54
  args << '--height' << options[:height]
55
55
  end
56
56
 
57
- args
57
+ {
58
+ :args => args,
59
+ :chdir => source.base_dir
60
+ }
58
61
  end
59
62
  end
60
63
  end
@@ -18,7 +18,10 @@ module Asciidoctor
18
18
  bytefield_path = source.find_command('bytefield-svg')
19
19
 
20
20
  generate_stdin(bytefield_path, format.to_s, source.to_s) do |tool_path, output_path|
21
- [tool_path, "--output", Platform.native_path(output_path)]
21
+ {
22
+ :args => [tool_path, "--output", Platform.native_path(output_path)],
23
+ :chdir => source.base_dir
24
+ }
22
25
  end
23
26
  end
24
27
  end
@@ -0,0 +1,57 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ module Asciidoctor
6
+ module Diagram
7
+ # @private
8
+ class D2Converter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+ def supported_formats
13
+ [:svg, :png, :pdf]
14
+ end
15
+
16
+ def collect_options(source)
17
+ {
18
+ :layout => source.attr('layout'),
19
+ :theme => source.attr('theme'),
20
+ :pad => source.attr('pad'),
21
+ :animate_interval => source.attr('animate-interval'),
22
+ :sketch => source.attr('sketch'),
23
+ :font_regular => source.attr('font-regular'),
24
+ :font_italic => source.attr('font-italic'),
25
+ :font_bold => source.attr('font-bold')
26
+ }
27
+ end
28
+
29
+ def convert(source, format, options)
30
+ generate_stdin(source.find_command('d2'), format.to_s, source.code) do |tool_path, output_path|
31
+ args = [tool_path, '--browser', 'false']
32
+
33
+ options.each_pair do |key, value|
34
+ flag = "--#{key.to_s.gsub('_', '-')}"
35
+
36
+ if key == :sketch && !value.nil? && value != 'false'
37
+ args << flag
38
+ elsif key.to_s.start_with?('font') && !value.nil?
39
+ args << Platform.native_path(value)
40
+ elsif !value.nil?
41
+ args << flag
42
+ args << value
43
+ end
44
+ end
45
+
46
+ args << '-'
47
+ args << Platform.native_path(output_path)
48
+
49
+ {
50
+ :args => args,
51
+ :chdir => source.base_dir
52
+ }
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ class D2BlockProcessor < DiagramBlockProcessor
7
+ use_converter D2Converter
8
+ end
9
+
10
+ class D2BlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter D2Converter
12
+ end
13
+
14
+ class D2InlineMacroProcessor < DiagramInlineMacroProcessor
15
+ use_converter D2Converter
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'd2/extension'
3
+
4
+ Asciidoctor::Extensions.register do
5
+ block Asciidoctor::Diagram::D2BlockProcessor, :d2
6
+ block_macro Asciidoctor::Diagram::D2BlockMacroProcessor, :d2
7
+ inline_macro Asciidoctor::Diagram::D2InlineMacroProcessor, :d2
8
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ module Asciidoctor
6
+ module Diagram
7
+ # @private
8
+ class DbmlConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:svg]
15
+ end
16
+
17
+ def convert(source, format, options)
18
+ generate_stdin_stdout(source.find_command('dbml-renderer'), source.code) do |tool|
19
+ {
20
+ :args => [tool],
21
+ :chdir => source.base_dir
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ class DbmlBlockProcessor < DiagramBlockProcessor
7
+ use_converter DbmlConverter
8
+ end
9
+
10
+ class DbmlBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter DbmlConverter
12
+ end
13
+
14
+ class DbmlInlineMacroProcessor < DiagramInlineMacroProcessor
15
+ use_converter DbmlConverter
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'dbml/extension'
3
+
4
+ Asciidoctor::Extensions.register do
5
+ block Asciidoctor::Diagram::DbmlBlockProcessor, :dbml
6
+ block_macro Asciidoctor::Diagram::DbmlBlockMacroProcessor, :dbml
7
+ inline_macro Asciidoctor::Diagram::DbmlInlineMacroProcessor, :dbml
8
+ end