From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- solenv/bin/modules/installer/converter.pm | 187 ++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 solenv/bin/modules/installer/converter.pm (limited to 'solenv/bin/modules/installer/converter.pm') diff --git a/solenv/bin/modules/installer/converter.pm b/solenv/bin/modules/installer/converter.pm new file mode 100644 index 000000000..f825e0439 --- /dev/null +++ b/solenv/bin/modules/installer/converter.pm @@ -0,0 +1,187 @@ +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +package installer::converter; + +use strict; +use warnings; + +use installer::globals; + +############################# +# Converter +############################# + +sub convert_array_to_hash +{ + my ($arrayref) = @_; + + my %newhash = (); + + for (@{$arrayref}) + { + next unless /^\s*([\w-]+?)\s+(.*?)\s*$/; + $newhash{$1} = $2; + } + + return \%newhash; +} + +############################################################################# +# Converting a string list with separator $listseparator +# into an array +############################################################################# + +sub convert_stringlist_into_array +{ + my ( $includestringref, $listseparator ) = @_; + + return [map "$_\n", split /\Q$listseparator\E\s*/, ${$includestringref}]; +} + +############################################################################# +# Converting a string list with separator $listseparator +# into a hash with values 1. +############################################################################# + +sub convert_stringlist_into_hash +{ + my ( $includestringref, $listseparator ) = @_; + + return {map {$_, 1} split /\Q$listseparator\E\s*/, ${$includestringref}}; +} + +############################################################################# +# Converting an array into a space separated string +############################################################################# + +sub convert_array_to_space_separated_string +{ + my ( $arrayref ) = @_; + + my $newstring; + for (@{$arrayref}) { + my $tmp = $_; + $tmp =~ s/\s+$//; + $newstring .= "$tmp "; + } + $newstring =~ s/ $//; + + return $newstring; +} + +############################################################################# +# The file name contains for some files "/". If this programs runs on +# a windows platform, this has to be converted to "\". +############################################################################# + +sub convert_slash_to_backslash +{ + my ($filesarrayref) = @_; + + for my $onefile (@{$filesarrayref}) + { + if ( $onefile->{'Name'} ) { $onefile->{'Name'} =~ s/\//\\/g; } + } +} + +############################################################################ +# Creating a copy of an existing file object +# No converter +############################################################################ + +sub copy_item_object +{ + my ($olditemhashref, $newitemhashref) = @_; + + $newitemhashref = {%{$olditemhashref}}; +} + +################################################################# +# Windows paths must not contain the following structure: +# c:\dirA\dirB\..\dirC +# This has to be exchanged to +# c:\dirA\dirC +################################################################# + +sub make_path_conform +{ + my ( $path ) = @_; + my $s = $installer::globals::separator; + + while ($path =~ s/[^\.\Q$s\E]+?\Q$s\E\.\.(?:\Q$s\E|$)//g) {} + + return $path; +} + +################################################################# +# Copying an item collector +# A reference to an array consisting of references to hashes. +################################################################# + +sub copy_collector +{ + return [map { {%{$_}} } @{$_[0]}]; +} + +################################################################# +# Combining two arrays, first wins +################################################################# + +sub combine_arrays_from_references_first_win +{ + my ( $arrayref1, $arrayref2 ) = @_; + + my $hashref1 = convert_array_to_hash($arrayref1); + my $hashref2 = convert_array_to_hash($arrayref2); + + # add key-value pairs from hash1 to hash2 (overwrites existing keys) + @{$hashref2}{keys %{$hashref1}} = values %{$hashref1}; + + return [map { "$_ $hashref2->{$_}\n" } keys %{$hashref2}]; +} + +################################################################# +# Replacing separators, that are included into quotes +################################################################# + +sub replace_masked_separator +{ + my ($string, $separator, $replacementstring) = @_; + + $string =~ s/\\\Q$separator\E/$replacementstring/g; + + return $string; +} + +################################################################# +# Resolving separators, that were replaced +# in function mask_separator_in_quotes +################################################################# + +sub resolve_masked_separator +{ + my ($arrayref, $separator, $replacementstring) = @_; + + for (@{$arrayref}) + { + s/$replacementstring/$separator/g; + } +} + +1; -- cgit v1.2.3