Class: Treequel::Schema::MatchingRuleUse

Inherits:
Object
  • Object
show all
Extended by:
Loggability, AttributeDeclarations
Includes:
Constants::Patterns
Defined in:
lib/treequel/schema/matchingruleuse.rb

Overview

This is a class for representing matchingRuleUse declarations in a Treequel::Schema.

Constant Summary

Constants included from Constants::Patterns

Constants::Patterns::ALPHA, Constants::Patterns::AMPERSAND, Constants::Patterns::ASSERTIONVALUE, Constants::Patterns::ASTERISK, Constants::Patterns::ATTRIBUTE_TYPE, Constants::Patterns::ATTRIBUTE_TYPE_AND_VALUE, Constants::Patterns::ATTRIBUTE_VALUE, Constants::Patterns::BASE64_CHAR, Constants::Patterns::BASE64_STRING, Constants::Patterns::COLON, Constants::Patterns::COMMA, Constants::Patterns::DESCR, Constants::Patterns::DIGIT, Constants::Patterns::DISTINGUISHED_NAME, Constants::Patterns::DN_ESCAPED, Constants::Patterns::DOLLAR, Constants::Patterns::DOT, Constants::Patterns::DQUOTE, Constants::Patterns::DSTRING, Constants::Patterns::EQUALS, Constants::Patterns::ESC, Constants::Patterns::ESCAPED, Constants::Patterns::EXCLAMATION, Constants::Patterns::EXTENSIONS, Constants::Patterns::FILL, Constants::Patterns::FOLD, Constants::Patterns::HEX, Constants::Patterns::HEXPAIR, Constants::Patterns::HEXSTRING, Constants::Patterns::HYPHEN, Constants::Patterns::KEYCHAR, Constants::Patterns::KEYSTRING, Constants::Patterns::KIND, Constants::Patterns::LANGLE, Constants::Patterns::LCURLY, Constants::Patterns::LDAP_ATTRIBUTE_DESCRIPTION, Constants::Patterns::LDAP_ATTRIBUTE_TYPE_DESCRIPTION, Constants::Patterns::LDAP_MATCHING_RULE_DESCRIPTION, Constants::Patterns::LDAP_MATCHING_RULE_USE_DESCRIPTION, Constants::Patterns::LDAP_MISORDERED_DESC_OBJECTCLASS_DESCRIPTION, Constants::Patterns::LDAP_MISORDERED_KIND_OBJECTCLASS_DESCRIPTION, Constants::Patterns::LDAP_MISORDERED_SYNTAX_ATTRIBUTE_TYPE_DESCRIPTION, Constants::Patterns::LDAP_OBJECTCLASS_DESCRIPTION, Constants::Patterns::LDAP_SUBSTRING_FILTER, Constants::Patterns::LDAP_SUBSTRING_FILTER_VALUE, Constants::Patterns::LDAP_SYNTAX_DESCRIPTION, Constants::Patterns::LDAP_TRAILING_KIND_OBJECTCLASS_DESCRIPTION, Constants::Patterns::LDAP_UNESCAPE_SQUOTE_ATTRIBUTE_TYPE_DESCRIPTION, Constants::Patterns::LDIF_ATTRIBUTE_DESCRIPTION, Constants::Patterns::LDIF_ATTRIBUTE_TYPE, Constants::Patterns::LDIF_ATTRTYPE_OPTION, Constants::Patterns::LDIF_ATTRTYPE_OPTIONS, Constants::Patterns::LDIF_ATTRVAL_SPEC, Constants::Patterns::LDIF_ATTR_TYPE_CHARS, Constants::Patterns::LDIF_OPT_CHAR, Constants::Patterns::LDIF_SAFE_CHAR, Constants::Patterns::LDIF_SAFE_INIT_CHAR, Constants::Patterns::LDIF_SAFE_STRING, Constants::Patterns::LDIF_VALUE_SPEC, Constants::Patterns::LDIGIT, Constants::Patterns::LEADCHAR, Constants::Patterns::LEADKEYCHAR, Constants::Patterns::LEN, Constants::Patterns::LPAREN, Constants::Patterns::LUTF1, Constants::Patterns::MALFORMED_DSTRING, Constants::Patterns::MALFORMED_QDSTRING, Constants::Patterns::NOIDLEN, Constants::Patterns::NORMAL, Constants::Patterns::NUL, Constants::Patterns::NUMBER, Constants::Patterns::NUMERICOID, Constants::Patterns::OCTET, Constants::Patterns::OID, Constants::Patterns::OIDLIST, Constants::Patterns::OIDS, Constants::Patterns::PAIR, Constants::Patterns::PLUS, Constants::Patterns::QDESCR, Constants::Patterns::QDESCRLIST, Constants::Patterns::QDESCRS, Constants::Patterns::QDSTRING, Constants::Patterns::QDSTRINGLIST, Constants::Patterns::QDSTRINGS, Constants::Patterns::QQ, Constants::Patterns::QS, Constants::Patterns::QUOTED_DESCR, Constants::Patterns::QUOTED_NUMERICOID, Constants::Patterns::QUTF1, Constants::Patterns::QUTF8, Constants::Patterns::RANGLE, Constants::Patterns::RCURLY, Constants::Patterns::RELATIVE_DISTINGUISHED_NAME, Constants::Patterns::RPAREN, Constants::Patterns::SEMI, Constants::Patterns::SEP, Constants::Patterns::SHARP, Constants::Patterns::SP, Constants::Patterns::SPACE, Constants::Patterns::SPECIAL, Constants::Patterns::SQUOTE, Constants::Patterns::STRING, Constants::Patterns::STRINGCHAR, Constants::Patterns::SUTF1, Constants::Patterns::TILDE, Constants::Patterns::TRAILCHAR, Constants::Patterns::TUTF1, Constants::Patterns::UNESCAPED, Constants::Patterns::URI_REF, Constants::Patterns::USAGE, Constants::Patterns::USCORE, Constants::Patterns::UTF0, Constants::Patterns::UTF1, Constants::Patterns::UTF1SUBSET, Constants::Patterns::UTF2, Constants::Patterns::UTF3, Constants::Patterns::UTF4, Constants::Patterns::UTF8, Constants::Patterns::UTFMB, Constants::Patterns::VALUEENCODING, Constants::Patterns::VERTBAR, Constants::Patterns::WSP, Constants::Patterns::XSTRING

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from AttributeDeclarations

