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