| Continuous Integration: | |
| Code Coverage: | |
| Maven Central: | |
| Chat Room: | |
| License: |
vinnie is a lightweight Java library that reads and writes "vobject" data (vCard and iCalendar). It is used by the ez-vcard and biweekly projects.
Downloads | Javadocs | Maven/Gradle | Documentation
Code
String str = "BEGIN:VCARD\r\n" + "VERSION:2.1\r\n" + "FN:John Doe\r\n" + "NOTE;QUOTED-PRINTABLE;CHARSET=UTF-8:=C2=A1Hola, mundo!\r\n" + "END:VCARD\r\n"; Reader reader = new StringReader(str); SyntaxRules rules = SyntaxRules.vcard(); VObjectReader vobjectReader = new VObjectReader(reader, rules); vobjectReader.parse(new VObjectDataAdapter() { private boolean inVCard = false; public void onComponentBegin(String name, Context context) { if (context.getParentComponents().isEmpty() && "VCARD".equals(name)){ inVCard = true; } } public void onComponentEnd(String name, Context context) { if (context.getParentComponents().isEmpty()) { //end of vCard, stop parsing context.stop(); } } public void onProperty(VObjectProperty property, Context context) { if (inVCard) { System.out.println(property.getName() + " = " + property.getValue()); } } }); vobjectReader.close();Output
FN = John Doe NOTE = ¡Hola, mundo! Code
Writer writer = new OutputStreamWriter(System.out); VObjectWriter vobjectWriter = new VObjectWriter(writer, SyntaxStyle.OLD); vobjectWriter.writeBeginComponent("VCARD"); vobjectWriter.writeVersion("2.1"); vobjectWriter.writeProperty("FN", "John Doe"); VObjectProperty note = new VObjectProperty("NOTE", "¡Hola, mundo!"); note.getParameters().put(null, "QUOTED-PRINTABLE"); vobjectWriter.writeProperty(note); vobjectWriter.writeEndComponent("VCARD"); vobjectWriter.close();Output
BEGIN:VCARD VERSION:2.1 FN:John Doe NOTE;QUOTED-PRINTABLE;CHARSET=UTF-8:=C2=A1Hola, mundo! END:VCARD - Full ABNF compliance with vCard (versions 2.1, 3.0, and 4.0) and iCalendar (versions 1.0 and 2.0) specifications.
- Automatic decoding/encoding of quoted-printable data.
- Streaming API.
- Extensive unit test coverage.
- Low Java version requirement (1.5 or above).
- No dependencies on external libraries.
Maven
<dependency> <groupId>com.github.mangstadt</groupId> <artifactId>vinnie</artifactId> <version>2.0.2</version> </dependency>Gradle
compile 'com.github.mangstadt:vinnie:2.0.2' vinnie uses Maven as its build tool, and adheres to its conventions.
To build the project: mvn compile
To run the unit tests: mvn test
To build a JAR: mvn package
You have some options:
- Post an issue
- Gitter chat room
- Email me directly: mike.angstadt@gmail.com
