marvi 0.5.0 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99ac52daecfd730bdd05ef63523075b5e4ad3229637208a99a083199518864dd
4
- data.tar.gz: 4daae68331c1edf707b6c520c3defe941e9273b937e6618711b145e13568eed4
3
+ metadata.gz: 0e3091d68f7f5ccd8b131401fd1dce1b010e7d8108125430de3c47bd68b403d4
4
+ data.tar.gz: f52d7849ff7982cb1b988b0e5e5e1c9a496661c56e689bd008fe34347b84dd7f
5
5
  SHA512:
6
- metadata.gz: 775e51510484dac676928c537175db222f682d3d66c74691e248616442f042f294ae896c270531475e1cdc989dde1c1a5cb957df6acdf4159e0157b4d51f3d1f
7
- data.tar.gz: b00bffa8ef8adaa9e5dab84df060e31d96ffad92e473bfb544df2962c3986cb26db06c35299902a4e341dd9c91422642b06ea9e3ab15e1c8089e64f64f352d56
6
+ metadata.gz: 54848bb6e78b5833c96eb6aaea4de9869c5dcd18c381c9b05dc69e1d2d9528f93be9846068bf89acc56f569c54b37e96bbd7868c070802b0ae644f98fa8914ed
7
+ data.tar.gz: d645f16e52d118bf57ef02dc5009cede7e7400377e7c6640030c78a36392ff37adab60a2bfbe8f88e749107bed3f57b153ab8f50754fc22ba822ff948adcbfcf
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.6.0] - 2026-06-11
4
+
5
+ - Render Mermaid fenced code blocks as Unicode box-drawing art. Supports `flowchart`/`graph` (TD/TB/LR/RL), `sequenceDiagram`, `classDiagram`, and `stateDiagram`/`stateDiagram-v2`. Unsupported diagram types, malformed syntax, and over-width output fall back to the highlighted code block.
6
+
3
7
  ## [0.5.0] - 2026-06-02
4
8
 
5
9
  - Syntax-highlight fenced code blocks via [Rouge](https://github.com/rouge-ruby/rouge). Blocks without a language (or with an unknown one) fall back to the previous single-color rendering.
@@ -110,6 +110,17 @@ module Marvi
110
110
  def render_codeblock(el)
111
111
  src = el.options[:location]
112
112
  lang = el.options[:lang]
113
+
114
+ if lang == "mermaid"
115
+ diagram = Diagram.render(el.value.chomp, max_width: @max_width)
116
+ if diagram
117
+ lines = diagram.each_with_index.map do |spans, i|
118
+ RichLine.new(spans, source_line: (i.zero? ? src : nil))
119
+ end
120
+ return lines + [RichLine.blank]
121
+ end
122
+ end
123
+
113
124
  lines = []
114
125
  lines << RichLine.new([Span.new(text: lang, color: :yellow)], source_line: src) if lang
115
126
 
Binary file
data/lib/marvi/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Marvi
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
data/lib/marvi.rb CHANGED
@@ -4,6 +4,7 @@ require_relative "marvi/version"
4
4
  require_relative "marvi/ansi"
5
5
  require_relative "marvi/document"
6
6
  require_relative "marvi/highlighter"
7
+ require_relative "marvi/diagram"
7
8
  require_relative "marvi/ast_walker"
8
9
  require_relative "marvi/renderer/ansi"
9
10
  require_relative "marvi/renderer/curses"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marvi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitsutaka Mimura
@@ -105,6 +105,7 @@ files:
105
105
  - lib/marvi.rb
106
106
  - lib/marvi/ansi.rb
107
107
  - lib/marvi/ast_walker.rb
108
+ - lib/marvi/diagram.rb
108
109
  - lib/marvi/document.rb
109
110
  - lib/marvi/highlighter.rb
110
111
  - lib/marvi/renderer/ansi.rb