From e6b9bc3f2ecf0fb7fde5b02f9d750ccbe022f4c1 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sat, 22 Feb 2020 18:39:34 +0200 Subject: Convert gentoken from Perl to Python. See tdf#130911 for motivation. Change-Id: I62759a9c7766e5c62c6fbab06c15e8300df25935 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89262 Reviewed-by: Noel Grandin Reviewed-by: Mike Kaganski Tested-by: Mike Kaganski --- solenv/bin/gentoken.pl | 65 -------------------------------------------------- solenv/bin/gentoken.py | 55 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 65 deletions(-) delete mode 100644 solenv/bin/gentoken.pl create mode 100755 solenv/bin/gentoken.py (limited to 'solenv') diff --git a/solenv/bin/gentoken.pl b/solenv/bin/gentoken.pl deleted file mode 100644 index f742e65c462d..000000000000 --- a/solenv/bin/gentoken.pl +++ /dev/null @@ -1,65 +0,0 @@ -# -# 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 . -# - -$ARGV0 = shift @ARGV; -$ARGV1 = shift @ARGV; - -open ( TOKENS, $ARGV0 ) || die "can't open token file: $!"; -my %tokens; - -while ( defined ($line = ) ) -{ - if( !($line =~ /^#/) ) - { - chomp($line); - @token = split(/\s+/,$line); - if ( not defined ($token[1]) ) - { - $token[1] = "XML_".$token[0]; - $token[1] =~ tr/\-\.\:/___/; - $token[1] =~ s/\+/PLUS/g; - $token[1] =~ s/\-/MINUS/g; - } - - $tokens{$token[0]} = uc($token[1]); - } -} -close ( TOKENS ); - -open ( GPERF, ">$ARGV1" ) || die "can't open tokens.gperf file: $!"; - -print ( GPERF "%language=C++\n" ); -print ( GPERF "%global-table\n" ); -print ( GPERF "%null-strings\n" ); -print ( GPERF "%struct-type\n" ); -print ( GPERF "struct xmltoken\n" ); -print ( GPERF "{\n" ); -print ( GPERF " const sal_Char *name; XMLTokenEnum nToken; \n" ); -print ( GPERF "};\n" ); -print ( GPERF "%%\n" ); - -$i = 0; -foreach( sort(keys(%tokens)) ) -{ - $i = $i + 1; - print( GPERF "$_,$tokens{$_}\n" ); -} -print ( GPERF "%%\n" ); -close ( GPERF ); - -# vim: set noet sw=4 ts=4: diff --git a/solenv/bin/gentoken.py b/solenv/bin/gentoken.py new file mode 100755 index 000000000000..55438a1be040 --- /dev/null +++ b/solenv/bin/gentoken.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python +# +# 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 . +# + +import sys + +gperf_header = """%language=C++ +%global-table +%null-strings +%struct-type +struct xmltoken +{ + const sal_Char *name; XMLTokenEnum nToken; +}; +%% +""" + +token_input_file = sys.argv[1] +gperf_output_file = sys.argv[2] + +tokens = {} + +with open(token_input_file) as ifile: + for line in ifile: + line = line.strip() + if line: + token = "XML_" + line + token = token.replace("-", "_").replace(".", "_").replace(":", "_") + token = token.replace("+", "PLUS") + tokens[line] = token.upper() + +with open(gperf_output_file, "w") as gperf: + gperf.write(gperf_header) + + for token in sorted(tokens.keys()): + gperf.write("{},{}\n".format(token, tokens[token])) + + gperf.write("%%\n") + +# vim: set noet sw=4 ts=4: -- cgit v1.2.3