class Asciidoctor::Diagram::BasicSource
Base class for diagram source implementations that uses an md5 checksum of the source code of a diagram to determine if it has been updated or not.
Attributes
attributes[R]
Public Class Methods
new(block_processor, parent_block, attributes)
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 110 def initialize(block_processor, parent_block, attributes) @block_processor = block_processor @parent_block = parent_block @attributes = attributes end
Public Instance Methods
attr(name, default_value = nil, inherit = nil)
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 128 def attr(name, default_value = nil, inherit = nil) name = name.to_s if ::Symbol === name value = @attributes[name] if value.nil? && inherit case inherit when String, Symbol value = @parent_block.attr("#{inherit.to_s}-#{name}", default_value, true) else value = @parent_block.attr(name, default_value, inherit) end end value || default_value end
checksum()
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 153 def checksum @checksum ||= compute_checksum(code) end
config()
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 120 def config @block_processor.config end
create_image_metadata()
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 149 def create_image_metadata {:checksum => checksum} end
image_name()
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 124 def image_name attr('target', 'diag-' + checksum) end
resolve_path(target, start = base_dir)
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 116 def resolve_path target, start = base_dir @parent_block.normalize_system_path(target, start) end
should_process?(image_file, image_metadata)
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 145 def should_process?(image_file, image_metadata) image_metadata[:checksum] != checksum end
Protected Instance Methods
resolve_diagram_subs()
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 159 def resolve_diagram_subs if @attributes.key? 'subs' @parent_block.resolve_block_subs @attributes['subs'], nil, 'diagram' else [] end end
Private Instance Methods
compute_checksum(code)
click to toggle source
# File lib/asciidoctor-diagram/diagram_source.rb, line 169 def compute_checksum(code) md5 = Digest::MD5.new md5 << code @attributes.each do |k, v| md5 << k.to_s if k md5 << v.to_s if v end md5.hexdigest end