The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DTA::CAB::Format::JSON - Datum parser|formatter: JSON code via JSON::XS

SYNOPSIS

use DTA::CAB::Format::JSON;

$fmt = DTA::CAB::Format::JSON->new(%args);

##========================================================================
## Methods: Input

$fmt = $fmt->parseJsonString($str);   ##-- guts
$doc = $fmt->parseDocument();

##========================================================================
## Methods: Output

$fmt = $fmt->toFh($fh);
$fmt = $fmt->putToken($tok);
$fmt = $fmt->putSentence($sent);
$fmt = $fmt->putDocument($doc);

DESCRIPTION

DTA::CAB::Format::JSON::XS is a DTA::CAB::Format datum parser/formatter which reads & writes data as JSON::XS code using the JSON::XS module.

Globals

Variable: @ISA

DTA::CAB::Format::JSON inherits from DTA::CAB::Format.

Filenames

DTA::CAB::Format::JSON registers the filename regex:

/\.(?i:json(?:[\.\-\_]xs)?)$/

with DTA::CAB::Format.

Constructors etc.

new
$fmt = CLASS_OR_OBJ->new(%args);

Constructor.

%args, %$fmt:

##---- Input
doc    => $doc,                 ##-- buffered input document
##
##---- INHERITED from DTA::CAB::Format
#utf8     => $bool,             ##-- output is always UTF-8
level     => $formatLevel,      ##-- sets $jsonxs->pretty() level

Methods: Persistence

noSaveKeys
@keys = $class_or_obj->noSaveKeys();

Override returns list of keys not to be saved. This implementation returns qw(doc outbuf).

Methods: Input

iolayers
$fmt = $fmt->iolayers()

Override always returns ':raw'.

fromString
$fmt = $fmt->fromString(\$string)

Override: select input from the string $string.

fromFh($fh)
$fmt = $fmt->fromFh($fh)

Override calls $fmt->fromFh_str().

parseJsonString
$fmt = $fmt->parseJsonString($str);

Evaluates $str as JSON code, which is expected to return a DTA::CAB::Document object (or something which can be massaged into one), and sets $fmt->{doc} to this new document object.

parseDocument
$doc = $fmt->parseDocument();

Returns the current contents of $fmt->{doc}, e.g. the most recently parsed document.

Methods: Output

toFh
$fmt = $fmt->toFh($fh)
$fmt = $fmt->toFh($fh, $formatLevel)

Override: select output to filehandle $fh. Creates and caches $fmt->{jxs} as a side effect.

putToken
$fmt = $fmt->putToken($tok);

Override: writes a token to the output buffer (non-destructive on $tok).

putSentence
$fmt = $fmt->putSentence($sent);

Override: write a sentence to the outupt buffer (non-destructive on $sent).

putDocument
$fmt = $fmt->putDocument($doc);

Override: write a document to the outupt buffer (non-destructive on $doc).

EXAMPLE

An example file in the format accepted/generated by this module is:

{
   "body" : [
      {
         "tokens" : [
            {
               "moot" : {
                  "tag" : "PWAV",
                  "word" : "wie",
                  "lemma" : "wie"
               },
               "lang" : [
                  "de"
               ],
               "msafe" : "1",
               "errid" : "ec",
               "exlex" : "wie",
               "text" : "wie",
               "hasmorph" : "1",
               "xlit" : {
                  "latin1Text" : "wie",
                  "isLatinExt" : "1",
                  "isLatin1" : "1"
               }
            },
            {
               "text" : "oede",
               "msafe" : "0",
               "moot" : {
                  "lemma" : "öde",
                  "tag" : "ADJD",
                  "word" : "öde"
               },
               "xlit" : {
                  "isLatin1" : "1",
                  "latin1Text" : "oede",
                  "isLatinExt" : "1"
               }
            },
            {
               "text" : "!",
               "errid" : "ec",
               "exlex" : "!",
               "xlit" : {
                  "isLatinExt" : "1",
                  "latin1Text" : "!",
                  "isLatin1" : "1"
               },
               "moot" : {
                  "lemma" : "!",
                  "tag" : "$.",
                  "word" : "!"
               },
               "msafe" : "1"
            }
         ],
         "lang" : "de"
      }
   ]
}

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2019 by Bryan Jurish

This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.1 or, at your option, any later version of Perl 5 you may have available.