Module: YARD::Templates::Engine
- Defined in:
- lib/yard/templates/engine.rb
Overview
This module manages all creation, handling and rendering of Template objects.
- 
To create a template object at a path, use Engine.template. 
- 
To render a template, call Engine.render. 
- 
To register a template path in the lookup paths, call Engine.register_template_path. 
Class Attribute Summary collapse
- 
  
    
      .template_paths  ⇒ Array<String> 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    The list of registered template paths. 
Class Method Summary collapse
- 
  
    
      .generate(objects, options = {})  ⇒ void 
    
    
  
  
  
  
  
  
  
  
  
    Passes a set of objects to the :fulldoctemplate for full documentation generation.
- 
  
    
      .register_template_path(path)  ⇒ void 
    
    
  
  
  
  
  
  
  
  
  
    Registers a new template path in Engine.template_paths. 
- 
  
    
      .render(options = {})  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    Renders a template on a code object using a set of default (overridable) options. 
- 
  
    
      .template(*path)  ⇒ Template 
    
    
  
  
  
  
  
  
  
  
  
    Creates a template module representing the path. 
- 
  
    
      .template!(path, full_paths = nil)  ⇒ Template 
    
    
  
  
  
  
  
  
  
  
  
    Forces creation of a template at pathwithin afull_path.
- 
  
    
      .with_serializer(object, serializer) { ... } ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Serializes the results of a block with a serializerobject.
Class Attribute Details
Class Method Details
.generate(objects, options = {}) ⇒ void
This method returns an undefined value.
Passes a set of objects to the :fulldoc template for full documentation generation. This is called by CLI::Yardoc to most commonly perform HTML documentation generation.
| 101 102 103 104 105 106 | # File 'lib/yard/templates/engine.rb', line 101 def generate(objects, = {}) = () .objects = objects .object = Registry.root template(.template, :fulldoc, .format).run() end | 
.register_template_path(path) ⇒ void
This method returns an undefined value.
Registers a new template path in template_paths
| 21 22 23 | # File 'lib/yard/templates/engine.rb', line 21 def register_template_path(path) template_paths.push(path) unless template_paths.include?(path) end | 
.render(options = {}) ⇒ String
Renders a template on a code object using a set of default (overridable) options. Either the :object or :type keys must be provided.
If a :serializer key is provided and :serialize is not set to false, the rendered contents will be serialized through the Serializers::Base object. See with_serializer.
| 82 83 84 85 86 87 88 89 90 91 | # File 'lib/yard/templates/engine.rb', line 82 def render( = {}) = () mod = template(.template, .type, .format) if .serializer && .serialize != false with_serializer(.object, .serializer) { mod.run() } else mod.run() end end | 
.template(*path) ⇒ Template
Creates a template module representing the path. Searches on disk for the first directory named path (joined by ‘/’) within the template paths and builds a template module for. All other matching directories in other template paths will be included in the generated module as mixins (for overriding).
| 35 36 37 38 39 40 41 42 43 44 45 46 | # File 'lib/yard/templates/engine.rb', line 35 def template(*path) from_template = nil from_template = path.shift if path.first.is_a?(Template) path = path.join('/') full_paths = find_template_paths(from_template, path) path = File.cleanpath(path).gsub('../', '') raise ArgumentError, "No such template for #{path}" if full_paths.empty? mod = template!(path, full_paths) mod end | 
.template!(path, full_paths = nil) ⇒ Template
Forces creation of a template at path within a full_path.
| 53 54 55 56 57 58 59 60 61 62 63 | # File 'lib/yard/templates/engine.rb', line 53 def template!(path, full_paths = nil) full_paths ||= [path] full_paths = [full_paths] unless full_paths.is_a?(Array) name = template_module_name(full_paths.first) begin; return const_get(name); rescue NameError; nil end mod = const_set(name, Module.new) mod.send(:include, Template) mod.send(:initialize, path, full_paths) mod end | 
.with_serializer(object, serializer) { ... } ⇒ Object
Serializes the results of a block with a serializer object.
| 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | # File 'lib/yard/templates/engine.rb', line 115 def with_serializer(object, serializer) output = nil filename = serializer.serialized_path(object) if serializer.respond_to?(:basepath) filename = File.join(serializer.basepath, filename) end log.capture("Generating #{filename}", nil) do serializer.before_serialize if serializer output = yield if serializer serializer.serialize(object, output) serializer.after_serialize(output) end end output end |