Module: Dewasm::Pozeiden

Defined in:
lib/dewasm/pozeiden.rb,
lib/dewasm/pozeiden/version.rb,
lib/dewasm/pozeiden/wasm_module.rb

Overview

Mermaid diagram rendering by the pozeiden renderer, compiled to WebAssembly and converted to Ruby by dewasm.

Defined Under Namespace

Classes: Error, RenderResult, WasmModule

Constant Summary collapse

MAX_INPUT_BYTES =

The input buffer compiled into the WebAssembly module, which is also pozeiden's own max_input_bytes default.

4 * 1024 * 1024
VERSION =
"0.1.0"
POZEIDEN_VERSION =

The pozeiden revision this gem's WebAssembly module was built from.

"0.4.1 (071fbbb85fb73a06994c163c6093123bd3ac11f6)"

Class Method Summary collapse

Class Method Details

.detect_diagram_type(text) ⇒ Object

Unrecognised input is :unknown.



65
66
67
68
# File 'lib/dewasm/pozeiden.rb', line 65

def detect_diagram_type(text)
  instance, = call("detect", text, nil, random: Random)
  read_text(instance, "meta_diagram_type").to_sym
end

.render(text, strict: false, max_width: 0, max_height: 0, scale: 1.0, theme_override: {}, random: Random) ⇒ Object

The SVG is self-contained.



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dewasm/pozeiden.rb', line 30

def render(
  text,
  strict: false,
  max_width: 0,
  max_height: 0,
  scale: 1.0,
  theme_override: {},
  random: Random
)
  options = options_json(strict:, max_width:, max_height:, scale:, theme_override:)
  instance, length = call("render", text, options, random:)
  read_output(instance, length)
end

.render_with_metadata(text, strict: false, max_width: 0, max_height: 0, scale: 1.0, theme_override: {}, random: Random) ⇒ Object

The metadata is the diagram type and the accessibility title and description pozeiden extracted from the source.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/dewasm/pozeiden.rb', line 45

def (
  text,
  strict: false,
  max_width: 0,
  max_height: 0,
  scale: 1.0,
  theme_override: {},
  random: Random
)
  options = options_json(strict:, max_width:, max_height:, scale:, theme_override:)
  instance, length = call("render_with_metadata", text, options, random:)
  RenderResult.new(
    svg: read_output(instance, length),
    diagram_type: read_text(instance, "meta_diagram_type").to_sym,
    title: presence(read_text(instance, "meta_title")),
    descr: presence(read_text(instance, "meta_descr"))
  )
end