predicate_attr

Constructor Details

#initialize(schema, oid, attr_oids, names = nil, desc = nil, obsolete = false, extensions = nil) ⇒ MatchingRuleUse

Create a new MatchingRuleUse



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/treequel/schema/matchingruleuse.rb', line 51

def initialize( schema, oid, attr_oids, names=nil, desc=nil, obsolete=false, extensions=nil )
	@schema     = schema

	@oid        = oid
	@names      = names
	@desc       = desc
	@obsolete   = obsolete ? true : false
	@attr_oids  = attr_oids

	@extensions = extensions

	super()
end

Instance Attribute Details

#attr_oidsObject (readonly)

The OIDs of the attributes the matchingRuleUse applies to



86
87
88
# File 'lib/treequel/schema/matchingruleuse.rb', line 86

def attr_oids
  @attr_oids
end

#descObject

The matchingRuleUse’s description



80
81
82
# File 'lib/treequel/schema/matchingruleuse.rb', line 80

def desc
  @desc
end

#extensionsObject

The matchingRuleUse’s extensions (as a String)



89
90
91
# File 'lib/treequel/schema/matchingruleuse.rb', line 89

def extensions
  @extensions
end

#namesObject (readonly)

The Array of the matchingRuleUse’s names



77
78
79
# File 'lib/treequel/schema/matchingruleuse.rb', line 77

def names
  @names
end

#oidObject (readonly)

The matchingRuleUse’s oid



74
75
76
# File 'lib/treequel/schema/matchingruleuse.rb', line 74

def oid
  @oid
end

#schemaObject (readonly)

The schema the matchingRuleUse belongs to



71
72
73
# File 'lib/treequel/schema/matchingruleuse.rb', line 71

def schema
  @schema
end

Class Method Details

.parse(schema, description) ⇒ Object

Parse an MatchingRuleUse entry from a matchingRuleUse description from a schema.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/treequel/schema/matchingruleuse.rb', line 29

def self::parse( schema, description )
	unless match = ( LDAP_MATCHING_RULE_USE_DESCRIPTION.match(description) )
		raise Treequel::ParseError, "failed to parse matchingRuleUse from %p" % [ description ]
	end

	oid, names, desc, obsolete, attr_oids, extensions = match.captures
	# Treequel.logger.debug "  parsed matchingRuleUse: %p" % [ match.captures ]

	# Normalize the attributes
	names     = Treequel::Schema.parse_names( names )
	desc      = Treequel::Schema.unquote_desc( desc )
	attr_oids = Treequel::Schema.parse_oids( attr_oids )

	return self.new( schema, oid, attr_oids, names, desc, obsolete, extensions )
end

Instance Method Details

#attribute_typesObject

Return Treequel::Schema::AttributeType objects for each of the types this MatchingRuleUse applies to.



137
138
139
# File 'lib/treequel/schema/matchingruleuse.rb', line 137

def attribute_types
	return self.attr_oids.collect {|oid| self.schema.attribute_types[oid] }
end

#inspectObject

Return a human-readable representation of the object suitable for debugging



123
124
125
126
127
128
129
130
131
132
# File 'lib/treequel/schema/matchingruleuse.rb', line 123

def inspect
	return "#<%s:0x%0x %s(%s) %p -> %p >" % [
		self.class.name,
		self.object_id / 2,
		self.name,
		self.oid,
		self.desc,
		self.attr_oids,
	]
end

#nameObject

Return the first of the matchingRuleUse’s names, if it has any, or nil.



93
94
95
# File 'lib/treequel/schema/matchingruleuse.rb', line 93

def name
	return self.names.first
end

#to_sObject

Returns the matchingRuleUse as a String, which is the RFC4512-style schema description.



108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/treequel/schema/matchingruleuse.rb', line 108

def to_s
	parts = [ self.oid ]

	parts << "NAME %s" % Treequel::Schema.qdescrs( self.names ) unless self.names.empty?

	parts << "DESC '%s'" % [ self.desc ]           if self.desc
	parts << "OBSOLETE"                            if self.obsolete?
	parts << "APPLIES %s" % [ Treequel::Schema.oids(self.attr_oids) ]
	parts << self.extensions.strip             unless self.extensions.empty?

	return "( %s )" % [ parts.join(' ') ]
end