thc v0.3 - txt to html converter - better code?
Stefan Behnel
stefan_ml at behnel.de
Tue May 5 14:46:45 EDT 2009
Florian Wollenschein wrote:
> here's some code of thc, my txt to html converter programmed with Python
> and pyQT4:
> -------------------------------------------------------------------------------
>
> if self.rdioBtnTransitional.isChecked():
> if self.cmboBoxLang.currentText() == "English":
> file_open.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
> 4.0 Transitional//EN">' + '\n')
> elif self.cmboBoxLang.currentText() == "German":
> file_open.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
> 4.0 Transitional//DE">' + '\n')
> else:
> file_open.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
> Strict//EN">' + '\n')
> if self.cmboBoxLang.currentText() == "English":
> file_open.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
> 4.0 Strict//EN">' + '\n')
> elif self.cmboBoxLang.currentText() == "German":
> file_open.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
> 4.0 Strict/DE">' + '\n')
> --------------------------------------------------------------------------------
>
>
> Do you have any ideas for a better code than that? Could this be done
> smarter, shorter, whatever!?
I assume you are referring to the code duplication above. You can build the
string incrementally instead, e.g.
language_map = {'English': 'EN', 'Deutsch': 'DE'}
strict_or_transitional = {True: 'Transitional', False: 'Strict'}
# this will raise a KeyError for unknown languages
language = language_map[ self.cmboBoxLang.currentText() ]
# this assumes that isChecked() returns True or False
spec = strict_or_transitional[self.rdioBtnTransitional.isChecked()]
doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 %s/%s">\n' % (
spec, language)
Stefan
More information about the Python-list
mailing list