asciidoctor-mermaid 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc6cd61b1b5833e22f2f3865f120f7972e117a7a25a1636e25a387cd9b6e320e
4
- data.tar.gz: c185efdacc78a3a50f649126dc16566008c4b7f6f1d4ac93c3ac66bdb0bbf0cb
3
+ metadata.gz: 35ee5a66f0f8af9f3880ae2d99186886a938aef8f6e4a2116513aa12216c82b9
4
+ data.tar.gz: 80418b39554bd3286a5d5807e35c5cbe5f44991b4a1f04ef722587e63f0c2d5b
5
5
  SHA512:
6
- metadata.gz: 4580feaec78a7cb864e6f62e1fc8753c3c4fae3e709df8ae0a444c20487921e7e4cd1fc0991b240f06fbc250ad52a4936d6847d24fbd65035e5da2ec63b69d18
7
- data.tar.gz: 39e5f2d9127491299d97b1839d52c0eecfcb2b0ef25b0a47c82ca9c3605772f717b0d8a0516b9718de3901dfe08007dd2a6aac9539ac1631ae63c338353e9e81
6
+ metadata.gz: c58d20df59f1492a0f40eb8225487d15ab24754f0bfffe9ccf655e05586afba60fc37e38248b33d52015a8cadf530d167869ca4baf45f7d6f9afe3aad42e1056
7
+ data.tar.gz: 9388283dbfdccf6415bd8407707d34f29f2ffb1c448d8e38a91b5bcad4f402069dc9fb705d5e48267c2727adeddc008a578f3efc2886c5893821c39f2414120c
@@ -0,0 +1,41 @@
1
+ # An alternative entry point to be used w/ asciidoctor-pdf
2
+ require 'asciidoctor/extensions'
3
+ require 'digest/md5'
4
+ require 'tempfile'
5
+ require_relative 'cli'
6
+
7
+ class MermaidTreeProcessor < Asciidoctor::Extensions::TreeProcessor
8
+ def process(document)
9
+ document.blocks.map! do |block|
10
+ if block.attributes['style'] === 'source' &&
11
+ block.attributes['language'] === 'mermaid'
12
+ self.convert_block(block)
13
+ else
14
+ block
15
+ end
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ def convert_block(block)
22
+ # TODO: Currently I'm unsure how to clean up tmp images after pdf generation completes
23
+ img = self.render_svg(block.source)
24
+ Asciidoctor::Block.new block.parent,
25
+ :image,
26
+ attributes: {
27
+ 'imagesdir' => nil,
28
+ 'target' => img.path,
29
+ 'align' => 'center',
30
+ }
31
+ end
32
+
33
+ def render_svg(content)
34
+ file_name = Digest::MD5.hexdigest(content)
35
+ output_file = Tempfile.new([file_name, '.png'])
36
+ ::Asciidoctor::Mermaid::Cli.run(content, "-o#{output_file.path}")
37
+ output_file
38
+ end
39
+ end
40
+
41
+ Asciidoctor::Extensions.register { treeprocessor MermaidTreeProcessor }
@@ -1,5 +1,5 @@
1
1
  module Asciidoctor
2
2
  module Mermaid
3
- VERSION = '0.1.1'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
@@ -1,8 +1,6 @@
1
1
  require 'asciidoctor'
2
- require 'asciidoctor-mermaid'
3
- require 'pry'
4
2
 
5
- MERMAID_DOC = <<-eos
3
+ mermaid_doc = <<-eos
6
4
  lorem ipsum
7
5
 
8
6
  ```mermaid
@@ -12,8 +10,13 @@ flowchart LR
12
10
  eos
13
11
 
14
12
  describe 'extension' do
13
+ before do
14
+ Asciidoctor::Extensions.unregister_all
15
+ require 'asciidoctor-mermaid'
16
+ end
15
17
  it 'renders a basic mermaid diagram' do
16
- doc = Asciidoctor.convert MERMAID_DOC
18
+ doc = Asciidoctor.convert mermaid_doc
19
+ expect(doc).to include('id="mermaid-')
17
20
  expect(doc).to include('flowchart node text')
18
21
  end
19
22
  end
@@ -0,0 +1,22 @@
1
+ require 'asciidoctor'
2
+
3
+ mermaid_doc = <<-eos
4
+ lorem ipsum
5
+
6
+ ```mermaid
7
+ flowchart LR
8
+ id1[flowchart node text]
9
+ ```
10
+ eos
11
+
12
+ describe 'pdf extension' do
13
+ before do
14
+ Asciidoctor::Extensions.unregister_all
15
+ require 'asciidoctor-mermaid/pdf'
16
+ end
17
+ it 'renders a basic mermaid diagram' do
18
+ doc = Asciidoctor.convert mermaid_doc
19
+ expect(doc).to include('class="imageblock text-center"')
20
+ expect(doc).to include('<img src=')
21
+ end
22
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'rspec/snapshot'
1
+ require 'asciidoctor'
2
2
 
3
3
  # This file was generated by the `rspec --init` command. Conventionally, all
4
4
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-mermaid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Bennett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-05 00:00:00.000000000 Z
11
+ date: 2022-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -104,8 +104,10 @@ files:
104
104
  - lib/asciidoctor-mermaid.rb
105
105
  - lib/asciidoctor-mermaid/cli.rb
106
106
  - lib/asciidoctor-mermaid/extension.rb
107
+ - lib/asciidoctor-mermaid/pdf.rb
107
108
  - lib/asciidoctor-mermaid/version.rb
108
109
  - spec/extension_spec.rb
110
+ - spec/pdf_extension_spec.rb
109
111
  - spec/spec_helper.rb
110
112
  homepage: https://github.com/oxidecomputer/asciidoctor-mermaid
111
113
  licenses:
@@ -133,4 +135,5 @@ summary: An Asciidoctor extension that transforms Mermaid diagrams in markdown c
133
135
  to inline svgs.
134
136
  test_files:
135
137
  - spec/extension_spec.rb
138
+ - spec/pdf_extension_spec.rb
136
139
  - spec/spec_helper.rb