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