class Object

Public Instance Methods

parse_filter_branch(scanner) click to toggle source
# File lib/ucb_groups/monkey_patches/net_ldap_filter.rb, line 6
def parse_filter_branch(scanner)
  scanner.scan(/\s*/)
  if token = scanner.scan(/[-\w:.]*[\w]/)
    scanner.scan(/\s*/)
    if op = scanner.scan(/<=|>=|!=|:=|=/)
      scanner.scan(/\s*/)
      #if value = scanner.scan(/(?:[-\w*.+@=,#\$%&!'\s]|\\[a-fA-F\d]{2})+/)

      # Our patch allows ':' as a valid character.
      if value = scanner.scan(/(?:[-\w*.+@=,:#\$%&!'\s]|\\[a-fA-F\d]{2})+/)
        # 20100313 AZ: Assumes that "(uid=george*)" is the same as
        # "(uid=george* )". The standard doesn't specify, but I can find
        # no examples that suggest otherwise.
        value.strip!

        case op
          when "="
            Net::LDAP::Filter.eq(token, value)
          when "!="
            Net::LDAP::Filter.ne(token, value)
          when "<="
            Net::LDAP::Filter.le(token, value)
          when ">="
            Net::LDAP::Filter.ge(token, value)
          when ":="
            Net::LDAP::Filter.ex(token, value)
        end
      end
    end
  end
end