NorfairKing / ical

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ICal

An implementation of:

Status

This library now covers all of RFC 5545 and some of RFC 7986.

It's already being used in production at https://smos.online and https://social-dance.today.

Goals

  • Strict RFC Compliance
  • Being able to deal with some of other implementors' failures to comply with the spec

Implementation checklist

RFC 5545

  • 1. Introduction
  • 2. Basic Grammar and Conventions
    • 2.1. Formatting Conventions
    • 2.2. Related Memos
  • 3. iCalendar Object Specification
    • 3.1. Content Lines
      • 3.1.1. List and Field Separators
      • 3.1.2. Multiple Values
      • 3.1.3. Binary Content
      • 3.1.4. Character Set
    • 3.2. Property Parameters
      • 3.2.1. Alternate Text Representation
      • 3.2.2. Common Name
      • 3.2.3. Calendar User Type
      • 3.2.4. Delegators
      • 3.2.5. Delegatees
      • 3.2.6. Directory Entry Reference
      • 3.2.7. Inline Encoding
      • 3.2.8. Format Type
      • 3.2.9. Free/Busy Time Type
      • 3.2.10. Language
      • 3.2.11. Group or List Membership
      • 3.2.12. Participation Status
      • 3.2.13. Recurrence Identifier Range
      • 3.2.14. Alarm Trigger Relationship
      • 3.2.15. Relationship Type
      • 3.2.16. Participation Role
      • 3.2.17. RSVP Expectation
      • 3.2.18. Sent By
      • 3.2.19. Time Zone Identifier
      • 3.2.20. Value Data Types
    • 3.3. Property Value Data Types
      • 3.3.1. Binary
      • 3.3.2. Boolean
      • 3.3.3. Calendar User Address
      • 3.3.4. Date
      • 3.3.5. Date-Time
      • 3.3.6. Duration
      • 3.3.7. Float
      • 3.3.8. Integer
      • 3.3.9. Period of Time
      • 3.3.10. Recurrence Rule
      • 3.3.11. Text
      • 3.3.12. Time
      • 3.3.13. URI
      • 3.3.14. UTC Offset
    • 3.4. iCalendar Object
    • 3.5. Property
    • 3.6. Calendar Components
      • 3.6.1. Event Component
      • 3.6.2. To-Do Component
      • 3.6.3. Journal Component
      • 3.6.4. Free/Busy Component
      • 3.6.5. Time Zone Component
      • 3.6.6. Alarm Component
    • 3.7. Calendar Properties
      • 3.7.1. Calendar Scale
      • 3.7.2. Method
      • 3.7.3. Product Identifier
      • 3.7.4. Version
    • 3.8. Component Properties
      • 3.8.1. Descriptive Component Properties
        • 3.8.1.1. Attachment
        • 3.8.1.2. Categories
        • 3.8.1.3. Classification
        • 3.8.1.4. Comment
        • 3.8.1.5. Description
        • 3.8.1.6. Geographic Position
        • 3.8.1.7. Location
        • 3.8.1.8. Percent Complete
        • 3.8.1.9. Priority
        • 3.8.1.10. Resources
        • 3.8.1.11. Status
        • 3.8.1.12. Summary
      • 3.8.2. Date and Time Component Properties
        • 3.8.2.1. Date-Time Completed
        • 3.8.2.2. Date-Time End
        • 3.8.2.3. Date-Time Due
        • 3.8.2.4. Date-Time Start
        • 3.8.2.5. Duration
        • 3.8.2.6. Free/Busy Time
        • 3.8.2.7. Time Transparency
      • 3.8.3. Time Zone Component Properties
        • 3.8.3.1. Time Zone Identifier
        • 3.8.3.2. Time Zone Name
        • 3.8.3.3. Time Zone Offset From
        • 3.8.3.4. Time Zone Offset To
        • 3.8.3.5. Time Zone URL
      • 3.8.4. Relationship Component Properties
        • 3.8.4.1. Attendee
        • 3.8.4.2. Contact
        • 3.8.4.3. Organizer
        • 3.8.4.4. Recurrence ID
        • 3.8.4.5. Related To
        • 3.8.4.6. Uniform Resource Locator
        • 3.8.4.7. Unique Identifier
      • 3.8.5. Recurrence Component Properties
        • 3.8.5.1. Exception Date-Times
        • 3.8.5.2. Recurrence Date-Times
        • 3.8.5.3. Recurrence Rule
      • 3.8.6. Alarm Component Properties
        • 3.8.6.1. Action
        • 3.8.6.2. Repeat Count
        • 3.8.6.3. Trigger
      • 3.8.7. Change Management Component Properties
        • 3.8.7.1. Date-Time Created
        • 3.8.7.2. Date-Time Stamp
        • 3.8.7.3. Last Modified
        • 3.8.7.4. Sequence Number
      • 3.8.8. Miscellaneous Component Properties
        • 3.8.8.1. IANA Properties
        • 3.8.8.2. Non-Standard Properties
        • 3.8.8.3. Request Status
  • 4. iCalendar Object Examples
  • 5. Recommended Practices
  • 6. Internationalization Considerations
  • 7. Security Considerations
  • 8. IANA Considerations
    • 8.1. iCalendar Media Type Registration
    • 8.2. New iCalendar Elements Registration
      • 8.2.1. iCalendar Elements Registration Procedure
      • 8.2.2. Registration Template for Components
      • 8.2.3. Registration Template for Properties
      • 8.2.4. Registration Template for Parameters
      • 8.2.5. Registration Template for Value Data Types
      • 8.2.6. Registration Template for Values
    • 8.3. Initial iCalendar Elements Registries
      • 8.3.1. Components Registry
      • 8.3.2. Properties Registry
      • 8.3.3. Parameters Registry
      • 8.3.4. Value Data Types Registry
      • 8.3.5. Calendar User Types Registry
      • 8.3.6. Free/Busy Time Types Registry
      • 8.3.7. Participation Statuses Registry
      • 8.3.8. Relationship Types Registry
      • 8.3.9. Participation Roles Registry
      • 8.3.10. Actions Registry
      • 8.3.11. Classifications Registry
      • 8.3.12. Methods Registry
  • 9. Acknowledgments
  • 10. References
    • 10.1. Normative References
    • 10.2. Informative References
  • Appendix A. Differences from RFC 2445
    • A.1. New Restrictions
    • A.2. Restrictions Removed
    • A.3. Deprecated Features

