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 154 154: def initialize(ldif, reason=nil, line=nil, column=nil) 155: @ldif = ldif 156: @reason = reason 157: @line = line 158: @column = column 159: @nearest = nil 160: if @reason 161: message = _("invalid LDIF: %s:") % @reason 162: else 163: message = _("invalid LDIF:") 164: end 165: if @line and @column 166: @nearest = detect_nearest(@line, @column) 167: snippet = generate_snippet 168: message << "\n#{snippet}\n" 169: end 170: super("#{message}\n#{numbered_ldif}") 171: end
# File lib/active_ldap/base.rb, line 175 175: def detect_nearest(line, column) 176: lines = Compatible.string_to_lines(@ldif).to_a 177: nearest = lines[line - 1] || "" 178: if column - 1 == nearest.size # for JRuby 1.0.2 :< 179: nearest << NEAREST_MARK 180: else 181: nearest[column - 1, 0] = NEAREST_MARK 182: end 183: if nearest == NEAREST_MARK 184: nearest = "#{lines[line - 2]}#{nearest}" 185: end 186: nearest 187: end
# File lib/active_ldap/base.rb, line 189 189: def generate_snippet 190: nearest = @nearest.chomp 191: column_column = ":#{@column}" 192: target_position_info = "#{@line}#{column_column}: " 193: if /\n/ =~ nearest 194: snippet = "%#{Math.log10(@line).truncate}d" % (@line - 1) 195: snippet << " " * column_column.size 196: snippet << ": " 197: snippet << nearest.gsub(/\n/, "\n#{target_position_info}") 198: else 199: snippet = "#{target_position_info}#{nearest}" 200: end 201: snippet 202: end
# File lib/active_ldap/base.rb, line 204 204: def numbered_ldif 205: return @ldif if @ldif.blank? 206: lines = Compatible.string_to_lines(@ldif) 207: format = "%#{Math.log10(lines.size).truncate + 1}d: %s" 208: i = 0 209: lines.collect do |line| 210: i += 1 211: format % [i, line] 212: end.join 213: end