Class: PrmGenerator::LinkResolver

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/udb/prm_generator.rb

Overview

Handles link resolution for cross-references

Class Method Summary collapse

Class Method Details



375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
# File 'lib/udb/prm_generator.rb', line 375

def self.create_asciidoc_link(type, name, link_text)
  escaped_text = link_text.gsub("]", '\\]').gsub(",", '\\,')

  case type
  when "csr_field"
    base_csr_name, field_name = name.split(".", 2)
    "<<csr:#{base_csr_name}-#{field_name}-def,#{escaped_text}>>"
  when "func"
    "<<#{name}-func-def,#{escaped_text}>>"
  when "csr"
    "<<csr-#{name.gsub('.', '_')}-def,#{escaped_text}>>"
  when "inst"
    "<<inst-#{name.gsub('.', '_')}-def,#{escaped_text}>>"
  when "ext"
    "<<ext:#{name}-def,#{escaped_text}>>"
  else
    Udb.logger.warn "[WARN] Unknown link type '#{type}' for link to '#{name}'"
    escaped_text
  end
end

.resolve(processor_config, content) ⇒ Object



353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
# File 'lib/udb/prm_generator.rb', line 353

def self.resolve(processor_config, content)
  return "" unless content.is_a?(String)

  # Resolve %%LINK%...%% and %%UDB_DOC_LINK%...%% markup
  content = content.gsub(/%%(UDB_DOC_LINK|LINK)%([^;%]+)\s*;\s*([^;%]+)\s*;\s*([^%]+)%%/) do
    type = $2.strip
    name = $3.strip
    link_text = $4.strip

    create_asciidoc_link(type, name, link_text)
  end

  # Use processor config's link resolver if available
  if processor_config.respond_to?(:find_replace_links)
    content = processor_config.find_replace_links(content)
  end

  content
end