| Class | ActiveLdap::LdifInvalid |
| In: |
lib/active_ldap/base.rb
|
| Parent: | Error |
| NEAREST_MARK | = | "|@|" |
| column | [R] | |
| ldif | [R] | |
| line | [R] | |
| nearest | [R] | |
| reason | [R] |
# File lib/active_ldap/base.rb, line 135
135: def initialize(ldif, reason=nil, line=nil, column=nil)
136: @ldif = ldif
137: @reason = reason
138: @line = line
139: @column = column
140: @nearest = nil
141: if @reason
142: message = _("invalid LDIF: %s:") % @reason
143: else
144: message = _("invalid LDIF:")
145: end
146: if @line and @column
147: @nearest = detect_nearest(@line, @column)
148: snippet = generate_snippet
149: message << "\n#{snippet}\n"
150: end
151: super("#{message}\n#{numbered_ldif}")
152: end
# File lib/active_ldap/base.rb, line 156
156: def detect_nearest(line, column)
157: nearest = @ldif.to_a[line - 1] || ""
158: if column - 1 == nearest.size # for JRuby 1.0.2 :<
159: nearest << NEAREST_MARK
160: else
161: nearest[column - 1, 0] = NEAREST_MARK
162: end
163: nearest = "#{@ldif.to_a[line - 2]}#{nearest}" if nearest == NEAREST_MARK
164: nearest
165: end
# File lib/active_ldap/base.rb, line 167
167: def generate_snippet
168: nearest = @nearest.chomp
169: column_column = ":#{@column}"
170: target_position_info = "#{@line}#{column_column}: "
171: if /\n/ =~ nearest
172: snippet = "%#{Math.log10(@line).truncate}d" % (@line - 1)
173: snippet << " " * column_column.size
174: snippet << ": "
175: snippet << nearest.gsub(/\n/, "\n#{target_position_info}")
176: else
177: snippet = "#{target_position_info}#{nearest}"
178: end
179: snippet
180: end