view release on metacpan or search on metacpan
lib/Data/Identifier.pm view on Meta::CPAN
WK_UUID => '8be115d2-dc2f-4a98-91e1-a6e3075cbc31', # uuid
WK_OID => 'd08dc905-bbf6-4183-b219-67723c3c8374', # oid
WK_URI => 'a8d1637d-af19-49e9-9ef8-6bc1fbcf6439', # uri
WK_SID => 'f87a38cb-fd13-4e15-866c-e49901adbec5', # small-identifier
WK_WD => 'ce7aae1e-a210-4214-926a-0ebca56d77e3', # wikidata-identifier
WK_GTIN => '82d529be-0f00-4b4f-a43f-4a22de5f5312', # gtin
WK_IBAN => 'b1418262-6bc9-459c-b4b0-a054d77db0ea', # iban
WK_BIC => 'c8a3a132-f160-473c-b5f3-26a748f37e62', # bic
WK_DOI => '931f155e-5a24-499b-9fbb-ed4efefe27fe', # doi
WK_FC => 'd576b9d1-47d4-43ae-b7ec-bbea1fe009ba', # factgrid-identifier
WK_UNICODE_CP => '5f167223-cc9c-4b2f-9928-9fe1b253b560', # unicode-code-point
WK_SNI => '039e0bb7-5dd3-40ee-a98c-596ff6cce405', # sirtx-numerical-identifier
WK_HDI => 'f8eb04ef-3b8a-402c-ad7c-1e6814cb1998', # host-defined-identifier
WK_UDI => '05af99f9-4578-4b79-aabe-946d8e6f5888', # user-defined-identifier
NS_WD => '9e10aca7-4a99-43ac-9368-6cbfa43636df', # Wikidata-namespace
NS_FC => '6491f7a9-0b29-4ef1-992c-3681cea18182', # factgrid-namespace
NS_INT => '5dd8ddbb-13a8-4d6c-9264-36e6dd6f9c99', # integer-namespace
NS_DATE => 'fc43fbba-b959-4882-b4c8-90a288b7d416', # gregorian-date-namespace
NS_GTIN => 'd95d8b1f-5091-4642-a6b0-a585313915f1', # gtin-namespace
NS_UNICODE_CP => '132aa723-a373-48bf-a88d-69f1e00f00cf', # 'unicode-character-namespace'
};
# Features:
my $enabled_oid = 1;
my %uuid_to_uriid_org = (
WK_UUID() => 'uuid',
WK_OID() => 'oid',
WK_URI() => 'uri',
WK_SID() => 'sid',
lib/Data/Identifier.pm view on Meta::CPAN
sid => __PACKAGE__->new($well_known_uuid => WK_SID, validate => RE_UINT),
sni => __PACKAGE__->new($well_known_uuid => WK_SNI, validate => RE_UINT),
wd => __PACKAGE__->new($well_known_uuid => WK_WD, validate => RE_QID, namespace => NS_WD, generate => 'id-based'),
fc => __PACKAGE__->new($well_known_uuid => WK_FC, validate => RE_QID, namespace => NS_FC, generate => 'id-based'),
gtin => __PACKAGE__->new($well_known_uuid => WK_GTIN, validate => RE_GTIN, namespace => NS_GTIN, generate => 'id-based'),
iban => __PACKAGE__->new($well_known_uuid => WK_IBAN),
bic => __PACKAGE__->new($well_known_uuid => WK_BIC),
doi => __PACKAGE__->new($well_known_uuid => WK_DOI, validate => RE_DOI),
# Unofficial, not part of public API:
unicodecp => __PACKAGE__->new($well_known_uuid => WK_UNICODE_CP, validate => RE_UNICODE, namespace => NS_UNICODE_CP, generate => 'id-based'),
hdi => __PACKAGE__->new($well_known_uuid => WK_HDI, validate => RE_UINT),
udi => __PACKAGE__->new($well_known_uuid => WK_UDI, validate => RE_UINT),
);
my %registered;
$_->register foreach values %well_known;
# Refill with sids:
lib/Data/Identifier.pm view on Meta::CPAN
'ddd60c5c-2934-404f-8f2d-fcb4da88b633' => 1, # also-shares-identifier
WK_UUID() => 2,
'bfae7574-3dae-425d-89b1-9c087c140c23' => 3, # tagname
'7f265548-81dc-4280-9550-1bd0aa4bf748' => 4, # has-type
WK_URI() => 5,
WK_OID() => 6,
# Unassigned: 7
'd0a4c6e2-ce2f-4d4c-b079-60065ac681f1' => 8, # language-tag-identifier
WK_WD() => 9,
'923b43ae-a50e-4db3-8655-ed931d0dd6d4' => 10, # specialises
'eacbf914-52cf-4192-a42c-8ecd27c85ee1' => 11, # unicode-string
'928d02b0-7143-4ec9-b5ac-9554f02d3fb1' => 12, # integer
'dea3782c-6bcb-4ce9-8a39-f8dab399d75d' => 13, # unsigned-integer
# Unassigned: 14, 15
'6ba648c2-3657-47c2-8541-9b73c3a9b2b4' => 16, # default-context
'52a516d0-25d8-47c7-a6ba-80983e576c54' => 17, # proto-file
'1cd4a6c6-0d7c-48d1-81e7-4e8d41fdb45d' => 18, # final-file-size
'6085f87e-4797-4bb2-b23d-85ff7edc1da0' => 19, # text-fragment
'4c9656eb-c130-42b7-9348-a1fee3f42050' => 20, # also-list-contains-also
'298ef373-9731-491d-824d-b2836250e865' => 21, # proto-message
'7be4d8c7-6a75-44cc-94f7-c87433307b26' => 22, # proto-entity
lib/Data/Identifier.pm view on Meta::CPAN
WK_UUID() => 'uuid',
WK_OID() => 'oid',
WK_URI() => 'uri',
WK_SID() => 'small-identifier',
WK_WD() => 'wikidata-identifier',
WK_GTIN() => 'gtin',
WK_IBAN() => 'iban',
WK_BIC() => 'bic',
WK_DOI() => 'doi',
WK_FC() => 'factgrid-identifier',
WK_UNICODE_CP() => 'unicode-code-point',
WK_SNI() => 'sirtx-numerical-identifier',
WK_HDI() => 'host-defined-identifier',
WK_UDI(), => 'user-defined-identifier',
NS_WD() => 'Wikidata-namespace',
NS_FC() => 'factgrid-namespace',
NS_INT() => 'integer-namespace',
NS_DATE() => 'gregorian-date-namespace',
NS_UNICODE_CP() => 'unicode-character-namespace',
'ddd60c5c-2934-404f-8f2d-fcb4da88b633' => 'also-shares-identifier',
'bfae7574-3dae-425d-89b1-9c087c140c23' => 'tagname',
'7f265548-81dc-4280-9550-1bd0aa4bf748' => 'has-type',
'd0a4c6e2-ce2f-4d4c-b079-60065ac681f1' => 'language-tag-identifier',
'923b43ae-a50e-4db3-8655-ed931d0dd6d4' => 'specialises',
'eacbf914-52cf-4192-a42c-8ecd27c85ee1' => 'unicode-string',
'928d02b0-7143-4ec9-b5ac-9554f02d3fb1' => 'integer',
'dea3782c-6bcb-4ce9-8a39-f8dab399d75d' => 'unsigned-integer',
'6ba648c2-3657-47c2-8541-9b73c3a9b2b4' => 'default-context',
'52a516d0-25d8-47c7-a6ba-80983e576c54' => 'proto-file',
'1cd4a6c6-0d7c-48d1-81e7-4e8d41fdb45d' => 'final-file-size',
'6085f87e-4797-4bb2-b23d-85ff7edc1da0' => 'text-fragment',
'4c9656eb-c130-42b7-9348-a1fee3f42050' => 'also-list-contains-also',
'298ef373-9731-491d-824d-b2836250e865' => 'proto-message',
'7be4d8c7-6a75-44cc-94f7-c87433307b26' => 'proto-entity',
'65bb36f2-b558-48af-8512-bca9150cca85' => 'proxy-type',
lib/Data/Identifier.pm view on Meta::CPAN
'd2750351-aed7-4ade-aa80-c32436cc6030' => 'also-has-role',
'448c50a8-c847-4bc7-856e-0db5fea8f23b' => 'final-file-encoding',
'79385945-0963-44aa-880a-bca4a42e9002' => 'final-file-hash',
'3fde5688-6e34-45e9-8f33-68f079b152c8' => 'SEEK_SET',
'bc598c52-642e-465b-b079-e9253cd6f190' => 'SEEK_CUR',
'06aff30f-70e8-48b4-8b20-9194d22fc460' => 'SEEK_END',
'59a5691a-6a19-4051-bc26-8db82c019df3' => 'inode',
'2c7e15ed-aa2f-4e2f-9a1d-64df0c85875a' => 'chat-0-word-identifier',
'53863a15-68d4-448d-bd69-a9b19289a191' => 'unsigned-integer-generator',
'e8aa9e01-8d37-4b4b-8899-42ca0a2a906f' => 'signed-integer-generator',
'd74f8c35-bcb8-465c-9a77-01010e8ed25c' => 'unicode-character-generator',
'55febcc4-6655-4397-ae3d-2353b5856b34' => 'rgb-colour-generator',
'97b7f241-e1c5-4f02-ae3c-8e31e501e1dc' => 'date-generator',
'19659233-0a22-412c-bdf1-8ee9f8fc4086' => 'multiplicity-generator',
'5ec197c3-1406-467c-96c7-4b1a6ec2c5c9' => 'minimum-multiplicity-generator',
);
foreach my $ise (keys %displaynames) {
my $identifier = __PACKAGE__->new(ise => $ise);
$identifier->{displayname} //= $displaynames{$ise};
$identifier->register; # re-register
lib/Data/Identifier/Generate.pm view on Meta::CPAN
$opts{request} = $request;
$opts{style} = 'integer-based';
$opts{namespace} = Data::Identifier->NS_INT();
$opts{displayname}//= $request;
$opts{generator} = $request >= 0 ? WK_UNSIGNED_INTEGER_GENERATOR : WK_SIGNED_INTEGER_GENERATOR;
return $pkg->generic(%opts);
}
sub unicode_character {
my ($pkg, $type, $request, %opts) = @_;
my $unicode_cp;
my $unicode_cp_str;
if ($type eq 'unicode') {
if ($request =~ /^[Uu]\+([0-9a-fA-F]+)$/) {
$unicode_cp = hex($1);
} else {
$unicode_cp = int($request);
}
} elsif ($type eq 'ascii') {
$unicode_cp = int($request);
croak 'US-ASCII character out of range: '.$unicode_cp if $unicode_cp < 0 || $unicode_cp > 0x7F;
} elsif ($type eq 'raw') {
croak 'Raw value is not exactly one character long' unless length($request) == 1;
$unicode_cp = ord($request);
}
croak 'Unicode character out of range: '.$unicode_cp if $unicode_cp < 0 || $unicode_cp > 0x10FFFF;
$unicode_cp_str = sprintf('U+%04X', $unicode_cp);
if ($unicode_cp == 0xFFFC || $unicode_cp == 0xFFFD || $unicode_cp == 0xFEFF || $unicode_cp == 0xFFFE) {
croak 'Rejected use of special character: '.$unicode_cp_str unless $opts{allow_special};
}
return Data::Identifier->new(unicodecp => $unicode_cp_str, displayname => $opts{displayname}, generator => WK_UNICODE_CHARACTER_GENERATOR, request => $unicode_cp_str);
}
#@returns Data::Identifier
sub colour {
my ($pkg, $colour, %opts) = @_;
$opts{request} = $colour;
$opts{style} = 'colour';
$opts{namespace} = '88d3944f-a13b-4e35-89eb-e3c1fbe53e76';
$opts{generator} = WK_RGB_COLOUR_GENERATOR;
lib/Data/Identifier/Generate.pm view on Meta::CPAN
=item C<displayname>
The displayname as to be used for the identifier.
This is the same as defined by L<Data::Identifier/new>.
Defaults to the passed number.
=back
=head2 unicode_character
my Data::Identifier $identifier = Data::Identifier::Generate->unicode_character($type => $request [, %opts] );
# e.g.:
my Data::Identifier $identifier = Data::Identifier::Generate->unicode_character(unicode => 0x1F981);
# or:
my Data::Identifier $identifier = Data::Identifier::Generate->unicode_character(unicode => 'U+1F981');
Creates an identifier for the given unicode character.
The following types are supported:
=over
=item C<unicode>
The unicode code point as a number (e.g. C<0x1F981>) or as in the standard format (e.g. C<'U+1F981'>).
=item C<ascii>
The US-ASCII code point (e.g. C<65>).
=item C<raw>
A perl string with exactly one character. The character is
=back
lib/Data/Identifier/Wellknown.pm view on Meta::CPAN
. d95d8b1f-5091-4642-a6b0-a585313915f1 gtin-namespace
. 2c829846-c745-4741-8f9e-5f7e761828d1 xkcd-namespace
. 6f758584-101d-4a12-bbb3-66a8e8bfd92a iconclass-namespace
. 47dd950c-9089-4956-87c1-54c122533219 language-tag-namespace
. 02513f26-d6ff-4107-98a8-2c9cb492115b body-namespace
. bd3136b7-56f2-48a3-b206-fd2bd96551d5 character-namespace
. f45de583-2851-44e7-a4b5-8a9c1a2128a9 birth-namespace
. db8f1c33-6c3d-4c15-afd8-f5ecbce16eaf death-namespace
. 6491f7a9-0b29-4ef1-992c-3681cea18182 factgrid-namespace
. 744eaf4e-ae93-44d8-9ab5-744105222da6 roaraudio-error-namespace
. 132aa723-a373-48bf-a88d-69f1e00f00cf unicode-character-namespace
. 3be53c82-b542-478c-92c4-cfdaed047d83 unicode-block-namespace
. eb239013-7556-4091-959f-4d78ca826757 dot-comments-category-namespace
. 4004c90f-fe88-4c2e-9f92-e678f54c6417 dot-comments-rating-namespace
$class subject-type
$type uuid
. eacbf914-52cf-4192-a42c-8ecd27c85ee1 unicode-string sid=11
. 928d02b0-7143-4ec9-b5ac-9554f02d3fb1 integer sid=12
. dea3782c-6bcb-4ce9-8a39-f8dab399d75d unsigned-integer sid=13
. 52a516d0-25d8-47c7-a6ba-80983e576c54 proto-file sid=17
. 298ef373-9731-491d-824d-b2836250e865 proto-message sid=21
. 7be4d8c7-6a75-44cc-94f7-c87433307b26 proto-entity sid=22
. 59a5691a-6a19-4051-bc26-8db82c019df3 inode sid=37
. b72508ba-7fb9-42ae-b4cf-b850b53a16c2 account sid=41
. f6249973-59a9-47e2-8314-f7cf9a5f77bf person sid=77
. 5501e545-f39a-4d62-9f65-792af6b0ccba body sid=78
. a331f2c5-20e5-4aa2-b277-8e63fd03438d character sid=79
lib/Data/Identifier/Wellknown.pm view on Meta::CPAN
. ce7aae1e-a210-4214-926a-0ebca56d77e3 wikidata-identifier sid=9,sni=123
. 2bffc55d-7380-454e-bd53-c5acd525d692 roaraudio-error-number sid=26,sni=116
. 66beb503-9159-41cb-9e7f-2c3eb6b4b5ff roaraudio-error-symbol sni=117
. f87a38cb-fd13-4e15-866c-e49901adbec5 small-identifier sid=27,sni=115
. 2c7e15ed-aa2f-4e2f-9a1d-64df0c85875a chat-0-word-identifier sid=112,sni=118
. 82d529be-0f00-4b4f-a43f-4a22de5f5312 gtin sid=160
. 931f155e-5a24-499b-9fbb-ed4efefe27fe doi sid=162
. 135032f7-cc60-46ee-8f64-1724c2a56fa2 x11-colour-name
. f4b073ff-0b53-4034-b4e4-4affe5caf72c ascii-code-point sni=122
. 5f167223-cc9c-4b2f-9928-9fe1b253b560 unicode-code-point
. 5e80c7b7-215e-4154-b310-a5387045c336 sirtx-logical sni=129
. 039e0bb7-5dd3-40ee-a98c-596ff6cce405 sirtx-numerical-identifier sid=113,sni=10
. d73b6550-5309-46ad-acc9-865c9261065b sirtx-function-number sni=127
. d690772e-de18-4714-aa4e-73fd35e8efc9 sirtx-function-name sni=128
. b1418262-6bc9-459c-b4b0-a054d77db0ea iban
. c8a3a132-f160-473c-b5f3-26a748f37e62 bic
. 8db88212-69df-40f3-a5cf-105dcd853d44 standard-digest-algorithm-identifier
. 8238da08-ca93-4d67-bf40-54818aa94405 rfc9530-digest-identifier
. 0d4ef6fa-0f9a-4bc8-9fc1-e4f00725397e openpgp-digest-identifier
lib/Data/Identifier/Wellknown.pm view on Meta::CPAN
$extra_classes generator
. 97b7f241-e1c5-4f02-ae3c-8e31e501e1dc gregorian-date-generator
. 55febcc4-6655-4397-ae3d-2353b5856b34 rgb-colour-generator
. 913ee958-fda7-48ff-a57a-e34d11dc3273 gtin-generator
. d511f370-0e49-42d5-ad18-bf280dc97e08 body-generator
. bd1a1966-2e71-43cc-a7ce-f7a4547df450 character-generator
. 2b85ca08-921c-4683-a102-f18748c88fda birth-generator
. 3e1c709e-32bf-4943-a9fa-8c25cb37dc92 death-generator
. 39f643aa-37ab-413d-87d7-4260bb1785b9 roaraudio-error-generator
. d74f8c35-bcb8-465c-9a77-01010e8ed25c unicode-character-generator
. a649d48d-35b0-4454-81af-c5fd2eb40373 media-sub-type-generator
. 5c8c072e-f1a2-4824-9721-d57e811b6b4f media-super-type-generator
$class _leftover_sids
$type uuid
% Handled above: 1 - 6
% Unassigned: 7
% Handled above: 8 - 13
t/20_generate.t view on Meta::CPAN
-2147483647 => '4195ae1b-66f4-558e-bde3-055909b43f13',
);
foreach my $int (sort keys %int_vectors) {
my $identifier = Data::Identifier::Generate->integer($int);
isa_ok($identifier, 'Data::Identifier');
is($identifier->uuid, $int_vectors{$int}, 'Matching UUID for '.$int);
}
foreach my $char (sort keys %character_vectors) {
my $identifier = Data::Identifier::Generate->unicode_character(raw => $char);
isa_ok($identifier, 'Data::Identifier');
is($identifier->uuid, $character_vectors{$char}, 'Matching UUID for '.ord($char));
}
foreach my $colour (sort keys %colour_vectors) {
my $identifier = Data::Identifier::Generate->colour($colour);
isa_ok($identifier, 'Data::Identifier');
is($identifier->uuid, $colour_vectors{$colour}, 'Matching UUID for '.$colour);
}