Skip to content

Releases: dsgarage/ReviewExtention

ReviewExtention v0.1.3 - Standard Parameter Processing HotFix

Choose a tag to compare

@dsgarage dsgarage released this 08 Sep 08:46

ReviewExtention v0.1.3 - Standard Parameter Processing HotFix

🎯 修正内容

Issue #30と#31で要求されていたRe:VIEWの標準第3パラメータ処理に対応しました。これにより、Re:VIEWの標準的な記法でwrap/fold機能を使用できるようになりました。

📝 解決した問題

Issue #30/#31: Re:VIEWの標準パラメータ処理への対応

  • 以前: //listnum[id][caption wrap=80] (キャプション内埋め込み) しか動作しない
  • 現在: //listnum[id][caption][wrap=80,lang=ruby] (標準第3パラメータ) が正常動作
  • 互換性: 既存のキャプション埋め込み方式も引き続き利用可能

🆕 追加機能

1. 標準Re:VIEW第3パラメータサポート

// 基本的なwrap指定
//list[id][キャプション][wrap=80]

// 複数オプション指定
//list[id][キャプション][wrap=on,fold=on,foldmark=↩]

// 言語指定との組み合わせ
//list[id][キャプション][wrap=80,lang=ruby]

// 行番号付きリスト
//listnum[id][キャプション][wrap=80,lineno=on,fontsize=small]

2. 後方互換性の維持

// 従来の記法も引き続き動作
//list[id][キャプション wrap=80,fold=on]

3. 適切な優先順位処理

  • 第3パラメータのオプションがキャプション埋め込みより優先
  • 既存プロジェクトへの影響なし

🔧 技術的改善

Compiler拡張の強化

  • parse_caption_options() 関数でキャプション内オプションを解析
  • list_block() / listnum_block() ハンドラーの拡張
  • 標準Re:VIEW記法との完全な整合性を実現

処理フロー

  1. 第3パラメータ解析: wrap=80,lang=ruby を解析
  2. キャプション解析: 後方互換性のため既存方式もサポート
  3. 優先順位適用: 第3パラメータ > キャプション埋め込み
  4. LaTeXビルダー連携: Issue #28の修正と組み合わせて完全動作

🧪 テスト内容

新規テストファイル追加

test-project/articles/test-standard-parameters.re に包括的なテストケースを追加:

  • ✅ 標準第3パラメータ構文
  • ✅ 複数オプション組み合わせ
  • ✅ 言語指定との併用
  • ✅ 後方互換性
  • ✅ 優先順位処理
  • ✅ 複雑なオプション組み合わせ

📦 アップグレード方法

既存プロジェクトでの適用

# 最新版を取得
git pull origin main
git checkout v0.1.3

# 必要なファイルをプロジェクトにコピー
cp lib/ruby/tags/list.rb your-project/lib/ruby/tags/

記法の移行(任意)

従来の記法:

//list[id][キャプション wrap=80,lang=ruby]

標準記法(推奨):

//list[id][キャプション][wrap=80,lang=ruby]

🌟 利用例

Before (v0.1.2まで)

//listnum[example][長いコード wrap=80,lineno=on,lang=ruby]{
def very_long_method_name_that_should_be_wrapped_automatically
  # コード内容
end
//}

After (v0.1.3から)

//listnum[example][長いコード][wrap=80,lineno=on,lang=ruby]{
def very_long_method_name_that_should_be_wrapped_automatically
  # コード内容  
end
//}

🔗 関連修正

このHotFixは以下の修正と連携して動作します:

  • v0.1.2: Issue #28のLaTeX language parameter処理修正
  • v0.1.1: LaTeX自動折り返し機能修正
  • v0.1.0: 基本的なwrap/fold機能実装

👥 影響範囲

  • 直接影響: Re:VIEWの標準記法でwrap機能が利用可能
  • 互換性: 既存の記法は完全に保持
  • 破壊的変更: なし

🙏 謝辞

Issue #30/#31の詳細な要求と検証にご協力いただいた皆様に感謝いたします。

ReviewExtention v0.1.2 - Issue #28 HotFix

Choose a tag to compare

@dsgarage dsgarage released this 08 Sep 08:04

ReviewExtention v0.1.2 - Issue #28 HotFix

🔧 修正内容

Issue #28で報告されていたLaTeX listings言語パラメータの処理問題を修正しました。英語コードの折り返し機能が正常に動作するようになりました。

🐛 解決した問題

Issue #28: 英語コードの折り返し機能が動作しない

  • Re:VIEWがwrap=80などのオプションをそのまま言語パラメータとしてLaTeX listingsパッケージに渡していた
  • Couldn't load requested languageエラーが発生し、PDFのビルドに失敗
  • 日本語テキストは正常に折り返されるが、英語コードブロックで問題が発生

📝 変更点

修正

  • LaTeX listingsの言語パラメータ処理を改善
    • オプション(wrap, fold, lineno等)と実際の言語を適切に分離
    • language パラメータには実際の言語(ruby, python等)のみを渡すよう修正
    • options は\lstsetパラメータに適切に変換

技術的詳細

  • parse_language_options() 関数でパラメータ解析を実装
  • create_options_from_hash() でオプション構造体を生成
  • 各list関数(list, listnum, emlist, cmd)でオプション解析処理を追加

✅ 動作確認

修正前

//list[test][英語コード][wrap=on,lang=ruby]{
def very_long_method_name_that_should_be_wrapped_automatically
//}

→ LaTeX Error: Couldn't load requested language

修正後

//list[test][英語コード][wrap=on,lang=ruby]{
def very_long_method_name_that_should_be_wrapped_automatically
//}