RFC 6868

  • 1. Introduction
  • 2. Conventions Used in This Document
  • 3. Parameter Value Encoding Scheme
    • 3.1. iCalendar Example
    • 3.2. vCard Example
  • 4. Security Considerations
  • 5. Acknowledgments
  • 6. Normative References
  • Appendix A. Choice of Quoting Mechanism

RFC 7986

  • 1. Introduction
  • 2. Conventions Used in This Document
  • 3. Backwards-Compatible Extension Properties
  • 4. Modifications to Calendar Components
  • 5. Properties
    • 5.1. NAME Property
    • 5.2. DESCRIPTION Property
    • 5.3. UID Property
    • 5.4. LAST-MODIFIED Property
    • 5.5. URL Property
    • 5.6. CATEGORIES Property
    • 5.7. REFRESH-INTERVAL Property
    • 5.8. SOURCE Property
    • 5.9. COLOR Property
    • 5.10. IMAGE Property
    • 5.11. CONFERENCE Property
  • 6. Property Parameters
    • 6.1. DISPLAY Property Parameter
    • 6.2. EMAIL Property Parameter
    • 6.3. FEATURE Property Parameter
    • 6.4. LABEL Property Parameter
  • 7. Security Considerations
  • 8. Privacy Considerations
  • 9. IANA Considerations
    • 9.1. Property Registrations
    • 9.2. Parameter Registrations
    • 9.3. Property Parameter Value Registries
  • 10. References
    • 10.1. Normative References
    • 10.2. Informative References

Errata

TODO

About


Languages

Language:Haskell 96.1%Language:Smalltalk 2.6%Language:Nix 1.3%Language:Python 0.0%