Skip to content

Main content

iCalendar Property Cardinality Audit

Audit property-name occurrence cardinality only against explicitly supplied component rules; no embedded current iCalendar rule table or complete validity claim.

Loading tool…

Description

Audit property-name occurrence cardinality only against explicitly supplied component rules; no embedded current iCalendar rule table or complete validity claim.

iCalendar separates content-line framing, property values, parameters and component nesting. TEXT escaping protects separators, while line folding is based on encoded octets. DATE, floating time, UTC and named-zone representations carry different information; a token-level operation does not resolve a timezone or expand recurrence rules.1

Audit property-name occurrence cardinality only against explicitly supplied component rules; no embedded current iCalendar rule table or complete validity claim.

When to use this tool

Use this tool to audit property-name occurrence cardinality only against explicitly supplied component rules; no embedded current iCalendar rule table or complete validity claim.

How to use the tool and how it works

  1. Enter properties, rulesJson using the field definitions below. For JSON text, serialize the explicit records in the shown shape.
  2. Run the operation. Correct input errors before interpreting an output.
  3. Read result.violations. Use the ordering, boundary rules and absence conditions described below.

Normalize rule/property names to uppercase and count each rule’s occurrences, reporting counts below its minimum or above its maximum.2

Input fieldMeaning and unitsAccepted input
propertiesProperty names whose occurrences are counted.Dense list of at most 128 strings, each at most 8,192 UTF-16 code units.
rulesJsonJSON array of {name, minimum, maximum} property-count rules. minimum and maximum are integers from 0 through 128, with maximum at least minimum. Property names are compared in uppercase.Text, at most 8,192 UTF-16 code units; the operation’s grammar also applies.

These are the decoded structures used in the example’s JSON text fields. Supply the corresponding serialized JSON strings as input.

json
{
  "rulesJson": [
    {
      "name": "UID",
      "minimum": 1,
      "maximum": 1
    }
  ]
}
Output fieldInterpretation
resultObject containing the named fields below.
result.violationsProperty counts outside their supplied minimum/maximum rules.
json
{
  "input": {
    "properties": [
      "UID",
      "SUMMARY",
      "UID"
    ],
    "rulesJson": "[{\"name\":\"UID\",\"minimum\":1,\"maximum\":1}]"
  },
  "output": {
    "result": {
      "violations": [
        {
          "name": "UID",
          "minimum": 1,
          "maximum": 1,
          "count": 2
        }
      ]
    }
  }
}

Limitations and assumptions

  • Rules are caller-supplied; this is not a complete validator for an iCalendar component or its property interactions.
  • Content spans use zero-based UTF-16 offsets; fold limits use UTF-8 bytes including the continuation space. Token helpers handle the stated subset only, without a timezone database, recurrence engine or calendar import.
  • Every declared top-level input field is required and unexpected fields are rejected. Ordinary strings are limited to 8,192 UTF-16 code units and lists to 128 entries, with tighter operation-specific bounds where stated. JSON text has bounded nesting and node counts.
  • Numeric outputs must be finite and no larger in absolute magnitude than the safe-integer limit; operations returning exact large integers use decimal text. Positions are zero-based and spans end exclusively unless the operation explicitly states a different convention.

Alternative or Complementary methods

Keep content-line syntax, value escaping and timezone interpretation separate. Use a complete iCalendar implementation for recurrence expansion, timezone transitions and property-specific validation.

References

  1. RFC 5545: Internet Calendaring and Scheduling Core Object Specification — RFC Editor

  2. Tool behavior and example: iCalendar Property Cardinality Audit — tool.io

Similar or alternative tools

  • iCalendar Component Boundary Stack Audit

    Audit explicit iCalendar BEGIN/END boundary tokens using a stack, retaining mismatches and unclosed components; not complete property/component semantic validation.

  • iCalendar Content Line Name Parameter Split

    Split an unfolded iCalendar content line at its unquoted first colon and semicolon parameter boundaries; value remains opaque, raw parameters retain quote-aware spelling, no RFC 6868 decoding or component validation.