lib/frontman/renderers/renderer_resolver.rb in frontman-ssg-0.0.4 vs lib/frontman/renderers/renderer_resolver.rb in frontman-ssg-0.1.0
- old
+ new
@@ -1,10 +1,12 @@
# typed: true
# frozen_string_literal: true
+require 'frontman/renderers/renderer'
require 'frontman/renderers/erb_renderer'
require 'frontman/renderers/haml_renderer'
+require 'frontman/renderers/slim_renderer'
require 'frontman/renderers/markdown_renderer'
require 'singleton'
require 'sorbet-runtime'
module Frontman
@@ -12,15 +14,26 @@
extend T::Sig
include Singleton
sig { params(extension: String).returns(T.nilable(Frontman::Renderer)) }
def get_renderer(extension)
- renderers = {
- 'erb': Frontman::ErbRenderer.instance,
- 'md': Frontman::MarkdownRenderer.instance,
- 'haml': Frontman::HamlRenderer.instance
+ all_renderers[extension.to_sym]
+ end
+
+ sig { returns(T::Hash[Symbol, Frontman::Renderer]) }
+ def all_renderers
+ @all_renderers ||= {
+ erb: Frontman::ErbRenderer.instance,
+ md: Frontman::MarkdownRenderer.instance,
+ haml: Frontman::HamlRenderer.instance,
+ slim: Frontman::SlimRenderer.instance
}
+ end
- renderers[extension.to_sym]
+ sig { params(extension: String).returns(T::Boolean) }
+ def valid_extension?(extension)
+ # We have to append html and txt manually here
+ # so we can extract front matter data from them
+ all_renderers.keys.push(:html, :txt).include?(extension.to_sym)
end
end
end