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