Module: Vivlio::Starter::CLI::PreProcessCommands::DataRender
- Defined in:
- lib/vivlio/starter/cli/pre_process/data_render.rb,
lib/vivlio/starter/cli/pre_process/data_render/singularize.rb,
lib/vivlio/starter/cli/pre_process/data_render/template_compiler.rb,
lib/vivlio/starter/cli/pre_process/data_render/query_stream_parser.rb
Overview
QueryStream 記法を展開してMarkdownを生成するモジュール実処理は query-stream gem に委譲する
Defined Under Namespace
Modules: QueryStreamParser, Singularize, TemplateCompiler
Class Method Summary collapse
-
.process(content, source_filename: nil, data_dir: 'data', templates_dir: Common::TEMPLATES_DIR) ⇒ String
Markdown コンテンツ内の QueryStream 記法をすべて展開する.
Class Method Details
.process(content, source_filename: nil, data_dir: 'data', templates_dir: Common::TEMPLATES_DIR) ⇒ String
Markdown コンテンツ内の QueryStream 記法をすべて展開する
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/vivlio/starter/cli/pre_process/data_render.rb', line 33 def process(content, source_filename: nil, data_dir: 'data', templates_dir: Common::TEMPLATES_DIR) # gem 側はログを出力しないため、on_error / on_warning コールバックでメッセージを構成する。 # Common.log_error / log_warn が ❌ / ⚠️ の絵文字プレフィックスを付与するため、 # コールバック側ではプレフィックスを付けない。 on_error = lambda do |error| case error in QueryStream::TemplateNotFoundError => e # location は "filename:line" 形式 detail_lines = ["雛形の場所: #{e.template_path}"] detail_lines << "ヒント: #{e.hint}" if e.hint Common.log_error( "#{e.location} - 雛形ファイル '#{File.basename(e.template_path)}' が見つかりません(記法: #{e.query})", detail: detail_lines.join("\n") ) in QueryStream::DataNotFoundError => e Common.log_error( "#{e.location} - データファイルが見つかりません(記法: #{e.query})", detail: "データの場所: #{e.expected_path}" ) else Common.log_error("QueryStream 展開エラー: #{error.}") end end on_warning = lambda do |warning| case warning in QueryStream::NoResultWarning => w Common.log_warn( "#{w.location} - 一件検索で該当レコードが見つかりません(記法: #{w.query})" ) in QueryStream::AmbiguousQueryWarning => w Common.log_warn( "#{w.location} - 一件検索で複数件ヒット(#{w.count} 件)。条件を明示してください(記法: #{w.query})" ) else Common.log_warn("QueryStream 警告: #{warning.}") end end QueryStream.render( content, source_filename:, data_dir:, templates_dir:, on_error:, on_warning: ) end |