icalendar_parser

Creator: coderz1093

Last updated:

Add to Cart

Description:

icalendar parser

icalendar_parser #




Package to parse iCalendar (.ics) files written in pure Dart.
Implementation of AnyFetch's ics-parser in JavaScript.
Getting Started #
Add icalendar_parser to your pubspec.yaml:
icalendar_parser: any
copied to clipboard
How to use #
You can refer to the example/ folder for a complete example implemented in Flutter.
Constructor #
ICalendar.fromString #
import 'package:flutter/services.dart' show rootBundle;
import 'package:icalendar_parser/icalendar_parser.dart';

final icsString = await rootBundle.loadString('assets/your_file.ics');
final iCalendar = ICalendar.fromString(icsString);
copied to clipboard
ICalendar.fromLines #
final icsLines = await File('your_file.ics').readAsLines();
final iCalendar = ICalendar.fromLines(lines);
copied to clipboard
Other methods #
ICalendar.registerField #
With this method you can add fields that are not already supported (check Supported Properties) to the parsing and you can specify a custom function to parse its content :
ICalendar.registerField(field: 'TEST');

ICalendar.registerField(
field: 'TEST2',
function: (value, params, event, lastEvent) {
lastEvent['test2'] = 'test';
return lastEvent;
},
);
copied to clipboard
ICalendar.unregisterField #
With this method you can remove parsed fields to ignore them in your file :
ICalendar.unregisterField('TEST');
copied to clipboard
ICalendar.toJson #
Convert [ICalendar] object to a Map<String, dynamic> containing all its data, formatted into a valid JSON Map<String, dynamic> .
final icsObj = ICalendar.fromLines(File('assets/my_file.ics').readAsLinesSync());
print(jsonEncode(icsObj.toJson()));
copied to clipboard
Input
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
CREATED:19960329T133000Z
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
GEO:48.85299;2.36885
END:VEVENT
END:VCALENDAR
copied to clipboard
Output
{
"version": "2.0",
"prodid": "-//hacksw/handcal//NONSGML v1.0//EN",
"calscale": "GREGORIAN",
"method": "PUBLISH",
"data": [
{
"type": "VEVENT",
"created": {
"dt": "19960329T133000Z"
},
"uid": "uid1@example.com",
"dtstamp": {
"dt": "19970714T170000Z"
},
"organizer": {
"name": "John Doe",
"mail": "john.doe@example.com"
},
"dtstart": {
"dt": "19970714T170000Z"
},
"dtend": {
"dt": "19970715T035959Z"
},
"summary": "Bastille Day Party",
"geo": {
"latitude": 48.85299,
"longitude": 2.36885
}
}
]
}
copied to clipboard
Supported Properties #

VERSION
PRODID
CALSCALE
METHOD
COMPONENT: BEGIN
COMPONENT: END
DTSTART
DTEND
DTSTAMP
TRIGGER
LAST-MODIFIED
COMPLETED
DUE
UID
SUMMARY
DESCRIPTION
LOCATION
URL
ORGANIZER
GEO
CATEGORIES
ATTENDEE
ACTION
STATUS
SEQUENCE
REPEAT
RRULE
EXDATE
CREATED

Contributors #







Guillaume Roux






Luca






Simon Bengtsson






Levi Lesches






Null






Null

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.