Rosetta Code/Fix code tags: Difference between revisions
(deconvoluted, added <tt> conversion) |
|||
Line 16: | Line 16: | ||
=={{header|Perl}}== |
=={{header|Perl}}== |
||
<lang perl> |
<lang perl> |
||
# coding: utf-8 |
|||
my @langs = ('ada', 'cpp-qt', 'pascal', 'lscript', 'z80', 'visualprolog', |
my @langs = ('ada', 'cpp-qt', 'pascal', 'lscript', 'z80', 'visualprolog', |
||
'html4strict', 'cil', 'objc', 'asm', 'progress', 'teraterm', 'hq9plus', |
'html4strict', 'cil', 'objc', 'asm', 'progress', 'teraterm', 'hq9plus', |
||
Line 37: | Line 35: | ||
'blitzbasic', 'eiffel', 'povray', 'c', 'gettext'); |
'blitzbasic', 'eiffel', 'povray', 'c', 'gettext'); |
||
my $slang = ' |
my $slang = '/lang'; |
||
while (<STDIN>) { |
while (<STDIN>) { |
||
Line 53: | Line 51: | ||
=={{header|Python}}== |
=={{header|Python}}== |
||
'''Very poor solution, but syntax highlighting is now working, and broken <nowiki><code></lang></nowiki> is solved.''' |
|||
<lang python> |
<lang python> |
||
Line 61: | Line 57: | ||
import sys |
import sys |
||
import re |
import re |
||
lt, gt = "<",">" |
|||
langs = ['ada', 'cpp-qt', 'pascal', 'lscript', 'z80', 'visualprolog', |
langs = ['ada', 'cpp-qt', 'pascal', 'lscript', 'z80', 'visualprolog', |
||
Line 82: | Line 76: | ||
'intercal', 'c_mac', 'thinbasic', 'java5', 'xpp', 'boo', 'klonecpp', |
'intercal', 'c_mac', 'thinbasic', 'java5', 'xpp', 'boo', 'klonecpp', |
||
'blitzbasic', 'eiffel', 'povray', 'c', 'gettext'] |
'blitzbasic', 'eiffel', 'povray', 'c', 'gettext'] |
||
slang = '/lang' |
|||
text = sys.stdin.read() |
text = sys.stdin.read() |
||
for i in langs: |
for i in langs: |
||
text = text.replace("%s" % |
text = text.replace("<%s>" % i,"<lang %s>" % i) |
||
text = text.replace(" |
text = text.replace("</%s>" % i, "<%s>" % slang) |
||
text = re.sub("(?s) |
text = re.sub("(?s)<code (.+?)>(.*?)</code>", r"<lang \1>\2<%s>" % slang, text) |
||
text = re.sub("(?s)<code>(.*?)</code>", r"<tt>\1</tt>", text) |
|||
sys.stdout.write(text) |
sys.stdout.write(text) |
Revision as of 20:54, 1 February 2009
You are encouraged to solve this task according to the task description, using any language you may know.
Fix Rosetta Code deprecated code tags, with these rules:
Change <%s> to <lang %s> Change </%s> to </lang> Change <code %s> to <lang %s> Change </code> to </lang>
Usage:
cat wikisource.txt | ./convert.py > converted.txt
IMPORTANT NOTICE: Don't forget to check the results, as code tags used for inline text (<code>foo</code>) get broken (<code>foo</lang>).
Perl
<lang perl> my @langs = ('ada', 'cpp-qt', 'pascal', 'lscript', 'z80', 'visualprolog', 'html4strict', 'cil', 'objc', 'asm', 'progress', 'teraterm', 'hq9plus', 'genero', 'tsql', 'email', 'pic16', 'tcl', 'apt_sources', 'io', 'apache', 'vhdl', 'avisynth', 'winbatch', 'vbnet', 'ini', 'scilab', 'ocaml-brief', 'sas', 'actionscript3', 'qbasic', 'perl', 'bnf', 'cobol', 'powershell', 'php', 'kixtart', 'visualfoxpro', 'mirc', 'make', 'javascript', 'cpp', 'sdlbasic', 'cadlisp', 'php-brief', 'rails', 'verilog', 'xml', 'csharp', 'actionscript', 'nsis', 'bash', 'typoscript', 'freebasic', 'dot', 'applescript', 'haskell', 'dos', 'oracle8', 'cfdg', 'glsl', 'lotusscript', 'mpasm', 'latex', 'sql', 'klonec', 'ruby', 'ocaml', 'smarty', 'python', 'oracle11', 'caddcl', 'robots', 'groovy', 'smalltalk', 'diff', 'fortran', 'cfm', 'lua', 'modula3', 'vb', 'autoit', 'java', 'text', 'scala', 'lotusformulas', 'pixelbender', 'reg', '_div', 'whitespace', 'providex', 'asp', 'css', 'lolcode', 'lisp', 'inno', 'mysql', 'plsql', 'matlab', 'oobas', 'vim', 'delphi', 'xorg_conf', 'gml', 'prolog', 'bf', 'per', 'scheme', 'mxml', 'd', 'basic4gl', 'm68k', 'gnuplot', 'idl', 'abap', 'intercal', 'c_mac', 'thinbasic', 'java5', 'xpp', 'boo', 'klonecpp', 'blitzbasic', 'eiffel', 'povray', 'c', 'gettext');
my $slang = '/lang';
while (<STDIN>) {
foreach my $i (@langs) {
s|<$i>|<lang $i>|g;
s|</$i>|<$slang>|g;
}
s||<lang \1>|g;
s|
|<$slang>|g;
print;
} </lang>
Python
<lang python>
- coding: utf-8
import sys import re
langs = ['ada', 'cpp-qt', 'pascal', 'lscript', 'z80', 'visualprolog', 'html4strict', 'cil', 'objc', 'asm', 'progress', 'teraterm', 'hq9plus', 'genero', 'tsql', 'email', 'pic16', 'tcl', 'apt_sources', 'io', 'apache', 'vhdl', 'avisynth', 'winbatch', 'vbnet', 'ini', 'scilab', 'ocaml-brief', 'sas', 'actionscript3', 'qbasic', 'perl', 'bnf', 'cobol', 'powershell', 'php', 'kixtart', 'visualfoxpro', 'mirc', 'make', 'javascript', 'cpp', 'sdlbasic', 'cadlisp', 'php-brief', 'rails', 'verilog', 'xml', 'csharp', 'actionscript', 'nsis', 'bash', 'typoscript', 'freebasic', 'dot', 'applescript', 'haskell', 'dos', 'oracle8', 'cfdg', 'glsl', 'lotusscript', 'mpasm', 'latex', 'sql', 'klonec', 'ruby', 'ocaml', 'smarty', 'python', 'oracle11', 'caddcl', 'robots', 'groovy', 'smalltalk', 'diff', 'fortran', 'cfm', 'lua', 'modula3', 'vb', 'autoit', 'java', 'text', 'scala', 'lotusformulas', 'pixelbender', 'reg', '_div', 'whitespace', 'providex', 'asp', 'css', 'lolcode', 'lisp', 'inno', 'mysql', 'plsql', 'matlab', 'oobas', 'vim', 'delphi', 'xorg_conf', 'gml', 'prolog', 'bf', 'per', 'scheme', 'mxml', 'd', 'basic4gl', 'm68k', 'gnuplot', 'idl', 'abap', 'intercal', 'c_mac', 'thinbasic', 'java5', 'xpp', 'boo', 'klonecpp', 'blitzbasic', 'eiffel', 'povray', 'c', 'gettext']
slang = '/lang'
text = sys.stdin.read()
for i in langs:
text = text.replace("<%s>" % i,"<lang %s>" % i) text = text.replace("</%s>" % i, "<%s>" % slang)
text = re.sub("(?s)(.*?)
", r"<lang \1>\2<%s>" % slang, text)
text = re.sub("(?s)(.*?)
", r"\1", text)
sys.stdout.write(text) </lang>