Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(733)

Side by Side Diff: third_party/pyscss/scss/base.py

Issue 9111023: Pyscss is obsolete with Dart CSS complier; remove all pyscss code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove pyparsing from .gitignore Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/pyscss/scss/__init__.py ('k') | third_party/pyscss/scss/control.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 from scss import SORTING
2
3
4 class Node(object):
5 """ Base class for parsed objects.
6 """
7 delim = ' '
8 root = None
9
10 def __init__(self, s, n, t):
11 self.num, self.data = n, t
12 self.parent = self._ctx = None
13
14 def __str__(self):
15 return self.delim.join(map(str, self.data))
16
17 def __repr__(self):
18 return '(%s%s)' % (
19 self.__class__.__name__,
20 ': %s' % ' '.join(map(repr, self.data)) if self.data else ''
21 )
22
23 def parse(self, target):
24 self.parent = target
25
26 def copy(self):
27 return self
28
29 @property
30 def ctx(self):
31 if self._ctx:
32 return self._ctx
33
34 if self.parent:
35 return self.parent.ctx
36
37 self._ctx = dict()
38 return self._ctx
39
40 @ctx.setter
41 def ctx(self, value):
42 self._ctx = value
43
44
45 class Empty(Node):
46
47 def __str__(self):
48 return ''
49
50
51 class ParseNode(Node):
52
53 def parse(self, target):
54 super(ParseNode, self).parse(target)
55 for n in self.data:
56 if isinstance(n, Node):
57 n.parse(self)
58
59 def copy(self):
60 t = [n.copy() if isinstance(n, Node) else n for n in self.data]
61 return self.__class__(None, self.num, t)
62
63
64 class ContentNode(ParseNode):
65
66 def __init__(self, s, n, t):
67 super(ContentNode, self).__init__(s, n, t)
68 self.name = self.data[0] if self.data else ''
69 self.declareset = []
70 self.ruleset = []
71
72 def __str__(self):
73 # Sort declaration
74 if self.root.get_opt('sort'):
75 self.declareset.sort(
76 key=lambda x: SORTING.get(x.name, 999 ))
77
78 nl, ws, ts = self.root.cache['delims']
79 semicolon = '' if self.root.cache['opts'].get('compress') else ';'
80
81 return ''.join((
82
83 # Self
84 ''.join((
85
86 # Selector tree
87 str(self.name),
88
89 "{%s%s%s" % (nl, ws, ws) if self.name else '',
90
91 # Declarations
92 (';%s%s%s' % ( nl, ws, ws )).join(str(d) for d in self.declarese t),
93
94 semicolon,
95
96 '%s}%s%s' % ( nl, nl, nl ) if self.name else ''
97
98 )) if self.declareset else '',
99
100 # Children
101 ''.join(str(r) for r in self.ruleset)
102 ))
103
104
105 class IncludeNode(ParseNode):
106
107 def parse(self, target):
108 for node in self.data:
109 if isinstance(node, Node):
110 node.ctx.update(self.ctx)
111 node.parse(target)
112
113 def __str__(self):
114 node = ContentNode(None, None, [])
115 self.parse(node)
116 return str(node)
OLDNEW
« no previous file with comments | « third_party/pyscss/scss/__init__.py ('k') | third_party/pyscss/scss/control.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698