eturem 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/eturem.rb +32 -8
- data/lib/eturem/base.rb +193 -120
- data/lib/eturem/en.rb +216 -0
- data/lib/eturem/ja.rb +283 -79
- data/lib/eturem/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a64814fe6cc81e8dc3d83a2be9b81e31fc4cdc60
|
4
|
+
data.tar.gz: 28129a9bf1e68921a7f603a330edbf38585f3859
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d4f440e6861f060bdcd0e45eafd6c7bead5b37f37c7bd93b2ba36a96204ca4fdd1de4c9aaddee665fb82fed0f676f7aa4ef6f6a24a1e904edd29329246f8c2b
|
7
|
+
data.tar.gz: 79c53579d45fc7bcec00f4a5e6579f2d62f0b3f2479356354c504baa101af3310843b70d755cf6be7bd4be13245039e8df6474df0512a1112fde4c77b34d1d20
|
data/lib/eturem.rb
CHANGED
@@ -1,11 +1,35 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
enable = true
|
2
|
+
lang = "en"
|
3
|
+
output_backtrace = true
|
4
|
+
output_original = true
|
5
|
+
output_script = true
|
6
|
+
max_backtrace = 16
|
7
|
+
before_line_num = 2
|
8
|
+
after_line_num = 2
|
3
9
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
10
|
+
config_file = File.join(Dir.home, ".eturem")
|
11
|
+
if File.exist?(config_file)
|
12
|
+
config = File.read(config_file)
|
13
|
+
enable = false if config.match(/^enable\s*\:\s*false/i)
|
14
|
+
lang = Regexp.last_match(:lang) if config.match(/^lang\s*\:\s*(?<lang>\S+)/i)
|
15
|
+
output_backtrace = false if config.match(/^output_backtrace\s*\:\s*false/i)
|
16
|
+
output_original = false if config.match( /^output_original\s*\:\s*false/i)
|
17
|
+
output_script = false if config.match( /^output_script\s*\:\s*false/i)
|
18
|
+
max_backtrace = Regexp.last_match(:num).to_i if config.match( /^max_backtrace\s*\:\s*(?<num>\d+)/i)
|
19
|
+
before_line_num = Regexp.last_match(:num).to_i if config.match(/^before_line_num\s*\:\s*(?<num>\d+)/i)
|
20
|
+
after_line_num = Regexp.last_match(:num).to_i if config.match( /^after_line_num\s*\:\s*(?<num>\d+)/i)
|
9
21
|
end
|
22
|
+
require "eturem/#{lang}" if enable && !defined?(Eturem)
|
10
23
|
|
11
|
-
|
24
|
+
if defined? Eturem
|
25
|
+
Eturem.eturem_class.output_backtrace = output_backtrace
|
26
|
+
Eturem.eturem_class.output_original = output_original
|
27
|
+
Eturem.eturem_class.output_script = output_script
|
28
|
+
Eturem.eturem_class.max_backtrace = max_backtrace
|
29
|
+
Eturem.eturem_class.before_line_num = before_line_num
|
30
|
+
Eturem.eturem_class.after_line_num = after_line_num
|
31
|
+
|
32
|
+
exception = Eturem.load($0)
|
33
|
+
exception.output_error if exception
|
34
|
+
exit
|
35
|
+
end
|
data/lib/eturem/base.rb
CHANGED
@@ -1,197 +1,270 @@
|
|
1
|
+
require "eturem/version"
|
2
|
+
|
1
3
|
module Eturem
|
2
|
-
def self.
|
4
|
+
def self.eturem_class
|
5
|
+
@eturem_class
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.eturem_class=(klass)
|
3
9
|
@eturem_class = klass
|
4
10
|
end
|
5
11
|
|
6
|
-
def self.
|
7
|
-
|
12
|
+
def self.load(file)
|
13
|
+
begin
|
14
|
+
Kernel.load file
|
15
|
+
rescue Exception => exception
|
16
|
+
return @eturem_class.new(exception) unless exception.is_a? SystemExit
|
17
|
+
end
|
18
|
+
return nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.eval(expr, bind = nil, fname = "(eval)", lineno = 1)
|
22
|
+
begin
|
23
|
+
bind ? Kernel.eval(expr, bind, fname, lineno) : Kernel.eval(expr)
|
24
|
+
rescue Exception => exception
|
25
|
+
return @eturem_class.new(exception) unless exception.is_a? SystemExit
|
26
|
+
end
|
27
|
+
return nil
|
8
28
|
end
|
9
29
|
|
10
30
|
class Base
|
11
|
-
|
31
|
+
attr_reader :exception
|
32
|
+
|
33
|
+
@@output_backtrace = true
|
34
|
+
@@output_original = true
|
35
|
+
@@output_script = true
|
36
|
+
@@max_backtrace = 16
|
37
|
+
@@before_line_num = 2
|
38
|
+
@@after_line_num = 2
|
39
|
+
|
40
|
+
@inspect_methods = {}
|
41
|
+
|
42
|
+
def self.inspect_methods
|
43
|
+
return @inspect_methods
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.output_backtrace=(value)
|
47
|
+
@@output_backtrace = value
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.output_original=(value)
|
51
|
+
@@output_original = value
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.output_script=(value)
|
55
|
+
@@output_script = value
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.max_backtrace=(value)
|
59
|
+
@@max_backtrace = value
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.before_line_num=(value)
|
63
|
+
@@before_line_num = value
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.after_line_num=(value)
|
67
|
+
@@after_line_num = value
|
68
|
+
end
|
69
|
+
|
70
|
+
# prepare
|
71
|
+
def initialize(exception)
|
12
72
|
@exception = exception
|
13
73
|
@exception_s = exception.to_s
|
14
|
-
|
15
|
-
|
74
|
+
|
75
|
+
eturem_path = File.dirname(File.absolute_path(__FILE__))
|
76
|
+
@backtrace_locations = @exception.backtrace_locations.reject do |location|
|
16
77
|
path = File.absolute_path(location.path)
|
17
|
-
path
|
18
|
-
|
19
|
-
|
78
|
+
path.start_with?(eturem_path) || path.end_with?("/rubygems/core_ext/kernel_require.rb")
|
79
|
+
end
|
80
|
+
@backtrace_locations.each do |location|
|
81
|
+
if $0 == location.path
|
82
|
+
def location.label
|
83
|
+
super.sub("<top (required)>", "<main>")
|
84
|
+
end
|
85
|
+
end
|
20
86
|
end
|
21
|
-
|
22
|
-
if @exception_s.match(/\A(?<path>[^:]
|
23
|
-
@lineno_in_exception_s = true
|
87
|
+
|
88
|
+
if @exception.is_a?(SyntaxError) && @exception_s.match(/\A(?<path>[^:]+?)\:(?<lineno>\d+)/)
|
24
89
|
@path = Regexp.last_match(:path)
|
25
90
|
@lineno = Regexp.last_match(:lineno).to_i
|
26
91
|
else
|
27
|
-
|
28
|
-
@path = @locations.first.path
|
29
|
-
@lineno = @locations.first.lineno
|
92
|
+
backtrace_locations_shift
|
30
93
|
end
|
94
|
+
|
95
|
+
load_script
|
96
|
+
prepare
|
97
|
+
end
|
98
|
+
|
99
|
+
def load_script
|
31
100
|
@script = ""
|
32
101
|
if @path && File.exist?(@path)
|
33
102
|
@script = File.binread(@path)
|
34
|
-
encoding =
|
35
|
-
|
103
|
+
encoding = "utf-8"
|
104
|
+
if @script.match(/\A(?:#!.*\R)?#.*coding *[:=] *(?<encoding>[^\s:]+)/)
|
105
|
+
encoding = Regexp.last_match(:encoding)
|
106
|
+
end
|
36
107
|
@script.force_encoding(encoding)
|
37
|
-
@script.encode("UTF-8")
|
38
108
|
end
|
39
109
|
@script_lines = @script.lines
|
40
110
|
@script_lines.unshift("")
|
41
|
-
@
|
42
|
-
prepare
|
111
|
+
@output_lines = default_output_lines
|
43
112
|
end
|
44
113
|
|
45
114
|
def prepare
|
46
115
|
case @exception
|
47
|
-
when SyntaxError
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
when NameError
|
52
|
-
highlight!(@script_lines[@lineno], @exception.name.to_s, "\e[31m\e[4m")
|
53
|
-
return unless @exception_s.match(/Did you mean\?/)
|
54
|
-
@did_you_mean = Regexp.last_match.post_match.strip.split(/\s+/)
|
55
|
-
new_range = []
|
56
|
-
@did_you_mean.each do |did_you_mean|
|
57
|
-
index = @script_lines.index{|line| line.match(did_you_mean)}
|
58
|
-
next unless index
|
59
|
-
highlight!(@script_lines[index], did_you_mean, "\e[33m")
|
60
|
-
new_range.push(index)
|
61
|
-
end
|
62
|
-
before = new_range.select{|i| i < @range.min}
|
63
|
-
after = new_range.select{|i| i > @range.max}
|
64
|
-
unless before.empty?
|
65
|
-
@range.unshift(0) unless @range.include?(before.max + 1)
|
66
|
-
@range.unshift(*before.sort)
|
67
|
-
end
|
68
|
-
unless after.empty?
|
69
|
-
@range.push(0) unless @range.include?(after.min - 1)
|
70
|
-
@range.push(*after.sort)
|
71
|
-
end
|
72
|
-
when ArgumentError
|
73
|
-
@method = @locations.first.label
|
74
|
-
shift_locations
|
75
|
-
return unless @exception_s.match(/given (?<given>\d+)\, expected (?<expected>[^)]+)/)
|
76
|
-
@given = Regexp.last_match(:given).to_i
|
77
|
-
@expected = Regexp.last_match(:expected)
|
78
|
-
when TypeError
|
79
|
-
@method = @locations.first.label
|
80
|
-
shift_locations
|
116
|
+
when SyntaxError then prepare_syntax_error
|
117
|
+
when NameError then prepare_name_error
|
118
|
+
when ArgumentError then prepare_argument_error
|
119
|
+
when TypeError then prepare_type_error
|
81
120
|
end
|
82
121
|
end
|
83
122
|
|
84
|
-
def
|
85
|
-
@
|
86
|
-
|
87
|
-
@
|
88
|
-
|
123
|
+
def prepare_syntax_error
|
124
|
+
@unexpected = @exception_s.match(/unexpected (?<unexpected>(?:','|[^,])+)/) ?
|
125
|
+
Regexp.last_match(:unexpected) : "end-of-input"
|
126
|
+
@expected = @exception_s.match(/[,\s]expecting (?<expected>\S+)/) ?
|
127
|
+
Regexp.last_match(:expected) : "end-of-input"
|
89
128
|
end
|
90
129
|
|
91
|
-
def
|
92
|
-
|
93
|
-
|
94
|
-
(
|
130
|
+
def prepare_name_error
|
131
|
+
highlight!(@script_lines[@lineno], @exception.name.to_s, "\e[31m\e[4m")
|
132
|
+
return unless @exception_s.match(/Did you mean\?/)
|
133
|
+
@did_you_mean = Regexp.last_match.post_match.strip.scan(/\S+/)
|
134
|
+
return if @script.empty?
|
135
|
+
|
136
|
+
new_range = []
|
137
|
+
@did_you_mean.each do |name|
|
138
|
+
index = @script_lines.index { |line| line.include?(name) }
|
139
|
+
next unless index
|
140
|
+
highlight!(@script_lines[index], name, "\e[33m")
|
141
|
+
new_range.push(index)
|
142
|
+
end
|
143
|
+
new_range.sort!
|
144
|
+
before = new_range.select { |i| i < @output_lines.first }
|
145
|
+
after = new_range.select { |i| i > @output_lines.last }
|
146
|
+
unless before.empty?
|
147
|
+
@output_lines.unshift(nil) if before.last + 1 != @output_lines.first
|
148
|
+
@output_lines.unshift(*before)
|
149
|
+
end
|
150
|
+
unless after.empty?
|
151
|
+
@output_lines.push(nil) if @output_lines.last + 1 != after.first
|
152
|
+
@output_lines.push(*after)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
def prepare_argument_error
|
157
|
+
@method = @label
|
158
|
+
old_path = @path
|
159
|
+
backtrace_locations_shift
|
160
|
+
load_script unless old_path == @path
|
161
|
+
@output_lines = default_output_lines
|
162
|
+
if @exception_s.match(/given (?<given>\d+)\, expected (?<expected>[^)]+)/)
|
163
|
+
@given = Regexp.last_match(:given).to_i
|
164
|
+
@expected = Regexp.last_match(:expected)
|
165
|
+
end
|
95
166
|
end
|
96
167
|
|
168
|
+
def prepare_type_error
|
169
|
+
@method = @label
|
170
|
+
end
|
171
|
+
|
172
|
+
# main
|
97
173
|
def output_error
|
98
|
-
output_backtrace
|
99
|
-
|
100
|
-
|
174
|
+
output_backtrace if @@output_backtrace
|
175
|
+
error_message = exception_inspect
|
176
|
+
if error_message.to_s.empty?
|
177
|
+
puts original_exception_inspect
|
178
|
+
else
|
179
|
+
puts original_exception_inspect if @@output_original
|
180
|
+
puts error_message
|
181
|
+
end
|
182
|
+
output_script if @@output_script
|
101
183
|
end
|
102
184
|
|
103
185
|
# backtrace
|
104
186
|
def output_backtrace
|
105
|
-
return if
|
187
|
+
return if @backtrace_locations.empty?
|
106
188
|
|
107
189
|
puts traceback_most_recent_call_last
|
108
|
-
|
109
|
-
|
110
|
-
$0 == location.path && location.label == "<top (required)>" ?
|
111
|
-
"<main>" : location.label
|
112
|
-
puts sprintf("%9d: %s", backtrace.size - i, location_inspect(location, label))
|
190
|
+
@backtrace_locations[0, @@max_backtrace].reverse.each_with_index do |location, i|
|
191
|
+
puts sprintf("%9d: %s", @backtrace_locations.size - i, location_inspect(location))
|
113
192
|
end
|
114
193
|
end
|
115
194
|
|
116
|
-
def
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
def get_backtrace
|
122
|
-
@backtrace = @locations.reverse.dup
|
123
|
-
@backtrace.pop unless @lineno_in_exception_s
|
124
|
-
end
|
125
|
-
|
126
|
-
def max_backtrace
|
127
|
-
16
|
195
|
+
def backtrace_locations_shift
|
196
|
+
@label = @backtrace_locations.first.label
|
197
|
+
@path = @backtrace_locations.first.path
|
198
|
+
@lineno = @backtrace_locations.first.lineno
|
199
|
+
@backtrace_locations.shift
|
128
200
|
end
|
129
201
|
|
130
202
|
def traceback_most_recent_call_last
|
131
203
|
"Traceback (most recent call last):"
|
132
204
|
end
|
133
205
|
|
134
|
-
def location_inspect(location
|
135
|
-
"from #{location.path}:#{location.lineno}:in `#{
|
206
|
+
def location_inspect(location)
|
207
|
+
"from #{location.path}:#{location.lineno}:in `#{location.label}'"
|
136
208
|
end
|
137
209
|
|
138
210
|
# exception
|
139
|
-
def output_exception
|
140
|
-
puts exception_inspect
|
141
|
-
end
|
142
|
-
|
143
211
|
def exception_inspect
|
144
|
-
|
212
|
+
inspect_methods = self.class.inspect_methods
|
213
|
+
inspect_methods.keys.reverse_each do |key|
|
214
|
+
case key
|
215
|
+
when Class
|
216
|
+
return public_send(inspect_methods[key]) if @exception.is_a? key
|
217
|
+
when String
|
218
|
+
return public_send(inspect_methods[key]) if @exception.class.to_s == key
|
219
|
+
end
|
220
|
+
end
|
221
|
+
return nil
|
145
222
|
end
|
146
223
|
|
147
224
|
def original_exception_inspect
|
148
|
-
if @
|
225
|
+
if @exception.is_a? SyntaxError
|
149
226
|
return @exception_s
|
150
227
|
else
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
matched = Regexp.last_match
|
156
|
-
return "#{location_str}: #{matched[1]} (#{@exception.class})\n#{matched.post_match}"
|
228
|
+
location_str = "#{@path}:#{@lineno}:in `#{@label}'"
|
229
|
+
if @exception_s.match(/\A(?<first_line>.*?)\n/)
|
230
|
+
return "#{location_str}: #{Regexp.last_match(:first_line)} (#{@exception.class})\n" +
|
231
|
+
"#{Regexp.last_match.post_match}"
|
157
232
|
else
|
158
|
-
return "#{location_str}: #{@
|
233
|
+
return "#{location_str}: #{@exception_s} (#{@exception.class})"
|
159
234
|
end
|
160
235
|
end
|
161
236
|
end
|
162
237
|
|
163
238
|
# script
|
164
239
|
def output_script
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
240
|
+
return if @script.empty?
|
241
|
+
|
242
|
+
max_lineno_length = @output_lines.compact.max.to_s.length
|
243
|
+
@output_lines.each do |i|
|
244
|
+
if @lineno == i
|
245
|
+
puts sprintf(" => \e[34m%#{max_lineno_length}d:\e[0m %s", i, @script_lines[i])
|
246
|
+
elsif i
|
247
|
+
puts sprintf(" \e[34m%#{max_lineno_length}d:\e[0m %s", i, @script_lines[i])
|
169
248
|
else
|
170
|
-
|
171
|
-
puts sprintf(" => \e[34m%#{max_lineno_length}d:\e[0m %s", i, @script_lines[i])
|
172
|
-
else
|
173
|
-
puts sprintf(" \e[34m%#{max_lineno_length}d:\e[0m %s", i, @script_lines[i])
|
174
|
-
end
|
249
|
+
puts " \e[34m#{" " * max_lineno_length} :\e[0m"
|
175
250
|
end
|
176
251
|
end
|
177
252
|
end
|
178
253
|
|
179
|
-
def
|
180
|
-
|
254
|
+
def highlight(str, keyword, color)
|
255
|
+
str.to_s.gsub(keyword){ color + ($1 || $&) + "\e[0m" }
|
181
256
|
end
|
182
257
|
|
183
|
-
def
|
184
|
-
|
258
|
+
def highlight!(str, keyword, color)
|
259
|
+
str.gsub!(keyword){ color + ($1 || $&) + "\e[0m" } if str
|
185
260
|
end
|
186
261
|
|
187
|
-
def
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
def highlight!(str, keyword, color)
|
192
|
-
str.gsub!(keyword){ color + ($1 || $&) + "\e[0m" }
|
262
|
+
def default_output_lines
|
263
|
+
from = [1, @lineno - @@before_line_num].max
|
264
|
+
to = [@script_lines.size - 1, @lineno + @@after_line_num].min
|
265
|
+
(from..to).to_a
|
193
266
|
end
|
267
|
+
|
268
|
+
Eturem.eturem_class = self
|
194
269
|
end
|
195
|
-
|
196
|
-
set_eturem_class Base
|
197
270
|
end
|
data/lib/eturem/en.rb
ADDED
@@ -0,0 +1,216 @@
|
|
1
|
+
require "eturem/base"
|
2
|
+
|
3
|
+
module Eturem
|
4
|
+
class En < Base
|
5
|
+
@inspect_methods = {
|
6
|
+
# NoMemoryError => :no_memory_error_inspect,
|
7
|
+
# ScriptError => :script_error_inspect,
|
8
|
+
# LoadError => :load_error_inspect,
|
9
|
+
# NotImplementedError => :not_implemented_error_inspect,
|
10
|
+
# SyntaxError => :syntax_error_inspect,
|
11
|
+
# SecurityError => :security_error_inspect,
|
12
|
+
# SignalException => :signal_exception_inspect,
|
13
|
+
# Interrupt => :interrupt_inspect,
|
14
|
+
# StandardError => :standard_error_inspect,
|
15
|
+
# ArgumentError => :argument_error_inspect,
|
16
|
+
# UncaughtThrowError => :uncaught_throw_error_inspect,
|
17
|
+
# EncodingError => :encoding_error_inspect,
|
18
|
+
# Encoding::CompatibilityError => :encoding_compatibility_error_inspect,
|
19
|
+
# Encoding::ConverterNotFoundError => :encoding_converter_not_found_error_inspect,
|
20
|
+
# Encoding::InvalidByteSequenceError => :encoding_invalid_byte_sequence_error_inspect,
|
21
|
+
# Encoding::UndefinedConversionError => :encoding_undefined_conversion_error_inspect,
|
22
|
+
# FiberError => :fiber_error_inspect,
|
23
|
+
# IOError => :io_error_inspect,
|
24
|
+
# EOFError => :eof_error_inspect,
|
25
|
+
# IndexError => :index_error_inspect,
|
26
|
+
# KeyError => :key_error_inspect,
|
27
|
+
# StopIteration => :stop_iteration_inspect,
|
28
|
+
# ClosedQueueError => :closed_queue_error_inspect,
|
29
|
+
# LocalJumpError => :local_jump_error_inspect,
|
30
|
+
# Math::DomainError => :math_domain_error_inspect,
|
31
|
+
# NameError => :name_error_inspect,
|
32
|
+
# NoMethodError => :no_method_error_inspect,
|
33
|
+
# RangeError => :range_error_inspect,
|
34
|
+
# FloatDomainError => :float_domain_error_inspect,
|
35
|
+
# RegexpError => :regexp_error_inspect,
|
36
|
+
# RuntimeError => :runtime_error_inspect,
|
37
|
+
# FrozenError => :frozen_error_inspect,
|
38
|
+
# SystemCallError => :system_call_error_inspect,
|
39
|
+
# Errno::E2BIG => :errno_e2big_inspect,
|
40
|
+
# Errno::EACCES => :errno_eacces_inspect,
|
41
|
+
# Errno::EADDRINUSE => :errno_eaddrinuse_inspect,
|
42
|
+
# Errno::EADDRNOTAVAIL => :errno_eaddrnotavail_inspect,
|
43
|
+
# Errno::EADV => :errno_eadv_inspect,
|
44
|
+
# Errno::EAFNOSUPPORT => :errno_eafnosupport_inspect,
|
45
|
+
# Errno::EAGAIN => :errno_eagain_inspect,
|
46
|
+
# Errno::EALREADY => :errno_ealready_inspect,
|
47
|
+
# Errno::EAUTH => :errno_eauth_inspect,
|
48
|
+
# Errno::EBADE => :errno_ebade_inspect,
|
49
|
+
# Errno::EBADF => :errno_ebadf_inspect,
|
50
|
+
# Errno::EBADFD => :errno_ebadfd_inspect,
|
51
|
+
# Errno::EBADMSG => :errno_ebadmsg_inspect,
|
52
|
+
# Errno::EBADR => :errno_ebadr_inspect,
|
53
|
+
# Errno::EBADRPC => :errno_ebadrpc_inspect,
|
54
|
+
# Errno::EBADRQC => :errno_ebadrqc_inspect,
|
55
|
+
# Errno::EBADSLT => :errno_ebadslt_inspect,
|
56
|
+
# Errno::EBFONT => :errno_ebfont_inspect,
|
57
|
+
# Errno::EBUSY => :errno_ebusy_inspect,
|
58
|
+
# Errno::ECANCELED => :errno_ecanceled_inspect,
|
59
|
+
# Errno::ECAPMODE => :errno_ecapmode_inspect,
|
60
|
+
# Errno::ECHILD => :errno_echild_inspect,
|
61
|
+
# Errno::ECHRNG => :errno_echrng_inspect,
|
62
|
+
# Errno::ECOMM => :errno_ecomm_inspect,
|
63
|
+
# Errno::ECONNABORTED => :errno_econnaborted_inspect,
|
64
|
+
# Errno::ECONNREFUSED => :errno_econnrefused_inspect,
|
65
|
+
# Errno::ECONNRESET => :errno_econnreset_inspect,
|
66
|
+
# Errno::EDEADLK => :errno_edeadlk_inspect,
|
67
|
+
# Errno::EDEADLOCK => :errno_edeadlock_inspect,
|
68
|
+
# Errno::EDESTADDRREQ => :errno_edestaddrreq_inspect,
|
69
|
+
# Errno::EDOM => :errno_edom_inspect,
|
70
|
+
# Errno::EDOOFUS => :errno_edoofus_inspect,
|
71
|
+
# Errno::EDOTDOT => :errno_edotdot_inspect,
|
72
|
+
# Errno::EDQUOT => :errno_edquot_inspect,
|
73
|
+
# Errno::EEXIST => :errno_eexist_inspect,
|
74
|
+
# Errno::EFAULT => :errno_efault_inspect,
|
75
|
+
# Errno::EFBIG => :errno_efbig_inspect,
|
76
|
+
# Errno::EFTYPE => :errno_eftype_inspect,
|
77
|
+
# Errno::EHOSTDOWN => :errno_ehostdown_inspect,
|
78
|
+
# Errno::EHOSTUNREACH => :errno_ehostunreach_inspect,
|
79
|
+
# Errno::EHWPOISON => :errno_ehwpoison_inspect,
|
80
|
+
# Errno::EIDRM => :errno_eidrm_inspect,
|
81
|
+
# Errno::EILSEQ => :errno_eilseq_inspect,
|
82
|
+
# Errno::EINPROGRESS => :errno_einprogress_inspect,
|
83
|
+
# Errno::EINTR => :errno_eintr_inspect,
|
84
|
+
# Errno::EINVAL => :errno_einval_inspect,
|
85
|
+
# Errno::EIO => :errno_Eio_inspect,
|
86
|
+
# Errno::EIPSEC => :errno_eipsec_inspect,
|
87
|
+
# Errno::EISCONN => :errno_eisconn_inspect,
|
88
|
+
# Errno::EISDIR => :errno_eisdir_inspect,
|
89
|
+
# Errno::EISNAM => :errno_eisnam_inspect,
|
90
|
+
# Errno::EKEYEXPIRED => :errno_ekeyexpired_inspect,
|
91
|
+
# Errno::EKEYREJECTED => :errno_ekeyrejected_inspect,
|
92
|
+
# Errno::EKEYREVOKED => :errno_ekeyrevoked_inspect,
|
93
|
+
# Errno::EL2HLT => :errno_el2hlt_inspect,
|
94
|
+
# Errno::EL2NSYNC => :errno_el2nsync_inspect,
|
95
|
+
# Errno::EL3HLT => :errno_el3hlt_inspect,
|
96
|
+
# Errno::EL3RST => :errno_el3rst_inspect,
|
97
|
+
# Errno::ELIBACC => :errno_elibacc_inspect,
|
98
|
+
# Errno::ELIBBAD => :errno_elibbad_inspect,
|
99
|
+
# Errno::ELIBEXEC => :errno_elibexec_inspect,
|
100
|
+
# Errno::ELIBMAX => :errno_elibmax_inspect,
|
101
|
+
# Errno::ELIBSCN => :errno_elibscn_inspect,
|
102
|
+
# Errno::ELNRNG => :errno_elnrng_inspect,
|
103
|
+
# Errno::ELOOP => :errno_eloop_inspect,
|
104
|
+
# Errno::EMEDIUMTYPE => :errno_emediumtype_inspect,
|
105
|
+
# Errno::EMFILE => :errno_emfile_inspect,
|
106
|
+
# Errno::EMLINK => :errno_emlink_inspect,
|
107
|
+
# Errno::EMSGSIZE => :errno_emsgsize_inspect,
|
108
|
+
# Errno::EMULTIHOP => :errno_emultihop_inspect,
|
109
|
+
# Errno::ENAMETOOLONG => :errno_enametoolong_inspect,
|
110
|
+
# Errno::ENAVAIL => :errno_enavail_inspect,
|
111
|
+
# Errno::ENEEDAUTH => :errno_eneedauth_inspect,
|
112
|
+
# Errno::ENETDOWN => :errno_enetdown_inspect,
|
113
|
+
# Errno::ENETRESET => :errno_enetreset_inspect,
|
114
|
+
# Errno::ENETUNREACH => :errno_enetunreach_inspect,
|
115
|
+
# Errno::ENFILE => :errno_enfile_inspect,
|
116
|
+
# Errno::ENOANO => :errno_enoano_inspect,
|
117
|
+
# Errno::ENOATTR => :errno_enoattr_inspect,
|
118
|
+
# Errno::ENOBUFS => :errno_enobufs_inspect,
|
119
|
+
# Errno::ENOCSI => :errno_enocsi_inspect,
|
120
|
+
# Errno::ENODATA => :errno_enodata_inspect,
|
121
|
+
# Errno::ENODEV => :errno_enodev_inspect,
|
122
|
+
# Errno::ENOENT => :errno_enoent_inspect,
|
123
|
+
# Errno::ENOEXEC => :errno_enoexec_inspect,
|
124
|
+
# Errno::ENOKEY => :errno_enokey_inspect,
|
125
|
+
# Errno::ENOLCK => :errno_enolck_inspect,
|
126
|
+
# Errno::ENOLINK => :errno_enolink_inspect,
|
127
|
+
# Errno::ENOMEDIUM => :errno_enomedium_inspect,
|
128
|
+
# Errno::ENOMEM => :errno_enomem_inspect,
|
129
|
+
# Errno::ENOMSG => :errno_enomsg_inspect,
|
130
|
+
# Errno::ENONET => :errno_enonet_inspect,
|
131
|
+
# Errno::ENOPKG => :errno_enopkg_inspect,
|
132
|
+
# Errno::ENOPROTOOPT => :errno_enoprotoopt_inspect,
|
133
|
+
# Errno::ENOSPC => :errno_enospc_inspect,
|
134
|
+
# Errno::ENOSR => :errno_enosr_inspect,
|
135
|
+
# Errno::ENOSTR => :errno_enostr_inspect,
|
136
|
+
# Errno::ENOSYS => :errno_enosys_inspect,
|
137
|
+
# Errno::ENOTBLK => :errno_enotblk_inspect,
|
138
|
+
# Errno::ENOTCAPABLE => :errno_enotcapable_inspect,
|
139
|
+
# Errno::ENOTCONN => :errno_enotconn_inspect,
|
140
|
+
# Errno::ENOTDIR => :errno_enotdir_inspect,
|
141
|
+
# Errno::ENOTEMPTY => :errno_enotempty_inspect,
|
142
|
+
# Errno::ENOTNAM => :errno_enotnam_inspect,
|
143
|
+
# Errno::ENOTRECOVERABLE => :errno_enotrecoverable_inspect,
|
144
|
+
# Errno::ENOTSOCK => :errno_enotsock_inspect,
|
145
|
+
# Errno::ENOTSUP => :errno_enotsup_inspect,
|
146
|
+
# Errno::ENOTTY => :errno_enotty_inspect,
|
147
|
+
# Errno::ENOTUNIQ => :errno_enotuniq_inspect,
|
148
|
+
# Errno::ENXIO => :errno_enxio_inspect,
|
149
|
+
# Errno::EOPNOTSUPP => :errno_eopnotsupp_inspect,
|
150
|
+
# Errno::EOVERFLOW => :errno_eoverflow_inspect,
|
151
|
+
# Errno::EOWNERDEAD => :errno_eownerdead_inspect,
|
152
|
+
# Errno::EPERM => :errno_eperm_inspect,
|
153
|
+
# Errno::EPFNOSUPPORT => :errno_epfnosupport_inspect,
|
154
|
+
# Errno::EPIPE => :errno_epipe_inspect,
|
155
|
+
# Errno::EPROCLIM => :errno_eproclim_inspect,
|
156
|
+
# Errno::EPROCUNAVAIL => :errno_eprocunavail_inspect,
|
157
|
+
# Errno::EPROGMISMATCH => :errno_eprogmismatch_inspect,
|
158
|
+
# Errno::EPROGUNAVAIL => :errno_eprogunavail_inspect,
|
159
|
+
# Errno::EPROTO => :errno_eproto_inspect,
|
160
|
+
# Errno::EPROTONOSUPPORT => :errno_eprotonosupport_inspect,
|
161
|
+
# Errno::EPROTOTYPE => :errno_eprototype_inspect,
|
162
|
+
# Errno::ERANGE => :errno_erange_inspect,
|
163
|
+
# Errno::EREMCHG => :errno_eremchg_inspect,
|
164
|
+
# Errno::EREMOTE => :errno_eremote_inspect,
|
165
|
+
# Errno::EREMOTEIO => :errno_eremoteio_inspect,
|
166
|
+
# Errno::ERESTART => :errno_erestart_inspect,
|
167
|
+
# Errno::ERFKILL => :errno_erfkill_inspect,
|
168
|
+
# Errno::EROFS => :errno_erofs_inspect,
|
169
|
+
# Errno::ERPCMISMATCH => :errno_erpcmismatch_inspect,
|
170
|
+
# Errno::ESHUTDOWN => :errno_eshutdown_inspect,
|
171
|
+
# Errno::ESOCKTNOSUPPORT => :errno_esocktnosupport_inspect,
|
172
|
+
# Errno::ESPIPE => :errno_espipe_inspect,
|
173
|
+
# Errno::ESRCH => :errno_esrch_inspect,
|
174
|
+
# Errno::ESRMNT => :errno_esrmnt_inspect,
|
175
|
+
# Errno::ESTALE => :errno_estale_inspect,
|
176
|
+
# Errno::ESTRPIPE => :errno_estrpipe_inspect,
|
177
|
+
# Errno::ETIME => :errno_etime_inspect,
|
178
|
+
# Errno::ETIMEDOUT => :errno_etimedout_inspect,
|
179
|
+
# Errno::ETOOMANYREFS => :errno_etoomanyrefs_inspect,
|
180
|
+
# Errno::ETXTBSY => :errno_etxtbsy_inspect,
|
181
|
+
# Errno::EUCLEAN => :errno_euclean_inspect,
|
182
|
+
# Errno::EUNATCH => :errno_eunatch_inspect,
|
183
|
+
# Errno::EUSERS => :errno_eusers_inspect,
|
184
|
+
# Errno::EWOULDBLOCK => :errno_ewouldblock_inspect,
|
185
|
+
# Errno::EXDEV => :errno_exdev_inspect,
|
186
|
+
# Errno::EXFULL => :errno_exfull_inspect,
|
187
|
+
# Errno::EXXX => :errno_exxx_inspect,
|
188
|
+
# Errno::NOERROR => :errno_noerror_inspect,
|
189
|
+
# ThreadError => :thread_error_inspect,
|
190
|
+
# TypeError => :type_error_inspect,
|
191
|
+
# ZeroDivisionError => :zero_division_error_inspect,
|
192
|
+
# SystemStackError => :system_stack_error_inspect,
|
193
|
+
"sentinel" => nil
|
194
|
+
}
|
195
|
+
|
196
|
+
def prepare
|
197
|
+
super
|
198
|
+
end
|
199
|
+
|
200
|
+
def traceback_most_recent_call_last
|
201
|
+
super
|
202
|
+
end
|
203
|
+
|
204
|
+
def location_inspect(location)
|
205
|
+
super
|
206
|
+
end
|
207
|
+
|
208
|
+
def exception_inspect
|
209
|
+
super
|
210
|
+
end
|
211
|
+
|
212
|
+
Eturem.eturem_class = self
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
require "eturem"
|
data/lib/eturem/ja.rb
CHANGED
@@ -4,6 +4,198 @@ require "eturem/base"
|
|
4
4
|
|
5
5
|
module Eturem
|
6
6
|
class Ja < Base
|
7
|
+
|
8
|
+
@inspect_methods = {
|
9
|
+
NoMemoryError => :no_memory_error_inspect,
|
10
|
+
# ScriptError => :script_error_inspect,
|
11
|
+
LoadError => :load_error_inspect,
|
12
|
+
# NotImplementedError => :not_implemented_error_inspect,
|
13
|
+
SyntaxError => :syntax_error_inspect,
|
14
|
+
# SecurityError => :security_error_inspect,
|
15
|
+
# SignalException => :signal_exception_inspect,
|
16
|
+
# Interrupt => :interrupt_inspect,
|
17
|
+
# StandardError => :standard_error_inspect,
|
18
|
+
ArgumentError => :argument_error_inspect,
|
19
|
+
# UncaughtThrowError => :uncaught_throw_error_inspect,
|
20
|
+
# EncodingError => :encoding_error_inspect,
|
21
|
+
# Encoding::CompatibilityError => :encoding_compatibility_error_inspect,
|
22
|
+
# Encoding::ConverterNotFoundError => :encoding_converter_not_found_error_inspect,
|
23
|
+
# Encoding::InvalidByteSequenceError => :encoding_invalid_byte_sequence_error_inspect,
|
24
|
+
# Encoding::UndefinedConversionError => :encoding_undefined_conversion_error_inspect,
|
25
|
+
# FiberError => :fiber_error_inspect,
|
26
|
+
# IOError => :io_error_inspect,
|
27
|
+
# EOFError => :eof_error_inspect,
|
28
|
+
# IndexError => :index_error_inspect,
|
29
|
+
# KeyError => :key_error_inspect,
|
30
|
+
# StopIteration => :stop_iteration_inspect,
|
31
|
+
# ClosedQueueError => :closed_queue_error_inspect,
|
32
|
+
# LocalJumpError => :local_jump_error_inspect,
|
33
|
+
# Math::DomainError => :math_domain_error_inspect,
|
34
|
+
NameError => :name_error_inspect,
|
35
|
+
# NoMethodError => :no_method_error_inspect,
|
36
|
+
# RangeError => :range_error_inspect,
|
37
|
+
# FloatDomainError => :float_domain_error_inspect,
|
38
|
+
# RegexpError => :regexp_error_inspect,
|
39
|
+
# RuntimeError => :runtime_error_inspect,
|
40
|
+
# FrozenError => :frozen_error_inspect,
|
41
|
+
# SystemCallError => :system_call_error_inspect,
|
42
|
+
# Errno::E2BIG => :errno_e2big_inspect,
|
43
|
+
# Errno::EACCES => :errno_eacces_inspect,
|
44
|
+
# Errno::EADDRINUSE => :errno_eaddrinuse_inspect,
|
45
|
+
# Errno::EADDRNOTAVAIL => :errno_eaddrnotavail_inspect,
|
46
|
+
# Errno::EADV => :errno_eadv_inspect,
|
47
|
+
# Errno::EAFNOSUPPORT => :errno_eafnosupport_inspect,
|
48
|
+
# Errno::EAGAIN => :errno_eagain_inspect,
|
49
|
+
# Errno::EALREADY => :errno_ealready_inspect,
|
50
|
+
# Errno::EAUTH => :errno_eauth_inspect,
|
51
|
+
# Errno::EBADE => :errno_ebade_inspect,
|
52
|
+
# Errno::EBADF => :errno_ebadf_inspect,
|
53
|
+
# Errno::EBADFD => :errno_ebadfd_inspect,
|
54
|
+
# Errno::EBADMSG => :errno_ebadmsg_inspect,
|
55
|
+
# Errno::EBADR => :errno_ebadr_inspect,
|
56
|
+
# Errno::EBADRPC => :errno_ebadrpc_inspect,
|
57
|
+
# Errno::EBADRQC => :errno_ebadrqc_inspect,
|
58
|
+
# Errno::EBADSLT => :errno_ebadslt_inspect,
|
59
|
+
# Errno::EBFONT => :errno_ebfont_inspect,
|
60
|
+
# Errno::EBUSY => :errno_ebusy_inspect,
|
61
|
+
# Errno::ECANCELED => :errno_ecanceled_inspect,
|
62
|
+
# Errno::ECAPMODE => :errno_ecapmode_inspect,
|
63
|
+
# Errno::ECHILD => :errno_echild_inspect,
|
64
|
+
# Errno::ECHRNG => :errno_echrng_inspect,
|
65
|
+
# Errno::ECOMM => :errno_ecomm_inspect,
|
66
|
+
# Errno::ECONNABORTED => :errno_econnaborted_inspect,
|
67
|
+
# Errno::ECONNREFUSED => :errno_econnrefused_inspect,
|
68
|
+
# Errno::ECONNRESET => :errno_econnreset_inspect,
|
69
|
+
# Errno::EDEADLK => :errno_edeadlk_inspect,
|
70
|
+
# Errno::EDEADLOCK => :errno_edeadlock_inspect,
|
71
|
+
# Errno::EDESTADDRREQ => :errno_edestaddrreq_inspect,
|
72
|
+
# Errno::EDOM => :errno_edom_inspect,
|
73
|
+
# Errno::EDOOFUS => :errno_edoofus_inspect,
|
74
|
+
# Errno::EDOTDOT => :errno_edotdot_inspect,
|
75
|
+
# Errno::EDQUOT => :errno_edquot_inspect,
|
76
|
+
# Errno::EEXIST => :errno_eexist_inspect,
|
77
|
+
# Errno::EFAULT => :errno_efault_inspect,
|
78
|
+
# Errno::EFBIG => :errno_efbig_inspect,
|
79
|
+
# Errno::EFTYPE => :errno_eftype_inspect,
|
80
|
+
# Errno::EHOSTDOWN => :errno_ehostdown_inspect,
|
81
|
+
# Errno::EHOSTUNREACH => :errno_ehostunreach_inspect,
|
82
|
+
# Errno::EHWPOISON => :errno_ehwpoison_inspect,
|
83
|
+
# Errno::EIDRM => :errno_eidrm_inspect,
|
84
|
+
# Errno::EILSEQ => :errno_eilseq_inspect,
|
85
|
+
# Errno::EINPROGRESS => :errno_einprogress_inspect,
|
86
|
+
# Errno::EINTR => :errno_eintr_inspect,
|
87
|
+
# Errno::EINVAL => :errno_einval_inspect,
|
88
|
+
# Errno::EIO => :errno_Eio_inspect,
|
89
|
+
# Errno::EIPSEC => :errno_eipsec_inspect,
|
90
|
+
# Errno::EISCONN => :errno_eisconn_inspect,
|
91
|
+
# Errno::EISDIR => :errno_eisdir_inspect,
|
92
|
+
# Errno::EISNAM => :errno_eisnam_inspect,
|
93
|
+
# Errno::EKEYEXPIRED => :errno_ekeyexpired_inspect,
|
94
|
+
# Errno::EKEYREJECTED => :errno_ekeyrejected_inspect,
|
95
|
+
# Errno::EKEYREVOKED => :errno_ekeyrevoked_inspect,
|
96
|
+
# Errno::EL2HLT => :errno_el2hlt_inspect,
|
97
|
+
# Errno::EL2NSYNC => :errno_el2nsync_inspect,
|
98
|
+
# Errno::EL3HLT => :errno_el3hlt_inspect,
|
99
|
+
# Errno::EL3RST => :errno_el3rst_inspect,
|
100
|
+
# Errno::ELIBACC => :errno_elibacc_inspect,
|
101
|
+
# Errno::ELIBBAD => :errno_elibbad_inspect,
|
102
|
+
# Errno::ELIBEXEC => :errno_elibexec_inspect,
|
103
|
+
# Errno::ELIBMAX => :errno_elibmax_inspect,
|
104
|
+
# Errno::ELIBSCN => :errno_elibscn_inspect,
|
105
|
+
# Errno::ELNRNG => :errno_elnrng_inspect,
|
106
|
+
# Errno::ELOOP => :errno_eloop_inspect,
|
107
|
+
# Errno::EMEDIUMTYPE => :errno_emediumtype_inspect,
|
108
|
+
# Errno::EMFILE => :errno_emfile_inspect,
|
109
|
+
# Errno::EMLINK => :errno_emlink_inspect,
|
110
|
+
# Errno::EMSGSIZE => :errno_emsgsize_inspect,
|
111
|
+
# Errno::EMULTIHOP => :errno_emultihop_inspect,
|
112
|
+
# Errno::ENAMETOOLONG => :errno_enametoolong_inspect,
|
113
|
+
# Errno::ENAVAIL => :errno_enavail_inspect,
|
114
|
+
# Errno::ENEEDAUTH => :errno_eneedauth_inspect,
|
115
|
+
# Errno::ENETDOWN => :errno_enetdown_inspect,
|
116
|
+
# Errno::ENETRESET => :errno_enetreset_inspect,
|
117
|
+
# Errno::ENETUNREACH => :errno_enetunreach_inspect,
|
118
|
+
# Errno::ENFILE => :errno_enfile_inspect,
|
119
|
+
# Errno::ENOANO => :errno_enoano_inspect,
|
120
|
+
# Errno::ENOATTR => :errno_enoattr_inspect,
|
121
|
+
# Errno::ENOBUFS => :errno_enobufs_inspect,
|
122
|
+
# Errno::ENOCSI => :errno_enocsi_inspect,
|
123
|
+
# Errno::ENODATA => :errno_enodata_inspect,
|
124
|
+
# Errno::ENODEV => :errno_enodev_inspect,
|
125
|
+
Errno::ENOENT => :errno_enoent_inspect,
|
126
|
+
# Errno::ENOEXEC => :errno_enoexec_inspect,
|
127
|
+
# Errno::ENOKEY => :errno_enokey_inspect,
|
128
|
+
# Errno::ENOLCK => :errno_enolck_inspect,
|
129
|
+
# Errno::ENOLINK => :errno_enolink_inspect,
|
130
|
+
# Errno::ENOMEDIUM => :errno_enomedium_inspect,
|
131
|
+
# Errno::ENOMEM => :errno_enomem_inspect,
|
132
|
+
# Errno::ENOMSG => :errno_enomsg_inspect,
|
133
|
+
# Errno::ENONET => :errno_enonet_inspect,
|
134
|
+
# Errno::ENOPKG => :errno_enopkg_inspect,
|
135
|
+
# Errno::ENOPROTOOPT => :errno_enoprotoopt_inspect,
|
136
|
+
# Errno::ENOSPC => :errno_enospc_inspect,
|
137
|
+
# Errno::ENOSR => :errno_enosr_inspect,
|
138
|
+
# Errno::ENOSTR => :errno_enostr_inspect,
|
139
|
+
# Errno::ENOSYS => :errno_enosys_inspect,
|
140
|
+
# Errno::ENOTBLK => :errno_enotblk_inspect,
|
141
|
+
# Errno::ENOTCAPABLE => :errno_enotcapable_inspect,
|
142
|
+
# Errno::ENOTCONN => :errno_enotconn_inspect,
|
143
|
+
# Errno::ENOTDIR => :errno_enotdir_inspect,
|
144
|
+
# Errno::ENOTEMPTY => :errno_enotempty_inspect,
|
145
|
+
# Errno::ENOTNAM => :errno_enotnam_inspect,
|
146
|
+
# Errno::ENOTRECOVERABLE => :errno_enotrecoverable_inspect,
|
147
|
+
# Errno::ENOTSOCK => :errno_enotsock_inspect,
|
148
|
+
# Errno::ENOTSUP => :errno_enotsup_inspect,
|
149
|
+
# Errno::ENOTTY => :errno_enotty_inspect,
|
150
|
+
# Errno::ENOTUNIQ => :errno_enotuniq_inspect,
|
151
|
+
# Errno::ENXIO => :errno_enxio_inspect,
|
152
|
+
# Errno::EOPNOTSUPP => :errno_eopnotsupp_inspect,
|
153
|
+
# Errno::EOVERFLOW => :errno_eoverflow_inspect,
|
154
|
+
# Errno::EOWNERDEAD => :errno_eownerdead_inspect,
|
155
|
+
# Errno::EPERM => :errno_eperm_inspect,
|
156
|
+
# Errno::EPFNOSUPPORT => :errno_epfnosupport_inspect,
|
157
|
+
# Errno::EPIPE => :errno_epipe_inspect,
|
158
|
+
# Errno::EPROCLIM => :errno_eproclim_inspect,
|
159
|
+
# Errno::EPROCUNAVAIL => :errno_eprocunavail_inspect,
|
160
|
+
# Errno::EPROGMISMATCH => :errno_eprogmismatch_inspect,
|
161
|
+
# Errno::EPROGUNAVAIL => :errno_eprogunavail_inspect,
|
162
|
+
# Errno::EPROTO => :errno_eproto_inspect,
|
163
|
+
# Errno::EPROTONOSUPPORT => :errno_eprotonosupport_inspect,
|
164
|
+
# Errno::EPROTOTYPE => :errno_eprototype_inspect,
|
165
|
+
# Errno::ERANGE => :errno_erange_inspect,
|
166
|
+
# Errno::EREMCHG => :errno_eremchg_inspect,
|
167
|
+
# Errno::EREMOTE => :errno_eremote_inspect,
|
168
|
+
# Errno::EREMOTEIO => :errno_eremoteio_inspect,
|
169
|
+
# Errno::ERESTART => :errno_erestart_inspect,
|
170
|
+
# Errno::ERFKILL => :errno_erfkill_inspect,
|
171
|
+
# Errno::EROFS => :errno_erofs_inspect,
|
172
|
+
# Errno::ERPCMISMATCH => :errno_erpcmismatch_inspect,
|
173
|
+
# Errno::ESHUTDOWN => :errno_eshutdown_inspect,
|
174
|
+
# Errno::ESOCKTNOSUPPORT => :errno_esocktnosupport_inspect,
|
175
|
+
# Errno::ESPIPE => :errno_espipe_inspect,
|
176
|
+
# Errno::ESRCH => :errno_esrch_inspect,
|
177
|
+
# Errno::ESRMNT => :errno_esrmnt_inspect,
|
178
|
+
# Errno::ESTALE => :errno_estale_inspect,
|
179
|
+
# Errno::ESTRPIPE => :errno_estrpipe_inspect,
|
180
|
+
# Errno::ETIME => :errno_etime_inspect,
|
181
|
+
# Errno::ETIMEDOUT => :errno_etimedout_inspect,
|
182
|
+
# Errno::ETOOMANYREFS => :errno_etoomanyrefs_inspect,
|
183
|
+
# Errno::ETXTBSY => :errno_etxtbsy_inspect,
|
184
|
+
# Errno::EUCLEAN => :errno_euclean_inspect,
|
185
|
+
# Errno::EUNATCH => :errno_eunatch_inspect,
|
186
|
+
# Errno::EUSERS => :errno_eusers_inspect,
|
187
|
+
# Errno::EWOULDBLOCK => :errno_ewouldblock_inspect,
|
188
|
+
# Errno::EXDEV => :errno_exdev_inspect,
|
189
|
+
# Errno::EXFULL => :errno_exfull_inspect,
|
190
|
+
# Errno::EXXX => :errno_exxx_inspect,
|
191
|
+
# Errno::NOERROR => :errno_noerror_inspect,
|
192
|
+
# ThreadError => :thread_error_inspect,
|
193
|
+
TypeError => :type_error_inspect,
|
194
|
+
ZeroDivisionError => :zero_division_error_inspect,
|
195
|
+
SystemStackError => :system_stack_error_inspect,
|
196
|
+
"sentinel" => nil
|
197
|
+
}
|
198
|
+
|
7
199
|
def prepare
|
8
200
|
super
|
9
201
|
case @exception.class.to_s
|
@@ -17,110 +209,122 @@ module Eturem
|
|
17
209
|
"エラー発生までの流れ:"
|
18
210
|
end
|
19
211
|
|
20
|
-
def location_inspect(location
|
21
|
-
"
|
212
|
+
def location_inspect(location)
|
213
|
+
%["#{location.path}" #{location.lineno}行目: '#{location.label}']
|
22
214
|
end
|
23
215
|
|
24
|
-
def output_exception
|
25
|
-
puts exception_inspect
|
26
|
-
end
|
27
|
-
|
28
216
|
def exception_inspect
|
29
|
-
|
30
|
-
case @exception
|
31
|
-
when LoadError
|
32
|
-
return ret +
|
33
|
-
"ファイル/ライブラリ '#{@exception.path}' が見つかりません。" +
|
34
|
-
"ファイル/ライブラリ名を確認してください。"
|
35
|
-
when SyntaxError
|
36
|
-
return syntax_error_inspect(ret)
|
37
|
-
when Interrupt
|
38
|
-
return ret + "プログラムが途中で強制終了されました。"
|
39
|
-
when ArgumentError
|
40
|
-
if @given
|
41
|
-
return ret +
|
42
|
-
"引数の数が正しくありません。" +
|
43
|
-
"「#{@method}」は本来" +
|
44
|
-
(@expected =~ /^0$/ ? "引数が不要ですが、" : "#{@expected}個の引数を取りますが、") +
|
45
|
-
"#{@given}個の引数が渡されています。"
|
46
|
-
else
|
47
|
-
return ret + "「#{@method}」への引数の数が正しくありません。"
|
48
|
-
end
|
49
|
-
when NameError, NoMethodError
|
50
|
-
return name_error_inspect(ret)
|
51
|
-
when TypeError
|
52
|
-
return ret + "「#{@method}」への引数のタイプが正しくありません。"
|
53
|
-
when ZeroDivisionError
|
54
|
-
return ret + "割る数が 0 での割り算はできません。"
|
55
|
-
else
|
56
|
-
return ret
|
57
|
-
end
|
217
|
+
return %[ファイル"#{@path}" #{@lineno}行目でエラーが発生しました。\n] + super.to_s
|
58
218
|
end
|
59
219
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
220
|
+
def no_memory_error_inspect
|
221
|
+
"メモリを確保できませんでした。あまりにも大量のデータを作成していませんか?"
|
222
|
+
end
|
223
|
+
|
224
|
+
def load_error_inspect
|
225
|
+
%[ファイル/ライブラリ "#{@exception.path}" が見つかりません。] +
|
226
|
+
%[ファイル/ライブラリ名を確認してください。]
|
227
|
+
end
|
228
|
+
|
229
|
+
def syntax_error_inspect
|
230
|
+
if @unexpected.match(/^'(.)'$/)
|
65
231
|
highlight!(@script_lines[@lineno], Regexp.last_match(1), "\e[31m\e[4m")
|
232
|
+
elsif @unexpected.match(/^(?:keyword|modifier)_/)
|
233
|
+
highlight!(@script_lines[@lineno], Regexp.last_match.post_match, "\e[31m\e[4m")
|
66
234
|
end
|
67
|
-
|
235
|
+
unexpected = transform_syntax_error_keyword(@unexpected)
|
236
|
+
expected = @expected.split(/\s+or\s+/).map{ |ex| transform_syntax_error_keyword(ex) }
|
237
|
+
keywords = %w[if unless case while until for begin def class module do].select{ |keyword|
|
238
|
+
@script.index(keyword)
|
239
|
+
}.join(" / ")
|
240
|
+
keywords = keywords.empty? ? "ifなど" : "「#{keywords}」"
|
68
241
|
|
69
|
-
if
|
70
|
-
ret
|
71
|
-
ret += "
|
242
|
+
if expected.join == "end-of-input"
|
243
|
+
ret = "構文エラーです。余分な#{unexpected}があります。"
|
244
|
+
ret += "#{keywords}と「end」の対応関係を確認してください。" if unexpected == "end"
|
72
245
|
return ret
|
73
|
-
elsif
|
74
|
-
ret =
|
246
|
+
elsif unexpected == "end-of-input"
|
247
|
+
ret = "(ただし、実際のエラーの原因はおそらくもっと前にあります。)\n" +
|
75
248
|
"構文エラーです。#{expected.join('または')}が足りません。"
|
76
|
-
ret += "
|
249
|
+
ret += "#{keywords}に対応する「end」があるか確認してください。" if expected.include?("end")
|
77
250
|
return ret
|
78
251
|
end
|
79
|
-
return
|
80
|
-
|
81
|
-
"#{expected.join('または')}を入れる必要があります。"
|
252
|
+
return "構文エラーです。#{expected.join('または')}が来るべき場所に、" +
|
253
|
+
"#{unexpected}が来てしまいました。"
|
82
254
|
end
|
83
255
|
|
84
256
|
def transform_syntax_error_keyword(keyword)
|
85
|
-
keyword
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
"「 #{word.gsub("'", "")} 」"
|
95
|
-
else
|
96
|
-
word
|
97
|
-
end
|
257
|
+
case keyword
|
258
|
+
when "end-of-input", "$end"
|
259
|
+
"end-of-input"
|
260
|
+
when /^(?:keyword|modifier)_/
|
261
|
+
Regexp.last_match.post_match
|
262
|
+
when "'\\n'"
|
263
|
+
"改行"
|
264
|
+
else
|
265
|
+
keyword
|
98
266
|
end
|
99
267
|
end
|
100
268
|
|
101
|
-
def
|
102
|
-
|
269
|
+
def interrupt_inspect
|
270
|
+
"プログラムが途中で強制終了されました。"
|
103
271
|
end
|
104
272
|
|
105
|
-
def
|
106
|
-
|
107
|
-
|
108
|
-
@
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
ret += "「#{did_you_mean}」の入力ミスではありませんか?"
|
273
|
+
def argument_error_inspect
|
274
|
+
if @given
|
275
|
+
ret = "引数の数が正しくありません。「#{@method}」は本来"
|
276
|
+
case @expected
|
277
|
+
when "0"
|
278
|
+
ret += "引数が不要です"
|
279
|
+
when /^(\d+)\.\.(\d+)$/
|
280
|
+
ret += "#{Regexp.last_match(1)}~#{Regexp.last_match(2)}個の引数を取ります"
|
281
|
+
when /^(\d+)\+$/
|
282
|
+
ret += "#{Regexp.last_match(1)}個以上の引数を取ります"
|
116
283
|
end
|
284
|
+
if @given == 0
|
285
|
+
ret += "が、引数が1つも渡されていません。"
|
286
|
+
else
|
287
|
+
ret += "が、#{@given}個の引数が渡されています。"
|
288
|
+
end
|
289
|
+
return ret
|
290
|
+
else
|
291
|
+
return "「#{@method}」への引数の数が正しくありません。"
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
def name_error_inspect
|
296
|
+
if @exception.name.to_s.encode("UTF-8").include?(" ")
|
297
|
+
@output_lines = default_output_lines
|
298
|
+
return "スクリプト中に全角空白が混じっています。"
|
299
|
+
end
|
300
|
+
|
301
|
+
ret = "#{@exception.is_a?(NoMethodError) ? "" : "変数/"}メソッド" +
|
302
|
+
"「\e[31m\e[4m#{@exception.name}\e[0m」は存在しません。"
|
303
|
+
if @did_you_mean
|
304
|
+
did_you_mean = @did_you_mean.map{ |d| "\e[33m#{d}\e[0m" }.join(" / ")
|
305
|
+
ret += "「#{did_you_mean}」の入力ミスではありませんか?"
|
117
306
|
end
|
118
307
|
return ret
|
119
308
|
end
|
309
|
+
|
310
|
+
def errno_enoent_inspect
|
311
|
+
"ファイルアクセスに失敗しました。ファイルがありません。"
|
312
|
+
end
|
313
|
+
|
314
|
+
def type_error_inspect
|
315
|
+
"「#{@method}」への引数のタイプ(型)が正しくありません。"
|
316
|
+
end
|
317
|
+
|
318
|
+
def zero_division_error_inspect
|
319
|
+
"割る数が 0 での割り算はできません。"
|
320
|
+
end
|
321
|
+
|
322
|
+
def system_stack_error_inspect
|
323
|
+
"システムスタックがあふれました。意図しない無限ループが生じている可能性があります。"
|
324
|
+
end
|
325
|
+
|
326
|
+
Eturem.eturem_class = self
|
120
327
|
end
|
121
|
-
|
122
|
-
set_eturem_class Ja
|
123
328
|
end
|
124
329
|
|
125
330
|
require "eturem"
|
126
|
-
|
data/lib/eturem/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eturem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nodai2hITC
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- eturem.gemspec
|
72
72
|
- lib/eturem.rb
|
73
73
|
- lib/eturem/base.rb
|
74
|
+
- lib/eturem/en.rb
|
74
75
|
- lib/eturem/ja.rb
|
75
76
|
- lib/eturem/version.rb
|
76
77
|
homepage: https://github.com/nodai2hITC/eturem
|