Rosetta Code/Fix code tags: Difference between revisions

From Rosetta Code
Content added Content deleted
(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 = '\lang';
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" % lt+i+gt,"%slang %s" % (lt,i+gt))
text = text.replace("<%s>" % i,"<lang %s>" % i)
text = text.replace("%s/%s" % (lt,i+gt), "%s/lang%s" % (lt,gt))
text = text.replace("</%s>" % i, "<%s>" % slang)


text = re.sub("(?s)%scode (.+?)>(.*?)%s/code%s" % (lt,lt,gt), r"%slang \1%s\2%s/lang%s" % (lt,gt,lt,gt), text)
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

Task
Rosetta Code/Fix code tags
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>

  1. 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>