checkpoint
This commit is contained in:
@@ -146,6 +146,7 @@ class LessParser(object):
|
||||
|
||||
def p_statement_import(self, p):
|
||||
""" statement : css_import t_ws css_string ';'
|
||||
| css_import t_ws css_string dom ';'
|
||||
"""
|
||||
if self.importlvl > 8:
|
||||
raise ImportError('Recrusive import level too deep > 8 (circular import ?)')
|
||||
@@ -167,7 +168,7 @@ class LessParser(object):
|
||||
except ImportError as e:
|
||||
self.handle_error(e, p)
|
||||
else:
|
||||
p[0] = Statement(p)
|
||||
p[0] = Statement(list(p)[1:])
|
||||
p[0].parse(None)
|
||||
|
||||
#
|
||||
@@ -308,12 +309,17 @@ class LessParser(object):
|
||||
"""
|
||||
p[0] = Property(list(p)[1:-1])
|
||||
|
||||
def p_prop_open_ie_hack(self, p):
|
||||
""" prop_open : oper_mul prop_open
|
||||
"""
|
||||
p[0] = (p[1][0], p[2][0])
|
||||
|
||||
def p_prop_open(self, p):
|
||||
""" prop_open : property ':'
|
||||
| vendor_property ':'
|
||||
| word ':'
|
||||
"""
|
||||
p[0] = p[1]
|
||||
p[0] = (p[1][0], '')
|
||||
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -444,6 +450,8 @@ class LessParser(object):
|
||||
| property t_popen argument_list t_pclose
|
||||
| vendor_property t_popen argument_list t_pclose
|
||||
| less_open_format argument_list t_pclose
|
||||
| '~' istring
|
||||
| '~' css_string
|
||||
"""
|
||||
p[0] = Call(list(p)[1:])
|
||||
|
||||
|
||||
@@ -9,17 +9,21 @@ class Block(Node):
|
||||
def parse(self, scope):
|
||||
"""
|
||||
"""
|
||||
scope = copy.deepcopy(scope)
|
||||
ident, inner = self.tokens
|
||||
self.name = ident.parse(scope)
|
||||
if not inner: inner = []
|
||||
self.parsed = [p.parse(scope)
|
||||
for p in inner
|
||||
if p and type(p) is not type(self)]
|
||||
scope.current = self.name
|
||||
self.inner = [p.parse(scope)
|
||||
for p in inner
|
||||
if p and type(p) is 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:
|
||||
scope = copy.deepcopy(scope)
|
||||
scope.current = self.name
|
||||
self.inner = [p.parse(scope) for p in self.inner]
|
||||
return self
|
||||
|
||||
def format(self, fills):
|
||||
|
||||
@@ -12,7 +12,7 @@ class Property(Node):
|
||||
else:
|
||||
property, style = self.tokens
|
||||
self.important = False
|
||||
self.property = property[0]
|
||||
self.property = ''.join(property)
|
||||
self.parsed = []
|
||||
if style:
|
||||
style = self.preprocess(style)
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
"""
|
||||
"""
|
||||
from .node import Node
|
||||
from lesscpy.lessc import utility
|
||||
|
||||
class Statement(Node):
|
||||
pass
|
||||
def parse(self, scope):
|
||||
"""
|
||||
"""
|
||||
self.parsed = list(utility.flatten(self.tokens))
|
||||
if self.parsed[0] == '@import':
|
||||
if len(self.parsed) > 4:
|
||||
# Media @import
|
||||
self.parsed.insert(3, ' ')
|
||||
|
||||
def format(self, fills):
|
||||
"""
|
||||
"""
|
||||
return ''.join(self.parsed) + fills['eb']
|
||||
@@ -0,0 +1,26 @@
|
||||
@fat: 0;
|
||||
@cloudhead: "#000000";
|
||||
//
|
||||
// IE Filters
|
||||
//
|
||||
.nav {
|
||||
filter: ~'progid:DXImageTransform.Microsoft.gradient(startColorstr="#333333", endColorstr="@{cloudhead}", GradientType=@{fat})';
|
||||
}
|
||||
.nav1 {
|
||||
filter: ~"progid:DXImageTransform.Microsoft.Alpha(opacity=@{fat})";
|
||||
}
|
||||
.nav2 {
|
||||
filter: ~'progid:DXImageTransform.Microsoft.gradient(startColorstr="#333333", endColorstr="@{cloudhead}", GradientType=@{fat})';
|
||||
}
|
||||
//
|
||||
// IE Hacks
|
||||
//
|
||||
body {
|
||||
*zoom: 1px;
|
||||
}
|
||||
>body {
|
||||
*zoom: 1px;
|
||||
}
|
||||
html * {
|
||||
height: 12px;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
CSS imports
|
||||
*/
|
||||
@import 'some.css.file.css';
|
||||
@import 'some/other.css.file.CSS';
|
||||
/*
|
||||
CSS imports (media)
|
||||
*/
|
||||
@import 'some.css' all;
|
||||
@import "some.print.css" print;
|
||||
/*
|
||||
Less imports
|
||||
*/
|
||||
@import './imports/import.less';
|
||||
@import './imports/import.less'; // redundant
|
||||
@import './imports/import_f'; // No ext
|
||||
.import {
|
||||
.mixin;
|
||||
.mixf(6px);
|
||||
height: @imported;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
CSS url/uri
|
||||
*/
|
||||
#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);
|
||||
}
|
||||
Reference in New Issue
Block a user