asciidoctor-kroki-0.8.0/ 0000755 0000041 0000041 00000000000 14411612074 015167 5 ustar www-data www-data asciidoctor-kroki-0.8.0/Gemfile.lock 0000644 0000041 0000041 00000002352 14411612074 017413 0 ustar www-data www-data PATH remote: . specs: asciidoctor-kroki (0.8.0) asciidoctor (~> 2.0) GEM remote: https://rubygems.org/ specs: asciidoctor (2.0.18) ast (2.4.2) diff-lcs (1.4.4) parallel (1.22.1) parser (3.1.2.0) ast (~> 2.4.1) rainbow (3.1.1) rake (13.0.6) regexp_parser (2.5.0) rexml (3.2.5) rspec (3.10.0) rspec-core (~> 3.10.0) rspec-expectations (~> 3.10.0) rspec-mocks (~> 3.10.0) rspec-core (3.10.1) rspec-support (~> 3.10.0) rspec-expectations (3.10.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.10.0) rspec-mocks (3.10.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.10.0) rspec-support (3.10.2) rubocop (1.30.0) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.18.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) rubocop-ast (1.18.0) parser (>= 3.1.1.0) ruby-progressbar (1.11.0) unicode-display_width (2.1.0) PLATFORMS ruby DEPENDENCIES asciidoctor-kroki! rake (~> 13.0.6) rspec (~> 3.10.0) rubocop (~> 1.30) BUNDLED WITH 2.3.15 asciidoctor-kroki-0.8.0/tasks/ 0000755 0000041 0000041 00000000000 14411612074 016314 5 ustar www-data www-data asciidoctor-kroki-0.8.0/tasks/lint.rake 0000644 0000041 0000041 00000000130 14411612074 020120 0 ustar www-data www-data # frozen_string_literal: true require 'rubocop/rake_task' RuboCop::RakeTask.new :lint asciidoctor-kroki-0.8.0/tasks/bundler.rake 0000644 0000041 0000041 00000000163 14411612074 020613 0 ustar www-data www-data # frozen_string_literal: true begin require 'bundler/gem_tasks' rescue LoadError warn $ERROR_INFO.message end asciidoctor-kroki-0.8.0/tasks/rspec.rake 0000644 0000041 0000041 00000000230 14411612074 020267 0 ustar www-data www-data # frozen_string_literal: true begin require 'rspec/core/rake_task' RSpec::Core::RakeTask.new :spec rescue LoadError warn $ERROR_INFO.message end asciidoctor-kroki-0.8.0/spec/ 0000755 0000041 0000041 00000000000 14411612074 016121 5 ustar www-data www-data asciidoctor-kroki-0.8.0/spec/asciidoctor_kroki_diagram_spec.rb 0000644 0000041 0000041 00000012371 14411612074 024652 0 ustar www-data www-data # frozen_string_literal: true require 'rspec_helper' require 'asciidoctor' require_relative '../lib/asciidoctor/extensions/asciidoctor_kroki' describe ::AsciidoctorExtensions::KrokiDiagram do it 'should compute a diagram URI' do kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('vegalite', 'png', '{}') diagram_uri = kroki_diagram.get_diagram_uri('http://localhost:8000') expect(diagram_uri).to eq('http://localhost:8000/vegalite/png/eNqrrgUAAXUA-Q==') end it 'should compute a diagram URI with a trailing slashes' do kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('vegalite', 'png', '{}') diagram_uri = kroki_diagram.get_diagram_uri('https://my.domain.org/kroki/') expect(diagram_uri).to eq('https://my.domain.org/kroki/vegalite/png/eNqrrgUAAXUA-Q==') end it 'should compute a diagram URI with trailing slashes' do kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('vegalite', 'png', '{}') diagram_uri = kroki_diagram.get_diagram_uri('https://my-server/kroki//') expect(diagram_uri).to eq('https://my-server/kroki/vegalite/png/eNqrrgUAAXUA-Q==') end it 'should compute a diagram URI with query parameters' do text = %q{ .---. /-o-/-- .-/ / /-> ( * \/ '-. \ \ / ' } opts = { 'stroke-width' => 1, 'background' => 'black' } kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('svgbob', 'png', text, nil, opts) diagram_uri = kroki_diagram.get_diagram_uri('http://localhost:8000') expect(diagram_uri).to eq('http://localhost:8000/svgbob/png/eNrjUoAAPV1dXT0uCFtfN19XX1eXCyysrwCEunZAjoaCloJCjD5IWF1XD8gEK49R0IdoUwdTAN3kC7U=?stroke-width=1&background=black') end it 'should encode a diagram text definition' do kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('plantuml', 'txt', ' alice -> bob: hello') diagram_definition_encoded = kroki_diagram.encode expect(diagram_definition_encoded).to eq('eNpTSMzJTE5V0LVTSMpPslLISM3JyQcAQAwGaw==') end it 'should fetch a diagram from Kroki and save it to disk' do kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('plantuml', 'txt', ' alice -> bob: hello') kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient kroki_client = ::AsciidoctorExtensions::KrokiClient.new(server_url: 'https://kroki.io', http_method: 'get', http_client: kroki_http_client) output_dir_path = "#{__dir__}/../.asciidoctor/kroki" diagram_name = kroki_diagram.save(output_dir_path, kroki_client) diagram_path = File.join(output_dir_path, diagram_name) expect(File.exist?(diagram_path)).to be_truthy, "diagram should be saved at: #{diagram_path}" content = <<-TXT.chomp ,-----. ,---. |alice| |bob| `--+--' `-+-' | hello | |-------------->| ,--+--. ,-+-. |alice| |bob| `-----' `---' TXT expect(File.read(diagram_path).split("\n").map(&:rstrip).join("\n")).to eq(content) end it 'should fetch a diagram from Kroki and save it to disk using the target name' do kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('plantuml', 'txt', ' alice -> bob: hello', 'hello-world') kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient kroki_client = ::AsciidoctorExtensions::KrokiClient.new(server_url: 'https://kroki.io', http_method: 'get', http_client: kroki_http_client) output_dir_path = "#{__dir__}/../.asciidoctor/kroki" diagram_name = kroki_diagram.save(output_dir_path, kroki_client) diagram_path = File.join(output_dir_path, diagram_name) expect(diagram_name).to start_with('hello-world-'), "diagram name should use the target as a prefix, got: #{diagram_name}" expect(File.exist?(diagram_path)).to be_truthy, "diagram should be saved at: #{diagram_path}" content = <<-TXT.chomp ,-----. ,---. |alice| |bob| `--+--' `-+-' | hello | |-------------->| ,--+--. ,-+-. |alice| |bob| `-----' `---' TXT expect(File.read(diagram_path).split("\n").map(&:rstrip).join("\n")).to eq(content) end it 'should fetch a diagram from Kroki with the same definition only once' do kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('plantuml', 'png', ' guillaume -> dan: hello') kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient kroki_client = ::AsciidoctorExtensions::KrokiClient.new(server_url: 'https://kroki.io', http_method: 'get', http_client: kroki_http_client) output_dir_path = "#{__dir__}/../.asciidoctor/kroki" # make sure that we are doing only one GET request diagram_contents = File.read("#{__dir__}/fixtures/plantuml-diagram.png", mode: 'rb') expect(kroki_http_client).to receive(:get).once.and_return(diagram_contents) diagram_name = kroki_diagram.save(output_dir_path, kroki_client) diagram_path = File.join(output_dir_path, diagram_name) expect(File.exist?(diagram_path)).to be_truthy, "diagram should be saved at: #{diagram_path}" # calling again... should read the file from disk (and not do a GET request) kroki_diagram.save(output_dir_path, kroki_client) expect(File.size(diagram_path)).to be_eql(diagram_contents.length), 'diagram should be fully saved on disk' end end asciidoctor-kroki-0.8.0/spec/asciidoctor_kroki_spec.rb 0000644 0000041 0000041 00000020123 14411612074 023160 0 ustar www-data www-data # frozen_string_literal: true require 'rspec_helper' require 'asciidoctor' require_relative '../lib/asciidoctor/extensions/asciidoctor_kroki' describe ::AsciidoctorExtensions::KrokiBlockProcessor do context 'convert to html5' do it 'should convert a PlantUML block to an image' do input = <<~'ADOC' [plantuml] .... alice -> bob: hello .... ADOC output = Asciidoctor.convert(input, standalone: false) (expect output).to eql %(