→ 正常にビルド、適切な行折り返しとシンタックスハイライト

📦 アップグレード方法

既存プロジェクトでの適用

# 最新版を取得
git pull origin main
git checkout v0.1.2

# 必要なファイルをプロジェクトにコピー
cp lib/ruby/builders/latex/list.rb your-project/lib/ruby/builders/latex/
cp lib/ruby/tags/list.rb your-project/lib/ruby/tags/
cp sty/review-custom.sty your-project/sty/

🧪 テスト結果

  • 英語コードブロックの自動折り返し動作
  • 日本語コードブロックの継続動作(回帰テストOK)
  • 複数オプション(wrap+lang+lineno)の組み合わせ動作
  • LaTeX listingsエラーの解消

👥 影響範囲

このHotFixは以下の機能に影響します:

  • 直接影響(改善): 英語コードブロックの折り返し表示
  • 間接影響(安定性向上): LaTeX PDFビルドの成功率向上
  • 回帰テスト: 既存の日本語コード表示は変更なし

🙏 謝辞

Issue #28の詳細な報告とテスト協力をいただいた皆様に感謝いたします。

v0.1.1 - LaTeX Wrap Hotfix

Choose a tag to compare

@dsgarage dsgarage released this 08 Sep 07:22

ReviewExtention v0.1.1 - LaTeX Wrap Hotfix

🔧 修正内容

v0.1.0でRuby拡張によるwrap/fold機能を実装しましたが、LaTeX出力での自動折り返しが実際には動作していませんでした。このホットフィックスにより、PDFでの長い行の自動折り返しが正しく機能するようになりました。

📝 変更点

修正

  • LaTeX自動折り返し(breaklines)の実効性を修正
    • review-custom.styでグローバル\lstset設定を適用
    • breaklines=trueが確実に有効になるよう設定
    • 折り返し記号(↩)が正しく表示されるよう設定
    • 環境再定義による競合を回避

ファイル変更

  • sty/review-custom.sty: LaTeX listings設定の修正
  • CHANGELOG.md: 変更履歴の追加

✅ 動作確認

  • PDFで長い行が自動的に折り返される
  • 赤い矢印(↩)が折り返し位置に表示される
  • test-projectでのPDFビルド成功

📦 アップグレード方法

既存のプロジェクトでv0.1.1の修正を適用する場合:

# 最新版を取得
git pull origin main
git checkout v0.1.1

# スタイルファイルをプロジェクトにコピー
cp sty/review-custom.sty your-project/sty/

🙏 謝辞

問題を報告いただいたユーザーの皆様に感謝いたします。

ReviewExtention v0.1.0 - Ruby Hybrid Pipeline

Choose a tag to compare

@dsgarage dsgarage released this 08 Sep 07:03

ReviewExtention v0.1.0

🎉 初回リリース

ReviewExtention v0.1.0 をリリースしました!このバージョンでは、Re:VIEW 5.8 向けの Ruby 拡張によるハイブリッドパイプラインを実装し、長年の課題であった wrap/fold オプションと #@mapfile 機能を完全にサポートしました。

✨ 主な機能

📝 コードブロック拡張(//list)

  • wrap/fold オプション: 長い行の自動折り返し
    • wrap=on: 自動折り返し有効化
    • wrap=80: 80桁での厳密な折り返し
    • fold=on: 折り返し機能有効化
    • foldmark=↩: カスタム折り返し記号
  • 行番号表示: lineno=on で行番号を表示
  • その他のオプション:
    • indent: インデント設定
    • fontsize: フォントサイズ調整
    • filename: ファイル名バッジ表示
    • lang: シンタックスハイライト言語指定

📁 外部ファイル参照

  • #@mapfile: 外部ファイルの安全な取り込み
  • #@maprange: マーカーによる範囲指定取り込み
  • セキュリティ機能:
    • 200KB のファイルサイズ制限
    • 拡張子ホワイトリスト
    • パストラバーサル攻撃防止
    • プロジェクトルート外アクセス禁止

🏗️ ハイブリッドパイプライン

  • アーキテクチャ: JS前処理 + Ruby Builder
  • 責務分担:
    • JS: 入力正規化とメタデータ付与
    • Ruby: 最終レンダリング(PDF品質確定)
  • 統一ビルド: MCP と手動ビルドで同一パイプライン

📦 インストール

git clone https://github.com/dsgarage/ReviewExtention.git
cd ReviewExtention

🚀 使い方

Makefile ターゲット

# JS前処理のみ
make preprocess

# フルパイプライン(JS→Ruby→PDF)
make pdf

# Rubyのみ(デバッグ用)
make pdf-nopre

# テストプロジェクトビルド
make test-pdf

Re:VIEW プロジェクトでの利用

  1. review-ext.rb をプロジェクトにコピー
  2. lib/ruby/ ディレクトリをコピー
  3. Re:VIEW コマンド実行時に自動的に拡張が読み込まれます

📋 動作要件

  • Re:VIEW 5.8.0 以上
  • Ruby 2.7 以上
  • Node.js 18 以上(JS前処理使用時)
  • TeX Live 2022 以上(PDF生成時)

🔧 解決した Issue

  • #19: 外部コードファイル参照機能(#@mapfile)のドキュメント不足
  • #20: //listブロックのwrap/foldオプションが動作しない

📚 ドキュメント

🤝 コントリビューション

Issue や Pull Request を歓迎します!
バグ報告や機能要望は Issues までお願いします。

📄 ライセンス

MIT License

🙏 謝辞

Re:VIEW 開発チームの皆様に感謝いたします。