Sha256: 6d84a50efeda77bb4141fe7e4747e82ba74996287ee702eff42b54ce877c8695

Contents?: true

Size: 905 Bytes

Versions: 6

Compression:

Stored size: 905 Bytes

Contents

# frozen_string_literal: true

require 'json'
require_relative './cause'

# :nodoc:
module Zakuro
  # :nodoc:
  module Exception
    #
    # ZakuroError ライブラリ内エラー
    #
    class ZakuroError < StandardError
      # @return [Array<ErrorMessage>] エラーメッセージ
      attr_reader :causes

      #
      # 初期化
      #
      # @param [String] msg メッセージ
      # @param [Array<Cause>] causes 原因
      #
      def initialize(msg: '', causes: [])
        @causes = causes
        out = "#{msg}:#{text}"
        super(out)
      end

      private

      #
      # 原因をJSON文字列にする
      #
      # @return [String] JSON文字列
      #
      def text
        list = []
        causes.each do |cause|
          list.push(Tools::Stringifier.to_h(obj: cause, class_prefix: 'Zakuro'))
        end

        JSON.generate(list)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
zakuro-0.9.4 lib/zakuro/exception/zakuro_error.rb
zakuro-0.9.3 lib/zakuro/exception/zakuro_error.rb
zakuro-0.9.2 lib/zakuro/exception/zakuro_error.rb
zakuro-0.9.1 lib/zakuro/exception/zakuro_error.rb
zakuro-0.9.0 lib/zakuro/exception/zakuro_error.rb
zakuro-0.8.0 lib/zakuro/exception/zakuro_error.rb