Class: Asciidoctor::Diagram::Extensions::FileSource

Inherits:
BasicSource
  • Object
show all
Defined in:
lib/asciidoctor-diagram/extensions.rb

Overview

A diagram source that retrieves the code for a diagram from an external source file.

Instance Attribute Summary

Attributes inherited from BasicSource

#attributes

Instance Method Summary collapse

Methods inherited from BasicSource

#attr, #checksum, #create_image_metadata

Methods included from DiagramSource

#attr, #create_image_metadata, #to_s

Constructor Details

#initialize(parent_block, file_name, attributes) ⇒ FileSource

Returns a new instance of FileSource.



446
447
448
449
# File 'lib/asciidoctor-diagram/extensions.rb', line 446

def initialize(parent_block, file_name, attributes)
  super(parent_block, attributes)
  @file_name = file_name
end

Instance Method Details

#base_dirObject



451
452
453
454
455
456
457
# File 'lib/asciidoctor-diagram/extensions.rb', line 451

def base_dir
  if @file_name
    File.dirname(@file_name)
  else
    super
  end
end

#codeObject



473
474
475
# File 'lib/asciidoctor-diagram/extensions.rb', line 473

def code
  @code ||= read_code
end

#image_nameObject



459
460
461
462
463
464
465
466
467
# File 'lib/asciidoctor-diagram/extensions.rb', line 459

def image_name
  if @attributes['target']
    super
  elsif @file_name
    File.basename(@file_name, File.extname(@file_name))
  else
    checksum
  end
end

#read_codeObject



477
478
479
480
481
482
483
484
485
# File 'lib/asciidoctor-diagram/extensions.rb', line 477

def read_code
  if @file_name
    lines = File.readlines(@file_name)
    lines = ::Asciidoctor::Helpers.normalize_lines(lines)
    @parent_block.apply_subs(lines, resolve_diagram_subs).join("\n")
  else
    ''
  end
end

#should_process?(image_file, image_metadata) ⇒ Boolean

Returns:

  • (Boolean)


469
470
471
# File 'lib/asciidoctor-diagram/extensions.rb', line 469

def should_process?(image_file, )
  (@file_name && File.mtime(@file_name) > File.mtime(image_file)) || super
end