newmen/versatile-diamond

View on GitHub
analyzer/lib/interpreter/position_errors_catcher.rb

Summary

Maintainability
A
0 mins
Test Coverage
module VersatileDiamond
  module Interpreter

    # Provides method for catch raised position errors
    module PositionErrorsCatcher
    private

      # Catches raised position errors and interprets it
      # @yield the action which could raise some position error
      def interpret_position_errors(&block)
        block.call
      rescue Concepts::Position::Incomplete
        syntax_error('position.incomplete')
      rescue Concepts::Position::Duplicate => e
        syntax_warning('position.duplicate', e.position.params)
      rescue Concepts::Position::UnspecifiedAtoms
        syntax_error('position.unspecified_atoms')
      rescue Concepts::NonPosition::Impossible
        syntax_error('non_position.impossible')
      end
    end

  end
end