Exception: Nanaimo::Reader::ParseError
- Defined in:
- lib/nanaimo/reader.rb
Overview
Raised when parsing fails.
Instance Attribute Summary collapse
-
#location ⇒ [Integer, Integer]
The (line, column) offset into the plist where the error occurred.
-
#plist_string ⇒ String
The contents of the plist.
Instance Method Summary collapse
Instance Attribute Details
#location ⇒ [Integer, Integer]
Returns The (line, column) offset into the plist where the error occurred.
31 32 33 |
# File 'lib/nanaimo/reader.rb', line 31 def location @location end |
#plist_string ⇒ String
Returns The contents of the plist.
35 36 37 |
# File 'lib/nanaimo/reader.rb', line 35 def plist_string @plist_string end |
Instance Method Details
#context(n = 2) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/nanaimo/reader.rb', line 41 def context(n = 2) line_number, column = location line_number -= 1 lines = plist_string.split(NEWLINE) s = line_number.succ.to_s.size indent = "#{' ' * s}# " indicator = "#{line_number.succ}> " m = ::String.new("\n") m << "#{indent}-------------------------------------------\n" m << lines[[line_number - n, 0].max...line_number].map do |l| "#{indent}#{l}\n" end.join line = lines[line_number].to_s m << "#{indicator}#{line}\n" m << ' ' * indent.size m << line[0, column.pred].gsub(/[^\t]/, ' ') m << "^\n" m << Array(lines[line_number.succ..[lines.count.pred, line_number + n].min]).map do |l| l.strip.empty? ? '' : "#{indent}#{l}\n" end.join m << "#{indent}-------------------------------------------\n" end |
#to_s ⇒ Object
37 38 39 |
# File 'lib/nanaimo/reader.rb', line 37 def to_s "[!] #{super}#{context}" end |