Class: Natsuzora::TemplateLoader
- Inherits:
-
Object
- Object
- Natsuzora::TemplateLoader
- Defined in:
- lib/natsuzora/template_loader.rb
Defined Under Namespace
Classes: IncludePathResolver
Instance Method Summary collapse
-
#initialize(include_root) ⇒ TemplateLoader
constructor
A new instance of TemplateLoader.
- #load(name) ⇒ Object
- #with_include(name) ⇒ Object
Constructor Details
#initialize(include_root) ⇒ TemplateLoader
Returns a new instance of TemplateLoader.
68 69 70 71 72 73 74 |
# File 'lib/natsuzora/template_loader.rb', line 68 def initialize(include_root) raise ArgumentError, 'include_root is required' if include_root.nil? @path_resolver = IncludePathResolver.new(include_root) @cache = {} @include_stack = [] end |
Instance Method Details
#load(name) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/natsuzora/template_loader.rb', line 76 def load(name) validate_name!(name) raise IncludeError, "Circular include detected: #{name}" if @include_stack.include?(name) @cache[name] ||= load_and_parse(name) end |
#with_include(name) ⇒ Object
84 85 86 87 88 89 90 91 |
# File 'lib/natsuzora/template_loader.rb', line 84 def with_include(name) @include_stack.push(name) yield rescue StandardError => e raise e.class, "#{e.}\n within include #{include_stack_trace}", e.backtrace ensure @include_stack.pop end |