blob: e73166ea30e14ea39c9cb065764143bcc48b1da7 [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;
Akrona3f74f52024-07-17 17:18:17 +02007use Getopt::Long;
Akron3f875be2020-05-11 14:57:19 +02008
Akron99d2d082024-07-18 16:17:08 +02009binmode(STDERR, ':encoding(UTF-8)');
10
Akron340a9cb2020-05-20 12:55:22 +020011# 2020-05-20
12# Preliminary support for C2 def-files.
Akron34a4f582020-05-27 12:18:57 +020013# 2020-05-29
14# Introduce optimizable object system.
Akron71cf2f52024-07-17 08:54:15 +020015# 2024-07-17
16# Add KorAP::Def.
Akron0989cb32024-12-16 13:52:47 +010017# 2024-12-16
18# Fix doc trimming
Akronadcc8de2024-12-16 15:10:50 +010019# Fix country codes.
Akron340a9cb2020-05-20 12:55:22 +020020
Akron0989cb32024-12-16 13:52:47 +010021our $VERSION = 0.4;
Akron26b59702020-05-19 12:14:41 +020022our @ARGV;
23
Akrona3f74f52024-07-17 17:18:17 +020024my $cmd = shift @ARGV;
Akron3f875be2020-05-11 14:57:19 +020025
Akrona3f74f52024-07-17 17:18:17 +020026
Akronb31321e2024-07-18 11:17:46 +020027my ($input, $output, $copysrc);
Akrona3f74f52024-07-17 17:18:17 +020028
29GetOptions (
Akronb31321e2024-07-18 11:17:46 +020030 "input|i=s" => \$input,
31 "output|o=s" => \$output,
32 "copy-src|c=s" => \$copysrc,
Akrona3f74f52024-07-17 17:18:17 +020033)
34or die("Error in command line arguments\n");
35
Akronbdef2d32025-02-25 21:14:09 +010036if (!$cmd || ($cmd ne 'def' && $cmd ne 'list' && $cmd ne 'script')) {
Akrona3f74f52024-07-17 17:18:17 +020037 print <<'HELP';
Akronbdef2d32025-02-25 21:14:09 +010038Convert a list of C2 VC definitions, a single definition or a script file into
Akrona3f74f52024-07-17 17:18:17 +020039KoralQuery VCs.
40
41 $ perl cosmasvc2koralquery def my_vc.txt | gzip -vc > my_vc.jsonld.gz
42 $ cat my_vc.txt | perl cosmasvc2koralquery def - | gzip -vc > my_vc.jsonld.gz
43
Akronb31321e2024-07-18 11:17:46 +020044Command: def
45
46 Convert a def file or a list of sigles to a KoralQuery VC.
47
48 Takes the list or def from STDIN and exports to STDOUT.
49
50Command: list
51
52 Convert a list with copy or regex instructions to KoralQuery VCs.
53
54 --output: The output directory
55 --copy-src: The directory for def files to copy
Akron3f875be2020-05-11 14:57:19 +020056
Akronbdef2d32025-02-25 21:14:09 +010057Command: script
58
59 Convert a script file with LOAD() instructions to KoralQuery VCs.
60
61 --output: The output directory
62
Akron3f875be2020-05-11 14:57:19 +020063HELP
Akrona3f74f52024-07-17 17:18:17 +020064exit 1;
Akron3f875be2020-05-11 14:57:19 +020065};
66
Akrona3f74f52024-07-17 17:18:17 +020067
68# Process a list
69if ($cmd eq 'list') {
Akronb31321e2024-07-18 11:17:46 +020070 KorAP::DefList->new(
71 file => ($input || $ARGV[0]),
72 copy => ($copysrc || '.'),
73 output => ($output || '.')
74 )->parse;
Akrona3f74f52024-07-17 17:18:17 +020075 exit(0);
76};
77
Akronbdef2d32025-02-25 21:14:09 +010078# Process a list
79if ($cmd eq 'script') {
80 KorAP::ScriptLoad->new(
81 file => ($input || $ARGV[0]),
82 output => ($output || '.')
83 )->parse;
84 exit(0);
85};
86
87
Akrona3f74f52024-07-17 17:18:17 +020088# Parse a single def
Akron71cf2f52024-07-17 08:54:15 +020089my $def_parser;
Akron26b59702020-05-19 12:14:41 +020090if ($ARGV[0] eq '-') {
Akron71cf2f52024-07-17 08:54:15 +020091 $def_parser = KorAP::Def->new(\*STDIN);
92}
Akrona3f74f52024-07-17 17:18:17 +020093elsif ($input) {
94 $def_parser = KorAP::Def->new($input);
95}
Akron71cf2f52024-07-17 08:54:15 +020096else {
97 $def_parser = KorAP::Def->new($ARGV[0]);
Akron3f875be2020-05-11 14:57:19 +020098};
99
Akron71cf2f52024-07-17 08:54:15 +0200100$def_parser->parse;
Akron26b59702020-05-19 12:14:41 +0200101
Akron1c070452020-05-25 11:28:30 +0200102# Stringify current (extended?) virtual corpus
Akron71cf2f52024-07-17 08:54:15 +0200103print $def_parser->to_string;