checkpoint

This commit is contained in:
jtm
2012-02-26 13:20:35 +00:00
parent 72c648e1e9
commit 15587e304c
7 changed files with 105 additions and 9 deletions

View File

@@ -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:])

View File

@@ -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):

View File

@@ -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)

View File

@@ -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']

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}