lib/liquid_diagrams/basic_block.rb in liquid-diagrams-0.1.0 vs lib/liquid_diagrams/basic_block.rb in liquid-diagrams-0.2.0

- old
+ new

@@ -1,9 +1,10 @@ # frozen_string_literal: true module LiquidDiagrams - # @abstract Subclass and override {#render} or {#render!} to implement + # @abstract Subclass and override {#render_with_rescue} or + # {#render_without_rescue} to implement class BasicBlock < ::Liquid::Block # Return the renderer class matching the block # # @return [BasicRenderer] # @@ -12,38 +13,49 @@ @renderer ||= Renderers.const_get( name.split('::').last.gsub(/Block$/, 'Renderer') ) end - # Render with error rescued - # - # @param context [Liquid::Context] - # - # @return String + # @note Do not overwite this method, overwrite {#render_with_rescue} or + # {#render_without_recue} instead def render(context) @content = super.to_s + @context = context - render!(context) + render_with_rescue + end + + # Render diagram with error rescued + # + # @return [String] + def render_with_rescue + render_without_rescue rescue Errors::BasicError => error - error + handle_error(error) end - # Render without error rescued + # Render diagram without error rescued # - # @param context [Liquid::Context] + # @return [String] # - # @return String - # - # @raise [Errors::BasicError] - # - # rubocop:disable Lint/UnusedMethodArgument - def render!(context) + # @raise [NameError] @see {.renderer} + # @raise [Errors::BasicError] if rendering failed + def render_without_rescue self.class.renderer.render(@content, config) end - # rubocop:enable Lint/UnusedMethodArgument + def handle_error(error) + error + end + + # Read block config from parse context + # + # @return [Hash] def config - config = (parse_context[:config] || {}) - config.fetch(name.split('::').last.chomp('Block').downcase, {}) + opts = options[:liquid_diagrams] || options['liquid_diagrams'] || {} + + opts.fetch block_name.to_sym do + opts.fetch(block_name.to_s, {}) + end end end end