[Python-de] Bython - Python mit geschwungenen Klammern
Florian Mayer
florian-mayer at gmx.at
Mi Mär 14 18:34:01 UTC 2007
Florian Mayer wrote:
> Hatte heute bisschen langeweile, also habe ich mich hingesetzt und mal
> wieder was gecodet, rausgekommen ist bython, ein python wo man { und }
> verwenden kann, z.B. ist dort:
>
> class Test{
> def __init__(self){
> print "initializing"
> }
> }
>
> funktionierender Code, es ist eigentlich nur ein wrapper der die { und
> } in Einrueckungen umwandelt und dann ausfuehrt.
> Ist eigentlich am meisten an Umsteiger gerichtet, aber eigentlich nur
> just-4-fun, ohne besonderen Grund programmiert.
> Code ist im Anhang.
>
> Was sagt ihr dazu?
>
> mfg Florian Mayer(a.k.a name)
>
hab ich glatt vergessen, der name hat sich aus braces(die eckigen
klammern) un python ergeben >)
------------------------------------------------------------------------
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys, os
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-o","--output", dest="outputfile",
help="Write python file FILE",metavar="FILE")
parser.add_option("-s", "--dontrun",
action="store_false", dest="run", default=True,
help="don't run the script")
(options, args) = parser.parse_args()
def getAmount(string):
i = 0
count = 0
while(i < len(string)):
if(string[i] == " "):
count+=1
else:
return count
i+=1
result = list()
intend_str = "\t"
intend = 0
no_intend = list()
file = args[0]
file_dir = os.path.split(file)[0]
if file_dir:
os.chdir(file_dir)
file_object = open(file)
file_lines = file_object.readlines()
for line in file_lines:
no_intend.append(line[getAmount(line):])
line_nr = 1
line_int = []
for line in no_intend:
intend_brf = intend
line_int.append(intend_brf)
plu_int = [1 for elem in line if elem == "{"]
min_int = [1 for elem in line if elem == "}"]
#print plu_int
#print min_int
for elem in plu_int:
intend+=elem
for elem in min_int:
if intend == 0:
print "ERROR on line %d: No intend to close" % line_nr
sys.exit(1)
intend-=elem
line = line.replace("{",":")
line = line.replace("}","")
result.append("%s%s" % (intend_brf*intend_str,line))
line_nr+=1
result_str = ''
for line in result:
c_line = line.replace("\t","")
c_line = c_line.replace("\n","")
if c_line:
result_str = ("%s%s" % (result_str, line))
if options.outputfile:
outp = open(options.outputfile, "w")
outp.write(result_str)
outp.close()
if options.run:
namespace = {"__name__":"__main__"}
exec result_str in namespace
------------------------------------------------------------------------
_______________________________________________
python-de maillist - python-de at python.net
http://python.net/mailman/listinfo/python-de
--
Best regards
Florian Mayer
GPG public key: http://florianmayer.fl.funpic.de/name/name.gpg
Jabber: name at jabber.org
ICQ: 446504088
Aim: segfaulthunter
Yahoo: segfaulthunter
IRC: name @ irc.freenode.net
Secondary email: segfaulthunter at gmail.com