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