checkpoint
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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__'])
|
||||
|
||||
@@ -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),
|
||||
|
||||
20
lesscpy/test/css/properties-uri.css
Normal file
20
lesscpy/test/css/properties-uri.css
Normal 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);
|
||||
}
|
||||
6
lesscpy/test/css/properties-uri.min.css
vendored
Normal file
6
lesscpy/test/css/properties-uri.min.css
vendored
Normal 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);}
|
||||
1
lesscpy/test/less/imports/circular.less
Normal file
1
lesscpy/test/less/imports/circular.less
Normal file
@@ -0,0 +1 @@
|
||||
@import 'circular.less';
|
||||
5
lesscpy/test/less/imports/import.less
vendored
Normal file
5
lesscpy/test/less/imports/import.less
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
@imported: 9px;
|
||||
|
||||
.mixin {
|
||||
color: red;
|
||||
}
|
||||
6
lesscpy/test/less/imports/import_f.less
Normal file
6
lesscpy/test/less/imports/import_f.less
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
|
||||
*/
|
||||
.mixf (@var: 7px) {
|
||||
width: @var;
|
||||
}
|
||||
40
lesscpy/test/testissues.py
Normal file
40
lesscpy/test/testissues.py
Normal 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()
|
||||
Reference in New Issue
Block a user