Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

beebox / crossover   deb

Repository URL to install this package:

Version: 18.5.0-1 

/ opt / cxoffice / lib / perl / CXPlist.pm

# (c) Copyright 2006, 2010. CodeWeavers, Inc.
package CXPlist;
use warnings;
use strict;
use CXLog;
use CXXMLDOM;


#####
#
# Helper functions to manipulate dictionaries
#
#####

sub get_key_by_name($$)
{
    my ($dict, $name)=@_;
    $name=CXXMLDOM::utf8_to_unicode($name);
    cxlog("looking for [$name]\n");
    my $node=$dict->getFirstChild();
    while (defined $node)
    {
        if ($node->getNodeName() eq "key")
        {
            my $text=get_cdata($node);
            cxlog("  key=$text\n");
            if ($text eq $name)
            {
                cxlog("  -> found\n");
                return $node;
            }
        }
        $node=$node->getNextSibling();
    }
    cxlog("  -> not found\n");
    return undef;
}

sub get_key_by_value($)
{
    my ($node)=@_;
    while ($node)
    {
        $node=$node->getPreviousSibling();
        return $node if (ref($node) ne "XML::DOM::Text");
    }
    return undef;
}

sub get_value_by_key($)
{
    my ($node)=@_;
    while ($node)
    {
        $node=$node->getNextSibling();
        return $node if (ref($node) ne "XML::DOM::Text");
    }
    return undef;
}

sub get_value_by_name($$)
{
    my ($dict, $name)=@_;
    my $key=get_key_by_name($dict, $name);
    return undef if (!$key);
    return get_value_by_key($key);
}

sub add_key_with_string($$$)
{
    my ($dict, $keyname, $str)=@_;
    add_new_element($dict, "key", $keyname);
    add_new_element($dict, "string", $str);
    return 1;
}

sub add_key_with_child($$$)
{
    my ($dict, $keyname, $value)=@_;
    add_new_element($dict, "key", $keyname);
    add_element($dict, $value);
    return 1;
}

sub add_key_with_new_tag($$$)
{
    my ($dict, $keyname, $tag)=@_;
    add_new_element($dict, "key", $keyname);
    return add_new_element($dict, $tag);
}

return 1;