ge DiaColloDB::EnumFile;
use DiaColloDB::Persistent;
use DiaColloDB::Utils qw(:fcntl :file :pack :json :regex);
use Fcntl qw(:DEFAULT :seek);
use strict;
##===========================================
lt returns "$obj->{base}.hdr" or "$obj->{dbdir}/header.json"
sub headerFile {
return undef if (!ref($_[0]));
return "$_[0]{dbdir}/header.json" if (defined($_[0]{dbdir}));
return "$_[0]{base}.hdr
# $str = $obj->saveHeaderString(%opts)
## + returns JSON string for object header data
sub saveHeaderString {
return DiaColloDB::Utils::saveJsonString($_[0]->headerData, @_[1..$#_]);
}
## $bool =
->saveHeaderFile($filename_or_handle, %opts)
sub saveHeaderFile {
return DiaColloDB::Utils::saveJsonFile($_[0]->headerData, @_[1..$#_]);
}
## $bool = $obj->saveHeader()
## $bool = $obj->saveHeader(
pFile;
use DiaColloDB::Logger;
use DiaColloDB::Persistent;
use DiaColloDB::Utils qw(:fcntl :file :json :pack);
use Fcntl qw(:DEFAULT :seek);
use File::Basename qw(basename dirname);
use version;
use s
bs.html>.
=item L<DiaColloDB::Document::JSON|DiaColloDB::Document::JSON>
Supports input files in L<JSON|http://www.json.org> format, assuming
the stored JSON data maps 1:1 onto the required
DiaCollo
B::Document::DDCTabs(3pm)|DiaColloDB::Document::DDCTabs>,
L<DiaColloDB::Document::JSON(3pm)|DiaColloDB::Document::JSON>,
L<DiaColloDB::Document::TCF(3pm)|DiaColloDB::Document::TCF>,
L<DiaColloDB::Docu
eneric DiaColloDB utilities
package DiaColloDB::Utils;
use DiaColloDB::Logger;
use Exporter;
use JSON;
use IO::Handle;
use IO::File;
use IPC::Run;
use File::Basename qw(basename dirname);
use File::P
ags fcread fcwrite fctrunc fccreat fcperl fcopen fcgetfl)],
json => [qw(jsonxs loadJsonString loadJsonFile saveJsonString saveJsonFile)],
sort => [qw(sortCmd csort_to csortuc_to)],
ru
===
## Functions: JSON
##--------------------------------------------------------------
## JSON: load
## $data = PACKAGE::loadJsonString( $string,%opts)
## $data = PACKAGE::loadJsonString(\$string,%
---------------------------------------
## I/O: JSON
## #+ INHERITED from DiaCollocDB::Persistent
BEGIN {
# *TO_JSON = \&TO_JSON__table;
}
sub TO_JSON__table {
my $p = shift;
my @fnames = (grep
(map {$key=$_; [(map {$_->{$key}} @funcs), split(/\t/,$key)]} @keys),
],
};
}
sub TO_JSON__flat {
my $p = shift;
my $keyf = (grep {defined($p->{$_})} qw(f2 f12),$p->scoreKeys)[0];
m
## + opens a local file url
## + may re-bless() $cli into an appropriate package
## + loads a JSON config file containing one or more of the following keys:
## (
## class => $CLASS, ##-- bl
ent}}
=item ddcQuery
$results = $rel->ddcQuery($coldb, $query_or_str, %opts);
Returns decoded JSON results for DDC client query $query_or_str,
optionally logging the query and tracking errors.
%o
ColloDB::PackedFile;
use DiaColloDB::PackedFile::MMap;
use DiaColloDB::Utils qw(:fcntl :env :run :json :pack :temp :sort :jobs);
use Fcntl qw(:DEFAULT :seek);
use File::Basename qw(dirname);
use versi
File()
## + returns header filename; default returns "$obj->{base}.hdr" or "$obj->{dbdir}/header.json"
sub headerFile {
return undef if (!ref($_[0]));
return "$_[0]{file}.hdr" if (defined($_[0]{f
kage DiaColloDB::EnumFile::MMap;
use DiaColloDB::EnumFile;
use DiaColloDB::Utils qw(:fcntl :file :json :regex);
use File::Map qw(map_handle);
use Fcntl qw(:DEFAULT :seek);
use strict;
##=============
B::EnumFile::FixedMap;
use DiaColloDB::EnumFile::FixedLen;
use DiaColloDB::Utils qw(:fcntl :file :json :regex :pack);
use File::Map qw(map_handle);
use Fcntl qw(:DEFAULT :seek);
use strict;
##=======
ixedLen;
use DiaColloDB::EnumFile;
use DiaColloDB::Logger;
use DiaColloDB::Utils qw(:fcntl :file :json :regex :pack);
use Fcntl qw(:DEFAULT :seek);
use strict;
##=====================================
4
=item Variable: @ISA
DiaColloDB::Temp::Array inherits from
L<Tie::File::Indexed::JSON|Tie::File::Indexed::JSON>
and L<DiaColloDB::Temp|DiaColloDB::Temp>.
=back
=cut
##-------------------------
kedFile(3pm)|DiaColloDB::PackedFile>,
L<DiaColloDB::Temp(3pm)|DiaColloDB::Temp>,
L<DiaColloDB(3pm)|DiaColloDB>,
L<Tie::File::Indexed::JSON(3pm)|Tie::File::Indexed::JSON>,
L<perl(1)|perl>,
...
=cut
Temp;
use Tie::File::Indexed::JSON;
use strict;
##======================================================================
## Globals
our @ISA = qw(Tie::File::Indexed::JSON DiaColloDB::Temp);
##======
#-- dump: header
$coldb->saveHeader("$outdir/header.json")
or $coldb->logconfess("dbexport(): could not export header to $outdir/header.json: $!");
##-- dump: load enums
my $adata = $coldb
-----
## I/O: JSON
## + mostly INHERITED from DiaCollocDB::Persistent
## $obj = $CLASS_OR_OBJECT->loadJsonData( $data,%opts)
## + guts for loadJsonString(), loadJsonFile()
sub loadJsonData {
my $
that = shift;
my $mp = $that->DiaColloDB::Persistent::loadJsonData(@_);
bless($_,'DiaColloDB::Profile') foreach (@{$mp->{profiles}//[]});
return $mp;
}
##-------------------------------------
{body}//1);
$fh->print("<script type=\"text/javascript\">$opts{qinfo}=", DiaColloDB::Utils::saveJsonString($mp->{qinfo}, pretty=>0), ";</script>\n")
if ($mp->{qinfo} && ($opts{qinfo} //= 'qinfo'
elation;
use DiaColloDB::Relation::TDF::Query;
use DiaColloDB::Utils qw(:pack :fcntl :file :math :json :list :pdl :temp :env :run);
use DiaColloDB::PackedFile;
use DiaColloDB::PDL::MM;
use DiaColloDB:
ColloDB::PackedFile;
use DiaColloDB::PackedFile::MMap;
use DiaColloDB::Utils qw(:fcntl :env :run :json :pack);
use Fcntl qw(:DEFAULT :seek);
use File::Basename qw(dirname);
use version;
use strict;
#
nigrams;
use DiaColloDB::Compat::v0_09::Relation::Cofreqs;
use DiaColloDB::Utils qw(:math :fcntl :json :sort :pack :regex :file :si :run :env :temp);
use DDC::Any; ##-- for query parsing
use File::Pat
vlog('warn', "Warning: extracting date-range from xenum: you should update $coldb->{dbdir}/header.json");
my $pack_xdate = '@'.(packsize($coldb->{pack_id}) * scalar(@{$coldb->attrs})).$coldb->{pa
#-- dump: header
$coldb->saveHeader("$outdir/header.json")
or $coldb->logconfess("dbexport(): could not export header to $outdir/header.json: $!");
##-- dump: load enums
my $adata = $coldb