Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Python backend - perl()
  • Loading branch information
fglock committed Jul 17, 2010
1 parent d7f306a commit fac5c6f
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 2 deletions.
32 changes: 31 additions & 1 deletion lib/MiniPerl6/Python/Runtime.py
Expand Up @@ -26,7 +26,7 @@

__all__ = ['mp6_print', 'mp6_say', 'mp6_warn',
'mp6_to_num', 'mp6_to_scalar', 'mp6_isa',
'mp6_join', 'mp6_index',
'mp6_join', 'mp6_index', 'mp6_perl',
'mp6_Undef', 'mp6_Array', 'mp6_Hash',
'mp6_Return',
'MiniPerl6__Match',
Expand Down Expand Up @@ -97,6 +97,30 @@ def mp6_to_num(s):
except TypeError:
return 0

def _dump(o):
out = [];
for i in o.__dict__.keys():
out.append(i + " => " + mp6_perl(o.__dict__[i]))
return "X.new(" + ", ".join(out) + ")";

def mp6_perl(o):
try:
return o.f_perl()
except AttributeError:
if type(o) == type(1):
return str(o)
if type(o) == type(1.1):
return str(o)
if type(o) == type("aa"):
return o.__repr__()
if type(o) == type([]):
return "[" + ", ".join(map(lambda x: mp6_perl(x), o)) + "]"
if type(o) == type({}):
out = [];
for i in o.keys():
out.append(i + " => " + mp6_perl(o[i]))
return "{" + ", ".join(out) + "}";
return _dump(o)

class mp6_Array:
def __init__(self, l):
Expand All @@ -109,6 +133,8 @@ def __nonzero__(self):
return len(self.l) > 0
def __iter__(self):
return self.l.__iter__()
def f_perl(self):
return mp6_perl(self.l)
def f_extend(self, l):
try:
self.l.extend(l.l)
Expand Down Expand Up @@ -157,6 +183,8 @@ def __iter__(self):
return self.l.__iter__()
def __getitem__(self, k):
return self.l.__getitem__(k)
def f_perl(self):
return mp6_perl(self.l)
def values(self):
return self.l.values()
def keys(self):
Expand Down Expand Up @@ -192,6 +220,8 @@ def __index__(self):
return 0
def __getitem__(self, k):
return self
def f_perl(self):
return "undef"
def f_isa(self, name):
return name == 'Undef'

Expand Down
32 changes: 31 additions & 1 deletion libpy/miniperl6/python/runtime.py
Expand Up @@ -26,7 +26,7 @@

__all__ = ['mp6_print', 'mp6_say', 'mp6_warn',
'mp6_to_num', 'mp6_to_scalar', 'mp6_isa',
'mp6_join', 'mp6_index',
'mp6_join', 'mp6_index', 'mp6_perl',
'mp6_Undef', 'mp6_Array', 'mp6_Hash',
'mp6_Return',
'MiniPerl6__Match',
Expand Down Expand Up @@ -97,6 +97,30 @@ def mp6_to_num(s):
except TypeError:
return 0

def _dump(o):
out = [];
for i in o.__dict__.keys():
out.append(i + " => " + mp6_perl(o.__dict__[i]))
return "X.new(" + ", ".join(out) + ")";

def mp6_perl(o):
try:
return o.f_perl()
except AttributeError:
if type(o) == type(1):
return str(o)
if type(o) == type(1.1):
return str(o)
if type(o) == type("aa"):
return o.__repr__()
if type(o) == type([]):
return "[" + ", ".join(map(lambda x: mp6_perl(x), o)) + "]"
if type(o) == type({}):
out = [];
for i in o.keys():
out.append(i + " => " + mp6_perl(o[i]))
return "{" + ", ".join(out) + "}";
return _dump(o)

class mp6_Array:
def __init__(self, l):
Expand All @@ -109,6 +133,8 @@ def __nonzero__(self):
return len(self.l) > 0
def __iter__(self):
return self.l.__iter__()
def f_perl(self):
return mp6_perl(self.l)
def f_extend(self, l):
try:
self.l.extend(l.l)
Expand Down Expand Up @@ -157,6 +183,8 @@ def __iter__(self):
return self.l.__iter__()
def __getitem__(self, k):
return self.l.__getitem__(k)
def f_perl(self):
return mp6_perl(self.l)
def values(self):
return self.l.values()
def keys(self):
Expand Down Expand Up @@ -192,6 +220,8 @@ def __index__(self):
return 0
def __getitem__(self, k):
return self
def f_perl(self):
return "undef"
def f_isa(self, name):
return name == 'Undef'

Expand Down

0 comments on commit fac5c6f

Please sign in to comment.