Files
deb-python-lesscpy/lesscpy/plib/block.py
2012-03-18 10:08:36 +00:00

72 lines
2.1 KiB
Python

"""
"""
import re, copy
from .node import Node
from lesscpy.lessc import utility
class Block(Node):
pass
def parse(self, scope):
"""
"""
if not self.parsed:
self.name, inner = self.tokens
if not inner: inner = []
self.parsed = [p.parse(scope)
for p in inner
if p and type(p) is not type(self)]
if not inner:
self.inner = []
else:
self. inner = [p for p in inner
if p and type(p) is type(self)]
if self.inner:
self.inner = [p.parse(scope) for p in self.inner]
return self
def raw(self):
"""
"""
try:
return self.name.raw()
except AttributeError:
pass
def fmt(self, fills):
"""
"""
f = "%(identifier)s%(ws)s{%(nl)s%(proplist)s}%(eb)s"
out = []
name = self.name.fmt(fills)
if self.parsed:
fills.update({
'identifier': name,
'proplist': ''.join([p.fmt(fills) for p in self.parsed]),
})
out.append(f % fills)
if self.inner:
if name.startswith('@media'):
inner = ''.join([p.fmt(fills) for p in self.inner])
inner = inner.replace(fills['nl'],
fills['nl'] + fills['tab']).rstrip(fills['tab'])
fills.update({
'identifier': name,
'proplist': fills['tab'] + inner,
})
out.append(f % fills)
else:
out.append(''.join([p.fmt(fills) for p in self.inner]))
return ''.join(out)
def copy(self, scope):
"""
"""
if self.tokens[1]:
tokens = copy.deepcopy(self.tokens[1])
scope = copy.deepcopy(scope)
out = [p for p in tokens if p]
utility.rename(out, scope)
return out
return None