From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- sysui/desktop/share/create_mime_xml.pl | 121 +++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100755 sysui/desktop/share/create_mime_xml.pl (limited to 'sysui/desktop/share/create_mime_xml.pl') diff --git a/sysui/desktop/share/create_mime_xml.pl b/sysui/desktop/share/create_mime_xml.pl new file mode 100755 index 000000000..4d41cf43e --- /dev/null +++ b/sysui/desktop/share/create_mime_xml.pl @@ -0,0 +1,121 @@ +#!/usr/bin/env perl +# +# 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 . +# + +use File::Basename; +$basedir = dirname($0); +$productname = 'LibreOffice'; +$mimedir = $basedir.'/../mimetypes'; + +$FS= ' '; # field separator (space) - for documents.ulf +$, = "\n"; # set output field separator (newline) +$\ = "\n"; # set output record separator (newline) + +## get list of components and corresponding translations from documents.ulf +open(DOCUMENTS_ULF, $ARGV[0]) || die 'Cannot open "documents.ulf".'; +while () { + if (/^\[/) { + # section starts + s/^\[(.*)]/$1/; + chomp; + $module = $_; + } else { + # translated strings + ($lang,$junk,$comment) = split($FS, $_, 3); + $comment =~ s/^"(.*)"$/$1/; + $comment =~ s/%PRODUCTNAME/$productname/; + chomp $lang; + chomp $comment; + if ($lang eq "en-US") { + $value = " $comment"; + } else { + $value = ' '.$comment.''; + } + push(@{$mimehash{$module}}, $value) unless $lang eq ""; + } +} +close DOCUMENTS_ULF; + +## creating the xml on stdout +print ''; +print ''; + +foreach $component (sort(keys %mimehash)) { + # mimetype and glob + getMimedata($component); + print ' '; + print (sort({customsort($a) cmp customsort($b)} @{$mimehash{$component}})); + print ' '; + if ( $component =~ /oasis/ ) { + if ( $component =~ /flat-xml/ ) { + print ' '; + print ' '; + print ' '; + print ' '; + print ' '; + print ' '; + print ' '; + print ' '; + } else { + print ' '; + print ' '; + print ' '; + print ' '; + print ' '; + print ' '; + print ' '; + } + } + print ' '; +} +print ''; + +sub customsort { + # sort before + $in = shift; + $in =~ tr/>/A/; + $in =~ tr/ /Z/; + return $in; +} + +## get mime-type and glob from ../mimetype/*.desktop +sub getMimedata { + $desktop_name = shift; + $desktop_file = $mimedir.'/'.$desktop_name.'.desktop'; + $mimetype = ""; + $glob = ""; + open(DESKTOP_FILE, $desktop_file) || die "Cannot open desktop-file $desktop_file. ".$!; + while () { + ## get mimetype + if (/^MimeType=/) { + s/^MimeType=(.*)\n$/$1/; + $mimetype = "$_"; + } + ## get glob + if (/^Patterns=/) { + s/^Patterns=(.*)\n$/\1/; + $glob = "$_"; + } + } + close DESKTOP_FILE; + # die if we cannot determine the glob-pattern or mimtetype + die "Could not get mime-type from $desktop_file" if ($mimetype eq ""); + die "Could not get glob-pattern from $desktop_file" if ($glob eq ""); +} + +## END vim: set ts=4: -- cgit v1.2.3