blob: 82a24d4284d0d64699037dbcc8609f20e3955fc6 [file] [log] [blame]
Akron3f875be2020-05-11 14:57:19 +02001#!/usr/bin/env perl
Akron3587f362020-05-20 17:50:38 +02002use strict;
3use warnings;
Akron85f5d9e2024-12-17 14:45:20 +01004use lib 'lib';
Akron71cf2f52024-07-17 08:54:15 +02005use KorAP::Def;
Akrona3f74f52024-07-17 17:18:17 +02006use KorAP::DefList;
Akrona0403e02025-02-28 12:45:18 +01007use KorAP::ScriptLoad;
Akrona3f74f52024-07-17 17:18:17 +02008use Getopt::Long;
Akron3f875be2020-05-11 14:57:19 +02009
Akron99d2d082024-07-18 16:17:08 +020010binmode(STDERR, ':encoding(UTF-8)');
11
Akron340a9cb2020-05-20 12:55:22 +020012# 2020-05-20
13# Preliminary support for C2 def-files.
Akron34a4f582020-05-27 12:18:57 +020014# 2020-05-29
15# Introduce optimizable object system.
Akron71cf2f52024-07-17 08:54:15 +020016# 2024-07-17
17# Add KorAP::Def.
Akron0989cb32024-12-16 13:52:47 +010018# 2024-12-16
19# Fix doc trimming
Akronadcc8de2024-12-16 15:10:50 +010020# Fix country codes.
Akron340a9cb2020-05-20 12:55:22 +020021
Akron0989cb32024-12-16 13:52:47 +010022our $VERSION = 0.4;
Akron26b59702020-05-19 12:14:41 +020023our @ARGV;
24
Akrona3f74f52024-07-17 17:18:17 +020025my $cmd = shift @ARGV;
Akron3f875be2020-05-11 14:57:19 +020026
Akrona3f74f52024-07-17 17:18:17 +020027
Akronb31321e2024-07-18 11:17:46 +020028my ($input, $output, $copysrc);
Akrona3f74f52024-07-17 17:18:17 +020029
30GetOptions (
Akronb31321e2024-07-18 11:17:46 +020031 "input|i=s" => \$input,
32 "output|o=s" => \$output,
33 "copy-src|c=s" => \$copysrc,
Akrona3f74f52024-07-17 17:18:17 +020034)
35or die("Error in command line arguments\n");
36
Akronbdef2d32025-02-25 21:14:09 +010037if (!$cmd || ($cmd ne 'def' && $cmd ne 'list' && $cmd ne 'script')) {
Akrona3f74f52024-07-17 17:18:17 +020038 print <<'HELP';
Akronbdef2d32025-02-25 21:14:09 +010039Convert a list of C2 VC definitions, a single definition or a script file into
Akrona3f74f52024-07-17 17:18:17 +020040KoralQuery VCs.
41
42 $ perl cosmasvc2koralquery def my_vc.txt | gzip -vc > my_vc.jsonld.gz
43 $ cat my_vc.txt | perl cosmasvc2koralquery def - | gzip -vc > my_vc.jsonld.gz
44
Akronb31321e2024-07-18 11:17:46 +020045Command: def
46
47 Convert a def file or a list of sigles to a KoralQuery VC.
48
49 Takes the list or def from STDIN and exports to STDOUT.
50
51Command: list
52
53 Convert a list with copy or regex instructions to KoralQuery VCs.
54
55 --output: The output directory
56 --copy-src: The directory for def files to copy
Akron3f875be2020-05-11 14:57:19 +020057
Akronbdef2d32025-02-25 21:14:09 +010058Command: script
59
60 Convert a script file with LOAD() instructions to KoralQuery VCs.
61
62 --output: The output directory
63
Akron3f875be2020-05-11 14:57:19 +020064HELP
Akrona3f74f52024-07-17 17:18:17 +020065exit 1;
Akron3f875be2020-05-11 14:57:19 +020066};
67
Akrona3f74f52024-07-17 17:18:17 +020068
69# Process a list
70if ($cmd eq 'list') {
Akronb31321e2024-07-18 11:17:46 +020071 KorAP::DefList->new(
72 file => ($input || $ARGV[0]),
73 copy => ($copysrc || '.'),
74 output => ($output || '.')
75 )->parse;
Akrona3f74f52024-07-17 17:18:17 +020076 exit(0);
77};
78
Akronbdef2d32025-02-25 21:14:09 +010079# Process a list
80if ($cmd eq 'script') {
81 KorAP::ScriptLoad->new(
82 file => ($input || $ARGV[0]),
83 output => ($output || '.')
84 )->parse;
85 exit(0);
86};
87
88
Akrona3f74f52024-07-17 17:18:17 +020089# Parse a single def
Akron71cf2f52024-07-17 08:54:15 +020090my $def_parser;
Akron26b59702020-05-19 12:14:41 +020091if ($ARGV[0] eq '-') {
Akron71cf2f52024-07-17 08:54:15 +020092 $def_parser = KorAP::Def->new(\*STDIN);
93}
Akrona3f74f52024-07-17 17:18:17 +020094elsif ($input) {
95 $def_parser = KorAP::Def->new($input);
96}
Akron71cf2f52024-07-17 08:54:15 +020097else {
98 $def_parser = KorAP::Def->new($ARGV[0]);
Akron3f875be2020-05-11 14:57:19 +020099};
100
Akron71cf2f52024-07-17 08:54:15 +0200101$def_parser->parse;
Akron26b59702020-05-19 12:14:41 +0200102
Akron1c070452020-05-25 11:28:30 +0200103# Stringify current (extended?) virtual corpus
Akron71cf2f52024-07-17 08:54:15 +0200104print $def_parser->to_string;