class Neo4j::AsciidoctorExtensions::CourseDocumentAttributesTreeProcessor

A tree processor that adds attributes about the course. /!\ This extension is tightly coupled to the course publishing project and should not be used for other purposes /!\

Constants

TESTING_SLUG_PREFIX

TODO: this slug should be configurable

Public Instance Methods

process(document) click to toggle source
# File lib/neo4j/asciidoctor/extensions/course_document_attributes/extension.rb, line 19
def process(document)
  if (module_descriptor_path = document.attr('module-descriptor-path'))
    if File.exist?(module_descriptor_path)
      require 'yaml'
      module_descriptor = YAML.load_file(module_descriptor_path)
      if (document_slug = document.attr('slug')) && document.attr('stage') != 'production'
        document_slug = "#{TESTING_SLUG_PREFIX}#{document_slug}"
        document.set_attr('slug', document_slug)
      end
      set_attributes(document, document_slug, module_descriptor)
      document.set_attribute('module-name', module_descriptor['module_name'])
    end
  end
  document
end

Private Instance Methods

set_attributes(document, document_slug, module_descriptor) click to toggle source
# File lib/neo4j/asciidoctor/extensions/course_document_attributes/extension.rb, line 37
def set_attributes(document, document_slug, module_descriptor)
  module_descriptor['pages'].each_with_index do |page, index|
    document.set_attribute("module-toc-link-#{index}", page['url'])
    document.set_attribute("module-toc-title-#{index}", page['title'])
    page_slug = page['slug']
    page_slug = "#{TESTING_SLUG_PREFIX}#{page_slug}" unless document.attr('stage') == 'production'
    document.set_attribute("module-toc-slug-#{index}", page_slug)
    document.set_attribute("module-quiz-#{index}", page['quiz'])
    next unless document_slug == page_slug

    set_next_attributes(document, page)
    document.set_attribute('module-quiz', page['quiz'])
    document.set_attribute('module-certificate', page['certificate'])
  end
end
set_next_attributes(document, page) click to toggle source
# File lib/neo4j/asciidoctor/extensions/course_document_attributes/extension.rb, line 53
def set_next_attributes(document, page)
  return unless page.key?('next')

  next_page_slug = page['next']['slug']
  next_page_slug = "#{TESTING_SLUG_PREFIX}#{next_page_slug}" unless document.attr('stage') == 'production'
  document.set_attr('module-next-slug', next_page_slug, false)
  document.set_attr('module-next-title', page['next']['title'], false)
end