Module: Eturem::NameErrorExt
- Includes:
- ExceptionExt
- Defined in:
- lib/eturem/base.rb,
lib/eturem/ja/name_error.rb
Class Method Summary
collapse
Instance Method Summary
collapse
#eturem_location_to_s, #eturem_traceback
Methods included from Base
after_line_num=, before_line_num=, #eturem_backtrace, #eturem_backtrace_locations, #eturem_backtrace_str, #eturem_full_message, #eturem_location_to_s, #eturem_original_error_message, #eturem_script, highlight, output_backtrace=, output_original=, output_script=, read_script, script, unhighlight, use_coderay=, warning_message
Class Method Details
.corrections ⇒ Object
272
|
# File 'lib/eturem/base.rb', line 272
def self.corrections; @eturem_corrections; end
|
Instance Method Details
#eturem_basic_name_error ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/eturem/ja/name_error.rb', line 38
def eturem_basic_name_error
@eturem_message_ja =
(self.is_a?(NoMethodError) ? "メソッド" : "変数/メソッド") +
"「\e[1;4;31m#{self.name.to_s.encode("utf-8")}\e[0m」は存在しません。"
unless @eturem_corrections.empty?
did_you_mean = @eturem_corrections.map{ |d|
"\e[1;33m#{d.to_s.encode("utf-8")}\e[0m"
}.join(" / ")
@eturem_message_ja += "「#{did_you_mean}」の入力ミスではありませんか?"
end
end
|
#eturem_message ⇒ Object
5
6
7
8
9
10
11
12
13
14
15
16
|
# File 'lib/eturem/ja/name_error.rb', line 5
def eturem_message()
if self.name.to_s.encode("utf-8").include?(" ")
eturem_multibyte_space
elsif self.name.to_s.encode("utf-8").match(/[”’`(){}#]/)
eturem_multibyte_char
elsif self.receiver == nil
eturem_receiver_is_nil
else
eturem_basic_name_error
end
super
end
|
#eturem_multibyte_char ⇒ Object
24
25
26
27
28
29
30
|
# File 'lib/eturem/ja/name_error.rb', line 24
def eturem_multibyte_char
@eturem_script_lines = Eturem::Base.read_script(@eturem_path)
if @eturem_script_lines[@eturem_lineno]
@eturem_script_lines[@eturem_lineno].gsub!(/[”’`()#]+/){ "\e[1;4;31m#{$&}\e[0m" }
end
@eturem_message_ja = "スクリプト中に全角記号が混じっています。"
end
|
#eturem_multibyte_space ⇒ Object
18
19
20
21
22
|
# File 'lib/eturem/ja/name_error.rb', line 18
def eturem_multibyte_space
@eturem_script_lines = Eturem::Base.read_script(@eturem_path)
Eturem::Base.highlight(@eturem_script_lines[@eturem_lineno], / +/, "\e[1;4;31m")
@eturem_message_ja = "スクリプト中に全角空白が混じっています。"
end
|
#eturem_prepare ⇒ Object
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
|
# File 'lib/eturem/base.rb', line 266
def eturem_prepare()
@eturem_corrections = self.respond_to?(:corrections) ? self.corrections : []
@eturem_corrections += Object.constants.map(&:to_s).select do |const|
const.casecmp?(self.name)
end
@eturem_corrections.uniq!
def self.corrections; @eturem_corrections; end
super
uname = self.name.to_s.encode("utf-8")
if @eturem_script_lines[@eturem_lineno]
Eturem::Base.highlight(@eturem_script_lines[@eturem_lineno], uname, "\e[1;4;31m")
end
@eturem_corrections.each do |name|
index = @eturem_script_lines.index { |line| line.include?(name.to_s.encode("utf-8")) }
next unless index
Eturem::Base.highlight(@eturem_script_lines[index], name.to_s.encode("utf-8"), "\e[1;33m")
@eturem_output_linenos.push(index)
end
end
|
#eturem_receiver_is_nil ⇒ Object
32
33
34
35
36
|
# File 'lib/eturem/ja/name_error.rb', line 32
def eturem_receiver_is_nil
@eturem_message_ja =
"nil に対して #{self.name.to_s.encode("utf-8")} というメソッドを呼び出そうとしています。\n" +
"変数の値/メソッドの返値が予期せず nil になっている可能性があります。"
end
|