checkpoint

This commit is contained in:
jtm
2012-02-26 13:29:22 +00:00
parent 15587e304c
commit a34ea8dbaf
9 changed files with 89 additions and 8 deletions

View File

@@ -75,10 +75,10 @@ class LessParser(object):
@param string: Filename
@param int: Debuglevel
"""
if self.verbose: print('Compiling target: %s' % filename)
self.scope.push()
self.target = filename
self.result = self.parser.parse(filename, lexer=self.lex, debug=debuglevel)
# [print(r) for r in self.result]
def scopemap(self):
""" Output scopemap.

View File

@@ -11,7 +11,8 @@ class Scope(list):
"""
self.append({
'__variables__' : {},
'__blocks__': {},
'__blocks__': [],
'__names__': [],
'__current__': None
})
@@ -30,7 +31,8 @@ class Scope(list):
def add_block(self, block):
"""
"""
self[-1]['__blocks__'][block.name] = block
self[-1]['__blocks__'].append(block)
self[-1]['__names__'].append(block.name.strip())
def add_mixin(self, mixin):
"""
@@ -65,8 +67,10 @@ class Scope(list):
i = len(self)
while i >= 0:
i -= 1
if name in self[i]['__blocks__']:
return self[i]['__blocks__'][name]
if name in self[i]['__names__']:
for b in self[i]['__blocks__']:
if b.name.strip() == name:
return b
return False
def in_mixin(self):
@@ -80,5 +84,6 @@ class Scope(list):
"""
self._mixins.update(scope._mixins)
self[0]['__variables__'].update(scope[0]['__variables__'])
self[0]['__blocks__'].update(scope[0]['__blocks__'])
self[0]['__blocks__'].extend(scope[0]['__blocks__'])
self[0]['__names__'].extend(scope[0]['__names__'])

View File

@@ -111,7 +111,6 @@ def run():
scope = None
if args.include:
for u in args.include.split(','):
if args.debug: print("compiling include: %s" % u)
p = parser.LessParser(
yacc_debug=False,
lex_optimize=True,
@@ -134,7 +133,6 @@ def run():
if args.dry_run:
print('Dry run, nothing done.')
else:
if args.verbose: print("compiling target: %s" % args.target)
p = parser.LessParser(yacc_debug=(args.debug),
lex_optimize=True,
yacc_optimize=(not args.debug),

View File

@@ -0,0 +1,20 @@
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.uri_test {
background-image: url(images/image.jpg);
background-image: url(../some/path);
background-image: url(./../some/path);
background-image: url(./images/image.jpg);
background-image: url(http://some/path/img.jpeg);
background-image: url(https://some.server.com:9696/path/img.jpeg);
behavior: url(border-radius.htc);
background-image: url(fonts.svg#MyGeometricModern);
}

View File

@@ -0,0 +1,6 @@
#data-uri{background:url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);background-image:url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);}
#svg-data-uri{background:transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');}
.uri_test{background-image:url(images/image.jpg);background-image:url(../some/path);background-image:url(./../some/path);background-image:url(./images/image.jpg);background-image:url(http://some/path/img.jpeg);background-image:url(https://some.server.com:9696/path/img.jpeg);behavior:url(border-radius.htc);background-image:url(fonts.svg#MyGeometricModern);}

View File

@@ -0,0 +1 @@
@import 'circular.less';

5
lesscpy/test/less/imports/import.less vendored Normal file
View File

@@ -0,0 +1,5 @@
@imported: 9px;
.mixin {
color: red;
}

View File

@@ -0,0 +1,6 @@
/*
*/
.mixf (@var: 7px) {
width: @var;
}

View File

@@ -0,0 +1,40 @@
"""
lesscpy tests. Issues
"""
import unittest
import os
import glob
import bootstrap
from lesscpy.lessc import parser
from lesscpy.lessc import formatter
class TestCase(unittest.TestCase):
pass
def create_test (pair):
def do_test_expected(self):
if os.path.exists(pair[1]):
p = parser.LessParser()
p.parse(filename=pair[0])
f = formatter.Formatter()
pout = f.format(p).split('\n')
i = 0
with open(pair[1]) as cssf:
for line in cssf.readlines():
self.assertEqual(line.rstrip(), pout[i], '%s: Line %d' % (pair[1], i+1))
i += 1
else: self.fail('%s not found' % pair[1])
return do_test_expected
LESS = glob.glob( os.path.join('less/issues/', '*.less'))
for less in LESS:
css = less.split('.')[0].split('/')[-1]
css = 'css/issues/' + css + '.css'
test_method = create_test((less, css))
test_method.__name__ = 'test_%s' % less.replace('./-', '_')
setattr(TestCase, test_method.__name__, test_method)
if __name__=="__main__":
unittest.main()