Image-ExifTool

 view release on metacpan or  search on metacpan

lib/Image/ExifTool/VCard.pm  view on Meta::CPAN

        tags, but any existing tags will be extracted.  Top-level iCalendar
        components (eg. Event, Todo, Timezone, etc.) are used for the family 1 group
        names, and embedded components (eg. Alarm) are added as a prefix to the tag
        name.  See L<http://tools.ietf.org/html/rfc5545> for the official iCalendar
        2.0 specification.
    },
    Version     => { Name => 'VCalendarVersion',   Description => 'VCalendar Version' },
    Calscale    => 'CalendarScale',
    Method      => { },
    Prodid      => 'Software',
    Attach      => 'Attachment',
    Categories  => { },
    Class       => 'Classification',
    Comment     => { },
    Description => { },
    Geo => {
        Name => 'Geolocation',
        Groups => { 2 => 'Location' },
        ValueConv => '$val =~ s/^geo://; $val',
    },
    Location    => { Name => 'Location',            Groups => { 2 => 'Location' } },
    'Percent-complete' => 'PercentComplete',
    Priority    => { },
    Resources   => { },
    Status      => { },
    Summary     => { },
    Completed   => { Name => 'DateTimeCompleted',   Groups => { 2 => 'Time' }, %timeInfo },
    Dtend       => { Name => 'DateTimeEnd',         Groups => { 2 => 'Time' }, %timeInfo },
    Due         => { Name => 'DateTimeDue',         Groups => { 2 => 'Time' }, %timeInfo },
    Dtstart     => { Name => 'DateTimeStart',       Groups => { 2 => 'Time' }, %timeInfo },
    Duration    => { },
    Freebusy    => 'FreeBusyTime',
    Transp      => 'TimeTransparency',
    Tzid        => { Name => 'TimezoneID',          Groups => { 2 => 'Time' } },
    Tzname      => { Name => 'TimezoneName',        Groups => { 2 => 'Time' } },
    Tzoffsetfrom=> { Name => 'TimezoneOffsetFrom',  Groups => { 2 => 'Time' } },
    Tzoffsetto  => { Name => 'TimezoneOffsetTo',    Groups => { 2 => 'Time' } },
    Tzurl       => { Name => 'TimeZoneURL',         Groups => { 2 => 'Time' } },
    Attendee    => { },
    Contact     => { },
    Organizer   => { },
    'Recurrence-id' => 'RecurrenceID',
    'Related-to'    => 'RelatedTo',
    Url         => 'URL',
    Uid         => 'UID',
    Exdate      => { Name => 'ExceptionDateTimes',  Groups => { 2 => 'Time' }, %timeInfo },
    Rdate       => { Name => 'RecurrenceDateTimes', Groups => { 2 => 'Time' }, %timeInfo },
    Rrule       => { Name => 'RecurrenceRule',      Groups => { 2 => 'Time' } },
    Action      => { },
    Repeat      => { },
    Trigger     => { },
    Created     => { Name => 'DateCreated',         Groups => { 2 => 'Time' }, %timeInfo },
    Dtstamp     => { Name => 'DateTimeStamp',       Groups => { 2 => 'Time' }, %timeInfo },
    'Last-modified' => { Name => 'ModifyDate',      Groups => { 2 => 'Time' }, %timeInfo },
    Sequence    => 'SequenceNumber',
    'Request-status' => 'RequestStatus',
    Acknowledged=> { Name => 'Acknowledged',        Groups => { 2 => 'Time' }, %timeInfo },
#
# Observed X-tags (not a comprehensive list):
#
    'X-apple-calendar-color'=> 'CalendarColor',
    'X-apple-default-alarm' => 'DefaultAlarm',
    'X-apple-local-default-alarm' => 'LocalDefaultAlarm',
    'X-microsoft-cdo-appt-sequence'     => 'AppointmentSequence',
    'X-microsoft-cdo-ownerapptid'       => 'OwnerAppointmentID',
    'X-microsoft-cdo-busystatus'        => 'BusyStatus',
    'X-microsoft-cdo-intendedstatus'    => 'IntendedBusyStatus',
    'X-microsoft-cdo-alldayevent'       => 'AllDayEvent',
    'X-microsoft-cdo-importance' => {
        Name => 'Importance',
        PrintConv => {
            0 => 'Low',
            1 => 'Normal',
            2 => 'High',
        },
    },
    'X-microsoft-cdo-insttype' => {
        Name => 'InstanceType',
        PrintConv => {
            0 => 'Non-recurring Appointment',
            1 => 'Recurring Appointment',
            2 => 'Single Instance of Recurring Appointment',
            3 => 'Exception to Recurring Appointment',
        },
    },
    'X-microsoft-donotforwardmeeting'   => 'DoNotForwardMeeting',
    'X-microsoft-disallow-counter'      => 'DisallowCounterProposal',
    'X-microsoft-locations' => { Name => 'MeetingLocations', Groups => { 2 => 'Location' } },
    'X-wr-caldesc'          => 'CalendarDescription',
    'X-wr-calname'          => 'CalendarName',
    'X-wr-relcalid'         => 'CalendarID',
    'X-wr-timezone'         => { Name => 'TimeZone2', Groups => { 2 => 'Time' } },
    'X-wr-alarmuid'         => 'AlarmUID',
);

%Image::ExifTool::VCard::VNote = (
    GROUPS => { 1 => 'VNote', 2 => 'Document' },
    NOTES => 'Tags extracted from V-Note VNT files.',
    Version => { },
    Body    => { },
    Dcreated        => { Name => 'CreateDate', Groups => { 2 => 'Time' }, %timeInfo },
    'Last-modified' => { Name => 'ModifyDate', Groups => { 2 => 'Time' }, %timeInfo },
);

#------------------------------------------------------------------------------
# Get vCard tag, creating if necessary
# Inputs: 0) ExifTool ref, 1) tag table ref, 2) tag ID, 3) tag Name,
#         4) source tagInfo ref, 5) lang code
# Returns: tagInfo ref
sub GetVCardTag($$$$;$$)
{
    my ($et, $tagTablePtr, $tag, $name, $srcInfo, $langCode) = @_;
    my $tagInfo = $$tagTablePtr{$tag};
    unless ($tagInfo) {
        if ($srcInfo) {
            $tagInfo = { %$srcInfo };
        } else {
            $tagInfo = { };
            $et->VPrint(0, $$et{INDENT}, "[adding $tag]\n");
        }
        $$tagInfo{Name} = $name;



( run in 0.763 second using v1.01-cache-2.11-cpan-39bf76dae61 )