[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