Function: icalendar-type-symbol-p
icalendar-type-symbol-p is a byte-compiled function defined in
icalendar-ast.el.gz.
Signature
(icalendar-type-symbol-p SYMBOL)
Documentation
Return non-nil if SYMBOL is an iCalendar type symbol.
This function only checks that SYMBOL has been marked as a type;
it returns t for value types defined by icalendar-define-type,
but also e.g. for types defined by icalendar-define-param and
icalendar-define-property. To check that SYMBOL names a value
type for property or parameter values, see
icalendar-value-type-symbol-p and
icalendar-printable-value-type-symbol-p.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/icalendar-ast.el.gz
;;; Type symbols and metadata
;; All nodes in the syntax tree have a type symbol as their first element.
;; We use the following symbol properties (all prefixed with 'icalendar-')
;; to associate type symbols with various important data about the type:
;;
;; is-type - t (marks this symbol as an icalendar type)
;; is-value, is-param, is-property, or is-component - t
;; (specifies what sort of value this type represents)
;; list-sep - for property and parameters types, a string (typically
;; "," or ";") which separates individual printed values, if the
;; type allows lists of values. If this is non-nil, syntax nodes of
;; this type should always have a list of values in their VALUE
;; field (even if there is only one value)
;; matcher - a function to match this type. This function matches the
;; regular expression defined under the type's name; it is used to provide
;; syntax highlighting in `icalendar-mode'
;; begin-rx, end-rx - for component-types, an `rx' regular expression which
;; matches the BEGIN and END lines that form its boundaries
;; value-rx - an `rx' regular expression which matches individual values
;; of this type, with no consideration for quoting or lists of values.
;; (For value types, this is just a synonym for the rx definition
;; under the type's symbol)
;; values-rx - for types that accept lists of values, an `rx' regular
;; expression which matches the whole list (including quotes, if required)
;; full-value-rx - for property and parameter types, an `rx' regular
;; expression which matches a valid value expression in group 2, or
;; an invalid value in group 3
;; value-reader - for value types, a function which creates syntax
;; nodes of this type given a string representing their value
;; value-printer - for value types, a function to print individual
;; values of this type. It accepts a value and returns its string
;; representation.
;; default-value - for property and parameter types, a string
;; representing a default value for nodes of this type. This is the
;; value assumed when no node of this type is present in the
;; relevant part of the syntax tree.
;; substitute-value - for parameter types, a string representing a value
;; which will be substituted at parse times for unrecognized values.
;; (This is normally the same as default-value, but differs from it
;; in at least one case in RFC5545, thus it is stored separately.)
;; default-type - for property types which can accept values of multiple
;; types, this is the default type when no type for the value is
;; specified in the parameters. Any type of value other than this
;; one requires a VALUE=... parameter when the property is read or printed.
;; other-types - for property types which can accept values of multiple types,
;; this is a list of other types that the property can accept.
;; value-type - for param types, this is the value type which the parameter
;; can accept.
;; child-spec - for property and component types, a plist describing the
;; required and optional child nodes. See `icalendar-define-property' and
;; `icalendar-define-component' for details.
;; other-validator - a function to perform type-specific validation
;; for nodes of this type. If present, this function will be called
;; by `icalendar-ast-node-valid-p' during validation.
;; type-documentation - a string documenting the type. This documentation is
;; printed in the help buffer when `describe-symbol' is called on TYPE.
;; link - a hyperlink to the documentation of the type in the relevant standard
(defun ical:type-symbol-p (symbol)
"Return non-nil if SYMBOL is an iCalendar type symbol.
This function only checks that SYMBOL has been marked as a type;
it returns t for value types defined by `icalendar-define-type',
but also e.g. for types defined by `icalendar-define-param' and
`icalendar-define-property'. To check that SYMBOL names a value
type for property or parameter values, see
`icalendar-value-type-symbol-p' and
`icalendar-printable-value-type-symbol-p'."
(and (symbolp symbol)
(get symbol 'ical:is-type)))