From 8362bf63dea22bbf6736609b0f49c152f975eb63 Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 20 Jan 2010 01:29:50 +0000 Subject: Added old abandoned KDE3 version of koffice git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- lib/kformula/scripts/bynames.py | 153 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100755 lib/kformula/scripts/bynames.py (limited to 'lib/kformula/scripts/bynames.py') diff --git a/lib/kformula/scripts/bynames.py b/lib/kformula/scripts/bynames.py new file mode 100755 index 000000000..afb9ece55 --- /dev/null +++ b/lib/kformula/scripts/bynames.py @@ -0,0 +1,153 @@ +#! /usr/bin/env python + +"""This file is part of the KDE project + Copyright (C) 2006 Alfredo Beaumont Sainz + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +""" +import sys +import string +import time +import os + +def write_header( f ): + print >> f, '''// +// Created: ''' + time.ctime(time.time()) + ''' +// by: ''' + os.path.basename( sys.argv[0] ) + ''' +// from: ''' + os.path.basename( sys.argv[1] ) + ''' +// +// WARNING! All changes made in this file will be lost! + +/* This file is part of the KDE project + Copyright (C) 2006 Alfredo Beaumont Sainz + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ +''' + +def write_h( f ): + print >>f, ''' +#ifndef ENTITIES_H +#define ENTITIES_H + +#include "kformuladefs.h" + +KFORMULA_NAMESPACE_BEGIN + +struct entityMap { + static int size(); + int operator<( const char* right ) const { + return qstrcmp( name, right ) < 0; + } + const char* name; + const uint unicode; +}; + +extern const entityMap entities[]; + +KFORMULA_NAMESPACE_END + +#endif // ENTITIES_H +''' + +def write_cc( fr, fw ): + print >> fw, ''' +#include "entities.h" + +KFORMULA_NAMESPACE_BEGIN + +const entityMap entities[] = {''' + + parse( fr, fw ) + + print >> fw, ''' +}; + +// Needed since sizeof is a macro and we cannot be used until size is known +int entityMap::size() +{ + return sizeof( entities ) / sizeof( entityMap ); +} + +KFORMULA_NAMESPACE_END + ''' + +def name_cmp( a, b ): + + if a[0] < b[0]: + return -1 + if a[0] > b[0]: + return 1 + print 'WARNING: Same name in entity: ' + a[0] + ', ' + b[0] + return 0; + +def parse( fr, fw ): + line = fr.readline() + while line != "" and string.find( line, '
' ) == -1:
+		line = fr.readline()
+	pos = string.find( line, '
' ) ### Ad-hoc detection
+	if pos == -1:
+		return
+	line = line[pos + len('
'):].strip() ### Ad-hoc detection
+	entries = []
+	while line != "" and string.find( line, ',' ) != -1:
+		fields = line.split(',')
+		name = fields[0].strip()
+		number = fields[1].strip()
+		###
+		# TODO: Support multicharacter entities, should also be supported by
+		# application. The best solution would probably to map to a single
+		# character provided by the font in the private area of Unicode
+		if string.find( number, '-' ) == -1:
+			entries.append( [name, '0x' + number[1:]] )
+		line = fr.readline().strip()
+
+	entries.sort( name_cmp, None, True )
+	fd_list = open( 'entity.list', 'w' )
+	while True:
+		e = entries.pop()
+		fd_list.write( e[0] + ' ' + e[1] + '\n')
+		print >> fw, '     {"' + e[0] + '", ' + e[1] + '}',
+		if len( entries ) == 0:
+			break
+		print >> fw, ','
+	fd_list.close()
+	
+if __name__ == '__main__':
+	fh = open( '../entities.h', 'w' )
+	write_header( fh )
+	write_h( fh )
+	fh.close()
+	fcc = open( '../entities.cc', 'w' )
+	write_header( fcc )
+	fr = open( sys.argv[1] )
+	write_cc( fr , fcc )
+	fcc.close()
+	fr.close()
+	
-- 
cgit v1.2.3