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

File::Sticker::Writer::YamlPrefix - write and standardize meta-data from YAML file

VERSION

version 3.0101

SYNOPSIS

    use File::Sticker::Writer::YamlPrefix;

    my $obj = File::Sticker::Writer::YamlPrefix->new(%args);

    my %meta = $obj->write_meta(%args);

DESCRIPTION

This will write meta-data to text files as a YAML prefix to the file. This will standardize it to a common nomenclature, such as "tags" for things called tags, or Keywords or Subject etc.

DEBUGGING

whoami

Used for debugging info

METHODS

priority

The priority of this writer. Writers with higher priority get tried first.

allowed_file

If this writer can be used for the given file, then this returns true. File must be plain text and NOT end with '.yml' If the file does not exist, it cannot be written to. If it does exist, the YAML-prefix area must exist also.

allowed_fields

If this writer can be used for the known and wanted fields, then this returns true. For YAML, this always returns true.

    if ($writer->allowed_fields())
    {
        ....
    }

known_fields

Returns the fields which this writer knows about. This writer has no limitations.

    my $known_fields = $writer->known_fields();

readonly_fields

Returns the fields which this writer knows about, which can't be overwritten, but are allowed to be "wanted" fields. Things like file-size etc.

    my $readonly_fields = $writer->readonly_fields();

delete_field_from_file

Completely remove the given field. This does no checking for multi-valued fields, it just deletes the whole thing.

    $writer->delete_field_from_file(filename=>$filename,field=>$field);

replace_all_meta

Overwrite the existing meta-data with that given.

(This supercedes the parent method because we can do it more efficiently this way)

    $writer->replace_all_meta(filename=>$filename,meta=>\%meta);

replace_one_field

Overwrite the given field. This does no checking.

    $writer->replace_one_field(filename=>$filename,field=>$field,value=>$value);

Helper Functions

Private interface.

_has_yaml

The file has YAML if the FIRST line is '---'

_load_meta

Quick non-checking loading of the meta-data. Does not standardize any fields.

_write_meta

Overwrites the file completely with the given metadata plus the rest of its contents This saves multi-value comma-separated fields as arrays.

_get_yaml_part

Get the YAML part of the file (if any) by reading the stuff between the first set of --- lines

_get_rest_of_file

Get the stuff after the YAML prefix.

BUGS

Please report any bugs or feature requests to the author.