class Jekyll::Antex::Block

Public Class Methods

new(tag, markup, tokens) click to toggle source
Calls superclass method
# File lib/jekyll/antex/block.rb, line 17
def initialize(tag, markup, tokens)
  @markup = markup
  super
end

Private Class Methods

img_url(job) click to toggle source
# File lib/jekyll/antex/block.rb, line 59
def self.img_url(job)
  _, dest_dir, filename = static_file_paths job
  url_path_prefix = job.options['url_path_prefix'] || '/'
  File.join url_path_prefix, dest_dir, filename
end
render_html(job) click to toggle source
# File lib/jekyll/antex/block.rb, line 32
def self.render_html(job)
  img_tag = render_img_tag job
  classes = job.options['classes'].join(' ')
  "<span class='#{classes}'>#{img_tag}</span>"
end
render_img_tag(job) click to toggle source
# File lib/jekyll/antex/block.rb, line 38
def self.render_img_tag(job)
  "<img data-antex='#{job.hash}' src='#{img_url(job)}' />"
end
render_style_attribute(job_set_box, precision: 3) click to toggle source
# File lib/jekyll/antex/block.rb, line 42
      def self.render_style_attribute(job_set_box, precision: 3)
        <<~IMG_TAG.gsub(/(\s\s+)/m, ' ').strip!
          style='margin: #{job_set_box.mt.round(precision)}ex
                         #{job_set_box.mr.round(precision)}ex
                         #{job_set_box.mb.round(precision)}ex
                         #{job_set_box.ml.round(precision)}ex;
                 height: #{job_set_box.th.round(precision)}ex;
                 width:  #{job_set_box.wd.round(precision)}ex;'
        IMG_TAG
      end
static_file_paths(job) click to toggle source
# File lib/jekyll/antex/block.rb, line 65
def self.static_file_paths(job)
  work_dir_prefix = %r{^#{Regexp.escape job.dirs['work']}(?=\/|$)}
  # base, dir, name
  [
    job.dirs['work'],
    job.dirs['dest'].sub(work_dir_prefix, '').sub(%r{^\/}, ''),
    File.basename(job.files['svg'])
  ]
end

Public Instance Methods

render(context) click to toggle source
Calls superclass method
# File lib/jekyll/antex/block.rb, line 22
def render(context)
  options = build_options registers: context.registers, markup: @markup
  job = ::Antex::Job.new snippet: super, options: options
  Jekyll::Antex.jobs.store(job.hash, job)
  add_static_file context.registers[:site], job
  self.class.render_html(job)
end

Private Instance Methods

add_static_file(site, job) click to toggle source
# File lib/jekyll/antex/block.rb, line 53
def add_static_file(site, job)
  site.static_files << Jekyll::StaticFile.new(
    site, *self.class.static_file_paths(job)
  )
end
build_options(registers:, markup:) click to toggle source
# File lib/jekyll/antex/block.rb, line 75
def build_options(registers:, markup:)
  Jekyll::Antex::Options.build Jekyll::Antex::Options::DEFAULTS,
                               registers[:site].config['antex'] || {},
                               registers[:page]['antex'] || {},
                               YAML.safe_load(markup) || {}
end