Sass - Version 1.1.3

Version Notes

phpsass library updated.

Download this release

Release Info

Developer Laurent Clouet
Extension Sass
Version 1.1.3
Comparing to
See all releases


Code changes from version 1.1.2 to 1.1.3

Files changed (137) hide show
  1. app/code/community/Laurent/Sass/etc/config.xml +1 -1
  2. lib/phpsass/Extensions/Compass/Compass.php +511 -0
  3. lib/phpsass/Extensions/Compass/stylesheets/_compass.scss +3 -0
  4. lib/phpsass/Extensions/Compass/stylesheets/_lemonade.scss +37 -0
  5. lib/phpsass/Extensions/Compass/stylesheets/compass/_css3.scss +20 -0
  6. lib/phpsass/Extensions/Compass/stylesheets/compass/_layout.scss +3 -0
  7. lib/phpsass/Extensions/Compass/stylesheets/compass/_reset-legacy.scss +3 -0
  8. lib/phpsass/Extensions/Compass/stylesheets/compass/_reset.scss +3 -0
  9. lib/phpsass/Extensions/Compass/stylesheets/compass/_support.scss +40 -0
  10. lib/phpsass/Extensions/Compass/stylesheets/compass/_typography.scss +4 -0
  11. lib/phpsass/Extensions/Compass/stylesheets/compass/_utilities.scss +8 -0
  12. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_appearance.scss +15 -0
  13. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_background-clip.scss +33 -0
  14. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_background-origin.scss +33 -0
  15. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_background-size.scss +24 -0
  16. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_border-radius.scss +109 -0
  17. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_box-shadow.scss +77 -0
  18. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_box-sizing.scss +11 -0
  19. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_box.scss +77 -0
  20. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_columns.scss +132 -0
  21. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_filter.scss +15 -0
  22. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_font-face.scss +46 -0
  23. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_hyphenation.scss +68 -0
  24. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_images.scss +189 -0
  25. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_inline-block.scss +22 -0
  26. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_opacity.scss +23 -0
  27. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_pie.scss +69 -0
  28. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_regions.scss +18 -0
  29. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_shared.scss +60 -0
  30. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_text-shadow.scss +83 -0
  31. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_transform-legacy.scss +81 -0
  32. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_transform.scss +593 -0
  33. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_transition.scss +238 -0
  34. lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_user-interface.scss +14 -0
  35. lib/phpsass/Extensions/Compass/stylesheets/compass/layout/_grid-background.scss +161 -0
  36. lib/phpsass/Extensions/Compass/stylesheets/compass/layout/_sticky-footer.scss +28 -0
  37. lib/phpsass/Extensions/Compass/stylesheets/compass/layout/_stretching.scss +29 -0
  38. lib/phpsass/Extensions/Compass/stylesheets/compass/reset/_utilities-legacy.scss +168 -0
  39. lib/phpsass/Extensions/Compass/stylesheets/compass/reset/_utilities.scss +173 -0
  40. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_links.scss +3 -0
  41. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_lists.scss +4 -0
  42. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_text.scss +4 -0
  43. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_vertical_rhythm.scss +220 -0
  44. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/links/_hover-link.scss +7 -0
  45. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/links/_link-colors.scss +37 -0
  46. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/links/_unstyled-link.scss +9 -0
  47. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_bullets.scss +36 -0
  48. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_horizontal-list.scss +70 -0
  49. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_inline-block-list.scss +54 -0
  50. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_inline-list.scss +50 -0
  51. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_ellipsis.scss +20 -0
  52. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_force-wrap.scss +20 -0
  53. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_nowrap.scss +4 -0
  54. lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_replacement.scss +70 -0
  55. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_color.scss +1 -0
  56. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_general.scss +6 -0
  57. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_print.scss +25 -0
  58. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_sprites.scss +2 -0
  59. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_tables.scss +3 -0
  60. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/color/_contrast.scss +24 -0
  61. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_clearfix.scss +44 -0
  62. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_float.scss +34 -0
  63. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_hacks.scss +48 -0
  64. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_min.scss +19 -0
  65. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_tabs.scss +1 -0
  66. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_tag-cloud.scss +26 -0
  67. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/sprites/_base.scss +67 -0
  68. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +101 -0
  69. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss +34 -0
  70. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/tables/_borders.scss +50 -0
  71. lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/tables/_scaffolding.scss +13 -0
  72. lib/phpsass/Extensions/ExtensionInterface.php +7 -0
  73. lib/phpsass/Extensions/Own/Own.php +90 -0
  74. lib/phpsass/Extensions/Own/css/test/test2/test.scss +3 -0
  75. lib/phpsass/Extensions/README.md +10 -0
  76. lib/phpsass/Extensions/Susy/Susy.php +75 -0
  77. lib/phpsass/Extensions/Susy/stylesheets/_susy.scss +16 -0
  78. lib/phpsass/Extensions/Susy/stylesheets/susy/_background.scss +18 -0
  79. lib/phpsass/Extensions/Susy/stylesheets/susy/_functions.scss +376 -0
  80. lib/phpsass/Extensions/Susy/stylesheets/susy/_grid.scss +286 -0
  81. lib/phpsass/Extensions/Susy/stylesheets/susy/_isolation.scss +48 -0
  82. lib/phpsass/Extensions/Susy/stylesheets/susy/_margin.scss +93 -0
  83. lib/phpsass/Extensions/Susy/stylesheets/susy/_media.scss +112 -0
  84. lib/phpsass/Extensions/Susy/stylesheets/susy/_padding.scss +92 -0
  85. lib/phpsass/Extensions/Susy/stylesheets/susy/_settings.scss +56 -0
  86. lib/phpsass/Extensions/Susy/stylesheets/susy/_support.scss +198 -0
  87. lib/phpsass/Extensions/Susy/stylesheets/susy/_units.scss +159 -0
  88. lib/phpsass/Extensions/example.php +86 -0
  89. lib/phpsass/Extensions/example.scss +8 -0
  90. lib/phpsass/Extensions/theme.scss +1 -0
  91. lib/phpsass/README.md +3 -4
  92. lib/phpsass/SassFile.php +1 -1
  93. lib/phpsass/SassParser.php +17 -3
  94. lib/phpsass/VERSION +2 -0
  95. lib/phpsass/script/SassScriptFunction.php +18 -2
  96. lib/phpsass/script/SassScriptLexer.php +4 -0
  97. lib/phpsass/script/SassScriptOperation.php +1 -1
  98. lib/phpsass/script/literals/SassBoolean.php +11 -0
  99. lib/phpsass/script/literals/SassColour.php +9 -0
  100. lib/phpsass/script/literals/SassList.php +9 -0
  101. lib/phpsass/script/literals/SassNumber.php +21 -0
  102. lib/phpsass/test.php +1 -4
  103. lib/phpsass/tests/alt.css +14 -15
  104. lib/phpsass/tests/colour-nth.css +2 -0
  105. lib/phpsass/tests/colour-nth.scss +3 -0
  106. lib/phpsass/tests/extend_included.css +3 -0
  107. lib/phpsass/tests/functions.css +69 -9
  108. lib/phpsass/tests/if_parentheses.css +2 -0
  109. lib/phpsass/tests/if_parentheses.scss +6 -0
  110. lib/phpsass/tests/list_empty.css +2 -0
  111. lib/phpsass/tests/list_empty.scss +5 -0
  112. lib/phpsass/tests/list_variable.css +2 -0
  113. lib/phpsass/tests/list_variable.scss +9 -0
  114. lib/phpsass/tests/media_in_for.css +6 -0
  115. lib/phpsass/tests/media_in_for.scss +10 -0
  116. lib/phpsass/tests/media_in_mixin.css +3 -0
  117. lib/phpsass/tests/media_in_mixin.scss +9 -0
  118. lib/phpsass/tests/media_in_mixin_in_mixin.css +4 -0
  119. lib/phpsass/tests/media_in_mixin_in_mixin.scss +18 -0
  120. lib/phpsass/tests/mixin-content.css +1 -0
  121. lib/phpsass/tests/mixin-content.sass +2 -0
  122. lib/phpsass/tests/mixin-content.scss +2 -0
  123. lib/phpsass/tests/mixin-list-params.css +7 -0
  124. lib/phpsass/tests/mixin-list-params.scss +17 -0
  125. lib/phpsass/tests/mixin-params.css +8 -0
  126. lib/phpsass/tests/mixin-params.scss +8 -0
  127. lib/phpsass/tests/mixin-rgba-param.css +2 -0
  128. lib/phpsass/tests/mixin-rgba-param.scss +7 -0
  129. lib/phpsass/tests/mixin_in_mixin.css +2 -0
  130. lib/phpsass/tests/mixin_in_mixin.scss +15 -0
  131. lib/phpsass/tests/mixin_setvar.css +2 -0
  132. lib/phpsass/tests/mixin_setvar.scss +10 -0
  133. lib/phpsass/tests/phpSassTest.php +36 -0
  134. lib/phpsass/tree/SassContentNode.php +9 -1
  135. lib/phpsass/tree/SassMediaNode.php +15 -4
  136. lib/phpsass/tree/SassNode.php +10 -0
  137. package.xml +5 -5
app/code/community/Laurent/Sass/etc/config.xml CHANGED
@@ -14,7 +14,7 @@
14
  <config>
15
  <modules>
16
  <Laurent_Sass>
17
- <version>1.1.2</version>
18
  </Laurent_Sass>
19
  </modules>
20
  <global>
14
  <config>
15
  <modules>
16
  <Laurent_Sass>
17
+ <version>1.1.3</version>
18
  </Laurent_Sass>
19
  </modules>
20
  <global>
lib/phpsass/Extensions/Compass/Compass.php ADDED
@@ -0,0 +1,511 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ require_once dirname(__FILE__) . '/../ExtensionInterface.php';
3
+ class Compass implements ExtensionInterface
4
+ {
5
+
6
+ public static $filesFolder = 'stylesheets';
7
+ public static $filePaths = null;
8
+
9
+ /**
10
+ * List with alias functions in Compass
11
+ * @var array
12
+ */
13
+ public static $functions = array(
14
+ 'resolve-path',
15
+ 'adjust-lightness',
16
+ 'scale-lightness',
17
+ 'adjust-saturation',
18
+ 'scale-saturation',
19
+ 'scale-color-value',
20
+ 'is-position',
21
+ 'is-position-list',
22
+ 'opposite-position',
23
+ '-webkit',
24
+ '-moz',
25
+ '-o',
26
+ '-ms',
27
+ '-svg',
28
+ '-pie',
29
+ '-css2',
30
+ 'owg',
31
+ 'prefixed',
32
+ 'prefix',
33
+ 'elements-of-type',
34
+ 'enumerate',
35
+ 'font-files',
36
+ 'image-width',
37
+ 'image-height',
38
+ 'inline-image',
39
+ 'inline-font-files',
40
+ 'blank',
41
+ 'compact',
42
+ '-compass-nth',
43
+ '-compass-list',
44
+ '-compass-list',
45
+ '-compass-space-list',
46
+ '-compass-list-size',
47
+ '-compass-slice',
48
+ 'first-value-of',
49
+ 'nest',
50
+ 'append-selector',
51
+ 'headers',
52
+ 'pi',
53
+ 'sin',
54
+ 'cos',
55
+ 'tan',
56
+ 'comma-list',
57
+ 'prefixed-for-transition',
58
+ 'stylesheet-url',
59
+ 'font-url',
60
+ 'image-url'
61
+ );
62
+
63
+ public static function getFunctions($namespace)
64
+ {
65
+
66
+ $output = array();
67
+ foreach (self::$functions as $function) {
68
+ $originalFunction = $function;
69
+ $function[0] = strtoupper($function[0]);
70
+ $func = create_function('$c', 'return strtoupper($c[1]);');
71
+ $function = preg_replace_callback('/-([a-z])/', $func, $function);
72
+ $output[$originalFunction] = $namespace . strtolower(__CLASS__) . $function;
73
+ }
74
+
75
+ return $output;
76
+ }
77
+
78
+ /**
79
+ * Returns an array with all files in $root path recursively and assign each array Key with clean alias
80
+ * @param $root
81
+ * @return array
82
+ */
83
+ public static function getFilesArray($root)
84
+ {
85
+
86
+ $alias = array();
87
+ $directories = array();
88
+ $last_letter = $root[strlen($root) - 1];
89
+ $root = ($last_letter == '\\' || $last_letter == '/') ? $root : $root . DIRECTORY_SEPARATOR;
90
+
91
+ $directories[] = $root;
92
+
93
+ while (sizeof($directories)) {
94
+ $dir = array_pop($directories);
95
+ if ($handle = opendir($dir)) {
96
+ while (false !== ($file = readdir($handle))) {
97
+ if ($file == '.' || $file == '..') {
98
+ continue;
99
+ }
100
+ $file = $dir . $file;
101
+ if (is_dir($file)) {
102
+ $directory_path = $file . DIRECTORY_SEPARATOR;
103
+ array_push($directories, $directory_path);
104
+ } elseif (is_file($file)) {
105
+ $key = basename($file);
106
+ $alias[substr($key, 1, strpos($key, '.') - 1)] = $file;
107
+ }
108
+ }
109
+ closedir($handle);
110
+ }
111
+ }
112
+
113
+ return $alias;
114
+ }
115
+
116
+ /**
117
+ * Implementation of hook_resolve_path_NAMESPACE().
118
+ */
119
+ public static function resolveExtensionPath($callerImport, $parser, $syntax = 'scss')
120
+ {
121
+ $alias = str_replace('/_', '/', str_replace(array('.scss', '.sass'), '', $callerImport));
122
+ if (strrpos($alias, '/') !== false) {
123
+ $alias = substr($alias, strrpos($alias, '/') + 1);
124
+ }
125
+ if (self::$filePaths == null) {
126
+ self::$filePaths = self::getFilesArray(dirname(__FILE__) . '/' . self::$filesFolder . '/');
127
+ }
128
+ if (isset(self::$filePaths[$alias])) {
129
+ return self::$filePaths[$alias];
130
+ }
131
+ }
132
+
133
+ /**
134
+ * Resolves requires to the compass namespace (eg namespace/css3/border-radius)
135
+ */
136
+ public static function compassResolvePath($file)
137
+ {
138
+ if ($file{0} == '/') {
139
+ return $file;
140
+ }
141
+ if (!$path = realpath($file)) {
142
+ $path = SassScriptFunction::$context->node->token->filename;
143
+ $path = substr($path, 0, strrpos($path, '/')) . '/';
144
+ $path = $path . $file;
145
+ $last = '';
146
+ while ($path != $last) {
147
+ $last = $path;
148
+ $path = preg_replace('`(^|/)(?!\.\./)([^/]+)/\.\./`', '$1', $path);
149
+ }
150
+ $path = realpath($path);
151
+ }
152
+ if ($path) {
153
+ return $path;
154
+ }
155
+ return false;
156
+ }
157
+
158
+ public static function compassImageWidth($file)
159
+ {
160
+ if ($info = self::compassImageInfo($file)) {
161
+ return new SassNumber($info[0] . 'px');
162
+ }
163
+ return new SassNumber('0px');
164
+ }
165
+
166
+ public static function compassImageHeight($file)
167
+ {
168
+ if ($info = self::compassImageInfo($file)) {
169
+ return new SassNumber($info[1] . 'px');
170
+ }
171
+ return new SassNumber('0px');
172
+ }
173
+
174
+ public static function compassImageInfo($file)
175
+ {
176
+ if ($path = self::compassResolvePath($file)) {
177
+ if ($info = getimagesize($path)) {
178
+ return $info;
179
+ }
180
+ }
181
+ return false;
182
+ }
183
+
184
+
185
+ public static function compassInlineImage($file, $mime = null)
186
+ {
187
+ if ($path = self::compassUrl($file, true, false)) {
188
+ $info = getimagesize($path);
189
+ $mime = $info['mime'];
190
+ $data = base64_encode(file_get_contents($path));
191
+ # todo - do not return encoded if file size > 32kb
192
+ return new SassString("url('data:$mime;base64,$data')");
193
+ }
194
+ return new SassString('');
195
+ }
196
+
197
+ public static function compassInlineFontFiles($file)
198
+ {
199
+ $args = func_get_args();
200
+ $files = array();
201
+ $mimes = array(
202
+ 'otf' => 'font.opentype',
203
+ 'ttf' => 'font.truetype',
204
+ 'woff' => 'font.woff',
205
+ 'off' => 'font.openfont',
206
+ );
207
+
208
+ while (count($args)) {
209
+ $path = self::compassResolvePath(array_shift($args));
210
+ $data = base64_encode(file_get_contents($path));
211
+ $format = array_shift($args);
212
+
213
+ $ext = array_pop(explode('.', $file));
214
+ if (isset($mimes[$ext])) {
215
+ $mime = $mimes[$ext];
216
+ } else {
217
+ continue;
218
+ }
219
+
220
+ $files[] = "url('data:$mime;base64,$data') format('$format')";
221
+ }
222
+
223
+ return new SassString(implode(', ', $files));
224
+ }
225
+
226
+ public static function compassBlank($object)
227
+ {
228
+ if (is_object($object)) {
229
+ $object = $object->value;
230
+ }
231
+ $result = false;
232
+ if (is_bool($object)) {
233
+ $result = !$object;
234
+ }
235
+ if (is_string($object)) {
236
+ $result = (strlen(trim($object, ' ,')) === 0);
237
+ }
238
+
239
+ return new SassBoolean($result);
240
+ }
241
+
242
+ public static function compassCompact()
243
+ {
244
+ $sep = ', ';
245
+
246
+ $args = func_get_args();
247
+ $list = array();
248
+
249
+ // remove blank entries
250
+ // append non-blank entries to list
251
+ foreach ($args as $k => $v) {
252
+ if (is_object($v)) {
253
+ $string = (isset($v->value) ? $v->value : false);
254
+ } else {
255
+ $string = (string)$v;
256
+ }
257
+ if (empty($string) || $string == 'false') {
258
+ unset($args[$k]);
259
+ continue;
260
+ }
261
+ $list[] = $string;
262
+ }
263
+ return new SassString(implode($sep, $list));
264
+ }
265
+
266
+ public static function compassCompassNth()
267
+ {
268
+ $args = func_get_args();
269
+ $place = array_pop($args);
270
+ $list = array();
271
+ foreach ($args as $arg) {
272
+ $list = array_merge($list, self::compassList($arg));
273
+ }
274
+
275
+ if ($place == 'first') {
276
+ $place = 0;
277
+ }
278
+ if ($place == 'last') {
279
+ $place = count($list) - 1;
280
+ }
281
+
282
+ if (isset($list[$place])) {
283
+ return current(SassScriptLexer::$instance->lex($list[$place], new SassContext()));
284
+ }
285
+ return new SassBoolean(false);
286
+ }
287
+
288
+ public static function compassCompassList()
289
+ {
290
+ $args = func_get_args();
291
+ $list = array();
292
+ foreach ($args as $arg) {
293
+ $list = array_merge($list, self::compassList($arg));
294
+ }
295
+ return new SassString(implode(', ', $list));
296
+ }
297
+
298
+ public static function compassCompassSpaceList()
299
+ {
300
+ $args = func_get_args();
301
+ $list = self::compassList($args, ',');
302
+ return new SassString(implode(' ', $list));
303
+ }
304
+
305
+ public static function compassCompassListSize()
306
+ {
307
+ $args = func_get_args();
308
+ $list = self::compassList($args, ',');
309
+ return new SassNumber(count($list));
310
+ }
311
+
312
+ public static function compassCompassListSlice($list, $start, $end)
313
+ {
314
+ $args = func_get_args();
315
+ $end = array_pop($args);
316
+ $start = array_pop($args);
317
+ $list = self::compassList($args, ',');
318
+ return implode(',', array_slice($list, $start, $end));
319
+ }
320
+
321
+ public static function compassFirstValueOf()
322
+ {
323
+ $args = array();
324
+ $args[] = 'first';
325
+ return call_user_func_array('self::compassCompassNth', $args);
326
+ }
327
+
328
+ public static function compassList($list, $seperator = ',')
329
+ {
330
+ if (is_object($list)) {
331
+ $list = $list->value;
332
+ }
333
+ if (is_array($list)) {
334
+ $newlist = array();
335
+ foreach ($list as $listlet) {
336
+ $newlist = array_merge($newlist, self::compassList($listlet, $seperator));
337
+ }
338
+ $list = implode(', ', $newlist);
339
+ }
340
+
341
+ $out = array();
342
+ $size = 0;
343
+ $braces = 0;
344
+ $stack = '';
345
+ for ($i = 0; $i < strlen($list); $i++) {
346
+ $char = substr($list, $i, 1);
347
+ switch ($char) {
348
+ case '(':
349
+ $braces++;
350
+ $stack .= $char;
351
+ break;
352
+ case ')':
353
+ $braces--;
354
+ $stack .= $char;
355
+ break;
356
+ case $seperator:
357
+ if ($braces === 0) {
358
+ $out[] = $stack;
359
+ $stack = '';
360
+ $size++;
361
+ break;
362
+ }
363
+
364
+ default:
365
+ $stack .= $char;
366
+ }
367
+ }
368
+ $out[] = $stack;
369
+ return $out;
370
+ }
371
+
372
+ // http://compass-style.org/reference/compass/helpers/selectors/#nest
373
+ public static function compassNest()
374
+ {
375
+ $args = func_get_args();
376
+ $output = explode(',', array_pop($args));
377
+
378
+ for ($i = count($args) - 1; $i >= 0; $i--) {
379
+ $current = explode(',', $args[$i]);
380
+ $size = count($output);
381
+ foreach ($current as $selector) {
382
+ for ($j = 0; $j < $size; $j++) {
383
+ $output[] = trim($selector) . " " . trim($output[$j]);
384
+ }
385
+ }
386
+ $output = array_slice($output, $size);
387
+ }
388
+
389
+ return new SassString(implode(', ', $output));
390
+ }
391
+
392
+ public static function compassAppendSelector($initial, $new)
393
+ {
394
+ $list = explode(',', $initial);
395
+ foreach ($list as $k => $selector) {
396
+ $list[$k] = trim($selector) . $new;
397
+ }
398
+ return new SassString(implode(', ', $list));
399
+ }
400
+
401
+ public static function compassHeaders($from = false, $to = false)
402
+ {
403
+ if (is_object($from)) {
404
+ $from = $from->value;
405
+ }
406
+ if (is_object($to)) {
407
+ $to = $to->value;
408
+ }
409
+
410
+ if (!$from || !is_numeric($from)) {
411
+ $from = 1;
412
+ }
413
+ if (!$to || !is_numeric($to)) {
414
+ $to = 6;
415
+ }
416
+
417
+ $from = (int)$from;
418
+ $to = (int)$to;
419
+
420
+ $output = array();
421
+ for ($i = $from; $i <= $to; $i++) {
422
+ $output[] = 'h' . $i;
423
+ }
424
+ return new SassString(implode(', ', $output));
425
+ }
426
+
427
+ public static function compassCommaList()
428
+ {
429
+ print_r(func_get_args());
430
+ die;
431
+ }
432
+
433
+ public static function compassPrefixedForTransition($prefix, $property)
434
+ {
435
+
436
+ }
437
+
438
+ public static function compassPi()
439
+ {
440
+ return pi();
441
+ }
442
+
443
+ public static function compassSin($number)
444
+ {
445
+ return new SassNumber(sin($number));
446
+ }
447
+
448
+ public static function compassCos($number)
449
+ {
450
+ return new SassNumber(sin($number));
451
+ }
452
+
453
+ public static function compassTan($number)
454
+ {
455
+ return new SassNumber(sin($number));
456
+ }
457
+
458
+ # not sure what should happen with these
459
+
460
+ public static function compassStylesheetUrl($path, $only_path = false)
461
+ {
462
+
463
+ return self::compassUrl($path, $only_path);
464
+ }
465
+
466
+ public static function compassFontUrl($path, $only_path = false)
467
+ {
468
+ return self::compassUrl($path, $only_path);
469
+ }
470
+
471
+ public static function compassImageUrl($path, $only_path = false)
472
+ {
473
+ return self::compassUrl($path, $only_path);
474
+ }
475
+
476
+ public static function compassUrl($path, $only_path = false, $web_path = true)
477
+ {
478
+ $opath = $path;
479
+ if (!$path = SassFile::get_file($path, SassParser::$instance, false)) {
480
+ throw new Exception('File not found: ' . $opath);
481
+ }
482
+
483
+ $path = $path[0];
484
+ if ($web_path) {
485
+ $webroot = realpath($_SERVER['DOCUMENT_ROOT']);
486
+ $path = str_replace($webroot, '', $path);
487
+ }
488
+
489
+ if ($only_path) {
490
+ return new SassString($path);
491
+ }
492
+ return new SassString("url('$path')");
493
+ }
494
+
495
+ public static function compassOppositePosition($from)
496
+ {
497
+ $ret = '';
498
+ if ($from == 'top') {
499
+ $ret = 'bottom';
500
+ } else if ($from == 'bottom') {
501
+ $ret = 'top';
502
+ } else if ($from == 'left') {
503
+ $ret = 'right';
504
+ } else if ($from == 'right') {
505
+ $ret = 'left';
506
+ } else if ($from == 'center') {
507
+ $ret = 'center';
508
+ }
509
+ return $ret;
510
+ }
511
+ }
lib/phpsass/Extensions/Compass/stylesheets/_compass.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ @import "compass/compass/utilities";
2
+ @import "compass/compass/_typography";
3
+ @import "compass/compass/_css3";
lib/phpsass/Extensions/Compass/stylesheets/_lemonade.scss ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin image-dimensions($file) {
2
+ height: image-height($file);
3
+ width: image-width($file);
4
+ }
5
+
6
+ @mixin sprite-image($file) {
7
+ background: sprite-image($file) $repeat;
8
+ }
9
+
10
+ @mixin sized-sprite-image($file) {
11
+ background: sprite-image($file);
12
+ @include image-dimensions($file);
13
+ }
14
+
15
+ @mixin sprite-folder($folder, $image-dimensions: false) {
16
+ .#{$folder} {
17
+ @if $image-dimensions {
18
+ background: sprite-url($folder);
19
+ } @else {
20
+ background: sprite-url($folder) no-repeat;
21
+ }
22
+ }
23
+ @for $i from 0 to sprite-files-in-folder($folder) {
24
+ $file: sprite-file-from-folder($folder, $i);
25
+ .#{$folder}-#{image-basename($file)} {
26
+ @extend .#{$folder};
27
+ background-position: sprite-position(sprite-file-from-folder($folder, $i));
28
+ @if $image-dimensions {
29
+ @include image-dimensions($file);
30
+ }
31
+ }
32
+ }
33
+ }
34
+
35
+ @mixin sized-sprite-folder($folder) {
36
+ @include sprite-folder($folder, true);
37
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/_css3.scss ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "css3/css3/_border-radius";
2
+ @import "css3/css3/_inline-block";
3
+ @import "css3/css3/_opacity";
4
+ @import "css3/css3/_box-shadow";
5
+ @import "css3/css3/_text-shadow";
6
+ @import "css3/css3/_columns";
7
+ @import "css3/css3/_box-sizing";
8
+ @import "css3/css3/_box";
9
+ @import "css3/css3/_images";
10
+ @import "css3/css3/_background-clip";
11
+ @import "css3/css3/_background-origin";
12
+ @import "css3/css3/_background-size";
13
+ @import "css3/css3/_font-face";
14
+ @import "css3/css3/_transform";
15
+ @import "css3/css3/_transition";
16
+ @import "css3/css3/_appearance";
17
+ @import "css3/css3/_regions";
18
+ @import "css3/css3/_hyphenation";
19
+ @import "css3/css3/_filter";
20
+ @import "css3/css3/_user-interface";
lib/phpsass/Extensions/Compass/stylesheets/compass/_layout.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ @import "layout/layout/_grid-background";
2
+ @import "layout/layout/_sticky-footer";
3
+ @import "layout/layout/_stretching";
lib/phpsass/Extensions/Compass/stylesheets/compass/_reset-legacy.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ @import "reset/reset/_utilities-legacy";
2
+
3
+ @include global-reset;
lib/phpsass/Extensions/Compass/stylesheets/compass/_reset.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ @import "reset/reset/_utilities";
2
+
3
+ @include global-reset;
lib/phpsass/Extensions/Compass/stylesheets/compass/_support.scss ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Usually compass hacks apply to both ie6 & 7 -- set this to false to disable support for both.
2
+ $legacy-support-for-ie: true !default;
3
+
4
+ // Setting this to false will result in smaller output, but no support for ie6 hacks
5
+ $legacy-support-for-ie6: $legacy-support-for-ie !default;
6
+
7
+ // Setting this to false will result in smaller output, but no support for ie7 hacks
8
+ $legacy-support-for-ie7: $legacy-support-for-ie !default;
9
+
10
+ // Setting this to false will result in smaller output, but no support for legacy ie8 hacks
11
+ $legacy-support-for-ie8: $legacy-support-for-ie !default;
12
+
13
+ // @private
14
+ // The user can simply set $legacy-support-for-ie and 6, 7, and 8 will be set accordingly,
15
+ // But in case the user set each of those explicitly, we need to sync the value of
16
+ // this combined variable.
17
+ $legacy-support-for-ie: $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8;
18
+
19
+ // Whether to output legacy support for mozilla.
20
+ // Usually this means hacks to support Firefox 3.6 or earlier.
21
+ $legacy-support-for-mozilla: true;
22
+
23
+ // Support for mozilla in experimental css3 properties (-moz).
24
+ $experimental-support-for-mozilla: true !default;
25
+ // Support for webkit in experimental css3 properties (-webkit).
26
+ $experimental-support-for-webkit: true !default;
27
+ // Support for webkit's original (non-standard) gradient syntax.
28
+ $support-for-original-webkit-gradients: true !default;
29
+ // Support for opera in experimental css3 properties (-o).
30
+ $experimental-support-for-opera: true !default;
31
+ // Support for microsoft in experimental css3 properties (-ms).
32
+ $experimental-support-for-microsoft: true !default;
33
+ // Support for khtml in experimental css3 properties (-khtml).
34
+ $experimental-support-for-khtml: false !default;
35
+ // Support for svg in experimental css3 properties.
36
+ // Setting this to true might add significant size to your
37
+ // generated stylesheets.
38
+ $experimental-support-for-svg: false !default;
39
+ // Support for CSS PIE in experimental css3 properties (-pie).
40
+ $experimental-support-for-pie: false !default;
lib/phpsass/Extensions/Compass/stylesheets/compass/_typography.scss ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ @import "typography/typography/_links";
2
+ @import "typography/typography/lists";
3
+ @import "typography/typography/_text";
4
+ @import "typography/typography/_vertical_rhythm";
lib/phpsass/Extensions/Compass/stylesheets/compass/_utilities.scss ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ @import "utilities/utilities/_color";
2
+ @import "utilities/utilities/_general";
3
+ @import "utilities/utilities/_sprites";
4
+ @import "utilities/utilities/tables";
5
+ // deprecated
6
+ @import "typography/typography/_links";
7
+ @import "typography/typography/lists";
8
+ @import "typography/typography/_text";
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_appearance.scss ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Change the appearance for Mozilla, Webkit and possibly the future.
4
+ // The appearance property is currently not present in any newer CSS specification.
5
+ //
6
+ // There is no official list of accepted values, but you might check these source:
7
+ //
8
+ // * [Mozilla](https://developer.mozilla.org/en/CSS/-moz-appearance)
9
+ // * [Webkit](http://code.google.com/p/webkit-mirror/source/browse/Source/WebCore/css/CSSValueKeywords.in?spec=svnf1aea559dcd025a8946aa7da6e4e8306f5c1b604&r=63c7d1af44430b314233fea342c3ddb2a052e365)
10
+ // (search for 'appearance' within the page)
11
+
12
+ @mixin appearance($ap) {
13
+ $ap: unquote($ap);
14
+ @include experimental(appearance, $ap, -moz, -webkit, not -o, not -ms, not -khtml, official);
15
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_background-clip.scss ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // The default value is `padding-box` -- the box model used by modern browsers.
4
+ //
5
+ // If you wish to do so, you can override the default constant with `border-box`
6
+ //
7
+ // To override to the default border-box model, use this code:
8
+ // $default-background-clip: border-box
9
+
10
+ $default-background-clip: padding-box !default;
11
+
12
+ // Clip the background (image and color) at the edge of the padding or border.
13
+ //
14
+ // Legal Values:
15
+ //
16
+ // * padding-box
17
+ // * border-box
18
+ // * text
19
+
20
+ @mixin background-clip($clip: $default-background-clip) {
21
+ // webkit and mozilla use the deprecated short [border | padding]
22
+ $clip: unquote($clip);
23
+ $deprecated: $clip;
24
+ @if $clip == padding-box {
25
+ $deprecated: padding;
26
+ }
27
+ @if $clip == border-box {
28
+ $deprecated: border;
29
+ }
30
+ // Support for webkit and mozilla's use of the deprecated short form
31
+ @include experimental(background-clip, $deprecated, -moz, -webkit, not -o, not -ms, not -khtml, not official);
32
+ @include experimental(background-clip, $clip, not -moz, not -webkit, not -o, not -ms, -khtml, official);
33
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_background-origin.scss ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Override `$default-background-origin` to change the default.
2
+
3
+ @import "shared";
4
+
5
+ $default-background-origin: content-box !default;
6
+
7
+ // Position the background off the edge of the padding, border or content
8
+ //
9
+ // * Possible values:
10
+ // * `padding-box`
11
+ // * `border-box`
12
+ // * `content-box`
13
+ // * browser defaults to `padding-box`
14
+ // * mixin defaults to `content-box`
15
+
16
+ @mixin background-origin($origin: $default-background-origin) {
17
+ $origin: unquote($origin);
18
+ // webkit and mozilla use the deprecated short [border | padding | content]
19
+ $deprecated: $origin;
20
+ @if $origin == padding-box {
21
+ $deprecated: padding;
22
+ }
23
+ @if $origin == border-box {
24
+ $deprecated: border;
25
+ }
26
+ @if $origin == content-box {
27
+ $deprecated: content;
28
+ }
29
+
30
+ // Support for webkit and mozilla's use of the deprecated short form
31
+ @include experimental(background-origin, $deprecated, -moz, -webkit, not -o, not -ms, not -khtml, not official);
32
+ @include experimental(background-origin, $origin, not -moz, not -webkit, -o, -ms, -khtml, official);
33
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_background-size.scss ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // override to change the default
4
+ $default-background-size: 100% auto !default;
5
+
6
+ // Set the size of background images using px, width and height, or percentages.
7
+ // Currently supported in: Opera, Gecko, Webkit.
8
+ //
9
+ // * percentages are relative to the background-origin (default = padding-box)
10
+ // * mixin defaults to: `$default-background-size`
11
+ @mixin background-size($size-1: $default-background-size,
12
+ $size-2: false,
13
+ $size-3: false,
14
+ $size-4: false,
15
+ $size-5: false,
16
+ $size-6: false,
17
+ $size-7: false,
18
+ $size-8: false,
19
+ $size-9: false,
20
+ $size-10: false) {
21
+ $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1);
22
+ $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10);
23
+ @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml);
24
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_border-radius.scss ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ $default-border-radius: 5px !default;
4
+
5
+ // Round all corners by a specific amount, defaults to value of `$default-border-radius`.
6
+ //
7
+ // When two values are passed, the first is the horizontal radius
8
+ // and the second is the vertical radius.
9
+ //
10
+ // Note: webkit does not support shorthand syntax for several corners at once.
11
+ // So in the case where you pass several values only the first will be passed to webkit.
12
+ //
13
+ // Examples:
14
+ //
15
+ // .simple { @include border-radius(4px, 4px); }
16
+ // .compound { @include border-radius(2px 5px, 3px 6px); }
17
+ // .crazy { @include border-radius(1px 3px 5px 7px, 2px 4px 6px 8px)}
18
+ //
19
+ // Which generates:
20
+ //
21
+ // .simple {
22
+ // -webkit-border-radius: 4px 4px;
23
+ // -moz-border-radius: 4px / 4px;
24
+ // -khtml-border-radius: 4px / 4px;
25
+ // border-radius: 4px / 4px; }
26
+ //
27
+ // .compound {
28
+ // -webkit-border-radius: 2px 3px;
29
+ // -moz-border-radius: 2px 5px / 3px 6px;
30
+ // -khtml-border-radius: 2px 5px / 3px 6px;
31
+ // border-radius: 2px 5px / 3px 6px; }
32
+ //
33
+ // .crazy {
34
+ // -webkit-border-radius: 1px 2px;
35
+ // -moz-border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px;
36
+ // -khtml-border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px;
37
+ // border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px; }
38
+
39
+ @mixin border-radius($radius: $default-border-radius, $vertical-radius: false) {
40
+
41
+ @if $vertical-radius {
42
+ // Webkit doesn't understand the official shorthand syntax for specifying
43
+ // a vertical radius unless so in case there's several we only take the first.
44
+ @include experimental(border-radius, first-value-of($radius) first-value-of($vertical-radius), not -moz, -webkit, not -o, not -ms, not -khtml, not official);
45
+ @include experimental("border-radius", $radius unquote("/") $vertical-radius, -moz, not -webkit, not -o, not -ms, -khtml, official);
46
+ } @else {
47
+ @include experimental(border-radius, $radius);
48
+ }
49
+ }
50
+
51
+ // Round radius at position by amount.
52
+ //
53
+ // * legal values for `$vert`: `top`, `bottom`
54
+ // * legal values for `$horz`: `left`, `right`
55
+
56
+ @mixin border-corner-radius($vert, $horz, $radius: $default-border-radius) {
57
+ // Support for mozilla's syntax for specifying a corner
58
+ @include experimental("border-radius-#{$vert}#{$horz}", $radius, -moz, not -webkit, not -o, not -ms, not -khtml, not official);
59
+ @include experimental("border-#{$vert}-#{$horz}-radius", $radius, not -moz, -webkit, not -o, not -ms, -khtml, official);
60
+
61
+ }
62
+
63
+ // Round top-left corner only
64
+
65
+ @mixin border-top-left-radius($radius: $default-border-radius) {
66
+ @include border-corner-radius(top, left, $radius);
67
+ }
68
+
69
+ // Round top-right corner only
70
+
71
+ @mixin border-top-right-radius($radius: $default-border-radius) {
72
+ @include border-corner-radius(top, right, $radius);
73
+ }
74
+
75
+ // Round bottom-left corner only
76
+
77
+ @mixin border-bottom-left-radius($radius: $default-border-radius) {
78
+ @include border-corner-radius(bottom, left, $radius);
79
+ }
80
+
81
+ // Round bottom-right corner only
82
+
83
+ @mixin border-bottom-right-radius($radius: $default-border-radius) {
84
+ @include border-corner-radius(bottom, right, $radius);
85
+ }
86
+
87
+ // Round both top corners by amount
88
+ @mixin border-top-radius($radius: $default-border-radius) {
89
+ @include border-top-left-radius($radius);
90
+ @include border-top-right-radius($radius);
91
+ }
92
+
93
+ // Round both right corners by amount
94
+ @mixin border-right-radius($radius: $default-border-radius) {
95
+ @include border-top-right-radius($radius);
96
+ @include border-bottom-right-radius($radius);
97
+ }
98
+
99
+ // Round both bottom corners by amount
100
+ @mixin border-bottom-radius($radius: $default-border-radius) {
101
+ @include border-bottom-left-radius($radius);
102
+ @include border-bottom-right-radius($radius);
103
+ }
104
+
105
+ // Round both left corners by amount
106
+ @mixin border-left-radius($radius: $default-border-radius) {
107
+ @include border-top-left-radius($radius);
108
+ @include border-bottom-left-radius($radius);
109
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_box-shadow.scss ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // @doc off
2
+ // These defaults make the arguments optional for this mixin
3
+ // If you like, set different defaults before importing.
4
+ // @doc on
5
+
6
+ @import "shared";
7
+
8
+ // The default color for box shadows
9
+ $default-box-shadow-color: #333333 !default;
10
+
11
+ // The default horizontal offset. Positive is to the right.
12
+ $default-box-shadow-h-offset: 0px !default;
13
+
14
+ // The default vertical offset. Positive is down.
15
+ $default-box-shadow-v-offset: 0px !default;
16
+
17
+ // The default blur length.
18
+ $default-box-shadow-blur: 5px !default;
19
+
20
+ // The default spread length.
21
+ $default-box-shadow-spread: false !default;
22
+
23
+ // The default shadow inset: inset or false (for standard shadow).
24
+ $default-box-shadow-inset: false !default;
25
+
26
+ // Provides cross-browser for Webkit, Gecko, and CSS3 box shadows when one or more box
27
+ // shadows are needed.
28
+ // Each shadow argument should adhere to the standard css3 syntax for the
29
+ // box-shadow property.
30
+ @mixin box-shadow($shadow-1: default,
31
+ $shadow-2: false,
32
+ $shadow-3: false,
33
+ $shadow-4: false,
34
+ $shadow-5: false,
35
+ $shadow-6: false,
36
+ $shadow-7: false,
37
+ $shadow-8: false,
38
+ $shadow-9: false,
39
+ $shadow-10: false) {
40
+ @if $shadow-1 == default {
41
+ $shadow-1: -compass-space-list(compact(if($default-box-shadow-inset, inset, false), $default-box-shadow-h-offset, $default-box-shadow-v-offset, $default-box-shadow-blur, $default-box-shadow-spread, $default-box-shadow-color));
42
+ }
43
+ $shadow: compact($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10);
44
+ @include experimental(box-shadow, $shadow, -moz, -webkit, not -o, not -ms, not -khtml, official);
45
+ }
46
+
47
+ // Provides a single cross-browser CSS box shadow for Webkit, Gecko, and CSS3.
48
+ // Includes default arguments for color, horizontal offset, vertical offset, blur length, spread length, and inset.
49
+ @mixin single-box-shadow($color: $default-box-shadow-color,
50
+ $hoff: $default-box-shadow-h-offset,
51
+ $voff: $default-box-shadow-v-offset,
52
+ $blur: $default-box-shadow-blur,
53
+ $spread: $default-box-shadow-spread,
54
+ $inset: $default-box-shadow-inset) {
55
+ @if not ($inset == true or $inset == false or $inset == inset) {
56
+ @warn "$inset expected to be true or the inset keyword. Got #{$inset} instead. Using: inset";
57
+ }
58
+
59
+ @if $color == none {
60
+ @include box-shadow(none);
61
+ } @else {
62
+ $full: $hoff $voff;
63
+ @if $blur {
64
+ $full: $full $blur;
65
+ }
66
+ @if $spread {
67
+ $full: $full $spread;
68
+ }
69
+ @if $color {
70
+ $full: $full $color;
71
+ }
72
+ @if $inset {
73
+ $full: inset $full;
74
+ }
75
+ @include box-shadow($full);
76
+ }
77
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_box-sizing.scss ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Change the box model for Mozilla, Webkit, IE8 and the future
4
+ //
5
+ // @param $bs
6
+ // [ content-box | border-box ]
7
+
8
+ @mixin box-sizing($bs) {
9
+ $bs: unquote($bs);
10
+ @include experimental(box-sizing, $bs, -moz, -webkit, not -o, not -ms, not -khtml, official);
11
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_box.scss ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // display:box; must be used for any of the other flexbox mixins to work properly
4
+ @mixin display-box {
5
+ @include experimental-value(display, box, -moz, -webkit, not -o, -ms, not -khtml, official);
6
+ }
7
+
8
+ // Default box orientation, assuming that the user wants something less block-like
9
+ $default-box-orient: horizontal !default;
10
+
11
+ // Box orientation [ horizontal | vertical | inline-axis | block-axis | inherit ]
12
+ @mixin box-orient($orientation: $default-box-orient) {
13
+ $orientation: unquote($orientation);
14
+ @include experimental(box-orient, $orientation, -moz, -webkit, not -o, -ms, not -khtml, official);
15
+ }
16
+
17
+ // Default box-align
18
+ $default-box-align: stretch !default;
19
+
20
+ // Box align [ start | end | center | baseline | stretch ]
21
+ @mixin box-align($alignment: $default-box-align) {
22
+ $alignment: unquote($alignment);
23
+ @include experimental(box-align, $alignment, -moz, -webkit, not -o, -ms, not -khtml, official);
24
+ }
25
+
26
+ // Default box flex
27
+ $default-box-flex: 0 !default;
28
+
29
+ // mixin which takes an int argument for box flex. Apply this to the children inside the box.
30
+ //
31
+ // For example: "div.display-box > div.child-box" would get the box flex mixin.
32
+ @mixin box-flex($flex: $default-box-flex) {
33
+ @include experimental(box-flex, $flex, -moz, -webkit, not -o, -ms, not -khtml, official);
34
+ }
35
+
36
+ // Default flex group
37
+ $default-box-flex-group: 1 !default;
38
+
39
+ // mixin which takes an int argument for flexible grouping
40
+ @mixin box-flex-group($group: $default-box-flex-group) {
41
+ @include experimental(box-flex-group, $group, -moz, -webkit, not -o, -ms, not -khtml, official);
42
+ }
43
+
44
+ // default for ordinal group
45
+ $default-box-ordinal-group: 1 !default;
46
+
47
+ // mixin which takes an int argument for ordinal grouping and rearranging the order
48
+ @mixin box-ordinal-group($group: $default-ordinal-flex-group) {
49
+ @include experimental(box-ordinal-group, $group, -moz, -webkit, not -o, -ms, not -khtml, official);
50
+ }
51
+
52
+ // Box direction default value
53
+ $default-box-direction: normal !default;
54
+
55
+ // mixin for box-direction [ normal | reverse | inherit ]
56
+ @mixin box-direction($direction: $default-box-direction) {
57
+ $direction: unquote($direction);
58
+ @include experimental(box-direction, $direction, -moz, -webkit, not -o, -ms, not -khtml, official);
59
+ }
60
+
61
+ // default for box lines
62
+ $default-box-lines: single !default;
63
+
64
+ // mixin for box lines [ single | multiple ]
65
+ @mixin box-lines($lines: $default-box-lines) {
66
+ $lines: unquote($lines);
67
+ @include experimental(box-lines, $lines, -moz, -webkit, not -o, -ms, not -khtml, official);
68
+ }
69
+
70
+ // default for box pack
71
+ $default-box-pack: start !default;
72
+
73
+ // mixin for box pack [ start | end | center | justify ]
74
+ @mixin box-pack($pack: $default-box-pack) {
75
+ $pack: unquote($pack);
76
+ @include experimental(box-pack, $pack, -moz, -webkit, not -o, -ms, not -khtml, official);
77
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_columns.scss ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Specify the shorthand `columns` property.
4
+ //
5
+ // Example:
6
+ //
7
+ // @include columns(20em 2)
8
+ @mixin columns($width-and-count) {
9
+ @include experimental(columns, $width-and-count, -moz, -webkit, -o, -ms, not -khtml, official);
10
+ }
11
+
12
+ // Specify the number of columns
13
+ @mixin column-count($count) {
14
+ @include experimental(column-count, $count, -moz, -webkit, -o, -ms, not -khtml, official);
15
+ }
16
+
17
+ // Specify the gap between columns e.g. `20px`
18
+ @mixin column-gap($width) {
19
+ @include experimental(column-gap, $width, -moz, -webkit, -o, -ms, not -khtml, official);
20
+ }
21
+
22
+ // Specify the width of columns e.g. `100px`
23
+ @mixin column-width($width) {
24
+ @include experimental(column-width, $width, -moz, -webkit, -o, -ms, not -khtml, official);
25
+ }
26
+
27
+ // Specify the width of the rule between columns e.g. `1px`
28
+ @mixin column-rule-width($width) {
29
+ @include experimental(column-rule-width, $width, -moz, -webkit, -o, -ms, not -khtml, official);
30
+ }
31
+
32
+ // Specify the style of the rule between columns e.g. `dotted`.
33
+ // This works like border-style.
34
+ @mixin column-rule-style($style) {
35
+ @include experimental(column-rule-style, unquote($style), -moz, -webkit, -o, -ms, not -khtml, official);
36
+ }
37
+
38
+ // Specify the color of the rule between columns e.g. `blue`.
39
+ // This works like border-color.
40
+ @mixin column-rule-color($color) {
41
+ @include experimental(column-rule-color, $color, -moz, -webkit, -o, -ms, not -khtml, official);
42
+ }
43
+
44
+ // Mixin encompassing all column rule properties
45
+ // For example:
46
+ //
47
+ // @include column-rule(1px, solid, #c00)
48
+ //
49
+ // Or the values can be space separated:
50
+ //
51
+ // @include column-rule(1px solid #c00)
52
+ @mixin column-rule($width, $style: false, $color: false) {
53
+ $full: -compass-space-list(compact($width, $style, $color));
54
+ @include experimental(column-rule, $full, -moz, -webkit, -o, -ms, not -khtml, official);
55
+ }
56
+
57
+ // Mixin for setting column-break-before
58
+ //
59
+ // * legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
60
+ //
61
+ // Example:
62
+ // h2.before {@include column-break-before(always);}
63
+ //
64
+ // Which generates:
65
+ //
66
+ // h2.before {
67
+ // -webkit-column-break-before: always;
68
+ // column-break-before: always;}
69
+ @mixin column-break-before($value: auto) {
70
+ @include experimental(column-break-before, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official);
71
+ }
72
+
73
+ // Mixin for setting column-break-after
74
+ //
75
+ // * legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
76
+ //
77
+ // Example:
78
+ // h2.after {@include column-break-after(always); }
79
+ //
80
+ // Which generates:
81
+ //
82
+ // h2.after {
83
+ // -webkit-column-break-after: always;
84
+ // column-break-after: always; }
85
+ @mixin column-break-after($value: auto) {
86
+ @include experimental(column-break-after, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official);
87
+ }
88
+
89
+ // Mixin for setting column-break-inside
90
+ //
91
+ // * legal values are auto, avoid, avoid-page, avoid-column
92
+ //
93
+ // Example:
94
+ // h2.inside {@include column-break-inside();}
95
+ // Which generates:
96
+ //
97
+ // h2.inside {
98
+ // -webkit-column-break-inside: auto;
99
+ // column-break-inside: auto;}
100
+ @mixin column-break-inside($value: auto) {
101
+ @include experimental(column-break-inside, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official);
102
+ }
103
+
104
+ // All-purpose mixin for setting column breaks.
105
+ //
106
+ // * legal values for $type : before, after, inside
107
+ // * legal values for '$value' are dependent on $type
108
+ // * when $type = before, legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
109
+ // * when $type = after, legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
110
+ // * when $type = inside, legal values are auto, avoid, avoid-page, avoid-column
111
+ //
112
+ // Examples:
113
+ // h2.before {@include column-break(before, always);}
114
+ // h2.after {@include column-break(after, always); }
115
+ // h2.inside {@include column-break(inside); }
116
+ //
117
+ // Which generates:
118
+ // h2.before {
119
+ // -webkit-column-break-before: always;
120
+ // column-break-before: always;}
121
+ //
122
+ // h2.after {
123
+ // -webkit-column-break-after: always;
124
+ // column-break-after: always; }
125
+ //
126
+ // h2.inside {
127
+ // -webkit-column-break-inside: auto;
128
+ // column-break-inside: auto;}
129
+
130
+ @mixin column-break($type: before, $value: auto) {
131
+ @include experimental("column-break-#{$type}", $value, not -moz, -webkit, not -o, not -ms, not -khtml, official);
132
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_filter.scss ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Provides cross-browser support for the upcoming (?) css3 filter property.
4
+ //
5
+ // Each filter argument should adhere to the standard css3 syntax for the
6
+ // filter property.
7
+ @mixin filter
8
+
9
+ (
10
+ $filter-1,
11
+ $filter-2: false, $filter-3: false, $filter-4: false, $filter-5: false, $filter-6: false, $filter-7: false, $filter-8: false, $filter-9: false, $filter-10: false)
12
+ {
13
+ $filter: compact($filter-1, $filter-2, $filter-3, $filter-4, $filter-5, $filter-6, $filter-7, $filter-8, $filter-9, $filter-10);
14
+ @include experimental(filter, $filter, -moz, -webkit, not -o, not -ms, not -khtml, official);
15
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_font-face.scss ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Cross-browser support for @font-face. Supports IE, Gecko, Webkit, Opera.
4
+ //
5
+ // * $name is required, arbitrary, and what you will use in font stacks.
6
+ // * $font-files is required using font-files('relative/location', 'format').
7
+ // for best results use this order: woff, opentype/truetype, svg
8
+ // * $eot is required by IE, and is a relative location of the eot file.
9
+ // * $weight shows if the font is bold, defaults to normal
10
+ // * $style defaults to normal, might be also italic
11
+ // * For android 2.2 Compatiblity, please ensure that your web page has
12
+ // a meta viewport tag.
13
+ // * To support iOS < 4.2, an SVG file must be provided
14
+ //
15
+ // If you need to generate other formats check out the Font Squirrel
16
+ // [font generator](http://www.fontsquirrel.com/fontface/generator)
17
+ //
18
+
19
+ // In order to refer to a specific style of the font in your stylesheets as
20
+ // e.g. "font-style: italic;", you may add a couple of @font-face includes
21
+ // containing the respective font files for each style and specying
22
+ // respective the $style parameter.
23
+
24
+ // Order of the includes matters, and it is: normal, bold, italic, bold+italic.
25
+
26
+ @mixin font-face($name,
27
+ $font-files,
28
+ $eot: false,
29
+ $weight: false,
30
+ $style: false) {
31
+ $iefont: unquote("#{$eot}?#iefix");
32
+ @font-face {
33
+ font-family: quote($name);
34
+ @if $eot {
35
+ src: font-url($eot);
36
+ $font-files: font-url($iefont) unquote("format('eot')"), $font-files;
37
+ }
38
+ src: $font-files;
39
+ @if $weight {
40
+ font-weight: $weight;
41
+ }
42
+ @if $style {
43
+ font-style: $style;
44
+ }
45
+ }
46
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_hyphenation.scss ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Mixins to support specific CSS Text Level 3 elements
4
+ //
5
+ //
6
+ //
7
+ // Mixin for word-break properties
8
+ // http://www.w3.org/css3-text/#word-break
9
+ // * legal values for $type : normal, keep-all, break-all
10
+ //
11
+ // Example:
12
+ // p.wordBreak {@include word-break(break-all);}
13
+ //
14
+ // Which generates:
15
+ // p.wordBreak {
16
+ // -ms-word-break: break-all;
17
+ // word-break: break-all;
18
+ // word-break: break-word;}
19
+ //
20
+ @mixin word-break($value: normal) {
21
+ @if $value == break-all {
22
+ //Most browsers handle the break-all case the same...
23
+ @include experimental(word-break, $value, not -moz, not -webkit, not -o, -ms, not -khtml, official);
24
+ //Webkit handles break-all differently... as break-word
25
+ @include experimental(word-break, break-word, not -moz, not -webkit, not -o, not -ms, not -khtml, official);
26
+ } @else {
27
+ @include experimental(word-break, $value, not -moz, not -webkit, not -o, -ms, not -khtml, official);
28
+ }
29
+ }
30
+
31
+ // Mixin for the hyphens property
32
+ //
33
+ // W3C specification: http://www.w3.org/TR/css3-text/#hyphens
34
+ // * legal values for $type : auto, manual, none
35
+ //
36
+ // Example:
37
+ // p {
38
+ // @include hyphens(auto);}
39
+ // Which generates:
40
+ // p {
41
+ // -moz-hyphens: auto;
42
+ // -webkit-hyphens: auto;
43
+ // hyphens: auto;}
44
+ //
45
+ @mixin hyphens($value: auto) {
46
+ @include experimental(hyphens, $value, -moz, -webkit, not -o, not -ms, not -khtml, official);
47
+ }
48
+
49
+ // Mixin for x-browser hyphenation based on @auchenberg's post:
50
+ // Removes the need for the <wbr/> HTML tag
51
+ // http://blog.kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/
52
+ //
53
+ // Example:
54
+ // div {@include hyphenation;}
55
+ //
56
+ // Which generates:
57
+ // div {
58
+ // -ms-word-break: break-all;
59
+ // word-break: break-all;
60
+ // word-break: break-word;
61
+ // -moz-hyphens: auto;
62
+ // -webkit-hyphens: auto;
63
+ // hyphens: auto;}
64
+ //
65
+ @mixin hyphenation {
66
+ @include word-break(break-all);
67
+ @include hyphens;
68
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_images.scss ADDED
@@ -0,0 +1,189 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+ @import "compass/utilities/general/hacks";
3
+
4
+ // Background property support for vendor prefixing within values.
5
+ @mixin background($background-1,
6
+ $background-2: false,
7
+ $background-3: false,
8
+ $background-4: false,
9
+ $background-5: false,
10
+ $background-6: false,
11
+ $background-7: false,
12
+ $background-8: false,
13
+ $background-9: false,
14
+ $background-10: false) {
15
+ $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5, $background-6, $background-7, $background-8, $background-9, $background-10);
16
+ $mult-bgs: -compass-list-size($backgrounds) > 1;
17
+ $add-pie-bg: prefixed(-pie, $backgrounds) or $mult-bgs;
18
+ @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) {
19
+ background: -svg($backgrounds);
20
+ }
21
+ @if $support-for-original-webkit-gradients and prefixed(-owg, $backgrounds) {
22
+ background: -owg($backgrounds);
23
+ }
24
+ @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) {
25
+ background: -webkit($backgrounds);
26
+ }
27
+ @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) {
28
+ background: -moz($backgrounds);
29
+ }
30
+ @if $experimental-support-for-opera and prefixed(-o, $backgrounds) {
31
+ background: -o($backgrounds);
32
+ }
33
+ @if $experimental-support-for-pie and $add-pie-bg {
34
+ -pie-background: -pie($backgrounds);
35
+ }
36
+ background: $backgrounds;
37
+ }
38
+
39
+ @mixin background-with-css2-fallback($background-1,
40
+ $background-2: false,
41
+ $background-3: false,
42
+ $background-4: false,
43
+ $background-5: false,
44
+ $background-6: false,
45
+ $background-7: false,
46
+ $background-8: false,
47
+ $background-9: false,
48
+ $background-10: false) {
49
+ $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5, $background-6, $background-7, $background-8, $background-9, $background-10);
50
+ $mult-bgs: -compass-list-size($backgrounds) > 1;
51
+ $simple-background: if($mult-bgs or prefixed(-css2, $backgrounds), -css2(-compass-nth($backgrounds, last)), false);
52
+ @if not blank($simple-background) {
53
+ background: $simple-background;
54
+ }
55
+ @include background($background-1, $background-2, $background-3, $background-4, $background-5, $background-6, $background-7, $background-8, $background-9, $background-10);
56
+ }
57
+
58
+ // Background image property support for vendor prefixing within values.
59
+ @mixin background-image($image-1,
60
+ $image-2: false,
61
+ $image-3: false,
62
+ $image-4: false,
63
+ $image-5: false,
64
+ $image-6: false,
65
+ $image-7: false,
66
+ $image-8: false,
67
+ $image-9: false,
68
+ $image-10: false) {
69
+ $images: compact($image-1, $image-2, $image-3, $image-4, $image-5, $image-6, $image-7, $image-8, $image-9, $image-10);
70
+ $add-pie-bg: prefixed(-pie, $images) or -compass-list-size($images) > 1;
71
+
72
+ @if $experimental-support-for-svg and prefixed(-svg, $images) {
73
+ background-image: -svg($images);
74
+ background-size: 100%;
75
+ }
76
+ @if $support-for-original-webkit-gradients and prefixed(-owg, $images) {
77
+ background-image: -owg($images);
78
+ }
79
+ @if $experimental-support-for-webkit and prefixed(-webkit, $images) {
80
+ background-image: -webkit($images);
81
+ }
82
+ @if $experimental-support-for-mozilla and prefixed(-moz, $images) {
83
+ background-image: -moz($images);
84
+ }
85
+ @if $experimental-support-for-opera and prefixed(-o, $images) {
86
+ background-image: -o($images);
87
+ }
88
+ @if $experimental-support-for-pie and $add-pie-bg {
89
+ @warn "PIE does not support background-image. Use @include background(#{$images}) instead."
90
+ }
91
+ background-image: $images;
92
+ }
93
+
94
+ // Emit a IE-Specific filters that renders a simple linear gradient.
95
+ // For use in IE 6 - 8. Best practice would have you apply this via a
96
+ // conditional IE stylesheet, but if you must, you should place this before
97
+ // any background-image properties that you have specified.
98
+ //
99
+ // For the `$orientation` parameter, you can pass `vertical` or `horizontal`.
100
+ @mixin filter-gradient($start-color, $end-color, $orientation: vertical) {
101
+ @include has-layout;
102
+ $gradient-type: if($orientation == vertical, 0, 1);
103
+ @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 {
104
+ filter: progid:DXImageTransform.Microsoft.gradient
105
+ (gradientType =#{$gradient-type}, startColorstr = '#{ie-hex-str($start-color)}', endColorstr = '#{ie-hex-str($end-color)}');
106
+ }
107
+ }
108
+
109
+ // Border image property support for vendor prefixing properties and values.
110
+ @mixin border-image($value) {
111
+ @if $experimental-support-for-mozilla {
112
+ -moz-border-image: -moz(reject(-compass-list($value), fill));
113
+ }
114
+ @if $support-for-original-webkit-gradients {
115
+ -webkit-border-image: -owg(reject(-compass-list($value), fill));
116
+ }
117
+ @if $experimental-support-for-webkit {
118
+ -webkit-border-image: -webkit(reject(-compass-list($value), fill));
119
+ }
120
+ @if $experimental-support-for-opera {
121
+ -o-border-image: -o(reject(-compass-list($value), fill));
122
+ }
123
+ @if $experimental-support-for-svg {
124
+ border-image: -svg(reject(-compass-list($value), fill));
125
+ }
126
+ border-image: $value;
127
+ }
128
+
129
+ // List style image property support for vendor prefixing within values.
130
+ @mixin list-style-image($image) {
131
+ @if $experimental-support-for-mozilla and prefixed(-moz, $image) {
132
+ list-style-image: -moz($image);
133
+ }
134
+ @if $support-for-original-webkit-gradients and prefixed(-owg, $image) {
135
+ list-style-image: -owg($image);
136
+ }
137
+ @if $experimental-support-for-webkit and prefixed(-webkit, $image) {
138
+ list-style-image: -webkit($image);
139
+ }
140
+ @if $experimental-support-for-opera and prefixed(-o, $image) {
141
+ list-style-image: -o($image);
142
+ }
143
+ @if $experimental-support-for-svg and prefixed(-svg, $image) {
144
+ list-style-image: -svg($image);
145
+ }
146
+ list-style-image: $image;
147
+ }
148
+
149
+ // List style property support for vendor prefixing within values.
150
+ @mixin list-style($value) {
151
+ $value: -compass-list($value);
152
+ @if $experimental-support-for-mozilla and prefixed(-moz, $value) {
153
+ list-style-image: -moz($value);
154
+ }
155
+ @if $support-for-original-webkit-gradients and prefixed(-owg, $value) {
156
+ list-style-image: -owg($value);
157
+ }
158
+ @if $experimental-support-for-webkit and prefixed(-webkit, $value) {
159
+ list-style-image: -webkit($value);
160
+ }
161
+ @if $experimental-support-for-opera and prefixed(-o, $value) {
162
+ list-style-image: -o($value);
163
+ }
164
+ @if $experimental-support-for-svg and prefixed(-svg, $value) {
165
+ list-style-image: -svg($value);
166
+ }
167
+ list-style-image: $value;
168
+ }
169
+
170
+ // content property support for vendor prefixing within values.
171
+ @mixin content($value) {
172
+ $value: -compass-list($value);
173
+ @if $experimental-support-for-mozilla and prefixed(-moz, $value) {
174
+ content: -moz($value);
175
+ }
176
+ @if $support-for-original-webkit-gradients and prefixed(-owg, $value) {
177
+ content: -owg($value);
178
+ }
179
+ @if $experimental-support-for-webkit and prefixed(-webkit, $value) {
180
+ content: -webkit($value);
181
+ }
182
+ @if $experimental-support-for-opera and prefixed(-o, $value) {
183
+ content: -o($value);
184
+ }
185
+ @if $experimental-support-for-svg and prefixed(-svg, $value) {
186
+ content: -svg($value);
187
+ }
188
+ content: $value;
189
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_inline-block.scss ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Set `$inline-block-alignment` to `none` or `false` to disable the output
4
+ // of a vertical-align property in the inline-block mixin.
5
+ // Or set it to a legal value for `vertical-align` to change the default.
6
+ $inline-block-alignment: middle !default;
7
+
8
+ // Provides a cross-browser method to implement `display: inline-block;`
9
+ @mixin inline-block($alignment: $inline-block-alignment) {
10
+ @if $legacy-support-for-mozilla {
11
+ display: -moz-inline-stack;
12
+ }
13
+ display: inline-block;
14
+ @if $alignment and $alignment != none {
15
+ vertical-align: $alignment;
16
+ }
17
+ @if $legacy-support-for-ie {
18
+ *vertical-align: auto;
19
+ zoom: 1;
20
+ *display: inline;
21
+ }
22
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_opacity.scss ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Provides cross-browser CSS opacity. Takes a number between 0 and 1 as the argument, e.g. 0.5 for 50% opacity.
4
+ //
5
+ // @param $opacity
6
+ // A number between 0 and 1, where 0 is transparent and 1 is opaque.
7
+
8
+ @mixin opacity($opacity) {
9
+ @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 {
10
+ filter: unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})");
11
+ }
12
+ opacity: $opacity;
13
+ }
14
+
15
+ // Make an element completely transparent.
16
+ @mixin transparent {
17
+ @include opacity(0);
18
+ }
19
+
20
+ // Make an element completely opaque.
21
+ @mixin opaque {
22
+ @include opacity(1);
23
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_pie.scss ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ $experimental-support-for-pie: true;
2
+
3
+ // It is recommended that you use Sass's @extend directive to apply the behavior
4
+ // to your PIE elements. To assist you, Compass provides this variable.
5
+ // When set, it will cause the `@include pie` mixin to extend this class.
6
+ // The class name you provide should **not** include the `.`.
7
+ $pie-base-class: false !default;
8
+
9
+ // The default approach to using PIE.
10
+ // Can be one of:
11
+ //
12
+ // * relative (default)
13
+ // * z-index
14
+ // * none
15
+ $pie-default-approach: relative !default;
16
+
17
+ // The location of your PIE behavior file
18
+ // This should be root-relative to your web server
19
+ // relative assets don't work. It is recommended that
20
+ // you set this yourself.
21
+ $pie-behavior: stylesheet-url("PIE.htc") !default;
22
+
23
+ // When using the z-index approach, the
24
+ // first ancestor of the PIE element at
25
+ // or before the container's opaque background
26
+ // should have a z-index set as well to ensure
27
+ // propert z-index stacking.
28
+ //
29
+ // The `$position` argument must be some non-static
30
+ // value (absolute, relative, etc.)
31
+ @mixin pie-container($z-index: 0, $position: relative) {
32
+ z-index: $z-index;
33
+ position: $position;
34
+ }
35
+
36
+ // PIE elements must have this behavior attached to them.
37
+ // IE is broken -- it doesn't think of behavior urls as
38
+ // relative to the stylesheet. It considers them relative
39
+ // to the webpage. As a result, you cannot reliably use
40
+ // compass's relative_assets with PIE.
41
+ //
42
+ // * `$approach` - one of: relative, z-index, or none
43
+ // * `$z-index` - when using the z-index approach, this
44
+ // is the z-index that is applied.
45
+ @mixin pie-element($approach: $pie-default-approach,
46
+ $z-index: 0) {
47
+ behavior: $pie-behavior;
48
+ @if $approach == relative {
49
+ position: relative;
50
+ } @else if $approach == z-index {
51
+ z-index: $z-index;
52
+ }
53
+ }
54
+
55
+ // a smart mixin that knows to extend or include pie-element according
56
+ // to your stylesheet's configuration variables.
57
+ @mixin pie($base-class: $pie-base-class) {
58
+ @if $base-class {
59
+ @extend .#{$base-class};
60
+ } @else {
61
+ @include pie-element;
62
+ }
63
+ }
64
+
65
+ // Watch `$n` levels of ancestors for changes to their class attribute
66
+ // So that cascading styles will work correctly on the PIE element.
67
+ @mixin pie-watch-ancestors($n) {
68
+ -pie-watch-ancestors: $n;
69
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_regions.scss ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // Webkit, IE10 and future support for [CSS Regions](http://dev.w3.org/csswg/css3-regions/)
4
+ //
5
+ // $target is a value you use to link two regions of your css. Give the source of your content the flow-into property, and give your target container the flow-from property.
6
+ //
7
+ // For a visual explanation, see the diagrams at Chris Coyier's
8
+ // [CSS-Tricks](http://css-tricks.com/content-folding/)
9
+
10
+ @mixin flow-into($target) {
11
+ $target: unquote($target);
12
+ @include experimental(flow-into, $target, not -moz, -webkit, not -o, -ms, not -khtml, not official);
13
+ }
14
+
15
+ @mixin flow-from($target) {
16
+ $target: unquote($target);
17
+ @include experimental(flow-from, $target, not -moz, -webkit, not -o, -ms, not -khtml, not official);
18
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_shared.scss ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "compass/support";
2
+
3
+ // This mixin provides basic support for CSS3 properties and
4
+ // their corresponding experimental CSS2 properties when
5
+ // the implementations are identical except for the property
6
+ // prefix.
7
+ @mixin experimental($property, $value,
8
+ $moz: $experimental-support-for-mozilla,
9
+ $webkit: $experimental-support-for-webkit,
10
+ $o: $experimental-support-for-opera,
11
+ $ms: $experimental-support-for-microsoft,
12
+ $khtml: $experimental-support-for-khtml,
13
+ $official: true) {
14
+ @if $webkit and $experimental-support-for-webkit {
15
+ -webkit-#{$property} : $value;
16
+ }
17
+ @if $khtml and $experimental-support-for-khtml {
18
+ -khtml-#{$property} : $value;
19
+ }
20
+ @if $moz and $experimental-support-for-mozilla {
21
+ -moz-#{$property} : $value;
22
+ }
23
+ @if $ms and $experimental-support-for-microsoft {
24
+ -ms-#{$property} : $value;
25
+ }
26
+ @if $o and $experimental-support-for-opera {
27
+ -o-#{$property} : $value;
28
+ }
29
+ @if $official {
30
+ #{$property} : $value;
31
+ }
32
+ }
33
+
34
+ // Same as experimental(), but for cases when the property is the same and the value is vendorized
35
+ @mixin experimental-value($property, $value,
36
+ $moz: $experimental-support-for-mozilla,
37
+ $webkit: $experimental-support-for-webkit,
38
+ $o: $experimental-support-for-opera,
39
+ $ms: $experimental-support-for-microsoft,
40
+ $khtml: $experimental-support-for-khtml,
41
+ $official: true) {
42
+ @if $webkit and $experimental-support-for-webkit {
43
+ #{$property} : -webkit-#{$value};
44
+ }
45
+ @if $khtml and $experimental-support-for-khtml {
46
+ #{$property} : -khtml-#{$value};
47
+ }
48
+ @if $moz and $experimental-support-for-mozilla {
49
+ #{$property} : -moz-#{$value};
50
+ }
51
+ @if $ms and $experimental-support-for-microsoft {
52
+ #{$property} : -ms-#{$value};
53
+ }
54
+ @if $o and $experimental-support-for-opera {
55
+ #{$property} : -o-#{$value};
56
+ }
57
+ @if $official {
58
+ #{$property} : #{$value};
59
+ }
60
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_text-shadow.scss ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // These defaults make the arguments optional for this mixin
4
+ // If you like, set different defaults in your project
5
+
6
+ $default-text-shadow-color: #aaa !default;
7
+ $default-text-shadow-h-offset: 0px !default;
8
+ $default-text-shadow-v-offset: 0px !default;
9
+ $default-text-shadow-blur: 1px !default;
10
+ $default-text-shadow-spread: false !default;
11
+
12
+ // Provides cross-browser text shadows when one or more shadows are needed.
13
+ // Each shadow argument should adhere to the standard css3 syntax for the
14
+ // text-shadow property.
15
+ //
16
+ // Note: if any shadow has a spread parameter, this will cause the mixin
17
+ // to emit the shadow declaration twice, first without the spread,
18
+ // then with the spread included. This allows you to progressively
19
+ // enhance the browsers that do support the spread parameter.
20
+ @mixin text-shadow($shadow-1: default,
21
+ $shadow-2: false,
22
+ $shadow-3: false,
23
+ $shadow-4: false,
24
+ $shadow-5: false,
25
+ $shadow-6: false,
26
+ $shadow-7: false,
27
+ $shadow-8: false,
28
+ $shadow-9: false,
29
+ $shadow-10: false) {
30
+ @if $shadow-1 == default {
31
+ $shadow-1: compact($default-text-shadow-h-offset $default-text-shadow-v-offset $default-text-shadow-blur $default-text-shadow-spread $default-text-shadow-color);
32
+ }
33
+ $shadows-without-spread: join((),(), comma);
34
+ $shadows: join((),(), comma);
35
+ $has-spread: false;
36
+ @each $shadow in compact($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10) {
37
+ @if length($shadow) > 4 {
38
+ $has-spread: true;
39
+ $shadows-without-spread: append($shadows-without-spread, nth($shadow, 1) nth($shadow, 2) nth($shadow, 3) nth($shadow, 5));
40
+ $shadows: append($shadows, $shadow);
41
+ }
42
+ else {
43
+ $shadows-without-spread: append($shadows-without-spread, $shadow);
44
+ $shadows: append($shadows, $shadow);
45
+ }
46
+ }
47
+ @if $has-spread {
48
+ text-shadow: $shadows-without-spread;
49
+ }
50
+ text-shadow: $shadows;
51
+ }
52
+
53
+ // Provides a single cross-browser CSS text shadow.
54
+ //
55
+ // Provides sensible defaults for the color, horizontal offset, vertical offset, blur, and spread
56
+ // according to the configuration defaults above.
57
+ @mixin single-text-shadow($hoff: false,
58
+ $voff: false,
59
+ $blur: false,
60
+ $spread: false,
61
+ $color: false) {
62
+ // A lot of people think the color comes first. It doesn't.
63
+ @if type-of($hoff) == color {
64
+ $temp-color: $hoff;
65
+ $hoff: $voff;
66
+ $voff: $blur;
67
+ $blur: $spread;
68
+ $spread: $color;
69
+ $color: $temp-color;
70
+ }
71
+ // Can't rely on default assignment with multiple supported argument orders.
72
+ $hoff: if($hoff, $hoff, $default-text-shadow-h-offset);
73
+ $voff: if($voff, $voff, $default-text-shadow-v-offset);
74
+ $blur: if($blur, $blur, $default-text-shadow-blur);
75
+ $spread: if($spread, $spread, $default-text-shadow-spread);
76
+ $color: if($color, $color, $default-text-shadow-color);
77
+ // We don't need experimental support for this property.
78
+ @if $color == none or $hoff == none {
79
+ @include text-shadow(none);
80
+ } @else {
81
+ @include text-shadow(compact($hoff $voff $blur $spread $color));
82
+ }
83
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_transform-legacy.scss ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ @warn "This version of the transform module has been deprecated and will be removed.";
4
+
5
+ // CSS Transform and Transform-Origin
6
+
7
+ // Apply a transform sent as a complete string.
8
+
9
+ @mixin apply-transform($transform) {
10
+ @include experimental(transform, $transform, -moz, -webkit, -o, not -ms, not -khtml, official);
11
+ }
12
+
13
+ // Apply a transform-origin sent as a complete string.
14
+
15
+ @mixin apply-origin($origin) {
16
+ @include experimental(transform-origin, $origin, -moz, -webkit, -o, not -ms, not -khtml, official);
17
+ }
18
+
19
+ // transform-origin requires x and y coordinates
20
+ //
21
+ // * only applies the coordinates if they are there so that it can be called by scale, rotate and skew safely
22
+
23
+ @mixin transform-origin($originx: 50%, $originy: 50%) {
24
+ @if $originx or $originy {
25
+ @if $originy {
26
+ @include apply-origin($originx or 50% $originy);
27
+ } @else {
28
+ @include apply-origin($originx);
29
+ }
30
+ }
31
+ }
32
+
33
+ // A full transform mixin with everything you could want
34
+ //
35
+ // * including origin adjustments if you want them
36
+ // * scale, rotate and skew require units of degrees(deg)
37
+ // * scale takes a multiplier, rotate and skew take degrees
38
+
39
+ @mixin transform($scale: 1,
40
+ $rotate: 0deg,
41
+ $transx: 0,
42
+ $transy: 0,
43
+ $skewx: 0deg,
44
+ $skewy: 0deg,
45
+ $originx: false,
46
+ $originy: false) {
47
+ $transform: scale($scale) rotate($rotate) translate($transx, $transy) skew($skewx, $skewy);
48
+ @include apply-transform($transform);
49
+ @include transform-origin($originx, $originy);
50
+ }
51
+
52
+ // Transform Partials
53
+ //
54
+ // These work well on their own, but they don't add to each other, they override.
55
+ // Use them with extra origin args, or along side +transform-origin
56
+
57
+ // Adjust only the scale, with optional origin coordinates
58
+
59
+ @mixin scale($scale: 1.25, $originx: false, $originy: false) {
60
+ @include apply-transform(scale($scale));
61
+ @include transform-origin($originx, $originy);
62
+ }
63
+
64
+ // Adjust only the rotation, with optional origin coordinates
65
+
66
+ @mixin rotate($rotate: 45deg, $originx: false, $originy: false) {
67
+ @include apply-transform(rotate($rotate));
68
+ @include transform-origin($originx, $originy);
69
+ }
70
+
71
+ // Adjust only the translation
72
+
73
+ @mixin translate($transx: 0, $transy: 0) {
74
+ @include apply-transform(translate($transx, $transy));
75
+ }
76
+
77
+ // Adjust only the skew, with optional origin coordinates
78
+ @mixin skew($skewx: 0deg, $skewy: 0deg, $originx: false, $originy: false) {
79
+ @include apply-transform(skew($skewx, $skewy));
80
+ @include transform-origin($originx, $originy);
81
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_transform.scss ADDED
@@ -0,0 +1,593 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // @doc off
4
+ // Note ----------------------------------------------------------------------
5
+ // Safari, Chrome, and Firefox all support 3D transforms. However,
6
+ // only in the most recent builds. You should also provide fallback 2d support for
7
+ // Opera and IE. IE10 is slated to have 3d enabled, but is currently unreleased.
8
+ // To make that easy, all 2D transforms include an browser-targeting toggle ($only3d)
9
+ // to switch between the two support lists. The toggle defaults to 'false' (2D),
10
+ // and also accepts 'true' (3D). Currently the lists are as follows:
11
+ // 2D: Mozilla, Webkit, Opera, Official
12
+ // 3D: Webkit, Firefox.
13
+
14
+ // Available Transforms ------------------------------------------------------
15
+ // - Scale (2d and 3d)
16
+ // - Rotate (2d and 3d)
17
+ // - Translate (2d and 3d)
18
+ // - Skew (2d only)
19
+
20
+ // Transform Parameters ------------------------------------------------------
21
+ // - Transform Origin (2d and 3d)
22
+ // - Perspective (3d)
23
+ // - Perspective Origin (3d)
24
+ // - Transform Style (3d)
25
+ // - Backface Visibility (3d)
26
+
27
+ // Mixins --------------------------------------------------------------------
28
+ // transform-origin
29
+ // - shortcuts: transform-origin2d, transform-origin3d
30
+ // - helpers: apply-origin
31
+ // transform
32
+ // - shortcuts: transform2d, transform3d
33
+ // - helpers: simple-transform, create-transform
34
+ // perspective
35
+ // - helpers: perspective-origin
36
+ // transform-style
37
+ // backface-visibility
38
+ // scale
39
+ // - shortcuts: scaleX, scaleY, scaleZ, scale3d
40
+ // rotate
41
+ // - shortcuts: rotateX, rotateY, rotate3d
42
+ // translate
43
+ // - shortcuts: translateX, translateY, translateZ, translate3d
44
+ // skew
45
+ // - shortcuts: skewX, skewY
46
+
47
+ // Defaults ------------------------------------------------------------------
48
+ // @doc on
49
+
50
+ // The default x-origin for transforms
51
+ $default-origin-x: 50% !default;
52
+ // The default y-origin for transforms
53
+ $default-origin-y: 50% !default;
54
+ // The default z-origin for transforms
55
+ $default-origin-z: 50% !default;
56
+
57
+ // The default x-multiplier for scaling
58
+ $default-scale-x: 1.25 !default;
59
+ // The default y-multiplier for scaling
60
+ $default-scale-y: $default-scale-x !default;
61
+ // The default z-multiplier for scaling
62
+ $default-scale-z: $default-scale-x !default;
63
+
64
+ // The default angle for rotations
65
+ $default-rotate: 45deg !default;
66
+
67
+ // The default x-vector for the axis of 3d rotations
68
+ $default-vector-x: 1 !default;
69
+ // The default y-vector for the axis of 3d rotations
70
+ $default-vector-y: 1 !default;
71
+ // The default z-vector for the axis of 3d rotations
72
+ $default-vector-z: 1 !default;
73
+
74
+ // The default x-length for translations
75
+ $default-translate-x: 1em !default;
76
+ // The default y-length for translations
77
+ $default-translate-y: $default-translate-x !default;
78
+ // The default z-length for translations
79
+ $default-translate-z: $default-translate-x !default;
80
+
81
+ // The default x-angle for skewing
82
+ $default-skew-x: 5deg !default;
83
+ // The default y-angle for skewing
84
+ $default-skew-y: 5deg !default;
85
+
86
+ // **Transform-origin**
87
+ // Transform-origin sent as a complete string
88
+ //
89
+ // @include apply-origin( origin [, 3D-only ] )
90
+ //
91
+ // where 'origin' is a space separated list containing 1-3 (x/y/z) coordinates
92
+ // in percentages, absolute (px, cm, in, em etc..) or relative
93
+ // (left, top, right, bottom, center) units
94
+ //
95
+ // @param only3d Set this to true to only apply this
96
+ // mixin where browsers have 3D support.
97
+ @mixin apply-origin($origin, $only3d) {
98
+ $only3d: $only3d or -compass-list-size(-compass-list($origin)) > 2;
99
+ @if $only3d {
100
+ @include experimental(transform-origin, $origin, -moz, -webkit, -o, -ms, not -khtml, official);
101
+ } @else {
102
+ @include experimental(transform-origin, $origin, -moz, -webkit, -o, -ms, not -khtml, official);
103
+ }
104
+ }
105
+
106
+ // Transform-origin sent as individual arguments:
107
+ //
108
+ // @include transform-origin( [ origin-x, origin-y, origin-z, 3D-only ] )
109
+ //
110
+ // where the 3 'origin-' arguments represent x/y/z coordinates.
111
+ //
112
+ // **NOTE:** setting z coordinates triggers 3D support list, leave false for 2D support
113
+ @mixin transform-origin($origin-x: $default-origin-x,
114
+ $origin-y: $default-origin-y,
115
+ $origin-z: false,
116
+ $only3d: if($origin-z, true, false)) {
117
+ $origin: unquote('');
118
+ @if $origin-x or $origin-y or $origin-z {
119
+ @if $origin-x {
120
+ $origin: $origin-x;
121
+ } @else {
122
+ $origin: 50%;
123
+ }
124
+ @if $origin-y {
125
+ $origin: $origin $origin-y;
126
+ } @else {
127
+ @if $origin-z {
128
+ $origin: $origin 50%;
129
+ }
130
+ }
131
+ @if $origin-z {
132
+ $origin: $origin $origin-z;
133
+ }
134
+ @include apply-origin($origin, $only3d);
135
+ }
136
+ }
137
+
138
+ // Transform sent as a complete string:
139
+ //
140
+ // @include transform( transforms [, 3D-only ] )
141
+ //
142
+ // where 'transforms' is a space separated list of all the transforms to be applied.
143
+ @mixin transform($transform,
144
+ $only3d: false) {
145
+ @if $only3d {
146
+ @include experimental(transform, $transform, -moz, -webkit, -o, -ms, not -khtml, official);
147
+ } @else {
148
+ @include experimental(transform, $transform, -moz, -webkit, -o, -ms, not -khtml, official);
149
+ }
150
+ }
151
+
152
+ // Shortcut to target all browsers with 2D transform support
153
+ @mixin transform2d($trans) {
154
+ @include transform($trans, false);
155
+ }
156
+
157
+ // Shortcut to target only browsers with 3D transform support
158
+ @mixin transform3d($trans) {
159
+ @include transform($trans, true);
160
+ }
161
+
162
+ // @doc off
163
+ // 3D Parameters -------------------------------------------------------------
164
+ // @doc on
165
+
166
+ // Set the perspective of 3D transforms on the children of an element:
167
+ //
168
+ // @include perspective( perspective )
169
+ //
170
+ // where 'perspective' is a unitless number representing the depth of the
171
+ // z-axis. The higher the perspective, the more exaggerated the foreshortening.
172
+ // values from 500 to 1000 are more-or-less "normal" - a good starting-point.
173
+ @mixin perspective($p) {
174
+ @include experimental(perspective, $p, -moz, -webkit, -o, -ms, not -khtml, official);
175
+ }
176
+
177
+ // Set the origin position for the perspective
178
+ //
179
+ // @include perspective-origin(origin-x [origin-y])
180
+ //
181
+ // where the two arguments represent x/y coordinates
182
+ @mixin perspective-origin($origin: 50%) {
183
+ @include experimental(perspective-origin, $origin, -moz, -webkit, -o, -ms, not -khtml, official);
184
+ }
185
+
186
+ // Determine whether a 3D objects children also live in the given 3D space
187
+ //
188
+ // @include transform-style( [ style ] )
189
+ //
190
+ // where `style` can be either `flat` or `preserve-3d`.
191
+ // Browsers default to `flat`, mixin defaults to `preserve-3d`.
192
+ @mixin transform-style($style: preserve-3d) {
193
+ @include experimental(transform-style, $style, -moz, -webkit, -o, -ms, not -khtml, official);
194
+ }
195
+
196
+ // Determine the visibility of an element when it's back is turned
197
+ //
198
+ // @include backface-visibility( [ visibility ] )
199
+ //
200
+ // where `visibility` can be either `visible` or `hidden`.
201
+ // Browsers default to visible, mixin defaults to hidden
202
+ @mixin backface-visibility($visibility: hidden) {
203
+ @include experimental(backface-visibility, $visibility, -moz, -webkit, -o, -ms, not -khtml, official);
204
+ }
205
+
206
+ // @doc off
207
+ // Transform Partials --------------------------------------------------------
208
+ // These work well on their own, but they don't add to each other, they override.
209
+ // Use along with transform parameter mixins to adjust origin, perspective and style
210
+ // ---------------------------------------------------------------------------
211
+
212
+ // Scale ---------------------------------------------------------------------
213
+ // @doc on
214
+
215
+ // Scale an object along the x and y axis:
216
+ //
217
+ // @include scale( [ scale-x, scale-y, perspective, 3D-only ] )
218
+ //
219
+ // where the 'scale-' arguments are unitless multipliers of the x and y dimensions
220
+ // and perspective, which works the same as the stand-alone perspective property/mixin
221
+ // but applies to the individual element (multiplied with any parent perspective)
222
+ //
223
+ // **Note** This mixin cannot be combined with other transform mixins.
224
+ @mixin scale($scale-x: $default-scale-x,
225
+ $scale-y: $scale-x,
226
+ $perspective: false,
227
+ $only3d: false) {
228
+ $trans: scale($scale-x, $scale-y);
229
+ @if $perspective {
230
+ $trans: perspective($perspective) $trans;
231
+ }
232
+ @include transform($trans, $only3d);
233
+ }
234
+
235
+ // Scale an object along the x axis
236
+ // @include scaleX( [ scale-x, perspective, 3D-only ] )
237
+ //
238
+ // **Note** This mixin cannot be combined with other transform mixins.
239
+ @mixin scaleX($scale: $default-scale-x,
240
+ $perspective: false,
241
+ $only3d: false) {
242
+ $trans: scaleX($scale);
243
+ @if $perspective {
244
+ $trans: perspective($perspective) $trans;
245
+ }
246
+ @include transform($trans, $only3d);
247
+ }
248
+
249
+ // Scale an object along the y axis
250
+ // @include scaleY( [ scale-y, perspective, 3D-only ] )
251
+ //
252
+ // **Note** This mixin cannot be combined with other transform mixins.
253
+ @mixin scaleY($scale: $default-scale-y,
254
+ $perspective: false,
255
+ $only3d: false) {
256
+ $trans: scaleY($scale);
257
+ @if $perspective {
258
+ $trans: perspective($perspective) $trans;
259
+ }
260
+ @include transform($trans, $only3d);
261
+ }
262
+
263
+ // Scale an object along the z axis
264
+ // @include scaleZ( [ scale-z, perspective ] )
265
+ //
266
+ // **Note** This mixin cannot be combined with other transform mixins.
267
+ @mixin scaleZ($scale: $default-scale-z,
268
+ $perspective: false) {
269
+ $trans: scaleZ($scale);
270
+ @if $perspective {
271
+ $trans: perspective($perspective) $trans;
272
+ }
273
+ @include transform3d($trans);
274
+ }
275
+
276
+ // Scale and object along all three axis
277
+ // @include scale3d( [ scale-x, scale-y, scale-z, perspective ] )
278
+ //
279
+ // **Note** This mixin cannot be combined with other transform mixins.
280
+ @mixin scale3d($scale-x: $default-scale-x,
281
+ $scale-y: $default-scale-y,
282
+ $scale-z: $default-scale-z,
283
+ $perspective: false) {
284
+ $trans: scale3d($scale-x, $scale-y, $scale-z);
285
+ @if $perspective {
286
+ $trans: perspective($perspective) $trans;
287
+ }
288
+ @include transform3d($trans);
289
+ }
290
+
291
+ // @doc off
292
+ // Rotate --------------------------------------------------------------------
293
+ // @doc on
294
+
295
+ // Rotate an object around the z axis (2D)
296
+ // @include rotate( [ rotation, perspective, 3D-only ] )
297
+ // where 'rotation' is an angle set in degrees (deg) or radian (rad) units
298
+ //
299
+ // **Note** This mixin cannot be combined with other transform mixins.
300
+ @mixin rotate($rotate: $default-rotate,
301
+ $perspective: false,
302
+ $only3d: false) {
303
+ $trans: rotate($rotate);
304
+ @if $perspective {
305
+ $trans: perspective($perspective) $trans;
306
+ }
307
+ @include transform($trans, $only3d);
308
+ }
309
+
310
+ // A longcut for 'rotate' in case you forget that 'z' is implied
311
+ //
312
+ // **Note** This mixin cannot be combined with other transform mixins.
313
+ @mixin rotateZ($rotate: $default-rotate,
314
+ $perspective: false,
315
+ $only3d: false) {
316
+ @include rotate($rotate, $perspective, $only3d);
317
+ }
318
+
319
+ // Rotate an object around the x axis (3D)
320
+ // @include rotateX( [ rotation, perspective ] )
321
+ //
322
+ // **Note** This mixin cannot be combined with other transform mixins.
323
+ @mixin rotateX($rotate: $default-rotate,
324
+ $perspective: false) {
325
+ $trans: rotateX($rotate);
326
+ @if $perspective {
327
+ $trans: perspective($perspective) $trans;
328
+ }
329
+ @include transform3d($trans);
330
+ }
331
+
332
+ // Rotate an object around the y axis (3D)
333
+ // @include rotate( [ rotation, perspective ] )
334
+ //
335
+ // **Note** This mixin cannot be combined with other transform mixins.
336
+ @mixin rotateY($rotate: $default-rotate,
337
+ $perspective: false) {
338
+ $trans: rotateY($rotate);
339
+ @if $perspective {
340
+ $trans: perspective($perspective) $trans;
341
+ }
342
+ @include transform3d($trans);
343
+ }
344
+
345
+ // Rotate an object around an arbitrary axis (3D)
346
+ // @include rotate( [ vector-x, vector-y, vector-z, rotation, perspective ] )
347
+ // where the 'vector-' arguments accept unitless numbers.
348
+ // These numbers are not important on their own, but in relation to one another
349
+ // creating an axis from your transform-origin, along the axis of Xx = Yy = Zz.
350
+ //
351
+ // **Note** This mixin cannot be combined with other transform mixins.
352
+ @mixin rotate3d($vector-x: $default-vector-x,
353
+ $vector-y: $default-vector-y,
354
+ $vector-z: $default-vector-z,
355
+ $rotate: $default-rotate,
356
+ $perspective: false) {
357
+ $trans: rotate3d($vector-x, $vector-y, $vector-z, $rotate);
358
+ @if $perspective {
359
+ $trans: perspective($perspective) $trans;
360
+ }
361
+ @include transform3d($trans);
362
+ }
363
+
364
+ // @doc off
365
+ // Translate -----------------------------------------------------------------
366
+ // @doc on
367
+
368
+ // Move an object along the x or y axis (2D)
369
+ // @include translate( [ translate-x, translate-y, perspective, 3D-only ] )
370
+ // where the 'translate-' arguments accept any distance in percentages or absolute (px, cm, in, em etc..) units.
371
+ //
372
+ // **Note** This mixin cannot be combined with other transform mixins.
373
+ @mixin translate($translate-x: $default-translate-x,
374
+ $translate-y: $default-translate-y,
375
+ $perspective: false,
376
+ $only3d: false) {
377
+ $trans: translate($translate-x, $translate-y);
378
+ @if $perspective {
379
+ $trans: perspective($perspective) $trans;
380
+ }
381
+ @include transform($trans, $only3d);
382
+ }
383
+
384
+ // Move an object along the x axis (2D)
385
+ // @include translate( [ translate-x, perspective, 3D-only ] )
386
+ //
387
+ // **Note** This mixin cannot be combined with other transform mixins.
388
+ @mixin translateX($trans-x: $default-translate-x,
389
+ $perspective: false,
390
+ $only3d: false) {
391
+ $trans: translateX($trans-x);
392
+ @if $perspective {
393
+ $trans: perspective($perspective) $trans;
394
+ }
395
+ @include transform($trans, $only3d);
396
+ }
397
+
398
+ // Move an object along the y axis (2D)
399
+ // @include translate( [ translate-y, perspective, 3D-only ] )
400
+ //
401
+ // **Note** This mixin cannot be combined with other transform mixins.
402
+ @mixin translateY($trans-y: $default-translate-y,
403
+ $perspective: false,
404
+ $only3d: false) {
405
+ $trans: translateY($trans-y);
406
+ @if $perspective {
407
+ $trans: perspective($perspective) $trans;
408
+ }
409
+ @include transform($trans, $only3d);
410
+ }
411
+
412
+ // Move an object along the z axis (3D)
413
+ // @include translate( [ translate-z, perspective ] )
414
+ //
415
+ // **Note** This mixin cannot be combined with other transform mixins.
416
+ @mixin translateZ($trans-z: $default-translate-z,
417
+ $perspective: false) {
418
+ $trans: translateZ($trans-z);
419
+ @if $perspective {
420
+ $trans: perspective($perspective) $trans;
421
+ }
422
+ @include transform3d($trans);
423
+ }
424
+
425
+ // Move an object along the x, y and z axis (3D)
426
+ // @include translate( [ translate-x, translate-y, translate-z, perspective ] )
427
+ //
428
+ // **Note** This mixin cannot be combined with other transform mixins.
429
+ @mixin translate3d($translate-x: $default-translate-x,
430
+ $translate-y: $default-translate-y,
431
+ $translate-z: $default-translate-z,
432
+ $perspective: false) {
433
+ $trans: translate3d($translate-x, $translate-y, $translate-z);
434
+ @if $perspective {
435
+ $trans: perspective($perspective) $trans;
436
+ }
437
+ @include transform3d($trans);
438
+ }
439
+
440
+ // @doc off
441
+ // Skew ----------------------------------------------------------------------
442
+ // @doc on
443
+
444
+ // Skew an element:
445
+ //
446
+ // @include skew( [ skew-x, skew-y, 3D-only ] )
447
+ //
448
+ // where the 'skew-' arguments accept css angles in degrees (deg) or radian (rad) units.
449
+ //
450
+ // **Note** This mixin cannot be combined with other transform mixins.
451
+ @mixin skew($skew-x: $default-skew-x,
452
+ $skew-y: $default-skew-y,
453
+ $only3d: false) {
454
+ $trans: skew($skew-x, $skew-y);
455
+ @include transform($trans, $only3d);
456
+ }
457
+
458
+ // Skew an element along the x axiz
459
+ //
460
+ // @include skew( [ skew-x, 3D-only ] )
461
+ //
462
+ // **Note** This mixin cannot be combined with other transform mixins.
463
+ @mixin skewX($skew-x: $default-skew-x,
464
+ $only3d: false) {
465
+ $trans: skewX($skew-x);
466
+ @include transform($trans, $only3d);
467
+ }
468
+
469
+ // Skew an element along the y axis
470
+ //
471
+ // @include skew( [ skew-y, 3D-only ] )
472
+ //
473
+ // **Note** This mixin cannot be combined with other transform mixins.
474
+ @mixin skewY($skew-y: $default-skew-y,
475
+ $only3d: false) {
476
+ $trans: skewY($skew-y);
477
+ @include transform($trans, $only3d);
478
+ }
479
+
480
+ // Full transform mixins
481
+ // For settings any combination of transforms as arguments
482
+ // These are complex and not highly recommended for daily use. They are mainly
483
+ // here for backward-compatibility purposes.
484
+ //
485
+ // * they include origin adjustments
486
+ // * scale takes a multiplier (unitless), rotate and skew take degrees (deg)
487
+ //
488
+ // **Note** This mixin cannot be combined with other transform mixins.
489
+ @mixin create-transform($perspective: false,
490
+ $scale-x: false,
491
+ $scale-y: false,
492
+ $scale-z: false,
493
+ $rotate-x: false,
494
+ $rotate-y: false,
495
+ $rotate-z: false,
496
+ $rotate3d: false,
497
+ $trans-x: false,
498
+ $trans-y: false,
499
+ $trans-z: false,
500
+ $skew-x: false,
501
+ $skew-y: false,
502
+ $origin-x: false,
503
+ $origin-y: false,
504
+ $origin-z: false,
505
+ $only3d: false) {
506
+ $trans: unquote("");
507
+
508
+ // perspective
509
+ @if $perspective {
510
+ $trans: perspective($perspective);
511
+ }
512
+
513
+ // scale
514
+ @if $scale-x and $scale-y {
515
+ @if $scale-z {
516
+ $trans: $trans scale3d($scale-x, $scale-y, $scale-z);
517
+ } @else {
518
+ $trans: $trans scale($scale-x, $scale-y);
519
+ }
520
+ } @else {
521
+ @if $scale-x {
522
+ $trans: $trans scaleX($scale-x);
523
+ }
524
+ @if $scale-y {
525
+ $trans: $trans scaleY($scale-y);
526
+ }
527
+ @if $scale-z {
528
+ $trans: $trans scaleZ($scale-z);
529
+ }
530
+ }
531
+
532
+ // rotate
533
+ @if $rotate-x {
534
+ $trans: $trans rotateX($rotate-x);
535
+ }
536
+ @if $rotate-y {
537
+ $trans: $trans rotateY($rotate-y);
538
+ }
539
+ @if $rotate-z {
540
+ $trans: $trans rotateZ($rotate-z);
541
+ }
542
+ @if $rotate3d {
543
+ $trans: $trans rotate3d($rotate3d);
544
+ }
545
+
546
+ // translate
547
+ @if $trans-x and $trans-y {
548
+ @if $trans-z {
549
+ $trans: $trans translate3d($trans-x, $trans-y, $trans-z);
550
+ } @else {
551
+ $trans: $trans translate($trans-x, $trans-y);
552
+ }
553
+ } @else {
554
+ @if $trans-x {
555
+ $trans: $trans translateX($trans-x);
556
+ }
557
+ @if $trans-y {
558
+ $trans: $trans translateY($trans-y);
559
+ }
560
+ @if $trans-z {
561
+ $trans: $trans translateZ($trans-z);
562
+ }
563
+ }
564
+
565
+ // skew
566
+ @if $skew-x and $skew-y {
567
+ $trans: $trans skew($skew-x, $skew-y);
568
+ } @else {
569
+ @if $skew-x {
570
+ $trans: $trans skewX($skew-x);
571
+ }
572
+ @if $skew-y {
573
+ $trans: $trans skewY($skew-y);
574
+ }
575
+ }
576
+
577
+ // apply it!
578
+ @include transform($trans, $only3d);
579
+ @include transform-origin($origin-x, $origin-y, $origin-z, $only3d);
580
+ }
581
+
582
+ // A simplified set of options
583
+ // backwards-compatible with the previous version of the 'transform' mixin
584
+ @mixin simple-transform($scale: false,
585
+ $rotate: false,
586
+ $trans-x: false,
587
+ $trans-y: false,
588
+ $skew-x: false,
589
+ $skew-y: false,
590
+ $origin-x: false,
591
+ $origin-y: false) {
592
+ @include create-transform(false, $scale, $scale, false, false, false, $rotate, false, $trans-x, $trans-y, false, $skew-x, $skew-y, $origin-x, $origin-y, false, false);
593
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_transition.scss ADDED
@@ -0,0 +1,238 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "shared";
2
+
3
+ // CSS Transitions
4
+ // Currently only works in Webkit.
5
+ //
6
+ // * expected in CSS3, FireFox 3.6/7 and Opera Presto 2.3
7
+ // * We'll be prepared.
8
+ //
9
+ // Including this submodule sets following defaults for the mixins:
10
+ //
11
+ // $default-transition-property : all
12
+ // $default-transition-duration : 1s
13
+ // $default-transition-function : false
14
+ // $default-transition-delay : false
15
+ //
16
+ // Override them if you like. Timing-function and delay are set to false for browser defaults (ease, 0s).
17
+
18
+ $default-transition-property: all !default;
19
+
20
+ $default-transition-duration: 1s !default;
21
+
22
+ $default-transition-function: false !default;
23
+
24
+ $default-transition-delay: false !default;
25
+
26
+ $transitionable-prefixed-values: transform, transform-origin !default;
27
+
28
+ // One or more properties to transition
29
+ //
30
+ // * for multiple, use a comma-delimited list
31
+ // * also accepts "all" or "none"
32
+
33
+ @mixin transition-property($property-1: $default-transition-property,
34
+ $property-2: false,
35
+ $property-3: false,
36
+ $property-4: false,
37
+ $property-5: false,
38
+ $property-6: false,
39
+ $property-7: false,
40
+ $property-8: false,
41
+ $property-9: false,
42
+ $property-10: false) {
43
+ @if type-of($property-1) == string {
44
+ $property-1: unquote($property-1);
45
+ }
46
+ $properties: compact($property-1, $property-2, $property-3, $property-4, $property-5, $property-6, $property-7, $property-8, $property-9, $property-10);
47
+ @if $experimental-support-for-webkit {
48
+ -webkit-transition-property: prefixed-for-transition(-webkit, $properties);
49
+ }
50
+ @if $experimental-support-for-mozilla {
51
+ -moz-transition-property: prefixed-for-transition(-moz, $properties);
52
+ }
53
+ @if $experimental-support-for-opera {
54
+ -o-transition-property: prefixed-for-transition(-o, $properties);
55
+ }
56
+ transition-property: $properties;
57
+ }
58
+
59
+ // One or more durations in seconds
60
+ //
61
+ // * for multiple, use a comma-delimited list
62
+ // * these durations will affect the properties in the same list position
63
+
64
+ @mixin transition-duration($duration-1: $default-transition-duration,
65
+ $duration-2: false,
66
+ $duration-3: false,
67
+ $duration-4: false,
68
+ $duration-5: false,
69
+ $duration-6: false,
70
+ $duration-7: false,
71
+ $duration-8: false,
72
+ $duration-9: false,
73
+ $duration-10: false) {
74
+ @if type-of($duration-1) == string {
75
+ $duration-1: unquote($duration-1);
76
+ }
77
+ $durations: compact($duration-1, $duration-2, $duration-3, $duration-4, $duration-5, $duration-6, $duration-7, $duration-8, $duration-9, $duration-10);
78
+ @include experimental(transition-duration, $durations, -moz, -webkit, -o, not -ms, not -khtml, official);
79
+ }
80
+
81
+ // One or more timing functions
82
+ //
83
+ // * [ ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(x1, y1, x2, y2)]
84
+ // * For multiple, use a comma-delimited list
85
+ // * These functions will effect the properties in the same list position
86
+
87
+ @mixin transition-timing-function($function-1: $default-transition-function,
88
+ $function-2: false,
89
+ $function-3: false,
90
+ $function-4: false,
91
+ $function-5: false,
92
+ $function-6: false,
93
+ $function-7: false,
94
+ $function-8: false,
95
+ $function-9: false,
96
+ $function-10: false) {
97
+ $function-1: unquote($function-1);
98
+ $functions: compact($function-1, $function-2, $function-3, $function-4, $function-5, $function-6, $function-7, $function-8, $function-9, $function-10);
99
+ @include experimental(transition-timing-function, $functions, -moz, -webkit, -o, not -ms, not -khtml, official);
100
+ }
101
+
102
+ // One or more transition-delays in seconds
103
+ //
104
+ // * for multiple, use a comma-delimited list
105
+ // * these delays will effect the properties in the same list position
106
+
107
+ @mixin transition-delay($delay-1: $default-transition-delay,
108
+ $delay-2: false,
109
+ $delay-3: false,
110
+ $delay-4: false,
111
+ $delay-5: false,
112
+ $delay-6: false,
113
+ $delay-7: false,
114
+ $delay-8: false,
115
+ $delay-9: false,
116
+ $delay-10: false) {
117
+ @if type-of($delay-1) == string {
118
+ $delay-1: unquote($delay-1);
119
+ }
120
+ $delays: compact($delay-1, $delay-2, $delay-3, $delay-4, $delay-5, $delay-6, $delay-7, $delay-8, $delay-9, $delay-10);
121
+ @include experimental(transition-delay, $delays, -moz, -webkit, -o, not -ms, not -khtml, official);
122
+ }
123
+
124
+ // Transition all-in-one shorthand
125
+
126
+ @mixin single-transition($property: $default-transition-property,
127
+ $duration: $default-transition-duration,
128
+ $function: $default-transition-function,
129
+ $delay: $default-transition-delay) {
130
+ @include transition(compact($property $duration $function $delay));
131
+ }
132
+
133
+ @mixin transition($transition-1: default,
134
+ $transition-2: false,
135
+ $transition-3: false,
136
+ $transition-4: false,
137
+ $transition-5: false,
138
+ $transition-6: false,
139
+ $transition-7: false,
140
+ $transition-8: false,
141
+ $transition-9: false,
142
+ $transition-10: false) {
143
+ @if $transition-1 == default {
144
+ $transition-1: compact($default-transition-property $default-transition-duration $default-transition-function $default-transition-delay);
145
+ }
146
+ $transitions: false;
147
+ @if type-of($transition-1) == list and type-of(nth($transition-1,1)) == list {
148
+ $transitions: join($transition-1, compact($transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10), comma);
149
+ } @else {
150
+ $transitions: compact($transition-1, $transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10);
151
+ }
152
+ $delays: comma-list();
153
+ $has-delays: false;
154
+ $webkit-value: comma-list();
155
+ $moz-value: comma-list();
156
+ $o-value: comma-list();
157
+
158
+ // This block can be made considerably simpler at the point in time that
159
+ // we no longer need to deal with the differences in how delays are treated.
160
+ @each $transition in $transitions {
161
+ // Extract the values from the list
162
+ // (this would be cleaner if nth took a 3rd argument to provide a default value).
163
+ $property: nth($transition, 1);
164
+ $duration: false;
165
+ $timing-function: false;
166
+ $delay: false;
167
+ @if length($transition) > 1 {
168
+ $duration: nth($transition, 2);
169
+ }
170
+ @if length($transition) > 2 {
171
+ $timing-function: nth($transition, 3);
172
+ }
173
+ @if length($transition) > 3 {
174
+ $delay: nth($transition, 4);
175
+ $has-delays: true;
176
+ }
177
+
178
+ // If a delay is provided without a timing function
179
+ @if is-time($timing-function) and not $delay {
180
+ $delay: $timing-function;
181
+ $timing-function: false;
182
+ $has-delays: true;
183
+ }
184
+
185
+ // Keep a list of delays in case one is specified
186
+ $delays: append($delays, if($delay, $delay, 0s));
187
+
188
+ $webkit-value: append($webkit-value, compact(prefixed-for-transition(-webkit, $property) $duration $timing-function));
189
+ $moz-value: append($moz-value, compact(prefixed-for-transition(-moz, $property) $duration $timing-function $delay));
190
+ $o-value: append($o-value, compact(prefixed-for-transition(-o, $property) $duration $timing-function $delay));
191
+ }
192
+
193
+ @if $experimental-support-for-webkit {
194
+ -webkit-transition: $webkit-value;
195
+ // old webkit doesn't support the delay parameter in the shorthand so we progressively enhance it.
196
+ @if $has-delays {
197
+ -webkit-transition-delay: $delays;
198
+ }
199
+ }
200
+ @if $experimental-support-for-mozilla {
201
+ -moz-transition: $moz-value;
202
+ }
203
+ @if $experimental-support-for-opera {
204
+ -o-transition: $o-value;
205
+ }
206
+ transition: $transitions;
207
+ }
208
+
209
+ // coerce a list to be comma delimited or make a new, empty comma delimited list.
210
+ @function comma-list($list: ()) {
211
+ @return join((), $list, comma);
212
+ }
213
+
214
+ // Returns `$property` with the given prefix if it is found in `$transitionable-prefixed-values`.
215
+ @function prefixed-for-transition($prefix, $property) {
216
+ @if type-of($property) == list {
217
+ $new-list: comma-list();
218
+ @each $v in $property {
219
+ $new-list: append($new-list, prefixed-for-transition($prefix, $v));
220
+ }
221
+ @return $new-list;
222
+ } @else {
223
+ @if index($transitionable-prefixed-values, $property) {
224
+ @return #{$prefix}-#{$property};
225
+ } @else {
226
+ @return $property;
227
+ }
228
+ }
229
+ }
230
+
231
+ // Checks if the value given is a unit of time.
232
+ @function is-time($value) {
233
+ @if type-of($value) == number {
234
+ @return not not index(s ms, unit($value));
235
+ } @else {
236
+ @return false;
237
+ }
238
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/css3/_user-interface.scss ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // User Interface ------------------------------------------------------------
2
+ // This file can be expanded to handle all the user interface properties as
3
+ // they become available in browsers:
4
+ // http://www.w3.org/TR/2000/WD-css3-userint-20000216
5
+ @import "shared";
6
+
7
+ // This property controls the selection model and granularity of an element.
8
+ //
9
+ // @param $select
10
+ // [ none | text | toggle | element | elements | all | inherit ]
11
+ @mixin user-select($select) {
12
+ $select: unquote($select);
13
+ @include experimental(user-select, $select, -moz, -webkit, not -o, not -ms, -khtml, official);
14
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/layout/_grid-background.scss ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "compass/css3/images";
2
+ @import "compass/css3/background-size";
3
+
4
+ // Set the color of your columns
5
+ $grid-background-column-color: rgba(100, 100, 225, 0.25) !default;
6
+ // Set the color of your gutters
7
+ $grid-background-gutter-color: rgba(0, 0, 0, 0) !default;
8
+
9
+ // Set the total number of columns in your grid
10
+ $grid-background-total-columns: 24 !default;
11
+ // Set the width of your columns
12
+ $grid-background-column-width: 30px !default;
13
+ // Set the width of your gutters
14
+ $grid-background-gutter-width: 10px !default;
15
+ // Set the offset, if your columns are padded in from the container edge
16
+ $grid-background-offset: 0px !default;
17
+
18
+ // Set the color of your baseline
19
+ $grid-background-baseline-color: rgba(0, 0, 0, 0.5) !default;
20
+ // Set the height of your baseline grid
21
+ $grid-background-baseline-height: 1.5em !default;
22
+
23
+ // toggle your columns grids on and off
24
+ $show-column-grid-backgrounds: true !default;
25
+ // toggle your vertical grids on and off
26
+ $show-baseline-grid-backgrounds: true !default;
27
+ // toggle all your grids on and off
28
+ $show-grid-backgrounds: true !default;
29
+
30
+ // optionally force your grid-image to remain fluid
31
+ // no matter what units you used to declared your grid.
32
+ $grid-background-force-fluid: false !default;
33
+
34
+ // Create the gradient needed for baseline grids
35
+ @function get-baseline-gradient($color: $grid-background-baseline-color) {
36
+ $gradient: linear-gradient(bottom, $color 5%, rgba($color, 0) 5%);
37
+ @return $gradient;
38
+ }
39
+
40
+ // Create the color-stops needed for horizontal grids
41
+ @function build-grid-background($total: $grid-background-total-columns,
42
+ $column: $grid-background-column-width,
43
+ $gutter: $grid-background-gutter-width,
44
+ $offset: $grid-background-offset,
45
+ $column-color: $grid-background-column-color,
46
+ $gutter-color: $grid-background-gutter-color) {
47
+ $grid: compact();
48
+ $grid: append($grid, $gutter-color $offset, comma);
49
+ @for $i from 0 to $total {
50
+
51
+ // $a represents the start of this column, initially equal to the offset
52
+ $a: $offset;
53
+ @if $i > 0 {
54
+ $a: $a + (($column + $gutter) * $i);
55
+ }
56
+
57
+ // $g represents the start of this gutter, equal to $a plus one column-width
58
+ $g: $a + $column;
59
+
60
+ // $z represents the end of a gutter, equal to $g plus one gutter-width
61
+ $z: $g + $gutter;
62
+
63
+ @if (unit($a) == "%") and ($i == ($total - 1)) {
64
+ $z: 100%;
65
+ }
66
+
67
+ // and we add this column/gutter pair to our grid
68
+ $grid: join($grid, ($column-color $a, $column-color $g, $gutter-color $g, $gutter-color $z));
69
+ }
70
+
71
+ @return $grid;
72
+ }
73
+
74
+ // Return the gradient needed for horizontal grids
75
+ @function get-column-gradient($total: $grid-background-total-columns,
76
+ $column: $grid-background-column-width,
77
+ $gutter: $grid-background-gutter-width,
78
+ $offset: $grid-background-offset,
79
+ $column-color: $grid-background-column-color,
80
+ $gutter-color: $grid-background-gutter-color,
81
+ $force-fluid: $grid-background-force-fluid) {
82
+ $grid: unquote("");
83
+
84
+ // don't force fluid grids when they are already fluid.
85
+ @if unit($column) == "%" {
86
+ $force-fluid: false;
87
+ }
88
+
89
+ @if $force-fluid {
90
+ $grid: get-column-fluid-grid($total, $column, $gutter, $offset, $column-color, $gutter-color);
91
+ } @else {
92
+ $grid: build-grid-background($total, $column, $gutter, $offset, $column-color, $gutter-color);
93
+ }
94
+
95
+ // return the horizontal grid as a gradient
96
+ $gradient: linear-gradient(left, $grid);
97
+ @return $gradient;
98
+ }
99
+
100
+ // Convert a grid from fixed units into percentages.
101
+ @function get-column-fluid-grid($total: $grid-background-total-columns,
102
+ $column: $grid-background-column-width,
103
+ $gutter: $grid-background-gutter-width,
104
+ $offset: $grid-background-offset,
105
+ $column-color: $grid-background-column-color,
106
+ $gutter-color: $grid-background-gutter-color) {
107
+ $context: ($column * $total) + ($gutter * ($total - 1) + ($offset * 2));
108
+ $offset: $offset / $context * 100%;
109
+ $column: $column / $context * 100%;
110
+ $gutter: $gutter / $context * 100%;
111
+
112
+ // return the horizontal grid as a set of color-stops
113
+ $grid: build-grid-background($total, $column, $gutter, $offset, $column-color, $gutter-color);
114
+ @return $grid;
115
+ }
116
+
117
+ // Add just the baseline grid to an element's background
118
+ @mixin baseline-grid-background($baseline: $grid-background-baseline-height,
119
+ $color: $grid-background-baseline-color) {
120
+ @if $show-grid-backgrounds and $show-baseline-grid-backgrounds {
121
+ @include background-image(get-baseline-gradient($color));
122
+ @include background-size(100% $baseline);
123
+ background-position: left top;
124
+ }
125
+ }
126
+
127
+ // Add just the horizontal grid to an element's background
128
+ @mixin column-grid-background($total: $grid-background-total-columns,
129
+ $column: $grid-background-column-width,
130
+ $gutter: $grid-background-gutter-width,
131
+ $offset: $grid-background-offset,
132
+ $column-color: $grid-background-column-color,
133
+ $gutter-color: $grid-background-gutter-color,
134
+ $force-fluid: $grid-background-force-fluid) {
135
+ @if $show-grid-backgrounds and $show-column-grid-backgrounds {
136
+ @include background-image(get-column-gradient($total, $column, $gutter, $offset, $column-color, $gutter-color, $force-fluid));
137
+ background-position: left top;
138
+ }
139
+ }
140
+
141
+ // Add both horizontal and baseline grids to an element's background
142
+ @mixin grid-background($total: $grid-background-total-columns,
143
+ $column: $grid-background-column-width,
144
+ $gutter: $grid-background-gutter-width,
145
+ $baseline: $grid-background-baseline-height,
146
+ $offset: $grid-background-offset,
147
+ $column-color: $grid-background-column-color,
148
+ $gutter-color: $grid-background-gutter-color,
149
+ $baseline-color: $grid-background-baseline-color,
150
+ $force-fluid: $grid-background-force-fluid) {
151
+ @if $show-grid-backgrounds {
152
+ @if $show-baseline-grid-backgrounds and $show-column-grid-backgrounds {
153
+ @include background-image(get-baseline-gradient($baseline-color), get-column-gradient($total, $column, $gutter, $offset, $column-color, $gutter-color, $force-fluid));
154
+ @include background-size(100% $baseline, auto);
155
+ background-position: left top;
156
+ } @else {
157
+ @include baseline-grid-background($baseline, $baseline-color);
158
+ @include column-grid-background($total, $column, $gutter, $offset, $column-color, $gutter-color, $force-fluid);
159
+ }
160
+ }
161
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/layout/_sticky-footer.scss ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Based on a [blog post by Ryan Fait](http://ryanfait.com/resources/footer-stick-to-bottom-of-page/).
2
+ //
3
+ // Must be mixed into the top level of your stylesheet.
4
+ //
5
+ // Footer element must be outside of root wrapper element.
6
+ //
7
+ // Footer must be a fixed height.
8
+
9
+ @mixin sticky-footer($footer-height, $root-selector: unquote("#root"), $root-footer-selector: unquote("#root_footer"), $footer-selector: unquote("#footer")) {
10
+ html, body {
11
+ height: 100%;
12
+ }
13
+ #{$root-selector} {
14
+ clear: both;
15
+ min-height: 100%;
16
+ height: auto !important;
17
+ height: 100%;
18
+ margin-bottom: -$footer-height;
19
+ #{$root-footer-selector} {
20
+ height: $footer-height;
21
+ }
22
+ }
23
+ #{$footer-selector} {
24
+ clear: both;
25
+ position: relative;
26
+ height: $footer-height;
27
+ }
28
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/layout/_stretching.scss ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // stretch element height to specified top and bottom position
2
+
3
+ @mixin stretch-y($offset-top: 0, $offset-bottom: 0) {
4
+ @include stretch($offset-top, false, $offset-bottom, false);
5
+ }
6
+
7
+ // stretch element width to specified left and right position
8
+
9
+ @mixin stretch-x($offset-left: 0, $offset-right: 0) {
10
+ @include stretch(false, $offset-right, false, $offset-left);
11
+ }
12
+
13
+ // shorthand to stretch element height and width
14
+
15
+ @mixin stretch($offset-top: 0, $offset-right: 0, $offset-bottom: 0, $offset-left: 0) {
16
+ position: absolute;
17
+ @if $offset-top {
18
+ top: $offset-top;
19
+ }
20
+ @if $offset-bottom {
21
+ bottom: $offset-bottom;
22
+ }
23
+ @if $offset-left {
24
+ left: $offset-left;
25
+ }
26
+ @if $offset-right {
27
+ right: $offset-right;
28
+ }
29
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/reset/_utilities-legacy.scss ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Based on [Eric Meyer's reset](http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/)
2
+ // Global reset rules.
3
+ // For more specific resets, use the reset mixins provided below
4
+ //
5
+ // *Please Note*: tables still need `cellspacing="0"` in the markup.
6
+ @mixin global-reset {
7
+ html, body, div, span, applet, object, iframe,
8
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
9
+ a, abbr, acronym, address, big, cite, code,
10
+ del, dfn, em, font, img, ins, kbd, q, s, samp,
11
+ small, strike, strong, sub, sup, tt, var,
12
+ dl, dt, dd, ol, ul, li,
13
+ fieldset, form, label, legend,
14
+ table, caption, tbody, tfoot, thead, tr, th, td {
15
+ @include reset-box-model;
16
+ @include reset-font;
17
+ }
18
+ body {
19
+ @include reset-body;
20
+ }
21
+ ol, ul {
22
+ @include reset-list-style;
23
+ }
24
+ table {
25
+ @include reset-table;
26
+ }
27
+ caption, th, td {
28
+ @include reset-table-cell;
29
+ }
30
+ q, blockquote {
31
+ @include reset-quotation;
32
+ }
33
+ a img {
34
+ @include reset-image-anchor-border;
35
+ }
36
+ }
37
+
38
+ // Reset all elements within some selector scope. To reset the selector itself,
39
+ // mixin the appropriate reset mixin for that element type as well. This could be
40
+ // useful if you want to style a part of your page in a dramatically different way.
41
+ //
42
+ // *Please Note*: tables still need `cellspacing="0"` in the markup.
43
+ @mixin nested-reset {
44
+ div, span, object, iframe, h1, h2, h3, h4, h5, h6, p,
45
+ pre, a, abbr, acronym, address, code, del, dfn, em, img,
46
+ dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr {
47
+ @include reset-box-model;
48
+ @include reset-font;
49
+ }
50
+ table {
51
+ @include reset-table;
52
+ }
53
+ caption, th, td {
54
+ @include reset-table-cell;
55
+ }
56
+ q, blockquote {
57
+ @include reset-quotation;
58
+ }
59
+ a img {
60
+ @include reset-image-anchor-border;
61
+ }
62
+ }
63
+
64
+ // Reset the box model measurements.
65
+ @mixin reset-box-model {
66
+ margin: 0;
67
+ padding: 0;
68
+ border: 0;
69
+ outline: 0;
70
+ }
71
+
72
+ // Reset the font and vertical alignment.
73
+ @mixin reset-font {
74
+ font: {
75
+ weight: inherit;
76
+ style: inherit;
77
+ size: 100%;
78
+ family: inherit;
79
+ }
80
+ ;
81
+ vertical-align: baseline;
82
+ }
83
+
84
+ // Resets the outline when focus.
85
+ // For accessibility you need to apply some styling in its place.
86
+ @mixin reset-focus {
87
+ outline: 0;
88
+ }
89
+
90
+ // Reset a body element.
91
+ @mixin reset-body {
92
+ line-height: 1;
93
+ color: black;
94
+ background: white;
95
+ }
96
+
97
+ // Reset the list style of an element.
98
+ @mixin reset-list-style {
99
+ list-style: none;
100
+ }
101
+
102
+ // Reset a table
103
+ @mixin reset-table {
104
+ border-collapse: separate;
105
+ border-spacing: 0;
106
+ vertical-align: middle;
107
+ }
108
+
109
+ // Reset a table cell (`th`, `td`)
110
+ @mixin reset-table-cell {
111
+ text-align: left;
112
+ font-weight: normal;
113
+ vertical-align: middle;
114
+ }
115
+
116
+ // Reset a quotation (`q`, `blockquote`)
117
+ @mixin reset-quotation {
118
+ quotes: "" "";
119
+ &:before, &:after {
120
+ content: "";
121
+ }
122
+ }
123
+
124
+ // Resets the border.
125
+ @mixin reset-image-anchor-border {
126
+ border: none;
127
+ }
128
+
129
+ // Unrecognized elements are displayed inline.
130
+ // This reset provides a basic reset for html5 elements
131
+ // so they are rendered correctly in browsers that don't recognize them
132
+ // and reset in browsers that have default styles for them.
133
+ @mixin reset-html5 {
134
+ #{elements-of-type(html5-block)} {
135
+ @include reset-box-model;
136
+ display: block;
137
+ }
138
+ }
139
+
140
+ // Resets the display of inline and block elements to their default display
141
+ // according to their tag type. Elements that have a default display that varies across
142
+ // versions of html or browser are not handled here, but this covers the 90% use case.
143
+ // Usage Example:
144
+ //
145
+ // // Turn off the display for both of these classes
146
+ // .unregistered-only, .registered-only
147
+ // display: none
148
+ // // Now turn only one of them back on depending on some other context.
149
+ // body.registered
150
+ // +reset-display(".registered-only")
151
+ // body.unregistered
152
+ // +reset-display(".unregistered-only")
153
+ @mixin reset-display($selector: "", $important: false) {
154
+ #{append-selector(elements-of-type("inline"), $selector)} {
155
+ @if $important {
156
+ display: inline !important;
157
+ } @else {
158
+ display: inline;
159
+ }
160
+ }
161
+ #{append-selector(elements-of-type("block"), $selector)} {
162
+ @if $important {
163
+ display: block !important;
164
+ } @else {
165
+ display: block;
166
+ }
167
+ }
168
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/reset/_utilities.scss ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Based on [Eric Meyer's reset 2.0](http://meyerweb.com/eric/tools/css/reset/index.html)
2
+ // Global reset rules.
3
+ // For more specific resets, use the reset mixins provided below
4
+ @mixin global-reset {
5
+ html, body, div, span, applet, object, iframe,
6
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
7
+ a, abbr, acronym, address, big, cite, code,
8
+ del, dfn, em, img, ins, kbd, q, s, samp,
9
+ small, strike, strong, sub, sup, tt, var,
10
+ b, u, i, center,
11
+ dl, dt, dd, ol, ul, li,
12
+ fieldset, form, label, legend,
13
+ table, caption, tbody, tfoot, thead, tr, th, td,
14
+ article, aside, canvas, details, embed,
15
+ figure, figcaption, footer, header, hgroup,
16
+ menu, nav, output, ruby, section, summary,
17
+ time, mark, audio, video {
18
+ @include reset-box-model;
19
+ @include reset-font;
20
+ }
21
+ // Unlike Eric's original reset, we reset the html element to be compatible
22
+ // with the vertical rhythm mixins.
23
+ html {
24
+ @include reset-body;
25
+ }
26
+ ol, ul {
27
+ @include reset-list-style;
28
+ }
29
+ table {
30
+ @include reset-table;
31
+ }
32
+ caption, th, td {
33
+ @include reset-table-cell;
34
+ }
35
+ q, blockquote {
36
+ @include reset-quotation;
37
+ }
38
+ a img {
39
+ @include reset-image-anchor-border;
40
+ }
41
+ @include reset-html5;
42
+ }
43
+
44
+ // Reset all elements within some selector scope. To reset the selector itself,
45
+ // mixin the appropriate reset mixin for that element type as well. This could be
46
+ // useful if you want to style a part of your page in a dramatically different way.
47
+ @mixin nested-reset {
48
+ div, span, applet, object, iframe,
49
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
50
+ a, abbr, acronym, address, big, cite, code,
51
+ del, dfn, em, img, ins, kbd, q, s, samp,
52
+ small, strike, strong, sub, sup, tt, var,
53
+ b, u, i, center,
54
+ dl, dt, dd, ol, ul, li,
55
+ fieldset, form, label, legend,
56
+ table, caption, tbody, tfoot, thead, tr, th, td,
57
+ article, aside, canvas, details, embed,
58
+ figure, figcaption, footer, header, hgroup,
59
+ menu, nav, output, ruby, section, summary,
60
+ time, mark, audio, video {
61
+ @include reset-box-model;
62
+ @include reset-font;
63
+ }
64
+ table {
65
+ @include reset-table;
66
+ }
67
+ caption, th, td {
68
+ @include reset-table-cell;
69
+ }
70
+ q, blockquote {
71
+ @include reset-quotation;
72
+ }
73
+ a img {
74
+ @include reset-image-anchor-border;
75
+ }
76
+ }
77
+
78
+ // Reset the box model measurements.
79
+ @mixin reset-box-model {
80
+ margin: 0;
81
+ padding: 0;
82
+ border: 0;
83
+ }
84
+
85
+ // Reset the font and vertical alignment.
86
+ @mixin reset-font {
87
+ font: inherit;
88
+ font-size: 100%;
89
+ vertical-align: baseline;
90
+ }
91
+
92
+ // Resets the outline when focus.
93
+ // For accessibility you need to apply some styling in its place.
94
+ @mixin reset-focus {
95
+ outline: 0;
96
+ }
97
+
98
+ // Reset a body element.
99
+ @mixin reset-body {
100
+ line-height: 1;
101
+ }
102
+
103
+ // Reset the list style of an element.
104
+ @mixin reset-list-style {
105
+ list-style: none;
106
+ }
107
+
108
+ // Reset a table
109
+ @mixin reset-table {
110
+ border-collapse: collapse;
111
+ border-spacing: 0;
112
+ }
113
+
114
+ // Reset a table cell (`th`, `td`)
115
+ @mixin reset-table-cell {
116
+ text-align: left;
117
+ font-weight: normal;
118
+ vertical-align: middle;
119
+ }
120
+
121
+ // Reset a quotation (`q`, `blockquote`)
122
+ @mixin reset-quotation {
123
+ quotes: none;
124
+ &:before, &:after {
125
+ content: "";
126
+ content: none;
127
+ }
128
+ }
129
+
130
+ // Resets the border.
131
+ @mixin reset-image-anchor-border {
132
+ border: none;
133
+ }
134
+
135
+ // Unrecognized elements are displayed inline.
136
+ // This reset provides a basic reset for block html5 elements
137
+ // so they are rendered correctly in browsers that don't recognize them
138
+ // and reset in browsers that have default styles for them.
139
+ @mixin reset-html5 {
140
+ #{elements-of-type(html5-block)} {
141
+ display: block;
142
+ }
143
+ }
144
+
145
+ // Resets the display of inline and block elements to their default display
146
+ // according to their tag type. Elements that have a default display that varies across
147
+ // versions of html or browser are not handled here, but this covers the 90% use case.
148
+ // Usage Example:
149
+ //
150
+ // // Turn off the display for both of these classes
151
+ // .unregistered-only, .registered-only
152
+ // display: none
153
+ // // Now turn only one of them back on depending on some other context.
154
+ // body.registered
155
+ // +reset-display(".registered-only")
156
+ // body.unregistered
157
+ // +reset-display(".unregistered-only")
158
+ @mixin reset-display($selector: "", $important: false) {
159
+ #{append-selector(elements-of-type("inline"), $selector)} {
160
+ @if $important {
161
+ display: inline !important;
162
+ } @else {
163
+ display: inline;
164
+ }
165
+ }
166
+ #{append-selector(elements-of-type("block"), $selector)} {
167
+ @if $important {
168
+ display: block !important;
169
+ } @else {
170
+ display: block;
171
+ }
172
+ }
173
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_links.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ @import "links/links/_hover-link";
2
+ @import "links/links/_link-colors";
3
+ @import "links/links/_unstyled-link";
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_lists.scss ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ @import "lists/lists/_horizontal-list";
2
+ @import "lists/lists/_inline-list";
3
+ @import "lists/lists/_inline-block-list";
4
+ @import "lists/lists/_bullets";
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_text.scss ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ @import "text/text/_ellipsis";
2
+ @import "text/text/_nowrap";
3
+ @import "text/text/_replacement";
4
+ @import "text/text/_force-wrap";
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/_vertical_rhythm.scss ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "compass/layout/grid-background";
2
+
3
+ // The base font size.
4
+ $base-font-size: 16px !default;
5
+
6
+ // The base line height determines the basic unit of vertical rhythm.
7
+ $base-line-height: 24px !default;
8
+
9
+ // Set the default border style for rhythm borders.
10
+ $default-rhythm-border-style: solid !default;
11
+
12
+ // The default font size in all browsers.
13
+ $browser-default-font-size: 16px;
14
+
15
+ // Set to false if you want to use absolute pixels in sizing your typography.
16
+ $relative-font-sizing: true !default;
17
+
18
+ // Allows the `adjust-font-size-to` mixin and the `lines-for-font-size` function
19
+ // to round the line height to the nearest half line height instead of the
20
+ // nearest integral line height to avoid large spacing between lines.
21
+ $round-to-nearest-half-line: false !default;
22
+
23
+ // Ensure there is at least this many pixels
24
+ // of vertical padding above and below the text.
25
+ $min-line-padding: 2px !default;
26
+
27
+ // $base-font-size but in your output unit of choice.
28
+ // Defaults to 1em when `$relative-font-sizing` is true.
29
+ $font-unit: if($relative-font-sizing, 1em, $base-font-size) !default;
30
+
31
+ // The basic unit of font rhythm.
32
+ $base-rhythm-unit: $base-line-height / $base-font-size * $font-unit;
33
+
34
+ // The leader is the amount of whitespace in a line.
35
+ // It might be useful in your calculations.
36
+ $base-leader: ($base-line-height - $base-font-size) * $font-unit / $base-font-size;
37
+
38
+ // The half-leader is the amount of whitespace above and below a line.
39
+ // It might be useful in your calculations.
40
+ $base-half-leader: $base-leader / 2;
41
+
42
+ // True if a number has a relative unit.
43
+ @function relative-unit($number) {
44
+ @return unit($number) == "%" or unit($number) == "em" or unit($number) == "rem"
45
+ }
46
+
47
+ // True if a number has an absolute unit.
48
+ @function absolute-unit($number) {
49
+ @return not (relative-unit($number) or unitless($number));
50
+ }
51
+
52
+ @if $relative-font-sizing and not relative-unit($font-unit) {
53
+ @warn "$relative-font-sizing is true but $font-unit is set to #{$font-unit} which is not a relative unit.";
54
+ }
55
+
56
+ // Establishes a font baseline for the given font-size.
57
+ @mixin establish-baseline($font-size: $base-font-size) {
58
+ // IE 6 refuses to resize fonts set in pixels and it weirdly resizes fonts
59
+ // whose root is set in ems. So we set the root font size in percentages of
60
+ // the default font size.
61
+ * html {
62
+ font-size: 100% * ($font-size / $browser-default-font-size);
63
+ }
64
+ html {
65
+ font-size: $font-size;
66
+ @include adjust-leading-to(1, if($relative-font-sizing, $font-size, $base-font-size));
67
+ }
68
+ }
69
+
70
+ // Resets the line-height to 1 vertical rhythm unit.
71
+ // Does not work on elements whose font-size is different from $base-font-size.
72
+ //
73
+ // @deprecated This mixin will be removed in the next release.
74
+ // Please use the `adjust-leading-to` mixin instead.
75
+ @mixin reset-baseline {
76
+ @include adjust-leading-to(1, if($relative-font-sizing, $base-font-size, $base-font-size));
77
+ }
78
+
79
+ // Show a background image that can be used to debug your alignments.
80
+ // Include the $img argument if you would rather use your own image than the
81
+ // Compass default gradient image.
82
+ @mixin debug-vertical-alignment($img: false) {
83
+ @if $img {
84
+ background: image-url($img);
85
+ } @else {
86
+ @include baseline-grid-background($base-rhythm-unit);
87
+ }
88
+ }
89
+
90
+ // Adjust a block to have a different font size and line height to maintain the
91
+ // rhythm. $lines specifies how many multiples of the baseline rhythm each line
92
+ // of this font should use up. It does not have to be an integer, but it
93
+ // defaults to the smallest integer that is large enough to fit the font.
94
+ // Use $from-size to adjust from a font-size other than the base font-size.
95
+ @mixin adjust-font-size-to($to-size, $lines: lines-for-font-size($to-size), $from-size: $base-font-size) {
96
+ @if not $relative-font-sizing and $from-size != $base-font-size {
97
+ @warn "$relative-font-sizing is false but a relative font size was passed to adjust-font-size-to";
98
+ }
99
+ font-size: $font-unit * $to-size / $from-size;
100
+ @include adjust-leading-to($lines, if($relative-font-sizing, $to-size, $base-font-size));
101
+ }
102
+
103
+ // Adjust a block to have different line height to maintain the rhythm.
104
+ // $lines specifies how many multiples of the baseline rhythm each line of this
105
+ // font should use up. It does not have to be an integer, but it defaults to the
106
+ // smallest integer that is large enough to fit the font.
107
+ @mixin adjust-leading-to($lines, $font-size: $base-font-size) {
108
+ line-height: rhythm($lines, $font-size);
109
+ }
110
+
111
+ // Calculate rhythm units.
112
+ @function rhythm($lines: 1,
113
+ $font-size: $base-font-size,
114
+ $offset: 0) {
115
+ @if not $relative-font-sizing and $font-size != $base-font-size {
116
+ @warn "$relative-font-sizing is false but a relative font size was passed to the rhythm function";
117
+ }
118
+ $rhythm: $font-unit * ($lines * $base-line-height - $offset) / $font-size;
119
+ // Round the pixels down to nearest integer.
120
+ @if unit($rhythm) == px {
121
+ $rhythm: floor($rhythm);
122
+ }
123
+ @return $rhythm;
124
+ }
125
+
126
+ // Calculate the minimum multiple of rhythm units needed to contain the font-size.
127
+ @function lines-for-font-size($font-size) {
128
+ $lines: if($round-to-nearest-half-line,
129
+ ceil(2 * $font-size / $base-line-height) / 2, ceil($font-size / $base-line-height));
130
+ @if $lines * $base-line-height - $font-size < $min-line-padding * 2 {
131
+ $lines: $lines + if($round-to-nearest-half-line, 0.5, 1);
132
+ }
133
+ @return $lines;
134
+ }
135
+
136
+ // Apply leading whitespace. The $property can be margin or padding.
137
+ @mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) {
138
+ #{$property}-top: rhythm($lines, $font-size);
139
+ }
140
+
141
+ // Apply leading whitespace as padding.
142
+ @mixin padding-leader($lines: 1, $font-size: $base-font-size) {
143
+ padding-top: rhythm($lines, $font-size);
144
+ }
145
+
146
+ // Apply leading whitespace as margin.
147
+ @mixin margin-leader($lines: 1, $font-size: $base-font-size) {
148
+ margin-top: rhythm($lines, $font-size);
149
+ }
150
+
151
+ // Apply trailing whitespace. The $property can be margin or padding.
152
+ @mixin trailer($lines: 1, $font-size: $base-font-size, $property: margin) {
153
+ #{$property}-bottom: rhythm($lines, $font-size);
154
+ }
155
+
156
+ // Apply trailing whitespace as padding.
157
+ @mixin padding-trailer($lines: 1, $font-size: $base-font-size) {
158
+ padding-bottom: rhythm($lines, $font-size);
159
+ }
160
+
161
+ // Apply trailing whitespace as margin.
162
+ @mixin margin-trailer($lines: 1, $font-size: $base-font-size) {
163
+ margin-bottom: rhythm($lines, $font-size);
164
+ }
165
+
166
+ // Shorthand mixin to apply whitespace for top and bottom margins and padding.
167
+ @mixin rhythm($leader: 0, $padding-leader: 0, $padding-trailer: 0, $trailer: 0, $font-size: $base-font-size) {
168
+ @include leader($leader, $font-size);
169
+ @include padding-leader($padding-leader, $font-size);
170
+ @include padding-trailer($padding-trailer, $font-size);
171
+ @include trailer($trailer, $font-size);
172
+ }
173
+
174
+ // Apply a border and whitespace to any side without destroying the vertical
175
+ // rhythm. The whitespace must be greater than the width of the border.
176
+ @mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
177
+ @if not $relative-font-sizing and $font-size != $base-font-size {
178
+ @warn "$relative-font-sizing is false but a relative font size was passed to apply-side-rhythm-border";
179
+ }
180
+ border-#{$side}: {
181
+ style: $border-style;
182
+ width: $font-unit * $width / $font-size;
183
+ }
184
+ ;
185
+ padding-#{$side}: rhythm($lines, $font-size, $offset: $width);
186
+ }
187
+
188
+ // Apply borders and whitespace equally to all sides.
189
+ @mixin rhythm-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
190
+ @if not $relative-font-sizing and $font-size != $base-font-size {
191
+ @warn "$relative-font-sizing is false but a relative font size was passed to rhythm-borders";
192
+ }
193
+ border: {
194
+ style: $border-style;
195
+ width: $font-unit * $width / $font-size;
196
+ }
197
+ ;
198
+ padding: rhythm($lines, $font-size, $offset: $width);
199
+ }
200
+
201
+ // Apply a leading border.
202
+ @mixin leading-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
203
+ @include apply-side-rhythm-border(top, $width, $lines, $font-size, $border-style);
204
+ }
205
+
206
+ // Apply a trailing border.
207
+ @mixin trailing-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
208
+ @include apply-side-rhythm-border(bottom, $width, $lines, $font-size, $border-style);
209
+ }
210
+
211
+ // Apply both leading and trailing borders.
212
+ @mixin horizontal-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
213
+ @include leading-border($width, $lines, $font-size, $border-style);
214
+ @include trailing-border($width, $lines, $font-size, $border-style);
215
+ }
216
+
217
+ // Alias for `horizontal-borders` mixin.
218
+ @mixin h-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) {
219
+ @include horizontal-borders($width, $lines, $font-size, $border-style);
220
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/links/_hover-link.scss ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ // a link that only has an underline when you hover over it
2
+ @mixin hover-link {
3
+ text-decoration: none;
4
+ &:hover {
5
+ text-decoration: underline;
6
+ }
7
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/links/_link-colors.scss ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Set all the colors for a link with one mixin call.
2
+ // Order of arguments is:
3
+ //
4
+ // 1. normal
5
+ // 2. hover
6
+ // 3. active
7
+ // 4. visited
8
+ // 5. focus
9
+ //
10
+ // Those states not specified will inherit.
11
+ // Mixin to an anchor link like so:
12
+ // a
13
+ // +link-colors(#00c, #0cc, #c0c, #ccc, #cc0)
14
+
15
+ @mixin link-colors($normal, $hover: false, $active: false, $visited: false, $focus: false) {
16
+ color: $normal;
17
+ @if $visited {
18
+ &:visited {
19
+ color: $visited;
20
+ }
21
+ }
22
+ @if $focus {
23
+ &:focus {
24
+ color: $focus;
25
+ }
26
+ }
27
+ @if $hover {
28
+ &:hover {
29
+ color: $hover;
30
+ }
31
+ }
32
+ @if $active {
33
+ &:active {
34
+ color: $active;
35
+ }
36
+ }
37
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/links/_unstyled-link.scss ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ // A link that looks and acts like the text it is contained within
2
+ @mixin unstyled-link {
3
+ color: inherit;
4
+ text-decoration: inherit;
5
+ cursor: inherit;
6
+ &:active, &:focus {
7
+ outline: none;
8
+ }
9
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_bullets.scss ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Turn off the bullet for an element of a list
2
+ @mixin no-bullet {
3
+ list-style-image: none;
4
+ list-style-type: none;
5
+ margin-left: 0;
6
+ }
7
+
8
+ // turns off the bullets for an entire list
9
+ @mixin no-bullets {
10
+ list-style: none;
11
+ li {
12
+ @include no-bullet;
13
+ }
14
+ }
15
+
16
+ // Make a list(ul/ol) have an image bullet.
17
+ //
18
+ // The mixin should be used like this for an icon that is 5x7:
19
+ //
20
+ // ul.pretty
21
+ // +pretty-bullets("my-icon.png", 5px, 7px)
22
+ //
23
+ // Additionally, if the image dimensions are not provided,
24
+ // The image dimensions will be extracted from the image itself.
25
+ //
26
+ // ul.pretty
27
+ // +pretty-bullets("my-icon.png")
28
+ //
29
+ @mixin pretty-bullets($bullet-icon, $width: image-width($bullet-icon), $height: image-height($bullet-icon), $line-height: 18px, $padding: 14px) {
30
+ margin-left: 0;
31
+ li {
32
+ padding-left: $padding;
33
+ background: image-url($bullet-icon) no-repeat ($padding - $width) / 2 ($line-height - $height) / 2;
34
+ list-style-type: none;
35
+ }
36
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_horizontal-list.scss ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Horizontal list layout module.
2
+ //
3
+ // Easy mode using simple descendant li selectors:
4
+ //
5
+ // ul.nav
6
+ // +horizontal-list
7
+ //
8
+ // Advanced mode:
9
+ // If you need to target the list items using a different selector then use
10
+ // +horizontal-list-container on your ul/ol and +horizontal-list-item on your li.
11
+ // This may help when working on layouts involving nested lists. For example:
12
+ //
13
+ // ul.nav
14
+ // +horizontal-list-container
15
+ // > li
16
+ // +horizontal-list-item
17
+
18
+ @import "bullets";
19
+ @import "compass/utilities/general/clearfix";
20
+ @import "compass/utilities/general/reset";
21
+ @import "compass/utilities/general/float";
22
+
23
+ // Can be mixed into any selector that target a ul or ol that is meant
24
+ // to have a horizontal layout. Used to implement +horizontal-list.
25
+ @mixin horizontal-list-container {
26
+ @include reset-box-model;
27
+ @include clearfix;
28
+ }
29
+
30
+ // Can be mixed into any li selector that is meant to participate in a horizontal layout.
31
+ // Used to implement +horizontal-list.
32
+ //
33
+ // :last-child is not fully supported
34
+ // see http://www.quirksmode.org/css/contents.html#t29 for the support matrix
35
+ //
36
+ // IE8 ignores rules that are included on the same line as :last-child
37
+ // see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details
38
+ //
39
+ // Setting `$padding` to `false` disables the padding between list elements
40
+ @mixin horizontal-list-item($padding: 4px, $direction: left) {
41
+ @include no-bullet;
42
+ white-space: nowrap;
43
+ @include float($direction);
44
+ @if $padding {
45
+ padding: {
46
+ left: $padding;
47
+ right: $padding;
48
+ }
49
+ &:first-child, &.first {
50
+ padding-#{$direction}: 0;
51
+ }
52
+ &:last-child {
53
+ padding-#{opposite-position($direction)}: 0;
54
+ }
55
+ &.last {
56
+ padding-#{opposite-position($direction)}: 0;
57
+ }
58
+ }
59
+ }
60
+
61
+ // A list(ol,ul) that is layed out such that the elements are floated left and won't wrap.
62
+ // This is not an inline list.
63
+ //
64
+ // Setting `$padding` to `false` disables the padding between list elements
65
+ @mixin horizontal-list($padding: 4px, $direction: left) {
66
+ @include horizontal-list-container;
67
+ li {
68
+ @include horizontal-list-item($padding, $direction);
69
+ }
70
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_inline-block-list.scss ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Inline-Block list layout module.
2
+ //
3
+ // Easy mode using simple descendant li selectors:
4
+ //
5
+ // ul.nav {
6
+ // @import inline-block-list;
7
+ // }
8
+ //
9
+ // Advanced mode:
10
+ // If you need to target the list items using a different selector then use
11
+ // `@include inline-block-list-container` on your ul/ol and
12
+ // `@include inline-block-list-item` on your li. This may help when working
13
+ // on layouts involving nested lists. For example:
14
+ //
15
+ // ul.nav {
16
+ // @include inline-block-list-container;
17
+ // > li {
18
+ // @include inline-block-list-item;
19
+ // }
20
+ // }
21
+
22
+ @import "bullets";
23
+ @import "horizontal-list";
24
+ @import "compass/utilities/general/float";
25
+ @import "compass/css3/inline-block";
26
+
27
+ // Can be mixed into any selector that target a ul or ol that is meant
28
+ // to have an inline-block layout. Used to implement `inline-block-list`.
29
+ @mixin inline-block-list-container {
30
+ @include horizontal-list-container;
31
+ }
32
+
33
+ // Can be mixed into any li selector that is meant to participate in a horizontal layout.
34
+ // Used to implement `inline-block-list`.
35
+ @mixin inline-block-list-item($padding: false) {
36
+ @include no-bullet;
37
+ @include inline-block;
38
+ white-space: nowrap;
39
+ @if $padding {
40
+ padding: {
41
+ left: $padding;
42
+ right: $padding;
43
+ }
44
+ ;
45
+ }
46
+ }
47
+
48
+ // A list(ol,ul) that is layed out such that the elements are inline-block and won't wrap.
49
+ @mixin inline-block-list($padding: false) {
50
+ @include inline-block-list-container;
51
+ li {
52
+ @include inline-block-list-item($padding);
53
+ }
54
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/lists/_inline-list.scss ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // makes a list inline.
2
+
3
+ @mixin inline-list {
4
+ list-style-type: none;
5
+ &, & li {
6
+ margin: 0px;
7
+ padding: 0px;
8
+ display: inline;
9
+ }
10
+ }
11
+
12
+ // makes an inline list delimited with the passed string.
13
+ // Defaults to making a comma-separated list.
14
+ //
15
+ // Please make note of the browser support issues before using this mixin:
16
+ //
17
+ // use of `content` and `:after` is not fully supported in all browsers.
18
+ // See quirksmode for the [support matrix](http://www.quirksmode.org/css/contents.html#t15)
19
+ //
20
+ // `:last-child` is not fully supported.
21
+ // see quirksmode for the [support matrix](http://www.quirksmode.org/css/contents.html#t29).
22
+ //
23
+ // IE8 ignores rules that are included on the same line as :last-child
24
+ // see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details
25
+
26
+ @mixin delimited-list($separator: ", ") {
27
+ @include inline-list;
28
+ li {
29
+ &:after {
30
+ content: $separator;
31
+ }
32
+ &:last-child {
33
+ &:after {
34
+ content: "";
35
+ }
36
+ }
37
+ &.last {
38
+ &:after {
39
+ content: "";
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ // See [delimited-list](#mixin-delimited-list)
46
+ // @deprecated
47
+ @mixin comma-delimited-list {
48
+ @warn "comma-delimited-list is deprecated. Please use delimited-list instead.";
49
+ @include delimited-list;
50
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_ellipsis.scss ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "compass/css3/shared";
2
+
3
+ // To get full firefox support, you must install the ellipsis pattern:
4
+ //
5
+ // compass install compass/ellipsis
6
+ $use-mozilla-ellipsis-binding: false !default;
7
+
8
+ // This technique, by [Justin Maxwell](http://code404.com/), was originally
9
+ // published [here](http://mattsnider.com/css/css-string-truncation-with-ellipsis/).
10
+ // Firefox implementation by [Rikkert Koppes](http://www.rikkertkoppes.com/thoughts/2008/6/).
11
+ @mixin ellipsis($no-wrap: true) {
12
+ @if $no-wrap {
13
+ white-space: nowrap;
14
+ }
15
+ overflow: hidden;
16
+ @include experimental(text-overflow, ellipsis, not -moz, not -webkit, -o, -ms, not -khtml, official);
17
+ @if $experimental-support-for-mozilla and $use-mozilla-ellipsis-binding {
18
+ -moz-binding: stylesheet-url(unquote("xml/ellipsis.xml#ellipsis"));
19
+ }
20
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_force-wrap.scss ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Prevent long urls and text from breaking layouts
2
+ // [originally from perishablepress.com](http://perishablepress.com/press/2010/06/01/wrapping-content/)
3
+ @mixin force-wrap {
4
+ white-space: pre;
5
+ // CSS 2.0
6
+ white-space: pre-wrap;
7
+ // CSS 2.1
8
+ white-space: pre-line;
9
+ // CSS 3.0
10
+ white-space: -pre-wrap;
11
+ // Opera 4-6
12
+ white-space: -o-pre-wrap;
13
+ // Opera 7
14
+ white-space: -moz-pre-wrap;
15
+ // Mozilla
16
+ white-space: -hp-pre-wrap;
17
+ // HP Printers
18
+ word-wrap: break-word;
19
+ // IE 5+
20
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_nowrap.scss ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ // When remembering whether or not there's a hyphen in white-space is too hard
2
+ @mixin nowrap {
3
+ white-space: nowrap;
4
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/typography/text/_replacement.scss ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Indicates the direction you prefer to move your text
2
+ // when hiding it.
3
+ //
4
+ // `left` is more robust, especially in older browsers.
5
+ // `right` seems have better runtime performance.
6
+ $hide-text-direction: left !default;
7
+
8
+ // Hides html text and replaces it with an image.
9
+ // If you use this on an inline element, you will need to change the display to block or inline-block.
10
+ // Also, if the size of the image differs significantly from the font size, you'll need to set the width and/or height.
11
+ //
12
+ // Parameters:
13
+ //
14
+ // * `img` -- the relative path from the project image directory to the image, or a url literal.
15
+ // * `x` -- the x position of the background image.
16
+ // * `y` -- the y position of the background image.
17
+ @mixin replace-text($img, $x: 50%, $y: 50%) {
18
+ @include hide-text;
19
+ background: {
20
+ @if is-url($img) {
21
+ image: $img;
22
+ } @else {
23
+ image: image-url($img);
24
+ }
25
+ repeat: no-repeat;
26
+ position: $x $y;
27
+ }
28
+
29
+ ;
30
+ }
31
+
32
+ // Like the `replace-text` mixin, but also sets the width
33
+ // and height of the element according the dimensions of the image.
34
+ //
35
+ // If you set `$inline` to true, then an inline image (data uri) will be used.
36
+ @mixin replace-text-with-dimensions($img, $x: 50%, $y: 50%, $inline: false) {
37
+ @include replace-text(if($inline, inline-image($img), $img), $x, $y);
38
+ width: image-width($img);
39
+ height: image-height($img);
40
+ }
41
+
42
+ // Hides text in an element so you can see the background.
43
+ //
44
+ // The direction indicates how the text should be moved out of view.
45
+ //
46
+ // See `$hide-text-direction` for more information and to set this globally
47
+ // for your application.
48
+ @mixin hide-text($direction: $hide-text-direction) {
49
+ @if $direction == left {
50
+ $approximate-em-value: 12px / 1em;
51
+ $wider-than-any-screen: -9999em;
52
+ text-indent: $wider-than-any-screen * $approximate-em-value;
53
+ overflow: hidden;
54
+ text-align: left;
55
+ } @else {
56
+ // slightly wider than the box prevents issues with inline-block elements
57
+ text-indent: 110%;
58
+ white-space: nowrap;
59
+ overflow: hidden;
60
+ }
61
+ }
62
+
63
+ // Hides text in an element by squishing the text into oblivion.
64
+ // Use this if you need to hide text contained in an inline element
65
+ // but still have it read by a screen reader.
66
+ @mixin squish-text {
67
+ font: 0/0 serif;
68
+ text-shadow: none;
69
+ color: transparent;
70
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_color.scss ADDED
@@ -0,0 +1 @@
 
1
+ @import "color/color/_contrast";
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_general.scss ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ @import "general/reset";
2
+ @import "general/general/_clearfix";
3
+ @import "general/general/_float";
4
+ @import "general/general/_tag-cloud";
5
+ @import "general/general/_hacks";
6
+ @import "general/general/_min";
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_print.scss ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Classes that are useful for controlling what gets printed.
2
+ // You must mix `+print-utilities` into your print stylesheet
3
+ // and `+print-utilities(screen)` into your screen stylesheet.
4
+ // Note: these aren't semantic.
5
+ @mixin print-utilities($media: print) {
6
+ @if $media == print {
7
+ .noprint, .no-print {
8
+ display: none;
9
+ }
10
+ #{elements-of-type(block)} {
11
+ &.print-only {
12
+ display: block;
13
+ }
14
+ }
15
+ #{elements-of-type(inline)} {
16
+ &.print-only {
17
+ display: inline;
18
+ }
19
+ }
20
+ } @else {
21
+ .print-only {
22
+ display: none;
23
+ }
24
+ }
25
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_sprites.scss ADDED
@@ -0,0 +1,2 @@
 
 
1
+ @import "sprites/sprites/_base";
2
+ @import "sprites/sprites/_sprite-img";
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/_tables.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ @import "tables/tables/_alternating-rows-and-columns";
2
+ @import "tables/tables/_borders";
3
+ @import "tables/tables/_scaffolding";
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/color/_contrast.scss ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ $contrasted-dark-default: #000 !default;
2
+ $contrasted-light-default: #fff !default;
3
+ $contrasted-lightness-threshold: 30% !default;
4
+
5
+ // Returns the `$light` color when the `$color` is dark
6
+ // and the `$dark` color when the `$color` is light.
7
+ // The `$threshold` is a percent between `0%` and `100%` and it determines
8
+ // when the lightness of `$color` changes from "dark" to "light".
9
+ @function contrast-color($color,
10
+ $dark: $contrasted-dark-default,
11
+ $light: $contrasted-light-default,
12
+ $threshold: $contrasted-lightness-threshold) {
13
+ @return if(lightness($color) < $threshold, $light, $dark)
14
+ }
15
+
16
+ // Sets the specified background color and calculates a dark or light contrasted text color.
17
+ // The arguments are passed through to the [contrast-color function](#function-contrast-color).
18
+ @mixin contrasted($background-color,
19
+ $dark: $contrasted-dark-default,
20
+ $light: $contrasted-light-default,
21
+ $threshold: $contrasted-lightness-threshold) {
22
+ background-color: $background-color;
23
+ color: contrast-color($background-color, $dark, $light, $threshold);
24
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_clearfix.scss ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // @doc off
2
+ // Extends the bottom of the element to enclose any floats it contains.
3
+ // @doc on
4
+
5
+ @import "hacks";
6
+
7
+ // This basic method is preferred for the usual case, when positioned
8
+ // content will not show outside the bounds of the container.
9
+ //
10
+ // Recommendations include using this in conjunction with a width.
11
+ // Credit: [quirksmode.org](http://www.quirksmode.org/blog/archives/2005/03/clearing_floats.html)
12
+ @mixin clearfix {
13
+ overflow: hidden;
14
+ @include has-layout;
15
+ }
16
+
17
+ // This older method from Position Is Everything called
18
+ // [Easy Clearing](http://www.positioniseverything.net/easyclearing.html)
19
+ // has the advantage of allowing positioned elements to hang
20
+ // outside the bounds of the container at the expense of more tricky CSS.
21
+ @mixin legacy-pie-clearfix {
22
+ &:after {
23
+ content: "\0020";
24
+ display: block;
25
+ height: 0;
26
+ clear: both;
27
+ overflow: hidden;
28
+ visibility: hidden;
29
+ }
30
+ @include has-layout;
31
+ }
32
+
33
+ // This is an updated version of the PIE clearfix method that reduces the amount of CSS output.
34
+ // If you need to support Firefox before 3.5 you need to use `legacy-pie-clearfix` instead.
35
+ //
36
+ // Adapted from: [A new micro clearfix hack](http://nicolasgallagher.com/micro-clearfix-hack/)
37
+ @mixin pie-clearfix {
38
+ &:after {
39
+ content: "";
40
+ display: table;
41
+ clear: both;
42
+ }
43
+ @include has-layout;
44
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_float.scss ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Implementation of float:left with fix for the
2
+ // [double-margin bug in IE5/6](http://www.positioniseverything.net/explorer/doubled-margin.html)
3
+ @mixin float-left {
4
+ @include float(left);
5
+ }
6
+
7
+ // Implementation of float:right with fix for the
8
+ // [double-margin bug in IE5/6](http://www.positioniseverything.net/explorer/doubled-margin.html)
9
+ @mixin float-right {
10
+ @include float(right);
11
+ }
12
+
13
+ // Direction independent float mixin that fixes the
14
+ // [double-margin bug in IE5/6](http://www.positioniseverything.net/explorer/doubled-margin.html)
15
+ @mixin float($side: left) {
16
+ display: inline;
17
+ float: unquote($side);
18
+ }
19
+
20
+ // Resets floated elements back to their default of `float: none` and defaults
21
+ // to `display: block` unless you pass `inline` as an argument
22
+ //
23
+ // Usage Example:
24
+ //
25
+ // body.homepage
26
+ // #footer li
27
+ // +float-left
28
+ // body.signup
29
+ // #footer li
30
+ // +reset-float
31
+ @mixin reset-float($display: block) {
32
+ float: none;
33
+ display: $display;
34
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_hacks.scss ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "compass/support";
2
+
3
+ // The `zoom` approach generates less CSS but does not validate.
4
+ // Set this to `block` to use the display-property to hack the
5
+ // element to gain layout.
6
+ $default-has-layout-approach: zoom !default;
7
+
8
+ // This mixin causes an element matching the selector
9
+ // to gain the "hasLayout" property in internet explorer.
10
+ // More information on [hasLayout](http://reference.sitepoint.com/css/haslayout).
11
+ @mixin has-layout($approach: $default-has-layout-approach) {
12
+ @if $legacy-support-for-ie {
13
+ @if $approach == zoom {
14
+ @include has-layout-zoom;
15
+ } @else if $approach == block {
16
+ @include has-layout-block;
17
+ } @else {
18
+ @warn "Unknown has-layout approach: #{$approach}";
19
+ @include has-layout-zoom;
20
+ }
21
+ }
22
+ }
23
+
24
+ @mixin has-layout-zoom {
25
+ @if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
26
+ *zoom: 1;
27
+ }
28
+ }
29
+
30
+ @mixin has-layout-block {
31
+ @if $legacy-support-for-ie {
32
+ // This makes ie6 get layout
33
+ display: inline-block;
34
+ // and this puts it back to block
35
+ & {
36
+ display: block;
37
+ }
38
+ }
39
+ }
40
+
41
+ // A hack to supply IE6 (and below) with a different property value.
42
+ // [Read more](http://www.cssportal.com/css-hacks/#in_css-important).
43
+ @mixin bang-hack($property, $value, $ie6-value) {
44
+ @if $legacy-support-for-ie6 {
45
+ #{$property}: #{$value} !important;
46
+ #{$property}: #{$ie6-value};
47
+ }
48
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_min.scss ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "hacks";
2
+
3
+ //**
4
+ // Cross browser min-height mixin.
5
+ @mixin min-height($value) {
6
+ @include hacked-minimum(height, $value);
7
+ }
8
+
9
+ //**
10
+ // Cross browser min-width mixin.
11
+ @mixin min-width($value) {
12
+ @include hacked-minimum(width, $value);
13
+ }
14
+
15
+ // @private This mixin is not meant to be used directly.
16
+ @mixin hacked-minimum($property, $value) {
17
+ min-#{$property}: $value;
18
+ @include bang-hack($property, auto, $value);
19
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_tabs.scss ADDED
@@ -0,0 +1 @@
 
1
+
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/general/_tag-cloud.scss ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Emits styles for a tag cloud
2
+ @mixin tag-cloud($base-size: 1em) {
3
+ font-size: $base-size;
4
+ line-height: 1.2 * $base-size;
5
+ .xxs, .xs, .s, .l, .xl, .xxl {
6
+ line-height: 1.2 * $base-size;
7
+ }
8
+ .xxs {
9
+ font-size: $base-size / 2;
10
+ }
11
+ .xs {
12
+ font-size: 2 * $base-size / 3;
13
+ }
14
+ .s {
15
+ font-size: 3 * $base-size / 4;
16
+ }
17
+ .l {
18
+ font-size: 4 * $base-size / 3;
19
+ }
20
+ .xl {
21
+ font-size: 3 * $base-size / 2;
22
+ }
23
+ .xxl {
24
+ font-size: 2 * $base-size;
25
+ }
26
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/sprites/_base.scss ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Determines those states for which you want to enable magic sprite selectors
2
+ $sprite-selectors: hover, target, active !default;
3
+
4
+ // Set the width and height of an element to the original
5
+ // dimensions of an image before it was included in the sprite.
6
+ @mixin sprite-dimensions($map, $sprite) {
7
+ height: image-height(sprite-file($map, $sprite));
8
+ width: image-width(sprite-file($map, $sprite));
9
+ }
10
+
11
+ // Set the background position of the given sprite `$map` to display the
12
+ // sprite of the given `$sprite` name. You can move the image relative to its
13
+ // natural position by passing `$offset-x` and `$offset-y`.
14
+ @mixin sprite-background-position($map, $sprite, $offset-x: 0, $offset-y: 0) {
15
+ background-position: sprite-position($map, $sprite, $offset-x, $offset-y);
16
+ }
17
+
18
+ // Determines if you want to include magic selectors in your sprites
19
+ $disable-magic-sprite-selectors: false !default;
20
+
21
+ // Include the position and (optionally) dimensions of this `$sprite`
22
+ // in the given sprite `$map`. The sprite url should come from either a base
23
+ // class or you can specify the `sprite-url` explicitly like this:
24
+ //
25
+ // background: $map no-repeat;
26
+ @mixin sprite($map, $sprite, $dimensions: false, $offset-x: 0, $offset-y: 0) {
27
+ @include sprite-background-position($map, $sprite, $offset-x, $offset-y);
28
+ @if $dimensions {
29
+ @include sprite-dimensions($map, $sprite);
30
+ }
31
+ @if not $disable-magic-sprite-selectors {
32
+ @include sprite-selectors($map, $sprite, $sprite, $offset-x, $offset-y);
33
+ }
34
+ }
35
+
36
+ // Include the selectors for the `$sprite` given the `$map` and the
37
+ // `$full-sprite-name`
38
+ // @private
39
+ @mixin sprite-selectors($map, $sprite-name, $full-sprite-name, $offset-x: 0, $offset-y: 0) {
40
+ @each $selector in $sprite-selectors {
41
+ @if sprite_has_selector($map, $sprite-name, $selector) {
42
+ &:#{$selector}, &.#{$full-sprite-name}_#{$selector}, &.#{$full-sprite-name}-#{$selector} {
43
+ @include sprite-background-position($map, "#{$sprite-name}_#{$selector}", $offset-x, $offset-y);
44
+ }
45
+ }
46
+ }
47
+ }
48
+
49
+ // Generates a class for each space separated name in `$sprite-names`.
50
+ // The class will be of the form .<map-name>-<sprite-name>.
51
+ //
52
+ // If a base class is provided, then each class will extend it.
53
+ //
54
+ // If `$dimensions` is `true`, the sprite dimensions will specified.
55
+ @mixin sprites($map, $sprite-names, $base-class: false, $dimensions: false, $prefix: sprite-map-name($map), $offset-x: 0, $offset-y: 0) {
56
+ @each $sprite-name in $sprite-names {
57
+ @if sprite_does_not_have_parent($map, $sprite-name) {
58
+ $full-sprite-name: "#{$prefix}-#{$sprite-name}";
59
+ .#{$full-sprite-name} {
60
+ @if $base-class {
61
+ @extend #{$base-class};
62
+ }
63
+ @include sprite($map, $sprite-name, $dimensions, $offset-x, $offset-y);
64
+ }
65
+ }
66
+ }
67
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/sprites/_sprite-img.scss ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // @doc off
2
+ // Example 1:
3
+ //
4
+ // a.twitter
5
+ // +sprite-img("icons-32.png", 1)
6
+ // a.facebook
7
+ // +sprite-img("icons-32png", 2)
8
+ //
9
+ // Example 2:
10
+ //
11
+ // a
12
+ // +sprite-background("icons-32.png")
13
+ // a.twitter
14
+ // +sprite-column(1)
15
+ // a.facebook
16
+ // +sprite-row(2)
17
+ // @doc on
18
+
19
+ $sprite-default-size: 32px !default;
20
+
21
+ $sprite-default-margin: 0px !default;
22
+
23
+ $sprite-image-default-width: $sprite-default-size !default;
24
+
25
+ $sprite-image-default-height: $sprite-default-size !default;
26
+
27
+ // Sets all the rules for a sprite from a given sprite image to show just one of the sprites.
28
+ // To reduce duplication use a sprite-bg mixin for common properties and a sprite-select mixin for positioning.
29
+ @mixin sprite-img($img, $col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) {
30
+ @include sprite-background($img, $width, $height);
31
+ @include sprite-position($col, $row, $width, $height, $margin);
32
+ }
33
+
34
+ // Sets rules common for all sprites, assumes you want a square, but allows a rectangular region.
35
+ @mixin sprite-background($img, $width: $sprite-default-size, $height: $width) {
36
+ @include sprite-background-rectangle($img, $width, $height);
37
+ }
38
+
39
+ // Sets rules common for all sprites, assumes a rectangular region.
40
+ @mixin sprite-background-rectangle($img, $width: $sprite-image-default-width, $height: $sprite-image-default-height) {
41
+ background: image-url($img) no-repeat;
42
+ width: $width;
43
+ height: $height;
44
+ overflow: hidden;
45
+ }
46
+
47
+ // Allows horizontal sprite positioning optimized for a single row of sprites.
48
+ @mixin sprite-column($col, $width: $sprite-image-default-width, $margin: $sprite-default-margin) {
49
+ @include sprite-position($col, 1, $width, 0px, $margin);
50
+ }
51
+
52
+ // Allows vertical sprite positioning optimized for a single column of sprites.
53
+ @mixin sprite-row($row, $height: $sprite-image-default-height, $margin: $sprite-default-margin) {
54
+ @include sprite-position(1, $row, 0px, $height, $margin);
55
+ }
56
+
57
+ // Allows vertical and horizontal sprite positioning from a grid of equal dimensioned sprites.
58
+ @mixin sprite-position($col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) {
59
+ $x: ($col - 1) * -$width - ($col - 1) * $margin;
60
+ $y: ($row - 1) * -$height - ($row - 1) * $margin;
61
+ background-position: $x $y;
62
+ }
63
+
64
+ // Similar to 'sprite-replace-text-with-dimensions' but does not autmaticly set the demensions
65
+ @mixin sprite-replace-text
66
+
67
+ (
68
+ $map,
69
+ $sprite,
70
+ $dimensions: false, $offset-x: 0, $offset-y: 0)
71
+ {
72
+ @include hide-text;
73
+ @include sprite($map, $sprite, $dimensions, $offset-x, $offset-y);
74
+ background-image: $map;
75
+ background-repeat: no-repeat;
76
+ }
77
+
78
+ // Similar to 'replace-text-with-dimensions' but with sprites
79
+ // To use, create your sprite and then pass it in the `$map` param
80
+ // The name of the image in the sprite folder should be `$img-name`
81
+ @mixin sprite-replace-text-with-dimensions
82
+
83
+ (
84
+ $map,
85
+ $sprite,
86
+ $offset-x: 0, $offset-y: 0)
87
+ {
88
+ @include sprite-replace-text
89
+ (
90
+ $map
91
+ ,
92
+ $sprite
93
+ ,
94
+ true
95
+ ,
96
+ $offset-x
97
+ ,
98
+ $offset-y
99
+ )
100
+ ;
101
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin alternating-rows-and-columns($even-row-color, $odd-row-color, $dark-intersection, $header-color: white, $footer-color: white) {
2
+ th {
3
+ background-color: $header-color;
4
+ &.even, &:nth-child(2n) {
5
+ background-color: $header-color - $dark-intersection;
6
+ }
7
+ }
8
+ tr {
9
+ &.odd, &:nth-child(2n+1) {
10
+ td {
11
+ background-color: $odd-row-color;
12
+ &.even, &:nth-child(2n) {
13
+ background-color: $odd-row-color - $dark-intersection;
14
+ }
15
+ }
16
+ }
17
+ }
18
+ tr.even {
19
+ td {
20
+ background-color: $even-row-color;
21
+ &.even, &:nth-child(2n) {
22
+ background-color: $even-row-color - $dark-intersection;
23
+ }
24
+ }
25
+ }
26
+ tfoot {
27
+ th, td {
28
+ background-color: $footer-color;
29
+ &.even, &:nth-child(2n) {
30
+ background-color: $footer-color - $dark-intersection;
31
+ }
32
+ }
33
+ }
34
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/tables/_borders.scss ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin outer-table-borders($width: 2px, $color: black) {
2
+ border: $width solid $color;
3
+ thead {
4
+ th {
5
+ border-bottom: $width solid $color;
6
+ }
7
+ }
8
+ tfoot {
9
+ th, td {
10
+ border-top: $width solid $color;
11
+ }
12
+ }
13
+ th {
14
+ &:first-child {
15
+ border-right: $width solid $color;
16
+ }
17
+ }
18
+ }
19
+
20
+ @mixin inner-table-borders($width: 2px, $color: black) {
21
+ th, td {
22
+ border: {
23
+ right: $width solid $color;
24
+ bottom: $width solid $color;
25
+ left-width: 0px;
26
+ top-width: 0px;
27
+ }
28
+ ;
29
+ &:last-child,
30
+ &.last {
31
+ border-right-width: 0px;
32
+ }
33
+ }
34
+
35
+ // IE8 ignores rules that are included on the same line as :last-child
36
+ // see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details
37
+
38
+ tbody, tfoot {
39
+ tr:last-child {
40
+ th, td {
41
+ border-bottom-width: 0px;
42
+ }
43
+ }
44
+ tr.last {
45
+ th, td {
46
+ border-bottom-width: 0px;
47
+ }
48
+ }
49
+ }
50
+ }
lib/phpsass/Extensions/Compass/stylesheets/compass/utilities/tables/_scaffolding.scss ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin table-scaffolding {
2
+ th {
3
+ text-align: center;
4
+ font-weight: bold;
5
+ }
6
+ td,
7
+ th {
8
+ padding: 2px;
9
+ &.numeric {
10
+ text-align: right;
11
+ }
12
+ }
13
+ }
lib/phpsass/Extensions/ExtensionInterface.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+ interface ExtensionInterface
3
+ {
4
+ public static function getFunctions($namespace);
5
+
6
+ public static function resolveExtensionPath($filename, $parser, $syntax = 'scss');
7
+ }
lib/phpsass/Extensions/Own/Own.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ require_once dirname(__FILE__) . '/../ExtensionInterface.php';
3
+ class Own implements ExtensionInterface
4
+ {
5
+
6
+ public static $filesFolder = 'css';
7
+ public static $filePaths = null;
8
+
9
+ /**
10
+ * List with alias functions in Compass
11
+ * @var array
12
+ */
13
+ public static $functions = array(
14
+ 'demo-function',
15
+ );
16
+
17
+ public static function getFunctions($namespace)
18
+ {
19
+
20
+ $output = array();
21
+ foreach (self::$functions as $function) {
22
+ $originalFunction = $function;
23
+ $function[0] = strtoupper($function[0]);
24
+ $func = create_function('$c', 'return strtoupper($c[1]);');
25
+ $function = preg_replace_callback('/-([a-z])/', $func, $function);
26
+ $output[$originalFunction] = $namespace . strtolower(__CLASS__) . $function;
27
+ }
28
+
29
+ return $output;
30
+ }
31
+
32
+ /**
33
+ * Returns an array with all files in $root path recursively and assign each array Key with clean alias
34
+ * @param $root
35
+ * @return array
36
+ */
37
+ public static function getFilesArray($root)
38
+ {
39
+
40
+ $alias = array();
41
+ $directories = array();
42
+ $last_letter = $root[strlen($root) - 1];
43
+ $root = ($last_letter == '\\' || $last_letter == '/') ? $root : $root . DIRECTORY_SEPARATOR;
44
+
45
+ $directories[] = $root;
46
+
47
+ while (sizeof($directories)) {
48
+ $dir = array_pop($directories);
49
+ if ($handle = opendir($dir)) {
50
+ while (false !== ($file = readdir($handle))) {
51
+ if ($file == '.' || $file == '..') {
52
+ continue;
53
+ }
54
+ $file = $dir . $file;
55
+ if (is_dir($file)) {
56
+ $directory_path = $file . DIRECTORY_SEPARATOR;
57
+ array_push($directories, $directory_path);
58
+ } elseif (is_file($file)) {
59
+ $key = basename($file);
60
+ $alias[substr($key, 1, strpos($key, '.') - 1)] = $file;
61
+ }
62
+ }
63
+ closedir($handle);
64
+ }
65
+ }
66
+
67
+ return $alias;
68
+ }
69
+
70
+ /**
71
+ * Implementation of hook_resolve_path_NAMESPACE().
72
+ */
73
+ public static function resolveExtensionPath($callerImport, $parser, $syntax = 'scss')
74
+ {
75
+ $alias = str_replace('/_', '/', str_replace(array('.scss', '.sass'), '', $callerImport));
76
+ if (strrpos($alias, '/') !== false) {
77
+ $alias = substr($alias, strrpos($alias, '/') + 1);
78
+ }
79
+ if (self::$filePaths == null) {
80
+ self::$filePaths = self::getFilesArray(dirname(__FILE__) . '/' . self::$filesFolder . '/');
81
+ }
82
+ if (isset(self::$filePaths[$alias])) {
83
+ return self::$filePaths[$alias];
84
+ }
85
+ }
86
+
87
+ public static function ownDemoFunction(){
88
+ return new SassString("'This is my own Demo Function'");
89
+ }
90
+ }
lib/phpsass/Extensions/Own/css/test/test2/test.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ a{
2
+ color:blue;
3
+ }
lib/phpsass/Extensions/README.md ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ compass-phpsass
2
+ ===============
3
+
4
+ Hi all,
5
+ this is a Compass Sass Framework http://compass-style.org for Phpsass based on the Compass extension integrated in Sassy for Drupal http://drupalcode.org/project/sassy.git/tree/HEAD:/extensions/compass
6
+ I only removed the specific code for Drupal and chaged it to Classes instead of *.module and *.inc
7
+
8
+ I hope that you enjoy.
9
+
10
+ Juan Manuel Vergés Solanas.
lib/phpsass/Extensions/Susy/Susy.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ require_once dirname(__FILE__) . '/../ExtensionInterface.php';
3
+ class Susy implements ExtensionInterface
4
+ {
5
+ public static $filesFolder = 'stylesheets';
6
+ public static $filePaths = null;
7
+
8
+ /**
9
+ * List with alias functions in Susy
10
+ * @var array
11
+ */
12
+ public static $functions = array();
13
+
14
+ public static function getFunctions($namespace)
15
+ {
16
+
17
+ return array();
18
+ }
19
+
20
+ /**
21
+ * Returns an array with all files in $root path recursively and assign each array Key with clean alias
22
+ * @param $root
23
+ * @return array
24
+ */
25
+ public static function getFilesArray($root)
26
+ {
27
+
28
+ $alias = array();
29
+ $directories = array();
30
+ $last_letter = $root[strlen($root) - 1];
31
+ $root = ($last_letter == '\\' || $last_letter == '/') ? $root : $root . DIRECTORY_SEPARATOR;
32
+
33
+ $directories[] = $root;
34
+
35
+ while (sizeof($directories)) {
36
+ $dir = array_pop($directories);
37
+ if ($handle = opendir($dir)) {
38
+ while (false !== ($file = readdir($handle))) {
39
+ if ($file == '.' || $file == '..') {
40
+ continue;
41
+ }
42
+ $file = $dir . $file;
43
+ if (is_dir($file)) {
44
+ $directory_path = $file . DIRECTORY_SEPARATOR;
45
+ array_push($directories, $directory_path);
46
+ } elseif (is_file($file)) {
47
+ $key = basename($file);
48
+ $alias[substr($key, 1, strpos($key, '.') - 1)] = $file;
49
+ }
50
+ }
51
+ closedir($handle);
52
+ }
53
+ }
54
+ return $alias;
55
+ }
56
+
57
+ /**
58
+ * Implementation of hook_resolve_path_NAMESPACE().
59
+ */
60
+ public static function resolveExtensionPath($callerImport, $parser, $syntax = 'scss')
61
+ {
62
+ $extension = '';
63
+ $alias = str_replace('/_', '/', str_replace(array('.scss', '.sass'), '', $callerImport));
64
+ if (strrpos($alias, '/') !== false) {
65
+ $extension = substr($alias, 0, strpos($alias, '/'));
66
+ $alias = substr($alias, strrpos($alias, '/') + 1);
67
+ }
68
+ if (self::$filePaths == null) {
69
+ self::$filePaths = self::getFilesArray(dirname(__FILE__) . '/' . self::$filesFolder . '/');
70
+ }
71
+ if (isset(self::$filePaths[$alias]) && $extension != 'compass') {
72
+ return self::$filePaths[$alias];
73
+ }
74
+ }
75
+ }
lib/phpsass/Extensions/Susy/stylesheets/_susy.scss ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Partials
3
+
4
+ // temporary
5
+ @import "susy/support";
6
+ @import "susy/units";
7
+
8
+ // permanent
9
+ @import "susy/settings";
10
+ @import "susy/functions";
11
+ @import "susy/grid";
12
+ @import "susy/isolation";
13
+ @import "susy/padding";
14
+ @import "susy/margin";
15
+ @import "susy/media";
16
+ @import "susy/background";
lib/phpsass/Extensions/Susy/stylesheets/susy/_background.scss ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Imports
3
+
4
+ @import "compass/layout/grid-background";
5
+ @import "compass/css3/background-origin";
6
+ @import "compass/css3/background-clip";
7
+
8
+ // ---------------------------------------------------------------------------
9
+ // Susy Grid Background
10
+ //
11
+ // A wrapper for the compass "column-grid-background" mixin
12
+ // Uses all your settings to create a grid background for a container element.
13
+ // Note: Sub-pixel rounding can lead to several pixels of variation between browsers.
14
+ @mixin susy-grid-background(){
15
+ @include column-grid-background($total-columns, column(), gutter(), 0);
16
+ @include background-origin(content-box);
17
+ @include background-clip(content-box);
18
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_functions.scss ADDED
@@ -0,0 +1,376 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Imports
3
+
4
+ // We need access to some basic font settings for handling media-queries.
5
+ @import "compass/typography/vertical_rhythm";
6
+
7
+ // For now, we also need this...
8
+ $browser-default-font-size-px : 16px;
9
+ $browser-default-font-size-percent : 100%;
10
+ $browser-default-font-size-pt : 12pt;
11
+
12
+ $rem-with-px-fallback : true !default;
13
+
14
+ // ---------------------------------------------------------------------------
15
+ // Sass list Functions
16
+
17
+ // Return a list with specific items removed
18
+ //
19
+ // filter($list, $target)
20
+ // - $list : The list to filter.
21
+ // - $target : An item to be removed from the list.
22
+ @function filter($list, $target) {
23
+ $clean: compact();
24
+ @if index($list, $target) {
25
+ @each $item in $list {
26
+ $clean: if($item == $target, $clean, append($clean, $item));
27
+ }
28
+ } @else { $clean: $list; }
29
+ @return $clean;
30
+ }
31
+
32
+ // ---------------------------------------------------------------------------
33
+ // Don't use static output when it will break things
34
+
35
+ // Switch element-level output to fluid, when container-width is wrong for static
36
+ //
37
+ // fix-static-misalignment([$style, $width])
38
+ // - $style: $container-style.
39
+ // - $width: $container-width.
40
+ @function fix-static-misalignment(
41
+ $style: $container-style,
42
+ $width: $container-width
43
+ ) {
44
+ @if $container-width and $container-width != container-outer-width($width: false) {
45
+ $style: fluid;
46
+ }
47
+ @return $style;
48
+ }
49
+
50
+ // ---------------------------------------------------------------------------
51
+ // Grid Functions
52
+
53
+ // Returns the full width of a grid based on your grid settings.
54
+ //
55
+ // $columns : The number of columns to get width for.
56
+ @function columns-width(
57
+ $columns : $total-columns
58
+ ) {
59
+ @if round($columns) != $columns {
60
+ @warn "Susy works best with integer column-spans.
61
+ For partial-columns, you may need to finesse the math by hand using functions directly.";
62
+ }
63
+ @return ($columns * $column-width) + (if($columns >= 1, ceil($columns - 1), 0) * $gutter-width);
64
+ }
65
+
66
+ // Return the grid width after adding or subtracting grid padding
67
+ //
68
+ // $width : the width of the grid without padding;
69
+ // $operation : ( add | subtract ) if padding should be added or subtracted;
70
+ @function handle-grid-padding(
71
+ $width,
72
+ $operation : subtract
73
+ ) {
74
+ $pad: $grid-padding*2;
75
+
76
+ @if comparable($width, $grid-padding) {
77
+ $width: if($operation == subtract, $width - $pad, $width + $pad);
78
+ } @else {
79
+ @warn "$grid-padding must be set in units comparable to the container width.";
80
+ }
81
+
82
+ @return $width;
83
+ }
84
+
85
+ // Return the full outer width of a Container element.
86
+ //
87
+ // $columns : The number of columns in the Grid Layout.
88
+ @function container-outer-width(
89
+ $columns : $total-columns,
90
+ $width : $container-width
91
+ ) {
92
+ $outerwidth: if($width, $width, columns-width($columns));
93
+
94
+ @if $width {
95
+ @if not $border-box-sizing { $outerwidth: handle-grid-padding($outerwidth, subtract); }
96
+ } @else {
97
+ @if $border-box-sizing { $outerwidth: handle-grid-padding($outerwidth, add); }
98
+ }
99
+
100
+ @return $outerwidth;
101
+ }
102
+
103
+ // Return the percentage width of a single column in a given 'context'.
104
+ //
105
+ // $context : The grid context in columns, if nested.
106
+ // $style : The container style to use.
107
+ @function column(
108
+ $context : $total-columns,
109
+ $style : fix-static-misalignment()
110
+ ) {
111
+ @return if($style == static, $column-width, relative-width($column-width, $context));
112
+ }
113
+
114
+ // Return the percentage width of multiple 'columns' in a given 'context'.
115
+ //
116
+ // $columns : The number of columns to get relative width for.
117
+ // $context : The grid context in columns, if nested.
118
+ // $style : The container style to use.
119
+ @function columns(
120
+ $columns,
121
+ $context : $total-columns,
122
+ $style : fix-static-misalignment()
123
+ ) {
124
+ @return if($style == static, columns-width($columns), relative-width(columns-width($columns), $context));
125
+ }
126
+
127
+ // Return the percentage width of a single gutter in a given 'context'.
128
+ //
129
+ // $context : The grid context in columns, if nested.
130
+ // $style : The container style to use.
131
+ @function gutter(
132
+ $context : $total-columns,
133
+ $style : fix-static-misalignment()
134
+ ) {
135
+ @return if($style == static, $gutter-width, relative-width($gutter-width, $context));
136
+ }
137
+
138
+ // Return the percentage width of a given value in a given 'context'.
139
+ //
140
+ // $width : Any given width value.
141
+ // $context : The grid context in columns, if nested.
142
+ @function relative-width(
143
+ $width,
144
+ $context : $total-columns
145
+ ) {
146
+ @return percentage($width / columns-width($context));
147
+ }
148
+
149
+ // Return the total space occupied by multiple columns and associated gutters.
150
+ // Useful for adding padding or margins (prefix, suffix, push, pull, etc.)
151
+ //
152
+ // $columns : The number of columns to get relative space for.
153
+ // $context : The grid context in columns, if nested.
154
+ // $style : The container style to use.
155
+ @function space(
156
+ $columns,
157
+ $context : $total-columns,
158
+ $style : fix-static-misalignment()
159
+ ) {
160
+ @return columns($columns, $context, $style) + if($columns >= 1, gutter($context, $style), 0);
161
+ }
162
+
163
+ // Accept a list including column-count and (optional) position.
164
+ // Return either the column count or the position alone.
165
+ //
166
+ // $columns : the list to split and interprate.
167
+ // $request : The value to return, either 'columns' or 'position'.
168
+ @function split-columns-value(
169
+ $columns,
170
+ $request : columns
171
+ ) {
172
+ $pos : false;
173
+ $cols : false;
174
+
175
+ @each $var in $columns {
176
+ @if (type-of($var) == 'string') {
177
+ $pos: $var;
178
+ } @else {
179
+ @if (type-of($var) == 'number') and (unitless($var)) {
180
+ $cols: $var;
181
+ } @else {
182
+ @warn '"#{$var}" is not a valid part of "$columns: #{$columns}" in the columns() mixin.';
183
+ }
184
+ }
185
+ }
186
+
187
+ @if $request == 'columns' {
188
+ @return $cols;
189
+ } @else {
190
+ @if $request == 'position' {
191
+ @return $pos;
192
+ } @else {
193
+ @warn '"#{$request}"" is not a valid value for $request';
194
+ }
195
+ }
196
+ }
197
+
198
+ // Accept nth-selector variables, and format them as a valid CSS3 selector.
199
+ //
200
+ // $n : [first | only | last | <equation>]
201
+ // $selector : [child | last-child | of-type | last-of-type ]
202
+ @function format-nth(
203
+ $n : last,
204
+ $selector : child
205
+ ) {
206
+ @if ($n == 'last') or ($n =='first') or ($n =='only') {
207
+ $selector: '#{$n}-#{$selector}';
208
+ } @else {
209
+ $selector: 'nth-#{$selector}(#{$n})';
210
+ }
211
+ @return $selector;
212
+ }
213
+
214
+ // ---------------------------------------------------------------------------
215
+ // Media Functions
216
+
217
+ // Return an em value adjusted to match the browser default font size.
218
+ // Note: This only works if actual sizes are set relative to browser defaults.
219
+ //
220
+ // $ems : The initial value to be converted.
221
+ // $font-size : The current font-size in.
222
+ @function base-ems(
223
+ $ems,
224
+ $font-size: $base-font-size
225
+ ){
226
+ $font-size : if(unit($ems) == 'rem', $base-font-size, $font-size);
227
+ $unit : unit($font-size);
228
+ $mult : $ems / ($ems * 0 + 1);
229
+
230
+ @if $unit == 'px' {
231
+ @return $font-size / $browser-default-font-size-px * $mult * 1em;
232
+ }
233
+ @else if $unit == '%' {
234
+ @return $font-size / $browser-default-font-size-percent * $mult * 1em;
235
+ }
236
+ @else if $unit == 'em' {
237
+ @return $font-size / 1em * $mult * 1em;
238
+ }
239
+ @else if $unit == 'pt' {
240
+ @return $font-size / $browser-default-font-size-pt * $mult * 1em;
241
+ }
242
+ @else {
243
+ @warn 'Variable $base-font-size does not have a valid font unit. Valid units for fonts in CSS are px, pt, em, and %.';
244
+ }
245
+ }
246
+
247
+ // This name will be deprecated...
248
+ @function absolute-ems($ems, $font-size: $base-font-size){ @return base-ems($ems, $font-size); }
249
+
250
+ // Return a length, after any em-values have been sent through absolute-ems().
251
+ //
252
+ // $length : The length value to be checked and adjusted if necessary.
253
+ // $font-size : The current font-size in px.
254
+ @function fix-ems(
255
+ $length,
256
+ $font-size: $base-font-size
257
+ ){
258
+ @if $length {
259
+ @if (unit($length) == 'em') or (unit($length) == 'rem') {
260
+ $length: absolute-ems($length,$font-size);
261
+ }
262
+ }
263
+ @return $length;
264
+ }
265
+
266
+ // Sort a list of arguments into "$min $layout $max $ie" order, and return the list.
267
+ //
268
+ // $media-layout : a list of values [$min $layout $max $ie] including...
269
+ // : - one unitless number (columns in a layout)
270
+ // : - two optional lengths (min and max-width media-query breakpoints).
271
+ // : - one optional boolean or string to trigger fallback support for IE.
272
+ // $font-size : [optional] The base font-size of your layout, if you are using ems.
273
+ // : - defaults to $base-font-size
274
+ @function medialayout(
275
+ $media-layout,
276
+ $font-size: $base-font-size
277
+ ) {
278
+ $media : false;
279
+ $min : false;
280
+ $layout : false;
281
+ $max : false;
282
+ $ie : false;
283
+ $has-layout : false;
284
+
285
+ @each $val in $media-layout {
286
+ @if (type-of($val) == "number") {
287
+ @if unitless($val) {
288
+ $layout : $val;
289
+ $has-layout : true;
290
+ } @else {
291
+ @if ($has-layout) and (not $media) {
292
+ $max: $val;
293
+ } @else {
294
+ @if $media {
295
+ $media: join($media,$val);
296
+ } @else {
297
+ $media: $val;
298
+ }
299
+ }
300
+ }
301
+ } @else {
302
+ $ie: $val;
303
+ }
304
+ }
305
+ @if (length($media) > 0) {
306
+ @if (length($media) == 1) {
307
+ $min: nth($media,1);
308
+ } @else {
309
+ $min: nth($media,1);
310
+ $max: nth($media,2);
311
+ @if comparable($min, $max) {
312
+ @if ($min > $max) {
313
+ $max: nth($media,1);
314
+ $min: nth($media,2);
315
+ }
316
+ } @else {
317
+ @warn "Can't compare incompatible units.
318
+ Using #{$min} for min-width, and #{$max} for max-width";
319
+ }
320
+ @if (length($media) > 2) {
321
+ @warn "You can only send two lengths: a min-width and an (optional) max-width.
322
+ You sent #{length($media)}: #{$media}";
323
+ }
324
+ }
325
+ }
326
+
327
+ // media-queries must be set in ems relative to the browser default
328
+ // rather than the font-size set in CSS.
329
+ $min: fix-ems($min,$font-size);
330
+ $max: fix-ems($max,$font-size);
331
+
332
+ @return $min $layout $max $ie;
333
+ }
334
+
335
+ // Return the nearest layout (column-count) above a given breakpoint.
336
+ //
337
+ // $min : The min-width media-query breakpoint above which to establish a new layout.
338
+ @function get-layout (
339
+ $min
340
+ ) {
341
+ $columns : 1;
342
+ $layout-width : container-outer-width($columns);
343
+ $return : false;
344
+ $min : fix-ems($min);
345
+
346
+ @if comparable($min, $layout-width) {
347
+ @while $min >= $layout-width {
348
+ $columns : $columns + 1;
349
+ $layout-width : container-outer-width($columns);
350
+ }
351
+ $return : $columns;
352
+ }
353
+
354
+ @return $return;
355
+ }
356
+
357
+ // Check to see if a given $media-layout list is simply the default.
358
+ //
359
+ // $media-layout : a list of values including -
360
+ // : One unitless number (columns in a layout)
361
+ // : Two optional lengths (min and max-width media-query breakpoints).
362
+ // : One optional boolean or string to trigger fallback support for IE.
363
+ @function is-default-layout(
364
+ $media-layout
365
+ ) {
366
+ $media-layout : medialayout($media-layout);
367
+ $min : nth($media-layout,1);
368
+ $layout-cols : nth($media-layout,2);
369
+ $max : nth($media-layout,3);
370
+
371
+ @if $min or $max {
372
+ @return false;
373
+ } @else {
374
+ @return if($layout-cols == $total-columns,true,false);
375
+ }
376
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_grid.scss ADDED
@@ -0,0 +1,286 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Imports
3
+
4
+ @import "compass/utilities/general/clearfix";
5
+ @import "compass/css3/box-sizing";
6
+
7
+ // ---------------------------------------------------------------------------
8
+ // Border-Box Sizing
9
+
10
+ // Apply the border-box sizing model to all elements
11
+ // and adjust the grid math appropriately.
12
+ @mixin border-box-sizing {
13
+ $border-box-sizing: true;
14
+ * { @include box-sizing(border-box); }
15
+ }
16
+
17
+ // ---------------------------------------------------------------------------
18
+ // Container
19
+
20
+ // Set the width of a container
21
+ //
22
+ // $columns : The number of columns in the Grid Layout.
23
+ @mixin set-container-width(
24
+ $columns : $total-columns,
25
+ $style : $container-style
26
+ ){
27
+ $width: container-outer-width($columns);
28
+
29
+ @if $style == 'static' {
30
+ @include if-rem(width, $width);
31
+ } @else {
32
+ @if $style == 'fluid' {
33
+ @if unit($width) == '%' { @include if-rem(width, $width); }
34
+ } @else {
35
+ @include if-rem(max-width, $width);
36
+ @if $legacy-support-for-ie6 {
37
+ @if unit($width) == 'rem' {
38
+ _width: round(convert-length($width, px));
39
+ } @else {
40
+ _width: $width;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+
47
+ // Set the outer grid-containing element(s).
48
+ //
49
+ // $columns : The number of columns in the container.
50
+ @mixin apply-container(
51
+ $columns : $total-columns
52
+ ){
53
+ @include pie-clearfix;
54
+ @include set-container-width($columns);
55
+ @include if-rem(padding-left, $grid-padding);
56
+ @include if-rem(padding-right, $grid-padding);
57
+ margin: { left: auto; right: auto; }
58
+ }
59
+
60
+ // Set one or more layouts on a grid-containing element at any number of media-query breakpoints.
61
+ //
62
+ // $media-layout-1 : [default:$total-columns] A list of values including -
63
+ // : One unitless number (representing columns in a layout)
64
+ // : Two optional lengths (representing min and max-width media-query breakpoints).
65
+ // $media-layout-2 ...-10 : [optional] Same as $media-layout-1
66
+ @mixin container(
67
+ $media-layout-1 : $total-columns,
68
+ $media-layout-2 : false,
69
+ $media-layout-3 : false,
70
+ $media-layout-4 : false,
71
+ $media-layout-5 : false,
72
+ $media-layout-6 : false,
73
+ $media-layout-7 : false,
74
+ $media-layout-8 : false,
75
+ $media-layout-9 : false,
76
+ $media-layout-10 : false
77
+ ){
78
+ $media-layouts : compact($media-layout-2,$media-layout-3,$media-layout-4,$media-layout-5,$media-layout-6,$media-layout-7,$media-layout-8,$media-layout-9,$media-layout-10);
79
+
80
+ @if is-default-layout($media-layout-1) {
81
+ @include apply-container();
82
+ } @else {
83
+ @include at-breakpoint($media-layout-1) {
84
+ @include apply-container();
85
+ }
86
+ }
87
+
88
+ @each $ml in $media-layouts {
89
+ @if $ml {
90
+ @include at-breakpoint($ml) {
91
+ @include set-container-width;
92
+ }
93
+ }
94
+ }
95
+ }
96
+
97
+ // ---------------------------------------------------------------------------
98
+ // Columns
99
+
100
+ // Create a grid element spanning any number of 'columns' in a grid 'context'.
101
+ // $columns : The number of columns to span.
102
+ // $context : [optional] The context (columns spanned by parent).
103
+ // : Context is required on any nested elements.
104
+ // : Context MUST NOT be declared on a root element.
105
+ // $padding : [optional] Padding applied to the inside of individual grid columns.
106
+ // : Padding is only output if one or two values are specified (e.g. 1em or 10px 20px)
107
+ // : Padding values are applied only on the horizontal axis in from-to order
108
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
109
+ // $style : The container style to use.
110
+ @mixin span-columns(
111
+ $columns,
112
+ $context : $total-columns,
113
+ $padding : false,
114
+ $from : $from-direction,
115
+ $style : fix-static-misalignment()
116
+ ) {
117
+ $from : unquote($from);
118
+ $to : opposite-position($from);
119
+ $pos : split-columns-value($columns,position);
120
+ $cols : split-columns-value($columns,columns);
121
+ $pad-from : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context));
122
+ $pad-to : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context));
123
+
124
+ @if $padding != false {
125
+ $pad-from : nth($padding, 1);
126
+
127
+ @if length($padding) > 1 {
128
+ $pad-to: nth($padding, 2);
129
+ } @else {
130
+ $pad-to: $pad-from;
131
+ }
132
+
133
+ $pad-from : if($style == static, $pad-from, relative-width($pad-from, $context));
134
+ $pad-to : if($style == static, $pad-to, relative-width($pad-to, $context));
135
+
136
+ padding-#{$from}: $pad-from;
137
+ padding-#{$to}: $pad-to;
138
+ }
139
+
140
+ width: columns($cols, $context, $style) - if($border-box-sizing, 0, $pad-to + $pad-from);
141
+
142
+ @if ($pos == 'omega') {
143
+ @include omega($from);
144
+ } @else {
145
+ float: $from;
146
+ margin-#{$to}: gutter($context, $style);
147
+ @if $legacy-support-for-ie6 { display: inline; }
148
+ }
149
+ }
150
+
151
+ // Apply to elements spanning the last column, to account for the page edge.
152
+ // Only needed as an override. Normally 'omega' can just be called by `columns`.
153
+ //
154
+ // $from : The start-direction for your document.
155
+ @mixin omega(
156
+ $from : $from-direction
157
+ ) {
158
+ $from : unquote($from);
159
+ $to : opposite-position($from);
160
+ $hack : opposite-position($omega-float);
161
+
162
+ float: $omega-float;
163
+ margin-#{$to}: 0;
164
+
165
+ @if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
166
+ *margin-#{$hack}: - $gutter-width;
167
+ @if $legacy-support-for-ie6 { display: inline; }
168
+ }
169
+ }
170
+
171
+ // Shortcut to apply omega to a specific subset of elements.
172
+ //
173
+ // $n : [first | only | last | <equation>]
174
+ // $selector : [child | last-child | of-type | last-of-type ]
175
+ // $from : The start-direction for your document.
176
+ @mixin nth-omega(
177
+ $n : last,
178
+ $selector : child,
179
+ $from : $from-direction
180
+ ) {
181
+ $from : unquote($from);
182
+ $ie: if($n == "first", true, false);
183
+ @include adjust-support-for($ie6: $ie, $ie7: $ie, $ie8: $ie) {
184
+ &:#{format-nth($n,$selector)} { @include omega($from); }
185
+ }
186
+ }
187
+
188
+ // ---------------------------------------------------------------------------
189
+ // Resets
190
+
191
+ // Reset a '+columns' grid element to default block behavior
192
+ //
193
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
194
+ @mixin reset-columns(
195
+ $from: $from-direction
196
+ ) {
197
+ $from : unquote($from);
198
+ $to : opposite-position($from);
199
+ $hack : opposite-position($omega-float);
200
+
201
+ float: none;
202
+ width: auto;
203
+ margin-#{$to}: auto;
204
+
205
+ @if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
206
+ *margin-#{$hack}: auto;
207
+ @if $legacy-support-for-ie6 { display: block; }
208
+ }
209
+ }
210
+
211
+ // Apply to elements previously set as omega.
212
+ // This will return floats and margins back to non-omega settigns.
213
+ //
214
+ // $context : [optional] The context (columns spanned by parent).
215
+ // $from : The start-direction for your document.
216
+ // $style : The container style to use.
217
+ @mixin remove-omega(
218
+ $context : $total-columns,
219
+ $from : $from-direction,
220
+ $style : fix-static-misalignment()
221
+ ) {
222
+ $from : unquote($from);
223
+ $to : opposite-position($from);
224
+ $hack : opposite-position($omega-float);
225
+
226
+ float: $from;
227
+ margin-#{$to}: gutter($context, $style);
228
+
229
+ @if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
230
+ *margin-#{$hack}: auto;
231
+ }
232
+ }
233
+
234
+ // Shortcut to apply remove-omega to a specific subset of elements.
235
+ //
236
+ // $n : [first | only | last | <equation>]
237
+ // $selector : [child | last-child | of-type | last-of-type ]
238
+ // $context : [optional] The context (columns spanned by parent).
239
+ // $from : The start-direction for your document.
240
+ // $style : The container style to use.
241
+ @mixin remove-nth-omega(
242
+ $n : last,
243
+ $selector : child,
244
+ $context : $total-columns,
245
+ $from : $from-direction,
246
+ $style : fix-static-misalignment()
247
+ ) {
248
+ $from : unquote($from);
249
+ $ie: if($n == "first", true, false);
250
+ @include adjust-support-for($ie6: $ie, $ie7: $ie, $ie8: $ie) {
251
+ &:#{format-nth($n,$selector)} {
252
+ @include remove-omega($context, $from, $style);
253
+ }
254
+ }
255
+ }
256
+
257
+ // ---------------------------------------------------------------------------
258
+ // Change Settings
259
+
260
+ @mixin with-grid-settings(
261
+ $columns: $total-columns,
262
+ $width: $column-width,
263
+ $gutter: $gutter-width,
264
+ $padding: $grid-padding
265
+ ) {
266
+ // keep the defaults around
267
+ $default-columns: $total-columns;
268
+ $default-width: $column-width;
269
+ $default-gutter: $gutter-width;
270
+ $default-padding: $grid-padding;
271
+
272
+ // use the new settings
273
+ $total-columns: $columns;
274
+ $column-width: $width;
275
+ $gutter-width: $gutter;
276
+ $grid-padding: $padding;
277
+
278
+ // apply to contents
279
+ @content;
280
+
281
+ // re-instate the defaults
282
+ $total-columns: $default-columns;
283
+ $column-width: $default-width;
284
+ $gutter-width: $default-gutter;
285
+ $grid-padding: $default-padding;
286
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_isolation.scss ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Isolation
3
+
4
+ // Isolate the position of a grid element (use in addition to span-columns)
5
+ //
6
+ // $location : The grid column to isolate in, relative to the container;
7
+ // $context : [optional] The context (columns spanned by parent).
8
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
9
+ @mixin isolate(
10
+ $location,
11
+ $context: $total-columns,
12
+ $from: $from-direction,
13
+ $style: fix-static-misalignment()
14
+ ) {
15
+ $to: opposite-position($from);
16
+ margin-#{$to}: -100%;
17
+ margin-#{$from}: space($location - 1, $context, $style);
18
+ }
19
+
20
+ // Isolate a group of elements in a grid, using nth-child selectors
21
+ //
22
+ // $columns : The column-width of each item on the grid;
23
+ // $context : [optional] The context (columns spanned by parent).
24
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
25
+ @mixin isolate-grid(
26
+ $columns,
27
+ $context: $total-columns,
28
+ $from: $from-direction,
29
+ $style: fix-static-misalignment()
30
+ ) {
31
+ $to: opposite-position($from);
32
+ $location: 1;
33
+ $line: floor($context / $columns);
34
+
35
+ @include span-columns($columns, $context, $from: $from, $style: $style);
36
+ margin-#{$to}: -100%;
37
+
38
+ @for $item from 1 through $line {
39
+ $nth: '#{$line}n + #{$item}';
40
+ &:nth-child(#{$nth}) {
41
+ margin-#{$from}: space($location - 1, $context, $style);
42
+ @if $location == 1 { clear: $from; }
43
+
44
+ $location: $location + $columns;
45
+ @if $location > $context { $location: 1; }
46
+ }
47
+ }
48
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_margin.scss ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Margin Mixins
3
+
4
+ // Apply 'columns' margin before an element to push it along the grid.
5
+ //
6
+ // $columns : The number of columns to span.
7
+ // $context : [optional] The context (columns spanned by parent).
8
+ // : Context is required on any nested elements.
9
+ // : Context MUST NOT be declared on a root element.
10
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
11
+ // $style : The container style to use.
12
+ @mixin pre(
13
+ $columns,
14
+ $context : $total-columns,
15
+ $from : $from-direction,
16
+ $style : fix-static-misalignment()
17
+ ) {
18
+ $from : unquote($from);
19
+ margin-#{$from}: space($columns, $context, $style);
20
+ }
21
+
22
+ // 'push' is a synonymn for 'pre'
23
+ @mixin push(
24
+ $columns,
25
+ $context : $total-columns,
26
+ $from : $from-direction,
27
+ $style : fix-static-misalignment()
28
+ ) {
29
+ $from : unquote($from);
30
+ @include pre($columns, $context, $from, $style);
31
+ }
32
+
33
+ // Apply negative 'columns' margin before an element to pull it along the grid.
34
+ //
35
+ // $columns : The number of columns to span.
36
+ // $context : [optional] The context (columns spanned by parent).
37
+ // : Context is required on any nested elements.
38
+ // : Context MUST NOT be declared on a root element.
39
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
40
+ // $style : The container style to use.
41
+ @mixin pull(
42
+ $columns,
43
+ $context : $total-columns,
44
+ $from : $from-direction,
45
+ $style : fix-static-misalignment()
46
+ ) {
47
+ $from : unquote($from);
48
+ margin-#{$from}: 0 - space($columns, $context, $style);
49
+ }
50
+
51
+ // Apply 'columns' margin after an element to contain it in a grid.
52
+ //
53
+ // $columns : The number of columns to span.
54
+ // $context : [optional] The context (columns spanned by parent).
55
+ // : Context is required on any nested elements.
56
+ // : Context MUST NOT be declared on a root element.
57
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
58
+ // $style : The container style to use.
59
+ @mixin post(
60
+ $columns,
61
+ $context : $total-columns,
62
+ $from : $from-direction,
63
+ $style : fix-static-misalignment()
64
+ ) {
65
+ $from : unquote($from);
66
+ $to : opposite-position($from);
67
+ margin-#{$to}: space($columns, $context, $style);
68
+ }
69
+
70
+ // Apply 'columns' before and/or after an element to contain it on a grid.
71
+ //
72
+ // $pre : The number of columns to add as margin before.
73
+ // $post : The number of columns to add as margin after.
74
+ // $context : [optional] The context (columns spanned by parent).
75
+ // : Context is required on any nested elements.
76
+ // : Context MUST NOT be declared on a root element.
77
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
78
+ // $style : The container style to use.
79
+ @mixin squish(
80
+ $pre : false,
81
+ $post : false,
82
+ $context : $total-columns,
83
+ $from : $from-direction,
84
+ $style : fix-static-misalignment()
85
+ ) {
86
+ $from : unquote($from);
87
+ @if $pre {
88
+ @include pre($pre, $context, $from, $style)
89
+ }
90
+ @if $post {
91
+ @include post($post, $context, $from, $style)
92
+ }
93
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_media.scss ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Media Mixins
3
+
4
+ // Create a new layout context for (@content) descendants.
5
+ //
6
+ // $layout-cols : a (unitless) number of columns to use for this layout.
7
+ @mixin layout(
8
+ $layout-cols
9
+ ) {
10
+ // store default $total-columns setting for later, then change it.
11
+ $default-layout : $total-columns;
12
+ $total-columns : $layout-cols;
13
+
14
+ // apply children in this new layout context.
15
+ @content;
16
+
17
+ // return to default $total-columns setting.
18
+ $total-columns : $default-layout;
19
+ }
20
+
21
+ // Nest a block of code inside a new media-query and layout context.
22
+ //
23
+ // $media-layout : a list of values [$min $layout $max $ie] including...
24
+ // : - one unitless number (columns in a layout)
25
+ // : - two optional lengths (min and max-width media-query breakpoints).
26
+ // : - one optional boolean or string to trigger fallback support for IE.
27
+ // $font-size : [optional] The base font-size of your layout, if you are using ems.
28
+ // : - defaults to $base-font-size
29
+ @mixin at-breakpoint(
30
+ $media-layout,
31
+ $font-size: $base-font-size
32
+ ) {
33
+ $media-layout : medialayout($media-layout,$font-size);
34
+ $min : nth($media-layout,1);
35
+ $layout : nth($media-layout,2);
36
+ $max : nth($media-layout,3);
37
+ $ie : nth($media-layout,4);
38
+
39
+ @if (not $breakpoint-media-output) and (not $breakpoint-ie-output) and (not $breakpoint-raw-output) {
40
+ @warn "Either $breakpoint-media-output, $breakpoint-ie-output, or $breakpoint-raw-output must be true for at-breakpoint to work.";
41
+ }
42
+
43
+ // We need to have either a min-width breakpoint or a layout in order to proceed.
44
+ @if $min or $layout or $max {
45
+
46
+ // If we don't have a layout, we create one based on the min-width.
47
+ @if not $layout {
48
+ $layout: get-layout($min);
49
+ }
50
+
51
+ // If we still don't have a layout, we have a problem.
52
+ @if $layout {
53
+ // Set our new layout context.
54
+ @include layout($layout) {
55
+ @if $breakpoint-media-output {
56
+ // Capture current state of ie support and set new
57
+ $atbreak-legacy-ie-matrix: capture-legacy-ie-matrix();
58
+ @include set-legacy-ie-support;
59
+
60
+ @if $min and $max {
61
+ // Both $min and $max
62
+ @media (min-width: $min) and (max-width: $max) {
63
+ @content;
64
+ }
65
+ } @else {
66
+ @if (not $min) and (not $max) {
67
+ // Neither $min nor $max:
68
+ // We can create a breakpoint based on the number of columns in the layout.
69
+ $min: fix-ems(container-outer-width($width: false));
70
+ }
71
+ @if $min {
72
+ // Min only:
73
+ @media (min-width: $min) {
74
+ @content;
75
+ }
76
+ } @else {
77
+ // Max only:
78
+ @media (max-width: $max) {
79
+ @content;
80
+ }
81
+ }
82
+ }
83
+ // Return legacy-ie support to original
84
+ @include set-legacy-ie-support($atbreak-legacy-ie-matrix...);
85
+ }
86
+ // Set an IE fallback
87
+ @if $ie and $breakpoint-ie-output {
88
+ @if (type-of($ie) == 'bool') {
89
+ $ie: 'lt-ie9';
90
+ }
91
+ .#{$ie} & {
92
+ $atbreak-experimental-matrix: capture-experimental-matrix();
93
+ @include set-experimental-support($ms: true);
94
+ @content;
95
+ @include set-experimental-support($atbreak-experimental-matrix...);
96
+ }
97
+ }
98
+
99
+ @if $breakpoint-raw-output {
100
+ @content;
101
+ }
102
+ }
103
+ } @else {
104
+ @warn "Something went horribly wrong here. Try adjusting your variables.";
105
+ }
106
+
107
+ } @else {
108
+ @warn "You need to provide either a valid layout (number of columns)
109
+ or a valid media-query min-width breakpoint (length).";
110
+ }
111
+
112
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_padding.scss ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Padding Mixins
3
+
4
+ // add empty colums as padding before an element.
5
+ // $columns : The number of columns to prefix.
6
+ // $context : [optional] The context (columns spanned by parent).
7
+ // : Context is required on any nested elements.
8
+ // : Context MUST NOT be declared on a root element.
9
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
10
+ // $style : The container style to use.
11
+ @mixin prefix(
12
+ $columns,
13
+ $context : $total-columns,
14
+ $from : $from-direction,
15
+ $style : fix-static-misalignment()
16
+ ) {
17
+ $from : unquote($from);
18
+ padding-#{$from}: space($columns, $context, $style);
19
+ }
20
+
21
+ // add empty colums as padding after an element.
22
+ // $columns : The number of columns to suffix.
23
+ // $context : [optional] The context (columns spanned by parent).
24
+ // : Context is required on any nested elements.
25
+ // : Context MUST NOT be declared on a root element.
26
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
27
+ // $style : The container style to use.
28
+ @mixin suffix(
29
+ $columns,
30
+ $context : $total-columns,
31
+ $from : $from-direction,
32
+ $style : fix-static-misalignment()
33
+ ) {
34
+ $from : unquote($from);
35
+ $to : opposite-position($from);
36
+ padding-#{$to}: space($columns, $context, $style);
37
+ }
38
+
39
+ // add empty colums as padding before and after an element.
40
+ // $columns : The number of columns to pad.
41
+ // $context : [optional] The context (columns spanned by parent).
42
+ // : Context is required on any nested elements.
43
+ // : Context MUST NOT be declared on a root element.
44
+ // $from : The start direction of your layout (e.g. 'left' for ltr languages)
45
+ // $style : The container style to use.
46
+ @mixin pad(
47
+ $prefix : false,
48
+ $suffix : false,
49
+ $context : $total-columns,
50
+ $from : $from-direction,
51
+ $style : fix-static-misalignment()
52
+ ) {
53
+ $from : unquote($from);
54
+ @if $prefix {
55
+ @include prefix($prefix, $context, $from, $style);
56
+ }
57
+ @if $suffix {
58
+ @include suffix($suffix, $context, $from, $style);
59
+ }
60
+ }
61
+
62
+ // Bleed into colums with margin/padding on any side of an element.
63
+ // $width : The side of the bleed.
64
+ // : Any unit-length will be used directly.
65
+ // : Any unitless number will be used as a column-count.
66
+ // : Use "2 of 6" format to represent 2 cals in a 6-col nested context.
67
+ // $sides : One or more sides to bleed [ top | right | bottom | left | all ].
68
+ // $style : The container style to use.
69
+ @mixin bleed(
70
+ $width: $grid-padding,
71
+ $sides: left right,
72
+ $style: fix-static-misalignment()
73
+ ) {
74
+ @if $border-box-sizing { @include box-sizing(content-box) }
75
+
76
+ @if type-of($width) == 'list' {
77
+ $width: filter($width, of);
78
+ $width: space(nth($width,1), nth($width,2), $style);
79
+ } @else if unitless($width) {
80
+ $width: space($width, $style: $style);
81
+ }
82
+
83
+ @if $sides == 'all' {
84
+ margin: - $width;
85
+ padding: $width;
86
+ } @else {
87
+ @each $side in $sides {
88
+ margin-#{$side}: - $width;
89
+ padding-#{$side}: $width;
90
+ }
91
+ }
92
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_settings.scss ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ---------------------------------------------------------------------------
2
+ // Susy Settings
3
+
4
+ // The total number of columns in the grid
5
+ $total-columns : 12 !default;
6
+
7
+ // The width of columns and gutters.
8
+ // These must all be set with the comparable units.
9
+ $column-width : 4em !default;
10
+ $gutter-width : 1em !default;
11
+
12
+ // Padding on the left and right of a Grid Container.
13
+ $grid-padding : $gutter-width !default;
14
+
15
+ // ---------------------------------------------------------------------------
16
+ // Advanced Settings
17
+
18
+ // From Direction:
19
+ // Controls for right-to-left or bi-directional sites.
20
+ $from-direction : left !default;
21
+
22
+ // Omega Float Direction:
23
+ // The direction that +omega elements are floated by deafult.
24
+ $omega-float : opposite-position($from-direction) !default;
25
+
26
+ // Container Width:
27
+ // Override the total width of your grid, using any length (50em, 75%, etc.)
28
+ $container-width : false !default;
29
+
30
+ // Container Style:
31
+ // 'magic' - Static (fixed or elastic) when there's enough space,
32
+ // fluid when there isn't. This is the SUSY MAGIC SAUCE(TM).
33
+ // 'static' - Forces the grid container to remain static at all times.
34
+ // 'fluid' - Forces the grid to remain fluid at all times.
35
+ // (this will overrule any static $container-width settings)
36
+ $container-style : magic !default;
37
+
38
+ // Border-Box Sizing
39
+ // Adjust the grid math appropriately for box-sizing: border-box;
40
+ // Warning: This does not actually apply the new box model!
41
+ // In most cases you can ignore this setting,
42
+ // and simply apply the border-box-sizing mixin.
43
+ $border-box-sizing : false !default;
44
+
45
+ // ---------------------------------------------------------------------------
46
+ // IE Settings
47
+
48
+ // When you are using a seperate IE stylesheet,
49
+ // you can use these settings to control the output of at-breakpoint.
50
+ // By default, at-breakpoint will output media-queries as well as
51
+ // any defined ie-fallback classes.
52
+ $breakpoint-media-output : true !default;
53
+ $breakpoint-ie-output : true !default;
54
+
55
+ // Danger Zone! Only set as 'true' in IE-specific style sheets.
56
+ $breakpoint-raw-output : false !default;
lib/phpsass/Extensions/Susy/stylesheets/susy/_support.scss ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // @@@ These helpers only live here until they land in Compass.
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // Imports
5
+
6
+ @import "compass/support";
7
+
8
+ // ---------------------------------------------------------------------------
9
+ // Helpers
10
+
11
+ // A debug tool for checking browser support
12
+ @mixin debug-support-matrix($experimental: true, $ie: true) {
13
+ @debug #{'$moz-'}$experimental-support-for-mozilla
14
+ #{'$webkit-'}$experimental-support-for-webkit
15
+ #{'$microsoft-'}$experimental-support-for-microsoft
16
+ #{'$opera-'}$experimental-support-for-opera
17
+ #{'$khtml-'}$experimental-support-for-khtml;
18
+ @debug #{'$ie6-'}$legacy-support-for-ie6
19
+ #{'$ie7-'}$legacy-support-for-ie7
20
+ #{'$ie8-'}$legacy-support-for-ie8;
21
+ }
22
+
23
+ // Capture the current exerimental support settings
24
+ @function capture-experimental-matrix() {
25
+ @return $experimental-support-for-mozilla
26
+ $experimental-support-for-webkit
27
+ $experimental-support-for-microsoft
28
+ $experimental-support-for-opera
29
+ $experimental-support-for-khtml;
30
+ }
31
+
32
+ // Capture the current legacy-ie support settings
33
+ @function capture-legacy-ie-matrix() {
34
+ @return $legacy-support-for-ie6
35
+ $legacy-support-for-ie7
36
+ $legacy-support-for-ie8;
37
+ }
38
+
39
+ // Capture and store support
40
+ $experimental-matrix: capture-experimental-matrix();
41
+ $legacy-ie-matrix: capture-legacy-ie-matrix();
42
+
43
+ @mixin capture-experimental-matrix {
44
+ $experimental-matrix: capture-experimental-matrix();
45
+ }
46
+
47
+ @mixin capture-legacy-ie-matrix {
48
+ $legacy-ie-matrix: capture-legacy-ie-matrix();
49
+ }
50
+
51
+ @mixin capture-support-matrix {
52
+ @include capture-experimental-matrix;
53
+ @include capture-legacy-ie-matrix;
54
+ }
55
+
56
+ // Change the experimental-support settings in specific contexts.
57
+ @mixin set-experimental-support(
58
+ $moz : false,
59
+ $webkit : false,
60
+ $ms : false,
61
+ $o : false,
62
+ $khtml : false
63
+ ) {
64
+ $experimental-support-for-mozilla : $moz;
65
+ $experimental-support-for-webkit : $webkit;
66
+ $experimental-support-for-microsoft : $ms;
67
+ $experimental-support-for-opera : $o;
68
+ $experimental-support-for-khtml : $khtml;
69
+ }
70
+
71
+ @mixin capture-and-set-experimental(
72
+ $moz : false,
73
+ $webkit : false,
74
+ $ms : false,
75
+ $o : false,
76
+ $khtml : false
77
+ ) {
78
+ @include capture-experimental-matrix;
79
+ @include set-experimental-support($moz, $webkit, $ms, $o, $khtml);
80
+ }
81
+
82
+ @mixin capture-and-adjust-experimental(
83
+ $moz : $experimental-support-for-mozilla,
84
+ $webkit : $experimental-support-for-webkit,
85
+ $ms : $experimental-support-for-microsoft,
86
+ $o : $experimental-support-for-opera,
87
+ $khtml : $experimental-support-for-khtml
88
+ ) {
89
+ @include capture-experimental-matrix;
90
+ @include set-experimental-support($moz, $webkit, $ms, $o, $khtml);
91
+ }
92
+
93
+ // Change the legacy-support-for-ie* settings in specific contexts.
94
+ @mixin set-legacy-ie-support(
95
+ $ie6: false,
96
+ $ie7: false,
97
+ $ie8: false
98
+ ) {
99
+ $legacy-support-for-ie6: $ie6;
100
+ $legacy-support-for-ie7: $ie7;
101
+ $legacy-support-for-ie8: $ie8;
102
+ }
103
+
104
+ @mixin capture-and-set-legacy-ie(
105
+ $ie6: false,
106
+ $ie7: false,
107
+ $ie8: false
108
+ ) {
109
+ @include capture-legacy-ie-matrix;
110
+ @include set-legacy-ie-support($ie6, $ie7, $ie8);
111
+ }
112
+
113
+ @mixin capture-and-adjust-legacy-ie(
114
+ $ie6: $legacy-support-for-ie6,
115
+ $ie7: $legacy-support-for-ie7,
116
+ $ie8: $legacy-support-for-ie8
117
+ ) {
118
+ @include capture-and-set-legacy-ie($ie6, $ie7, $ie8);
119
+ }
120
+
121
+ // Capture current browser support matrix, and set a new matrix of support.
122
+ @mixin capture-and-set-support(
123
+ $moz : false,
124
+ $webkit : false,
125
+ $ms : false,
126
+ $o : false,
127
+ $khtml : false,
128
+ $ie6 : false,
129
+ $ie7 : false,
130
+ $ie8 : false
131
+ ) {
132
+ // Capture the current state
133
+ @include capture-support-matrix;
134
+
135
+ // Change support settings
136
+ @include set-experimental-support($moz, $webkit, $ms, $o, $khtml);
137
+ @include set-legacy-ie-support($ie6, $ie7, $ie8);
138
+ }
139
+
140
+ // Capture current browser support matrix, and set a new matrix of support.
141
+ @mixin capture-and-adjust-support(
142
+ $moz : $experimental-support-for-mozilla,
143
+ $webkit : $experimental-support-for-webkit,
144
+ $ms : $experimental-support-for-microsoft,
145
+ $o : $experimental-support-for-opera,
146
+ $khtml : $experimental-support-for-khtml,
147
+ $ie6 : $legacy-support-for-ie6,
148
+ $ie7 : $legacy-support-for-ie7,
149
+ $ie8 : $legacy-support-for-ie8
150
+ ) {
151
+ @include capture-and-set-support($moz, $webkit, $ms, $o, $khtml, $ie6, $ie7, $ie8);
152
+ }
153
+
154
+
155
+ // This mixin allows you to change the experimental support settings for
156
+ // child (@content) styles.
157
+ @mixin with-only-support-for(
158
+ $moz : false,
159
+ $webkit : false,
160
+ $ms : false,
161
+ $o : false,
162
+ $khtml : false,
163
+ $ie6 : false,
164
+ $ie7 : false,
165
+ $ie8 : false
166
+ ) {
167
+ // Capture current state
168
+ $wo-experimental-matrix : capture-experimental-matrix();
169
+ $wo-legacy-ie-matrix : capture-legacy-ie-matrix();
170
+
171
+ // Set new states
172
+ @include set-experimental-support($moz, $webkit, $ms, $o, $khtml);
173
+ @include set-legacy-ie-support($ie6, $ie7, $ie8);
174
+
175
+ // Apply styles
176
+ @content;
177
+
178
+ // Return to original support settings
179
+ @include set-experimental-support($wo-experimental-matrix...);
180
+ @include set-legacy-ie-support($wo-legacy-ie-matrix...);
181
+ }
182
+
183
+ // This mixin is a shortcut for making slight adjustments to browser support
184
+ // for child (@content) styles
185
+ @mixin adjust-support-for(
186
+ $moz : $experimental-support-for-mozilla,
187
+ $webkit : $experimental-support-for-webkit,
188
+ $ms : $experimental-support-for-microsoft,
189
+ $o : $experimental-support-for-opera,
190
+ $khtml : $experimental-support-for-khtml,
191
+ $ie6 : $legacy-support-for-ie6,
192
+ $ie7 : $legacy-support-for-ie7,
193
+ $ie8 : $legacy-support-for-ie8
194
+ ) {
195
+ @include with-only-support-for($moz, $webkit, $ms, $o, $khtml, $ie6, $ie7, $ie8) {
196
+ @content;
197
+ }
198
+ }
lib/phpsass/Extensions/Susy/stylesheets/susy/_units.scss ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // @private Default font-size for all browsers
2
+ $browser-default-font-size: 16px;
3
+
4
+ // Base font size in pixels, if not already defined.
5
+ // Should be the same as the font-size of the html element.
6
+ $base-font-size: 16px !default;
7
+
8
+ // Whether to output fallback values in px when outputting rems.
9
+ $rem-with-px-fallback: true !default;
10
+
11
+ // Convert any CSS <length> or <percentage> value to any another.
12
+ //
13
+ // @param $length
14
+ // A css <length> or <percentage> value
15
+ //
16
+ // @param $to-unit
17
+ // String matching a css unit keyword, e.g. 'em', '%', etc.
18
+ //
19
+ // @param $from-context
20
+ // When converting from relative units, the absolute length (in px) to
21
+ // which $length refers (e.g. for $lengths in em units, would normally be the
22
+ // font-size of the current element).
23
+ //
24
+ // @param $to-context
25
+ // For converting to relative units, the absolute length in px to which the
26
+ // output value will refer. Defaults to the same as $from-context, since it is
27
+ // rarely needed.
28
+ @function convert-length(
29
+ $length,
30
+ $to-unit,
31
+ $from-context: $base-font-size,
32
+ $to-context: $from-context
33
+ ) {
34
+
35
+ $from-unit: unit($length);
36
+
37
+ // Optimize for cases where `from` and `to` units are accidentally the same.
38
+ @if $from-unit == $to-unit { @return $length; }
39
+
40
+ // Context values must be in px so we can determine a conversion ratio for
41
+ // relative units.
42
+ @if unit($from-context) != 'px' { @warn "Paremeter $from-context must resolve to a value in pixel units."; }
43
+ @if unit($to-context) != 'px' { @warn "Parameter $to-context must resolve to a value in pixel units."; }
44
+
45
+ // Convert input length to pixels
46
+ $px-length: $length;
47
+
48
+ @if $from-unit != 'px' {
49
+ // Convert relative units using the from-context parameter.
50
+ @if $from-unit == 'em' { $px-length: $length * $from-context / 1em }
51
+ @else if $from-unit == 'rem' { $px-length: $length * $base-font-size / 1rem }
52
+ @else if $from-unit == '%' { $px-length: $length * $from-context / 100% }
53
+ @else if $from-unit == 'ex' { $px-length: $length * $from-context / 2ex }
54
+ // Convert absolute units using Sass' conversion table.
55
+ @else if $from-unit == 'in' or
56
+ $from-unit == 'mm' or
57
+ $from-unit == 'cm' or
58
+ $from-unit == 'pt' or
59
+ $from-unit == 'pc' { $px-length: 0px + $length }
60
+ // Certain units can't be converted.
61
+ @else if $from-unit == 'ch' or
62
+ $from-unit == 'vw' or
63
+ $from-unit == 'vh' or
64
+ $from-unit == 'vmin' {
65
+ @warn "#{$from-unit} units can't be reliably converted; Returning original value.";
66
+ @return $length;
67
+ }
68
+ @else {
69
+ @warn "#{$from-unit} is an unknown length unit. Returning original value.";
70
+ @return $length;
71
+ }
72
+ }
73
+
74
+ // Convert length in pixels to the output unit
75
+ $output-length: $px-length;
76
+ @if $to-unit != 'px' {
77
+ // Relative units
78
+ @if $to-unit == 'em' { $output-length: $px-length * 1em / $to-context }
79
+ @else if $to-unit == 'rem' { $output-length: $px-length * 1rem / $base-font-size }
80
+ @else if $to-unit == '%' { $output-length: $px-length * 100% / $to-context }
81
+ @else if $to-unit == 'ex' { $output-length: $px-length * 2ex / $to-context }
82
+ // Absolute units
83
+ @else if $to-unit == 'in' { $output-length: 0in + $px-length }
84
+ @else if $to-unit == 'mm' { $output-length: 0mm + $px-length }
85
+ @else if $to-unit == 'cm' { $output-length: 0cm + $px-length }
86
+ @else if $to-unit == 'pt' { $output-length: 0pt + $px-length }
87
+ @else if $to-unit == 'pc' { $output-length: 0pc + $px-length }
88
+ // Non-convertible units
89
+ @else if $to-unit == 'ch' or
90
+ $to-unit == 'vw' or
91
+ $to-unit == 'vh' or
92
+ $to-unit == 'vmin' {
93
+ @warn "#{$to-unit} units can't be reliably converted; Returning original value.";
94
+ @return $length;
95
+ }
96
+ @else {
97
+ @warn "#{$to-unit} is an unknown length unit. Returning original value.";
98
+ @return $length;
99
+ }
100
+ }
101
+
102
+ @return $output-length;
103
+ }
104
+
105
+
106
+ // Output a given style rule containing rem values along with an (optional)
107
+ // fallback rule for older browsers (with rem values converted to px).
108
+ //
109
+ // @param $property
110
+ // The css property name.
111
+ //
112
+ // @param $values
113
+ // The value (or space-separated list of values) for the property.
114
+ //
115
+ // @param $use-px-fallback
116
+ // [ true | false ]
117
+ //
118
+ @mixin rem($property, $values, $use-px-fallback: $rem-with-px-fallback) {
119
+ // Create a couple of empty lists as output buffers.
120
+ $px-values: ();
121
+ $rem-values: ();
122
+
123
+ // Loop through the $values list
124
+ @each $value in $values {
125
+ // For each property value, if it's in rem or px, derive both rem and
126
+ // px values for it and add those to the end of the appropriate buffer.
127
+ // Ensure all pixel values are rounded to the nearest pixel.
128
+ @if type-of($value) == number and not unitless($value) and (unit($value) == px or unit($value) == rem) {
129
+ @if unit($value) == px {
130
+ $px-values: join($px-values, round($value));
131
+ $rem-values: join($rem-values, convert-length($value, rem));
132
+ }
133
+ @else {
134
+ $px-values: join($px-values, round(convert-length($value, px)));
135
+ $rem-values: join($rem-values, $value);
136
+ }
137
+ }
138
+ @else {
139
+ $px-values: join($px-values, $value);
140
+ $rem-values: join($rem-values, $value);
141
+ }
142
+ }
143
+
144
+ // Use pixel fallback for browsers that don't understand rem units.
145
+ @if $use-px-fallback {
146
+ #{$property}: $px-values;
147
+ }
148
+
149
+ // Use rem values for everyone else (overrides pixel values).
150
+ #{$property}: $rem-values;
151
+ }
152
+
153
+ @mixin if-rem($property, $values, $use-px-fallback: $rem-with-px-fallback) {
154
+ $has-rem: false;
155
+ @each $value in $values { $has-rem: if(unit($value) == 'rem', true, $has-rem); }
156
+ @if $has-rem { @include rem($property, $values, $use-px-fallback); }
157
+ @else { #{$property}: $values; }
158
+ }
159
+
lib/phpsass/Extensions/example.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ function loadCallback($file, $parser)
3
+ {
4
+ $paths = array();
5
+ foreach ($parser->extensions as $extensionName) {
6
+ $namespace = ucwords(preg_replace('/[^0-9a-z]+/', '_', strtolower($extensionName)));
7
+ $extensionPath = './' . $namespace . '/' . $namespace . '.php';
8
+ if (file_exists($extensionPath)) {
9
+ require_once($extensionPath);
10
+ $hook = $namespace . '::resolveExtensionPath';
11
+ $returnPath = call_user_func($hook, $file, $parser);
12
+ if (!empty($returnPath)) {
13
+ $paths[] = $returnPath;
14
+ }
15
+
16
+ }
17
+ }
18
+ return $paths;
19
+ }
20
+
21
+
22
+ function getFunctions($extensions)
23
+ {
24
+ $output = array();
25
+ if (!empty($extensions)) {
26
+ foreach ($extensions as $extension) {
27
+ $name = explode('/', $extension, 2);
28
+ $namespace = ucwords(preg_replace('/[^0-9a-z]+/', '_', strtolower(array_shift($name))));
29
+ $extensionPath = './' . $namespace . '/' . $namespace . '.php';
30
+ if (file_exists(
31
+ $extensionPath
32
+ )
33
+ ) {
34
+ require_once($extensionPath);
35
+ $namespace = $namespace . '::';
36
+ $function = 'getFunctions';
37
+ $output = array_merge($output, call_user_func($namespace . $function, $namespace));
38
+ }
39
+ }
40
+ }
41
+
42
+ return $output;
43
+ }
44
+
45
+
46
+ $file = 'example.scss';
47
+ $path = '../';
48
+ $library = $path . '/SassParser.php';
49
+
50
+ if ($path && file_exists($library)) {
51
+
52
+
53
+ try {
54
+ require_once ($library);
55
+
56
+ $options = array(
57
+ 'style' => 'expanded',
58
+ 'cache' => false,
59
+ 'syntax' => 'scss',
60
+ 'debug' => false,
61
+ 'debug_info' => false,
62
+ 'load_path_functions' => array('loadCallback'),
63
+ 'load_paths' => array(dirname($file)),
64
+ 'functions' => getFunctions(array('Compass','Own')),
65
+ 'extensions' => array('Compass','Own')
66
+ );
67
+ // Execute the compiler.
68
+ $parser = new SassParser($options);
69
+ print $parser->toCss($file);
70
+ } catch (Exception $e) {
71
+ print "body::before {
72
+ display: block;
73
+ padding: 5px;
74
+ white-space: pre;
75
+ font-family: monospace;
76
+ font-size: 8pt;
77
+ line-height: 17px;
78
+ overflow: hidden;
79
+ content: '" . $e->getMessage() . "';
80
+ }";
81
+ }
82
+ } else {
83
+ echo 'Path or library are wrong';
84
+ }
85
+
86
+
lib/phpsass/Extensions/example.scss ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ @import "test";
2
+ @import "compass/compass";
3
+
4
+
5
+ body {
6
+ content: demo-function();
7
+ @include border-radius();
8
+ }
lib/phpsass/Extensions/theme.scss ADDED
@@ -0,0 +1 @@
 
1
+ $blue:#fff;
lib/phpsass/README.md CHANGED
@@ -1,8 +1,7 @@
1
- #IMPORTANT NOTICE
2
- We are evaluating wether to switch to using namespaces for better PSR compliance. To help with this, can you tweet or email me (richthegeek@gmail.com) with which version of PHP you are using.
3
-
4
 
5
- #PHPSass [![build status](https://secure.travis-ci.org/richthegeek/phpsass.png)](https://secure.travis-ci.org/#!/richthegeek/phpsass)
 
6
 
7
  ## Try online
8
  You can compile and compare SCSS against the ruby compiler at <http://phpsass.com/try>
1
+ #PHPSass [![build status](https://travis-ci.org/richthegeek/phpsass.png)](https://travis-ci.org/richthegeek/phpsass) [![GiTip donations gladly recieved](https://www.gittip.com/assets/8.0.15/logo.png)](https://www.gittip.com/richthegeek/)
 
 
2
 
3
+ #IMPORTANT NOTICE
4
+ We will soon be implementing PSR standards, and so compatibility requirements will move to PHP 5.3. A separate branch will be made for older versions, although it may not be updated.
5
 
6
  ## Try online
7
  You can compile and compare SCSS against the ruby compiler at <http://phpsass.com/try>
lib/phpsass/SassFile.php CHANGED
@@ -141,7 +141,7 @@ class SassFile {
141
  $files = array_slice(scandir($dir), 2);
142
 
143
  foreach ($files as $file) {
144
- if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) {
145
  $path = self::find_file($filename, $dir . DIRECTORY_SEPARATOR . $file);
146
  if ($path !== false) {
147
  return $path;
141
  $files = array_slice(scandir($dir), 2);
142
 
143
  foreach ($files as $file) {
144
+ if (substr($file, 0, 1) != '.' && is_dir($dir . DIRECTORY_SEPARATOR . $file)) {
145
  $path = self::find_file($filename, $dir . DIRECTORY_SEPARATOR . $file);
146
  if ($path !== false) {
147
  return $path;
lib/phpsass/SassParser.php CHANGED
@@ -400,9 +400,23 @@ class SassParser {
400
  }
401
 
402
  if (is_array($source)) {
403
- $return = array();
404
- foreach ($source as $source_file) {
405
- $return = array_merge($return, $this->parse($source_file, TRUE));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  }
407
  return $return;
408
  }
400
  }
401
 
402
  if (is_array($source)) {
403
+ $return = null;
404
+ foreach ($source as $key => $value) {
405
+ if(is_numeric($key)){
406
+ $code = $value;
407
+ $type = true;
408
+ } else {
409
+ $code = $key;
410
+ $type = $value;
411
+ }
412
+ if($return===null){
413
+ $return = $this->parse($code, $type);
414
+ } else {
415
+ $newNode = $this->parse($code, $type);
416
+ foreach($newNode->children as $children){
417
+ array_push($return->children, $children);
418
+ }
419
+ }
420
  }
421
  return $return;
422
  }
lib/phpsass/VERSION CHANGED
@@ -1,3 +1,5 @@
 
 
1
  Version 201211282000 - Version bump to reflect multiple pull requests being merged over time.
2
  Version 201209040040 - Fixed a bunch of issues
3
  Version 201209031740 - Almost up to 3.2.1; Directive interp, splats, new functions, some fixes
1
+ Version 201306071300 - Version bump to reflect multiple merged pull requests
2
+ Version 201304222300 - Version bump to reflect multiple merged pull requests
3
  Version 201211282000 - Version bump to reflect multiple pull requests being merged over time.
4
  Version 201209040040 - Fixed a bunch of issues
5
  Version 201209031740 - Almost up to 3.2.1; Directive interp, splats, new functions, some fixes
lib/phpsass/script/SassScriptFunction.php CHANGED
@@ -20,8 +20,8 @@ class SassScriptFunction {
20
  /**@#+
21
  * Regexes for matching and extracting functions and arguments
22
  */
23
- const MATCH = '/^(((-\w)|(\w))[-\w]*)\(/';
24
- const MATCH_FUNC = '/^((?:(?:-\w)|(?:\w))[-\w]*)\((.*)\)/';
25
  const SPLIT_ARGS = '/\s*((?:[\'"].*?["\'])|(?:.+?(?:\(.*\).*?)?))\s*(?:,|$)/';
26
  const NAME = 1;
27
  const ARGS = 2;
@@ -254,13 +254,29 @@ class SassScriptFunction {
254
  }
255
 
256
  // print_r(array($required, $provided, $_required));
 
257
 
258
  foreach ($required as $name=>$default) {
 
 
 
 
 
259
  if (count($provided)) {
260
  $arg = array_shift($provided);
261
  }
262
  elseif ($default !== NULL) {
263
  $arg = $default;
 
 
 
 
 
 
 
 
 
 
264
  }
265
  else {
266
  throw new SassMixinNodeException("Function::$name: Required variable ($name) not given.\nFunction defined: " . $source->token->filename . '::' . $source->token->line . "\nFunction used", $source);
20
  /**@#+
21
  * Regexes for matching and extracting functions and arguments
22
  */
23
+ const MATCH = '/^(((-\w)|(\w))[-\w:.]*)\(/';
24
+ const MATCH_FUNC = '/^((?:(?:-\w)|(?:\w))[-\w:.]*)\((.*)\)/';
25
  const SPLIT_ARGS = '/\s*((?:[\'"].*?["\'])|(?:.+?(?:\(.*\).*?)?))\s*(?:,|$)/';
26
  const NAME = 1;
27
  const ARGS = 2;
254
  }
255
 
256
  // print_r(array($required, $provided, $_required));
257
+ $provided_copy = $provided;
258
 
259
  foreach ($required as $name=>$default) {
260
+ if ($default === null && strpos($name, '=') !== FALSE) {
261
+ list($name, $default) = explode('=', $name);
262
+ $name = trim($name);
263
+ $default = trim($default);
264
+ }
265
  if (count($provided)) {
266
  $arg = array_shift($provided);
267
  }
268
  elseif ($default !== NULL) {
269
  $arg = $default;
270
+
271
+ // for mixins with default values that refer to other arguments
272
+ // (e.g. border-radius($topright: 0, $bottomright: $topright, $bottomleft: $topright, $topleft: $topright)
273
+ if (is_string($default) && $default[0]=='$') {
274
+ $referred = trim(trim($default, '$'));
275
+ $pos = array_search($referred, array_keys($required));
276
+ if ($pos!==false && array_key_exists($pos, $provided_copy)) {
277
+ $arg = $provided_copy[$pos];
278
+ }
279
+ }
280
  }
281
  else {
282
  throw new SassMixinNodeException("Function::$name: Required variable ($name) not given.\nFunction defined: " . $source->token->filename . '::' . $source->token->line . "\nFunction used", $source);
lib/phpsass/script/SassScriptLexer.php CHANGED
@@ -92,6 +92,10 @@ class SassScriptLexer {
92
  $tokens[] = $stringed;
93
  }
94
  }
 
 
 
 
95
  elseif (($match = SassScriptOperation::isa($string)) !== false) {
96
  $tokens[] = new SassScriptOperation($match);
97
  }
92
  $tokens[] = $stringed;
93
  }
94
  }
95
+ elseif ($string == '()') {
96
+ $match = $string;
97
+ $tokens[] = new SassList($match);
98
+ }
99
  elseif (($match = SassScriptOperation::isa($string)) !== false) {
100
  $tokens[] = new SassScriptOperation($match);
101
  }
lib/phpsass/script/SassScriptOperation.php CHANGED
@@ -52,7 +52,7 @@ class SassScriptOperation {
52
  * @var array operators with meaning in uquoted strings;
53
  * selectors, property names and values
54
  */
55
- public static $inStrOperators = array(',', '#{');
56
 
57
  /**
58
  * @var array default operator token.
52
  * @var array operators with meaning in uquoted strings;
53
  * selectors, property names and values
54
  */
55
+ public static $inStrOperators = array(',', '#{', ')', '(');
56
 
57
  /**
58
  * @var array default operator token.
lib/phpsass/script/literals/SassBoolean.php CHANGED
@@ -55,6 +55,17 @@ class SassBoolean extends SassLiteral {
55
  return $this->getValue() ? 'true' : 'false';
56
  }
57
 
 
 
 
 
 
 
 
 
 
 
 
58
  /**
59
  * Returns a value indicating if a token of this type can be matched at
60
  * the start of the subject string.
55
  return $this->getValue() ? 'true' : 'false';
56
  }
57
 
58
+ public function length() {
59
+ return 1;
60
+ }
61
+
62
+ public function nth($i) {
63
+ if ($i == 1 && isset($this->value)) {
64
+ return new SassBoolean($this->value);
65
+ }
66
+ return new SassBoolean(false);
67
+ }
68
+
69
  /**
70
  * Returns a value indicating if a token of this type can be matched at
71
  * the start of the subject string.
lib/phpsass/script/literals/SassColour.php CHANGED
@@ -915,4 +915,13 @@ class SassColour extends SassLiteral {
915
  return (preg_match(self::$regex, strtolower($subject), $matches) ?
916
  $matches[0] : false);
917
  }
 
 
 
 
 
 
 
 
 
918
  }
915
  return (preg_match(self::$regex, strtolower($subject), $matches) ?
916
  $matches[0] : false);
917
  }
918
+
919
+ public function nth($i) {
920
+ if ($i == 1) return clone $this;
921
+ return new SassBoolean(false);
922
+ }
923
+
924
+ public function length() {
925
+ return 1;
926
+ }
927
  }
lib/phpsass/script/literals/SassList.php CHANGED
@@ -30,6 +30,10 @@ class SassList extends SassLiteral {
30
  $this->value = $value;
31
  $this->separator = ($separator == 'auto' ? ', ' : $separator);
32
  }
 
 
 
 
33
  else if (list($list, $separator) = $this->_parse_list($value, $separator, true, SassScriptParser::$context)) {
34
  $this->value = $list;
35
  $this->separator = ($separator == ',' ? ', ' : ' ');
@@ -130,6 +134,11 @@ class SassList extends SassLiteral {
130
  }
131
 
132
  public static function _parse_list($list, $separator = 'auto', $lex = true, $context = null) {
 
 
 
 
 
133
  if ($separator == 'auto') {
134
  $separator = ',';
135
  $list = $list = self::_build_list($list, ',');
30
  $this->value = $value;
31
  $this->separator = ($separator == 'auto' ? ', ' : $separator);
32
  }
33
+ else if ($value == '()'){
34
+ $this->value = array();
35
+ $this->separator = ($separator == 'auto' ? ', ' : $separator);
36
+ }
37
  else if (list($list, $separator) = $this->_parse_list($value, $separator, true, SassScriptParser::$context)) {
38
  $this->value = $list;
39
  $this->separator = ($separator == ',' ? ', ' : ' ');
134
  }
135
 
136
  public static function _parse_list($list, $separator = 'auto', $lex = true, $context = null) {
137
+ if ($lex) {
138
+ $context = new SassContext($context);
139
+ $list = SassScriptParser::$instance->evaluate($list, $context);
140
+ $list = $list->toString();
141
+ }
142
  if ($separator == 'auto') {
143
  $separator = ',';
144
  $list = $list = self::_build_list($list, ',');
lib/phpsass/script/literals/SassNumber.php CHANGED
@@ -535,4 +535,25 @@ class SassNumber extends SassLiteral {
535
  public static function isa($subject) {
536
  return (preg_match(self::MATCH, $subject, $matches) ? $matches[0] : false);
537
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
538
  }
535
  public static function isa($subject) {
536
  return (preg_match(self::MATCH, $subject, $matches) ? $matches[0] : false);
537
  }
538
+
539
+ /**
540
+ * Returns the number of values of SassNumber
541
+ * @return int
542
+ */
543
+ public function length() {
544
+ return count($this->value);
545
+ }
546
+
547
+ /**
548
+ * Returns the nth value of the SassNumber
549
+ * @param int - the nth position of value
550
+ * @return SassBoolean|SassNumber
551
+ */
552
+ public function nth($i) {
553
+ if ($i == 1 && isset($this->value)) {
554
+ return new SassNumber($this->value);
555
+ }
556
+ return new SassBoolean(false);
557
+ }
558
+
559
  }
lib/phpsass/test.php CHANGED
@@ -1,3 +1,4 @@
 
1
  <html>
2
  <head>
3
  <title>PHamlP Test Suite</title>
@@ -6,10 +7,6 @@
6
  <body>
7
  <?php
8
 
9
- /**
10
- * This file is horrible and not Drupal at all. Forgive me, I did not have time to write concise code.
11
- */
12
-
13
  /* Testing for Sassy.
14
  * Looks in tests* and compiles any .sass/.scss files
15
  * and compares to them to their twin .css files by
1
+ <!-- Just load this in a browser and the tests will run! -->
2
  <html>
3
  <head>
4
  <title>PHamlP Test Suite</title>
7
  <body>
8
  <?php
9
 
 
 
 
 
10
  /* Testing for Sassy.
11
  * Looks in tests* and compiles any .sass/.scss files
12
  * and compares to them to their twin .css files by
lib/phpsass/tests/alt.css CHANGED
@@ -1,16 +1,15 @@
1
  h1 {
2
- float: left;
3
- width: 274px;
4
- height: 75px;
5
- margin: 0;
6
- background-repeat: no-repeat;
7
- background-image: none; }
8
- h1 a:hover,
9
- h1 a:visited {
10
- color: green; }
11
- h1 b:hover {
12
- color: red;
13
- background-color: green; }
14
- h1 const {
15
- nosp: 3;
16
- sp: 3; }
1
  h1 {
2
+ float: left;
3
+ width: 274px;
4
+ height: 75px;
5
+ margin: 0;
6
+ background-repeat: no-repeat;
7
+ background-image: none; }
8
+ h1 a:hover, h1 a:visited {
9
+ color: green; }
10
+ h1 b:hover {
11
+ color: red;
12
+ background-color: green; }
13
+ h1 const {
14
+ nosp: 6/2;
15
+ sp: 3; }
 
lib/phpsass/tests/colour-nth.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ #colour-nth {
2
+ background: yellow; }
lib/phpsass/tests/colour-nth.scss ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ #colour-nth {
2
+ background: nth(#ff0, 1);
3
+ }
lib/phpsass/tests/extend_included.css ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ .error {
2
+ border: 1px #f00;
3
+ background-color: #fdd; }
lib/phpsass/tests/functions.css CHANGED
@@ -1,9 +1,69 @@
1
- foo,
2
- bar,
3
- foo + bar {
4
- content: 'one two' true;
5
- content: 'foo bar' true;
6
- content: 'foo two' true;
7
- content: 'one foo' true;
8
- content: bar foo true;
9
- adjust-color: #0000f0; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Syntax error: Positional arguments must come before keyword arguments.
3
+ on line 14 of functions.scss
4
+
5
+ 9: #{test()} {
6
+ 10: content: x() if(x() == 'one two', true, false);
7
+ 11: content: x('foo', 'bar') if(x('foo', 'bar') == 'foo bar', true, false);
8
+ 12: content: x('foo') if(x('foo') == 'foo two', true, false);
9
+ 13: content: x($two: 'foo') if(x($two: 'foo') == 'one foo', true, false);
10
+ 14: content: x($two: 'foo', bar) if(x($two: 'foo', bar) == bar foo, true, false);
11
+ 15: adjust-color: adjust-color(#00F, $blue: -15);
12
+ 16: }
13
+
14
+ Backtrace:
15
+ functions.scss:14
16
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:395:in `arglist'
17
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:370:in `fn_arglist'
18
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:332:in `funcall'
19
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:320:in `ident'
20
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:228:in `unary_not'
21
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:228:in `unary_div'
22
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:228:in `unary_minus'
23
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:228:in `unary_plus'
24
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:209:in `times_div_or_mod'
25
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:209:in `plus_or_minus'
26
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:209:in `relational'
27
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:209:in `eq_or_neq'
28
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:209:in `and_expr'
29
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:209:in `or_expr'
30
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:299:in `space'
31
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:284:in `interpolation'
32
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:247:in `expr'
33
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:470:in `assert_expr'
34
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/script/parser.rb:49:in `parse'
35
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:1008:in `sass_script'
36
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:868:in `value!'
37
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:845:in `declaration'
38
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:568:in `block in declaration_or_ruleset'
39
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:1108:in `call'
40
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:1108:in `rethrow'
41
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:578:in `declaration_or_ruleset'
42
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:540:in `block_child'
43
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:532:in `block_contents'
44
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:521:in `block'
45
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:515:in `ruleset'
46
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:539:in `block_child'
47
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:532:in `block_contents'
48
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:70:in `stylesheet'
49
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/scss/parser.rb:27:in `parse'
50
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/engine.rb:342:in `_to_tree'
51
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/engine.rb:315:in `_render'
52
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/engine.rb:262:in `render'
53
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/plugin/compiler.rb:341:in `update_stylesheet'
54
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/plugin/compiler.rb:203:in `block in update_stylesheets'
55
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/plugin/compiler.rb:201:in `each'
56
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/plugin/compiler.rb:201:in `update_stylesheets'
57
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/plugin.rb:81:in `update_stylesheets'
58
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/exec.rb:424:in `watch_or_update'
59
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/exec.rb:307:in `process_result'
60
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/exec.rb:41:in `parse'
61
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/lib/sass/exec.rb:21:in `parse!'
62
+ /var/lib/gems/1.9.1/gems/sass-3.2.3/bin/scss:8:in `<top (required)>'
63
+ /usr/local/bin/scss:23:in `load'
64
+ /usr/local/bin/scss:23:in `<main>'
65
+ */
66
+ body:before {
67
+ white-space: pre;
68
+ font-family: monospace;
69
+ content: "Syntax error: Positional arguments must come before keyword arguments.\A on line 14 of functions.scss\A \A 9: #{test()} {\A 10: content: x() if(x() == 'one two', true, false);\A 11: content: x('foo', 'bar') if(x('foo', 'bar') == 'foo bar', true, false);\A 12: content: x('foo') if(x('foo') == 'foo two', true, false);\A 13: content: x($two: 'foo') if(x($two: 'foo') == 'one foo', true, false);\A 14: content: x($two: 'foo', bar) if(x($two: 'foo', bar) == bar foo, true, false);\A 15: adjust-color: adjust-color(#00F, $blue: -15);\A 16: }"; }
lib/phpsass/tests/if_parentheses.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ body {
2
+ width: 100px; }
lib/phpsass/tests/if_parentheses.scss ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ $value: 10px;
2
+ body {
3
+ @if (unit($value) == px or unit($value) == rem) {
4
+ width: 100px;
5
+ }
6
+ }
lib/phpsass/tests/list_empty.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ #list {
2
+ width: 10px; }
lib/phpsass/tests/list_empty.scss ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ #list {
2
+ $test-list: ();
3
+ $test-list: join($test-list, 10px);
4
+ width: nth($test-list, 1)
5
+ }
lib/phpsass/tests/list_variable.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ body{
2
+ width:10px; }
lib/phpsass/tests/list_variable.scss ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ @function test($columns) {
2
+ @each $var in $columns {
3
+ @return $var;
4
+ }
5
+ }
6
+
7
+ body {
8
+ width: test(10px 20px 30px);
9
+ }
lib/phpsass/tests/media_in_for.css ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ @media only screen and (min-width: 500px) {
2
+ #gallery {
3
+ width: 520px; } }
4
+ @media only screen and (min-width: 1000px) {
5
+ #gallery {
6
+ width: 1020px; } }
lib/phpsass/tests/media_in_for.scss ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ $fiver: 500px;
2
+ #gallery {
3
+ @for $i from 1 through 2 {
4
+ $screenWidth: $fiver * $i;
5
+ $galleryWidth: ($fiver * $i) + 20px;
6
+ @media only screen and (min-width: $screenWidth) {
7
+ width: $galleryWidth;
8
+ }
9
+ }
10
+ }
lib/phpsass/tests/media_in_mixin.css ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ @media (min-width: 768px) {
2
+ body {
3
+ width: 50px; } }
lib/phpsass/tests/media_in_mixin.scss ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ @mixin mediaContent() {
2
+ @media (min-width: 768px) {
3
+ @content;
4
+ }
5
+ }
6
+
7
+ @include mediaContent() {
8
+ body { width: 50px; }
9
+ }
lib/phpsass/tests/media_in_mixin_in_mixin.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ @media (min-width: 768px) {
2
+ body {
3
+ height: 50px;
4
+ width: 50px; } }
lib/phpsass/tests/media_in_mixin_in_mixin.scss ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin getMediaDimensions() {
2
+ @content;
3
+ }
4
+
5
+ @mixin getDimensions() {
6
+ @include getMediaDimensions() {
7
+ @media (min-width: 768px) {
8
+ body {
9
+ height: 50px;
10
+ @content;
11
+ }
12
+ }
13
+ }
14
+ }
15
+
16
+ @include getDimensions() {
17
+ width: 50px;
18
+ }
lib/phpsass/tests/mixin-content.css CHANGED
@@ -1,4 +1,5 @@
1
  #logo {
2
  background-image: url("/images/logo.png"); }
3
  * html #logo {
 
4
  background-image: url("/images/logo.gif"); }
1
  #logo {
2
  background-image: url("/images/logo.png"); }
3
  * html #logo {
4
+ width: 500px;
5
  background-image: url("/images/logo.gif"); }
lib/phpsass/tests/mixin-content.sass CHANGED
@@ -1,3 +1,4 @@
 
1
  =ie6
2
  * html &
3
  @content
@@ -5,4 +6,5 @@
5
  #logo
6
  background-image: url("/images/logo.png")
7
  +ie6
 
8
  background-image: url("/images/logo.gif")
1
+ $fiver: 500px
2
  =ie6
3
  * html &
4
  @content
6
  #logo
7
  background-image: url("/images/logo.png")
8
  +ie6
9
+ width: $fiver
10
  background-image: url("/images/logo.gif")
lib/phpsass/tests/mixin-content.scss CHANGED
@@ -1,3 +1,4 @@
 
1
  @mixin ie6 {
2
  * html & {
3
  @content
@@ -7,6 +8,7 @@
7
  #logo {
8
  background-image: url("/images/logo.png");
9
  @include ie6 {
 
10
  background-image: url("/images/logo.gif");
11
  }
12
  }
1
+ $fiver: 500px;
2
  @mixin ie6 {
3
  * html & {
4
  @content
8
  #logo {
9
  background-image: url("/images/logo.png");
10
  @include ie6 {
11
+ width: $fiver;
12
  background-image: url("/images/logo.gif");
13
  }
14
  }
lib/phpsass/tests/mixin-list-params.css ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ .box {
2
+ background: url('sprite.png') 0 -276px no-repeat, -moz-linear-gradient(320deg, #e2d0ec, #f8f4fb), #ede2f3;
3
+ background: url('sprite.png') 0 -276px no-repeat, -webkit-gradient(320deg, #e2d0ec, #f8f4fb), #ede2f3;
4
+ background: url('sprite.png') 0 -276px no-repeat, -webkit-linear-gradient(320deg, #e2d0ec, #f8f4fb), #ede2f3;
5
+ background: url('sprite.png') 0 -276px no-repeat, -o-linear-gradient(320deg, #e2d0ec, #f8f4fb), #ede2f3;
6
+ background: url('sprite.png') 0 -276px no-repeat, -ms-linear-gradient(320deg, #e2d0ec, #f8f4fb), #ede2f3;
7
+ background: url('sprite.png') 0 -276px no-repeat, linear-gradient(-230deg, #e2d0ec, #f8f4fb), #ede2f3; }
lib/phpsass/tests/mixin-list-params.scss ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin multi-backgrounds($image, $gradient, $color) {
2
+ $angle: nth($gradient, 1);
3
+ $colorStart: nth($gradient, 2);
4
+ $colorStop: nth($gradient, 3);
5
+ $newAngle: (90-$angle) % 360;
6
+
7
+ background: #{$image}, -moz-linear-gradient(#{$gradient}), #{$color};
8
+ background: #{$image}, -webkit-gradient(#{$gradient}), #{$color};
9
+ background: #{$image}, -webkit-linear-gradient(#{$gradient}), #{$color};
10
+ background: #{$image}, -o-linear-gradient(#{$gradient}), #{$color};
11
+ background: #{$image}, -ms-linear-gradient(#{$gradient}), #{$color};
12
+ background: #{$image}, linear-gradient(#{$newAngle}, #{$colorStart}, #{$colorStop}), #{$color};
13
+ }
14
+
15
+ .box {
16
+ @include multi-backgrounds(url('sprite.png') 0 -276px no-repeat, (320deg, #e2d0ec, lighten(#e2d0ec, 10%)), lighten(#e2d0ec, 5%));
17
+ }
lib/phpsass/tests/mixin-params.css CHANGED
@@ -13,3 +13,11 @@ two {
13
  both {
14
  one: 'one';
15
  two: 'two'; }
 
 
 
 
 
 
 
 
13
  both {
14
  one: 'one';
15
  two: 'two'; }
16
+
17
+ whitespace {
18
+ one: 'one';
19
+ two: 'two'; }
20
+
21
+ parens {
22
+ one: 'one';
23
+ two: white; }
lib/phpsass/tests/mixin-params.scss CHANGED
@@ -18,3 +18,11 @@ two {
18
  both {
19
  @include test('one', 'two');
20
  }
 
 
 
 
 
 
 
 
18
  both {
19
  @include test('one', 'two');
20
  }
21
+
22
+ whitespace {
23
+ @include test ('one', 'two');
24
+ }
25
+
26
+ parens {
27
+ @include test('one', rgb(255, 255, 255) );
28
+ }
lib/phpsass/tests/mixin-rgba-param.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ .box {
2
+ box-shadow: 5px 5px 20px rgba(0, 0, 0, 0.8); }
lib/phpsass/tests/mixin-rgba-param.scss ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ @mixin some-mixin($value) {
2
+ box-shadow: $value;
3
+ }
4
+
5
+ .box {
6
+ @include some-mixin(5px 5px 20px rgba(0, 0, 0, .8));
7
+ }
lib/phpsass/tests/mixin_in_mixin.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ body {
2
+ width: 50px; }
lib/phpsass/tests/mixin_in_mixin.scss ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin mixin1() {
2
+ @content;
3
+ }
4
+
5
+ @mixin mixin2() {
6
+ @include mixin1() {
7
+ @content;
8
+ }
9
+ }
10
+
11
+ body {
12
+ @include mixin2() {
13
+ width: 50px;
14
+ }
15
+ }
lib/phpsass/tests/mixin_setvar.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ body {
2
+ foo: 4; }
lib/phpsass/tests/mixin_setvar.scss ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ @mixin layout2($otherFoo) {
2
+ $foo : $otherFoo;
3
+ @content;
4
+ }
5
+ $foo : 2;
6
+ body {
7
+ @include layout2(4) {
8
+ foo: $foo;
9
+ }
10
+ }
lib/phpsass/tests/phpSassTest.php CHANGED
@@ -237,6 +237,10 @@ class PHPSass_TestCase extends PHPUnit_Framework_TestCase {
237
  $this->runSassTest('mixins.sass');
238
  }
239
 
 
 
 
 
240
  public function testMultiline() {
241
  $this->runSassTest('multiline.sass');
242
  }
@@ -301,6 +305,30 @@ class PHPSass_TestCase extends PHPUnit_Framework_TestCase {
301
  $this->runSassTest('units.sass');
302
  }
303
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  public function testWarnImported() {
305
  $this->markTestIncomplete('This test has not been implemented yet.');
306
  //$this->runSassTest('warn_imported.sass');
@@ -309,4 +337,12 @@ class PHPSass_TestCase extends PHPUnit_Framework_TestCase {
309
  public function testWarn() {
310
  $this->runSassTest('warn.sass');
311
  }
 
 
 
 
 
 
 
 
312
  }
237
  $this->runSassTest('mixins.sass');
238
  }
239
 
240
+ public function testMixinInMixin() {
241
+ $this->runSassTest('mixin_in_mixin.scss');
242
+ }
243
+
244
  public function testMultiline() {
245
  $this->runSassTest('multiline.sass');
246
  }
305
  $this->runSassTest('units.sass');
306
  }
307
 
308
+ public function testListVariable() {
309
+ $this->runSassTest('list_variable.scss');
310
+ }
311
+
312
+ public function testMediaInFor() {
313
+ $this->runSassTest('media_in_for.scss');
314
+ }
315
+
316
+ public function testMediaInMixin() {
317
+ $this->runSassTest('media_in_mixin.scss');
318
+ }
319
+
320
+ public function testMediaInTwoMixins() {
321
+ $this->runSassTest('media_in_mixin_in_mixin.scss');
322
+ }
323
+
324
+ public function testIfParentheses() {
325
+ $this->runSassTest('if_parentheses.scss');
326
+ }
327
+
328
+ public function testListEmpty() {
329
+ $this->runSassTest('list_empty.scss');
330
+ }
331
+
332
  public function testWarnImported() {
333
  $this->markTestIncomplete('This test has not been implemented yet.');
334
  //$this->runSassTest('warn_imported.sass');
337
  public function testWarn() {
338
  $this->runSassTest('warn.sass');
339
  }
340
+
341
+ public function testColour() {
342
+ $this->runSassTest('colour-nth.scss');
343
+ }
344
+
345
+ public function testMixinSetvar() {
346
+ $this->runSassTest('mixin_setvar.scss');
347
+ }
348
  }
lib/phpsass/tree/SassContentNode.php CHANGED
@@ -48,7 +48,15 @@ class SassContentNode extends SassNode {
48
  public function parse($pcontext) {
49
  $return = $this;
50
  $context = new SassContext($pcontext);
51
- return ($context->getContent());
 
 
 
 
 
 
 
 
52
  }
53
 
54
  /**
48
  public function parse($pcontext) {
49
  $return = $this;
50
  $context = new SassContext($pcontext);
51
+
52
+ $children = array();
53
+ foreach ($context->getContent() as $child) {
54
+ $child->parent = $this->parent;
55
+ $ctx = new SassContext($pcontext->parent);
56
+ $ctx->variables = $pcontext->variables;
57
+ $children = array_merge($children, $child->parse($ctx));
58
+ }
59
+ return $children;
60
  }
61
 
62
  /**
lib/phpsass/tree/SassMediaNode.php CHANGED
@@ -61,12 +61,23 @@ class SassMediaNode extends SassNode {
61
  * @return array An empty array
62
  */
63
  public function parse($context) {
64
- $this->token->source = SassDirectiveNode::interpolate_nonstrict($this->token->source, $context);
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- $node = new SassRuleNode($this->token, $context);
67
- $node->root = $this->parent->root;
68
 
69
- $rule = clone $this->parent;
70
  $rule->root = $node->root;
71
  $rule->children = $this->children;
72
 
61
  * @return array An empty array
62
  */
63
  public function parse($context) {
64
+ // If we are in a loop, function or mixin then the parent isn't what should
65
+ // go inside the media node. Walk up the parent tree to find the rule node
66
+ // to put inside the media node or the root node if the media node should be
67
+ // at the root.
68
+ $parent = $this->parent;
69
+ while (!($parent instanceOf SassRuleNode) && !($parent instanceOf SassRootNode)) {
70
+ $parent = $parent->parent;
71
+ }
72
+
73
+ // Make a copy of the token before parsing in case we are in a loop and it contains variables
74
+ $token = clone $this->token;
75
+ $token->source = SassDirectiveNode::interpolate_nonstrict($token->source, $context);
76
 
77
+ $node = new SassRuleNode($token, $context);
78
+ $node->root = $parent->root;
79
 
80
+ $rule = clone $parent;
81
  $rule->root = $node->root;
82
  $rule->children = $this->children;
83
 
lib/phpsass/tree/SassNode.php CHANGED
@@ -346,4 +346,14 @@ class SassNode {
346
  public static function isa($token) {
347
  throw new SassNodeException('Child classes must override this method');
348
  }
 
 
 
 
 
 
 
 
 
 
349
  }
346
  public static function isa($token) {
347
  throw new SassNodeException('Child classes must override this method');
348
  }
349
+
350
+ public function printDebugTree($i = 0)
351
+ {
352
+ echo str_repeat(' ', $i*2).get_class($this)." ".$this->getSource()."\n";
353
+ $p = $this->getParent();
354
+ if ($p) echo str_repeat(' ', $i*2)." parent: ".get_class($p)."\n";
355
+ foreach ($this->getChildren() as $c) {
356
+ $c->printDebugTree($i+1);
357
+ }
358
+ }
359
  }
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Sass</name>
4
- <version>1.1.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
@@ -12,11 +12,11 @@
12
  You just need to create you sass file and add it to your layout like default css file.&#xD;
13
  &#xD;
14
  This extension will then convert it to css file using phpSass or sass in command line if available</description>
15
- <notes>Caching part rewritten for managing it in BO.</notes>
16
  <authors><author><name>Laurent Clouet</name><user>laurent35240</user><email>laurent35240@gmail.com</email></author></authors>
17
- <date>2013-05-25</date>
18
- <time>22:02:38</time>
19
- <contents><target name="magecommunity"><dir name="Laurent"><dir name="Sass"><dir name="Helper"><file name="Data.php" hash="9c43132dba73d4b3f37ccfb91f0d5dbe"/></dir><dir name="Model"><dir name="Config"><file name="Style.php" hash="413571124dcf58d950200499a144420d"/></dir><dir name="Design"><file name="Package.php" hash="3c83af4c43fd94359541b7242852ca06"/></dir></dir><dir name="etc"><file name="config.xml" hash="6c8cce3c3c18c8dfe8b7a896375728e5"/><file name="system.xml" hash="a2db1af0d9bae017b46805a80aedb442"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Laurent_Sass.xml" hash="4ad004de851457681610553228973c30"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Laurent_Sass.csv" hash="d9e8c184cbe72e810c7da9154581e1e4"/></dir><dir name="fr_FR"><file name="Laurent_Sass.csv" hash="676b2c597fe0b829fb2c48c1428c295f"/></dir></target><target name="magelib"><dir name="phpsass"><file name="README.md" hash="1448ba255f7f18d69f044b90dbb03481"/><file name="SassException.php" hash="ae7482e7d574a36156671b4575d8c0b9"/><file name="SassFile.php" hash="930a4e6148fbb54df3ffe14c8d971b2a"/><file name="SassParser.php" hash="2820c4ddc7fbfe94aa4630642afd08a7"/><file name="VERSION" hash="e3574197344e94aa46d58c97fe5d7fc8"/><file name="compile-apache.php" hash="7a95ffbe3baf88cd27260645e51d326d"/><file name="composer.json" hash="fb5dad84d70d71d3ad3ea36e06238c21"/><dir name="renderers"><file name="SassCompactRenderer.php" hash="d06cc6830ab426eacb6758b6b7e60db8"/><file name="SassCompressedRenderer.php" hash="ebbb33ce5f0c205fe96f80d452cdc75e"/><file name="SassExpandedRenderer.php" hash="f7d4dfa1a46748a50f212ab1b4c39cf9"/><file name="SassNestedRenderer.php" hash="ae57a3b8da86ae7c8560f71fc7cf69c4"/><file name="SassRenderer.php" hash="2f9059ce82c1d73f3a386ba005457bde"/></dir><dir name="script"><file name="SassScriptFunction.php" hash="d3a694d2329862c89bc26d454e84b711"/><file name="SassScriptFunctions.php" hash="99b290ce879e50b9414de4dd6187c1b0"/><file name="SassScriptLexer.php" hash="1bc50096c5b44ce9b847da4311ba9b51"/><file name="SassScriptOperation.php" hash="22fcd4a2995da8e265ec81d8dde22b90"/><file name="SassScriptParser.php" hash="3d99f5d850767c11be70189ff33bb4e2"/><file name="SassScriptParserExceptions.php" hash="7adc8cdc2f8a343213de10fa9c89a9fb"/><file name="SassScriptVariable.php" hash="49a4b8e3d3d5d358e3361684d6717439"/><dir name="literals"><file name="SassBoolean.php" hash="9848178e8a10415670fab8a7b3bf65bd"/><file name="SassColour.php" hash="e26779ced2b6ce74de884ea0d6d14ecf"/><file name="SassList.php" hash="78340c3a7326306bd703fec94b3aa5d3"/><file name="SassLiteral.php" hash="d4403c33ca7bac07035832e009df5df8"/><file name="SassLiteralExceptions.php" hash="37841fc5e291f83b053b46dff8fabb1d"/><file name="SassNumber.php" hash="912ca47e7c4348c19309ac7f32c8ade1"/><file name="SassString.php" hash="4403e9ba0973e3fd04acf2eba5657496"/></dir></dir><file name="test.css" hash="1655ffa4e91349bbe84d9e9f87b5ae39"/><file name="test.php" hash="eab045b07750bcfbbdc6f899b31d507d"/><dir name="tests"><file name="_imported_charset_ibm866.sass" hash="92b1d97a137e4219bb7796d7751aa847"/><file name="_imported_charset_utf8.sass" hash="51489125c07d0e8f2b055295d40d2549"/><file name="_imported_content.sass" hash="aafd4b9ba2de82e4f977e04934f204d7"/><file name="_partial.sass" hash="529fb954d7e0f6b42c484c869e60fbcf"/><file name="alt.css" hash="d48efc67765cb14b1c532b36b036a064"/><file name="alt.sass" hash="66be58fb872cd96be90fb95425a0aadf"/><file name="alt.scss" hash="ec1074aaba9b4a1ef3933d091c547c63"/><file name="basic.css" hash="22c341ec6e41dba84606032a40ea21c3"/><file name="basic.sass" hash="450faf5ca8e4bacefd01a74509ae135c"/><file name="bork1.sass" hash="0608533ebc4c4a16ddff507f818a709e"/><file name="bork2.sass" hash="036c6e0bcebc36908f9093d1b536ceb1"/><file name="bork3.sass" hash="ad06e4551ead8422ac443ae0cad7994b"/><file name="bork4.sass" hash="0bd4b0aed58208f5abf4418eb9672ef9"/><file name="bork5.sass" hash="e467427a1e928d1d72ef8db10482e262"/><file name="comments.css" hash="0ca95a61ccc49717e465173fb0c2e6c6"/><file name="comments.sass" hash="41bb5d2d2e14e3dd16c8b0296608a00e"/><file name="compact.css" hash="96105d0147b6881651b723eabe303f65"/><file name="compact.sass" hash="d51cfe7db78fe0d81793c7e24cb32e46"/><file name="complex.css" hash="3ffea6ccf80b24cc136bb102b3b41a67"/><file name="complex.sass" hash="b1426382fb915456b5efc0877ae7072d"/><file name="compressed.css" hash="1975f89cc758e39302d317578fdfdedb"/><file name="compressed.sass" hash="d51cfe7db78fe0d81793c7e24cb32e46"/><file name="content.css" hash="0c0892c48d74761fee54e09ccba6e662"/><file name="content.scss" hash="e624a12355435c147c0772f9fd1fe065"/><file name="css3.css" hash="8b2a0df29de7f2158baa3e97e76d91f2"/><file name="css3.scss" hash="819f570dae1e0c8c77007a03a2642158"/><file name="default.css" hash="8296f416c47ae4b66fa6bdf3259b1015"/><file name="default.sass" hash="90e19da7fd8144eeab4d93e5d3adb3bd"/><file name="default_imported.sass" hash="dbea23754dce7bc6c0f7ff69863c05c5"/><file name="each.css" hash="3f84fdb19433d6c2fb0e63c60c06d072"/><file name="each.scss" hash="9661d8222338cfdd6ba8ff771f1c881c"/><file name="expanded.css" hash="88ee2a16c4d88965bcbcf573a2d7c0fa"/><file name="expanded.sass" hash="66dbccbf13e56c23c9b12401ef4edb2d"/><file name="extend.css" hash="c4e9ba7d8748202d2c1351d5b69e3353"/><file name="extend.sass" hash="f34bd79d09364600631ea4889232ad64"/><file name="extend_included.scss" hash="be61d8166e45b16c08e49087985ed1fb"/><file name="extend_placeholders.css" hash="369b772056769bece364221f3c069a8e"/><file name="extend_placeholders.scss" hash="4af5f1ee5888e7cd6cf6c6de45dbfc17"/><file name="filters.css" hash="f37ab5406ea00310513ce2e114cf6f07"/><file name="filters.scss" hash="ea989dd11a1d2a147b72d748b3a9c8c9"/><file name="functions.css" hash="0a039fdec50d756df0ca5430fdc25a0a"/><file name="functions.scss" hash="c9669b01b11b3abe4d82f701180ac2b0"/><file name="holmes.css" hash="07772c914ace61121cba53beb6ad8ca6"/><file name="holmes.sass" hash="e2199b90032b5f14a4dfc5233a915223"/><file name="hsl-functions.css" hash="b90a44e5919a286a8a62040f211b3580"/><file name="hsl-functions.scss" hash="fa055c7d603b5436613ecac898351cae"/><file name="if.css" hash="82391ad41348b41fc209cca5412ed740"/><file name="if.sass" hash="c3a27a421eb7e3d463918e189195b573"/><file name="import.css" hash="3c8abb5481ee0c0002916b49681af2a5"/><file name="import.sass" hash="4d43389aa785393a47d57734724dad2f"/><file name="import_content.css" hash="4b78a566882b2768336f603d54f73fa4"/><file name="import_content.sass" hash="2db9b7a5b9a581e9f44256b6c8dbedd1"/><file name="importee.sass" hash="606678a5d48f7653f6d8e2e327109310"/><file name="interpolation.css" hash="ef048c83424f05a9c0882007ba0f4958"/><file name="interpolation.scss" hash="ce66433664f7f37277a8d4726a39556c"/><file name="introspection.css" hash="0d9f0e64e263388ec0e87eadef41193e"/><file name="introspection.scss" hash="9d57f03789f7a947ce62d6ab0320f886"/><file name="line_numbers.css" hash="802e2285df194c362503f849647a1380"/><file name="line_numbers.sass" hash="4770a812ab401d2bd35b352408623a17"/><file name="list.css" hash="4dd913d85cf2a28cb12d8af0f622ce03"/><file name="list.scss" hash="24f96a097c84d0da64cb3e753e2439ee"/><file name="media.css" hash="409f2c0c468598dc19067376a796828f"/><file name="media.scss" hash="1fadbcd19113ff5855d1137be0693799"/><file name="misc-functions.css" hash="7da15f26cab9b6df784ce1e37e9a30f1"/><file name="misc-functions.scss" hash="b133df9bb8cf346a3e6d3b3612c1de64"/><file name="misc.css" hash="a05a0a6b49ddbfdd803e92c5abe97594"/><file name="misc.scss" hash="36b58121127544b6a8179ae8a0c90a35"/><file name="mixin-content.css" hash="e78896e8791b036b3ad422c01dfab80a"/><file name="mixin-content.sass" hash="d6d50676938cfcc4233af025391e84c4"/><file name="mixin-content.scss" hash="6cbc7c1eaa8978aba39f8bac785cac5e"/><file name="mixin-ja1.css" hash="c551c8ffd0723e1c9e5795708d5dbda5"/><file name="mixin-ja1.sass" hash="90d3f2653ccbccbc00a9009bd31f8071"/><file name="mixin-params.css" hash="d93b61ece294cd6ade82ab84508c3f78"/><file name="mixin-params.scss" hash="c6e703eda1488825f02b46e7c31aa529"/><file name="mixin_bork.sass" hash="259fd0cca5a94583c0d406646b3217eb"/><file name="mixins.css" hash="76ea6005844a4339745b1afe66274c74"/><file name="mixins.sass" hash="55fb1a104a59d6e5411987447af96b55"/><file name="multiline.css" hash="4a3d9bfe75a3b98c52ed95f3d785b079"/><file name="multiline.sass" hash="2f4ff6cfefa20eece2830170e29ea25e"/><file name="nested-media.css" hash="4fc2c8503b918fe9add9fcb230215fe2"/><file name="nested-media.scss" hash="2ee9901f1413f1f0839cfdc9b2ea00af"/><file name="nested.css" hash="26bd112a486652342cbfd55060552576"/><file name="nested.sass" hash="0bdc5d64efc02766544553f968bb82fd"/><file name="nested_bork1.sass" hash="56fa9072b6cc553909bfbd18f571a11d"/><file name="nested_bork2.sass" hash="999ae47bdbc6190972f0f52958870130"/><file name="nested_bork3.sass" hash="ccb998041d90cfe54a39f01afc4c4cc0"/><file name="nested_bork4.sass" hash="eed6453ea8564978c35d60f26a9bbb25"/><file name="nested_bork5.sass" hash="d6de98aee6d80aaecc1aa97311136003"/><file name="nested_import.css" hash="de8bc2a3cd89496c22ff564e65c2b046"/><file name="nested_import.sass" hash="b4493203dae52b5757ca91e17dd42e42"/><file name="nested_media.css" hash="d910a2026928133ce7235e8e1143a425"/><file name="nested_media.scss" hash="6e2dceddb572a0caa6f3959e00d332f4"/><file name="nested_mixin_bork.sass" hash="d9f57da9545e6c9a54d89bebe2f750b9"/><file name="nested_pseudo.css" hash="435b969153bc5030ceb8c251d241d358"/><file name="nested_pseudo.scss" hash="145d425a42541236d8952ea9f5e68ae7"/><file name="number.css" hash="000ca28603c30a49647d53bc5aabed94"/><file name="number.scss" hash="c585efaf419263809a1c91b76d8a0799"/><file name="opacity.css" hash="f54a7fbecddad66df7a6dae52bea4c21"/><file name="opacity.scss" hash="3a20a779e1becfcfaba90758d907c05e"/><file name="other-color.css" hash="45d9e1061d0e71b1c55362c2974b7bdf"/><file name="other-color.scss" hash="e2b8b86016461cbcdae6365ee14b0a5d"/><file name="parent_ref.css" hash="cbecced10861e9c060fa05187f94ee5f"/><file name="parent_ref.sass" hash="b5a3fe6fd3384b0853211e3515427796"/><file name="phpSassTest.php" hash="50a02a22610ec53faf16a899a53287ec"/><file name="phpunit.xml.dist" hash="3f11a2a97eb3d9b8bb48f60915daefda"/><file name="proprietary-selector.css" hash="6da7ab22184ed10ec679065835fc0f5f"/><file name="proprietary-selector.scss" hash="a7fa95fad2ae9aa0b93d8b49101eaf5f"/><file name="rgb-functions.css" hash="24177c2bc7b35526bf06334ea4174e27"/><file name="rgb-functions.scss" hash="7ad824885f782f15738ef67bbf00ae2a"/><file name="scss_import.css" hash="9eeec339e1ce59cbf3f2d29efab1382b"/><file name="scss_import.scss" hash="7ae409e52a06ad89582fe89063cf6bdd"/><file name="scss_importee.css" hash="7cad5194c7f7bb18e50f1ca093597033"/><file name="scss_importee.scss" hash="20c55fb516c7b137eadc6462f74cfa94"/><file name="splats.css" hash="3d11bc1d58858e4967ed498a3d75d008"/><file name="splats.scss" hash="4fab47d7391ff72a2e8d6de13c5e1b80"/><file name="string.css" hash="9f1482fe5b4964e96d24c00765c2503d"/><file name="string.scss" hash="f89f2aad48738bb1fa33a67f733e2e90"/><dir name="subdir"><dir name="nested_subdir"><file name="_nested_partial.sass" hash="24985866e9414ee4ef69621b738833ee"/><file name="nested_subdir.css" hash="759df6872a88c4174a39c32fe7d95a04"/><file name="nested_subdir.sass" hash="9e5e623f6765e28d5bec3bb2d3944eac"/></dir><file name="subdir.css" hash="ddd9dd41c2b72164a7ba634e359c2872"/><file name="subdir.sass" hash="acde24bd965d15ae3f19bf74b1f1c2a8"/></dir><file name="units.css" hash="ebc7390d227439bf2694a3ce29c54a6d"/><file name="units.sass" hash="040de247b027e6368c7edbc57d6e331f"/><file name="warn.css" hash="31c098880201803dc33c8785ecf3de26"/><file name="warn.sass" hash="47c7543a6a374523514669e108249f41"/><file name="warn_imported.sass" hash="2b7455acd686bf2511fce0b710874b01"/></dir><dir name="tree"><file name="SassCommentNode.php" hash="642f1a815d0e7dfc1106a518e8d87b31"/><file name="SassContentNode.php" hash="789f74473f6af06d065ee95ae1d07a22"/><file name="SassContext.php" hash="20760243da06e897f9c21d7ba1672fd4"/><file name="SassDebugNode.php" hash="9acd25b3581aa8d18313f3ac3d9e6e9a"/><file name="SassDirectiveNode.php" hash="039a39f8662e2131b2c0018a80337fde"/><file name="SassEachNode.php" hash="63aa2d6a2ade5a9a966f45edc70fabec"/><file name="SassElseNode.php" hash="6a6426a9d34047ac81eed7add893a179"/><file name="SassExtendNode.php" hash="02252a9b29559a959348fb87bb586d0e"/><file name="SassForNode.php" hash="0322a55c38b6f7fa0d4382f7e3972f4d"/><file name="SassFunctionDefinitionNode.php" hash="97b6440a715ce30922f1d3fafb7cfc3a"/><file name="SassIfNode.php" hash="af42d33a38ed91a5f5181b2458a2fa60"/><file name="SassImportNode.php" hash="a0b2c5b200cff2262e66327458054878"/><file name="SassMediaNode.php" hash="48fb1aacbdcb0817ab5c8ee84ac5dcdf"/><file name="SassMixinDefinitionNode.php" hash="40763d3f0db2bcccd24e26262b2cc244"/><file name="SassMixinNode.php" hash="058bf4b74bcd7e99be00ff7890081881"/><file name="SassNode.php" hash="cc0144e874a2495fd791807e90398419"/><file name="SassNodeExceptions.php" hash="c8acde883ff1f08c56aaea36d3878c69"/><file name="SassPropertyNode.php" hash="388d56d83ab2e05909e8d04d849d786c"/><file name="SassReturnNode.php" hash="c951be13c91fad525b69fc09764e45ee"/><file name="SassRootNode.php" hash="423c2c19d8ad01638b42bf81b19a88fc"/><file name="SassRuleNode.php" hash="0828b0d29742e5e62f006a18961caa48"/><file name="SassVariableNode.php" hash="e4ab9cc2baab946a5b3cfc561baaf5cf"/><file name="SassWarnNode.php" hash="ba0da120f75efd07c57d040adf96a95d"/><file name="SassWhileNode.php" hash="b2c1328c15a28b4e37fed4d998d60dc9"/></dir><file name=".travis.yml" hash="d0ac6ce1cf8465183941fa3ac326a54e"/></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
22
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Sass</name>
4
+ <version>1.1.3</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
12
  You just need to create you sass file and add it to your layout like default css file.&#xD;
13
  &#xD;
14
  This extension will then convert it to css file using phpSass or sass in command line if available</description>
15
+ <notes>phpsass library updated.</notes>
16
  <authors><author><name>Laurent Clouet</name><user>laurent35240</user><email>laurent35240@gmail.com</email></author></authors>
17
+ <date>2013-06-08</date>
18
+ <time>16:32:41</time>
19
+ <contents><target name="magecommunity"><dir name="Laurent"><dir name="Sass"><dir name="Helper"><file name="Data.php" hash="9c43132dba73d4b3f37ccfb91f0d5dbe"/></dir><dir name="Model"><dir name="Config"><file name="Style.php" hash="413571124dcf58d950200499a144420d"/></dir><dir name="Design"><file name="Package.php" hash="3c83af4c43fd94359541b7242852ca06"/></dir></dir><dir name="etc"><file name="config.xml" hash="1e99b16cb4ca540ae8cd207825f9a269"/><file name="system.xml" hash="a2db1af0d9bae017b46805a80aedb442"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Laurent_Sass.xml" hash="4ad004de851457681610553228973c30"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Laurent_Sass.csv" hash="d9e8c184cbe72e810c7da9154581e1e4"/></dir><dir name="fr_FR"><file name="Laurent_Sass.csv" hash="676b2c597fe0b829fb2c48c1428c295f"/></dir></target><target name="magelib"><dir name="phpsass"><dir name="Extensions"><dir name="Compass"><file name="Compass.php" hash="3bc8aaa37ae61b7bce0dc5fc0f16112e"/><dir name="stylesheets"><file name="_compass.scss" hash="bc769e7b7e94a717f9f4439978543900"/><file name="_lemonade.scss" hash="92e7ec85f14f46cf399a64115707dfe1"/><dir name="compass"><file name="_css3.scss" hash="7688063612bb668fffd22c32b95a2f5c"/><file name="_layout.scss" hash="d7445d578d56b5f0d6482d5df0b28a7b"/><file name="_reset-legacy.scss" hash="322b2e4617c8bf9e6c1ad02bef42ac18"/><file name="_reset.scss" hash="b3d1130413650cdc98b24777bf15afff"/><file name="_support.scss" hash="200db7d3bd7cd633b35c73c7d724a275"/><file name="_typography.scss" hash="73c901f7f8afd26c65dbadedffb87c1a"/><file name="_utilities.scss" hash="adb9de208e608e5bdd25189b4d4790a6"/><dir name="css3"><file name="_appearance.scss" hash="b624212e8f27e260b89e7aa84e598432"/><file name="_background-clip.scss" hash="9eab5a21f351b22e565278af805382b3"/><file name="_background-origin.scss" hash="57e96581316421882118c0d155a4a74f"/><file name="_background-size.scss" hash="674b66cc99bf60400b44f130d0c9d00d"/><file name="_border-radius.scss" hash="02749463ff3b0d0e68e42c76e6c18b66"/><file name="_box-shadow.scss" hash="13cb3d1733c1f7a60c542c44e639af55"/><file name="_box-sizing.scss" hash="5bc8b4f482fb878518d28a18dd453df9"/><file name="_box.scss" hash="ca45bf6d49507d042e5928cf1058909c"/><file name="_columns.scss" hash="b809552667f5876e115881ece27cbc8e"/><file name="_filter.scss" hash="ddc12210cb1d9cdcaad890e9d02601de"/><file name="_font-face.scss" hash="dfc84cb70f83cdbcde9dd3e51789363b"/><file name="_hyphenation.scss" hash="d3cf84dec3da60b4259fe2a9276421b5"/><file name="_images.scss" hash="c4d2fc1c4a1c78a68952de2694939fd2"/><file name="_inline-block.scss" hash="0ddfde10e192213f01dfa122d15bf473"/><file name="_opacity.scss" hash="36a24354a3b62b9b9c82690d1c008963"/><file name="_pie.scss" hash="8ec8261b6cdfef171774d6ad294dbcb7"/><file name="_regions.scss" hash="84db6e13237909b8c05e60c5735f43cc"/><file name="_shared.scss" hash="2a19ef6064fadd0c7bc1213878172ca2"/><file name="_text-shadow.scss" hash="b8dda78c05f393266e002b85885737af"/><file name="_transform-legacy.scss" hash="8d7c4ab98d1a165271ba64e859454c9f"/><file name="_transform.scss" hash="63d14c83ad4ebe0a25fe62b2e9b3a840"/><file name="_transition.scss" hash="ae7b441207aede5e831fd58d13d09103"/><file name="_user-interface.scss" hash="4293d8e1b99b864b6f1a1e341d281fbb"/></dir><dir name="layout"><file name="_grid-background.scss" hash="ebbb0813eeb27f1b102396275cd35e2b"/><file name="_sticky-footer.scss" hash="c10c67d6ebe9ca67709c982bbfed7178"/><file name="_stretching.scss" hash="3f59f9138e25943e4a7def3aa22704e5"/></dir><dir name="reset"><file name="_utilities-legacy.scss" hash="b3a4fd8ac50ace1aa1e607d4d926be45"/><file name="_utilities.scss" hash="c84668ad95fd7c53b77bd015452dd416"/></dir><dir name="typography"><file name="_links.scss" hash="862a5096f3a03597aab1be4e9dc76c64"/><file name="_lists.scss" hash="0e8662119de52a98ac3e601e086bbf53"/><file name="_text.scss" hash="4d3e129baa58fb176ded67c97bbf5b0a"/><file name="_vertical_rhythm.scss" hash="80869e4543f6f4e7ec93e52419d9a6e9"/><dir name="links"><file name="_hover-link.scss" hash="329c8ea4f1460cadf695e8d830c33a80"/><file name="_link-colors.scss" hash="9a4a09d3f9121c10f403a1fa333725dc"/><file name="_unstyled-link.scss" hash="3439d86d2f28c345864a7337c99db069"/></dir><dir name="lists"><file name="_bullets.scss" hash="9d733d179b5dcc005ef07535c16abe2a"/><file name="_horizontal-list.scss" hash="14a893eaa879be04e2ed636ab524b8f7"/><file name="_inline-block-list.scss" hash="f96c6c754473084d0af9d07b6d85cf44"/><file name="_inline-list.scss" hash="898ffa6ae6c13c5df2730172d618dece"/></dir><dir name="text"><file name="_ellipsis.scss" hash="a4765ddc9555f114ff59ae1a582f3caa"/><file name="_force-wrap.scss" hash="def5a5579399a9d35d845d3133338e3c"/><file name="_nowrap.scss" hash="e2cf48586ed5a33ab90a09e346020afc"/><file name="_replacement.scss" hash="e20cb6a854d0a9adb9bd7a879cb257a3"/></dir></dir><dir name="utilities"><file name="_color.scss" hash="4f6252c899a6f25c57ec1b4e9052e55b"/><file name="_general.scss" hash="7a90acc34a01d65ccc38f6dd6225229a"/><file name="_print.scss" hash="eb1d910e8aea90d23b76adf27323abe8"/><file name="_sprites.scss" hash="5f57e9b3f79df0ed70b7321aa55a1a2d"/><file name="_tables.scss" hash="836327d928e513dc737897356d7ba15b"/><dir name="color"><file name="_contrast.scss" hash="735478c5e04e31030afca1e36bf8e398"/></dir><dir name="general"><file name="_clearfix.scss" hash="58fd0d07999140b25bddb4e5c1d49a17"/><file name="_float.scss" hash="5c273f43ca3a3d409c08151ac4f86786"/><file name="_hacks.scss" hash="98ede0f56175f5fb08b3ecd982c27309"/><file name="_min.scss" hash="26a0f6fdad1f7ff71f40ff92eda4f56c"/><file name="_tabs.scss" hash="68b329da9893e34099c7d8ad5cb9c940"/><file name="_tag-cloud.scss" hash="ae7c8c97b4b3142eac7d3c279a5a729c"/></dir><dir name="sprites"><file name="_base.scss" hash="cc4f45b711e8d7fc11aaecd5a54f3744"/><file name="_sprite-img.scss" hash="2deeab732747a9da12f965e133fd795f"/></dir><dir name="tables"><file name="_alternating-rows-and-columns.scss" hash="aa6884db2666742519eb7a4c399767b3"/><file name="_borders.scss" hash="2ac334630de78ae00941857bcbf098d5"/><file name="_scaffolding.scss" hash="4144e427ff1f2a6a9ffdfd3bd641e477"/></dir></dir></dir></dir></dir><file name="ExtensionInterface.php" hash="f02f77afac08968fca0ca8f7cd750456"/><dir name="Own"><file name="Own.php" hash="b8e662147759f28279b575ec753c4eb5"/><dir name="css"><dir name="test"><dir name="test2"><file name="test.scss" hash="b406241e81f4cbd2509a3a7daa50ba6e"/></dir></dir></dir></dir><file name="README.md" hash="0adcca717d8c0113986c95cfa6fa341f"/><dir name="Susy"><file name="Susy.php" hash="5e3068256f5b17c32ac5cc544137ac80"/><dir name="stylesheets"><file name="_susy.scss" hash="e60bb0cc5234c86628f4e0345bd2d48a"/><dir name="susy"><file name="_background.scss" hash="e7125e6d00deae7955c61ef9ce5b7557"/><file name="_functions.scss" hash="33d52f0bb6a333da77ac8c4482a1d862"/><file name="_grid.scss" hash="687c942dcaba8b87dac49db2d734e594"/><file name="_isolation.scss" hash="8e097d991625106869a96101bdc2bde4"/><file name="_margin.scss" hash="cb03e121a2800a47d569b456f247a0e4"/><file name="_media.scss" hash="89c7da945f0159b5e97ce705e8d06ae6"/><file name="_padding.scss" hash="b775d9b8f5465ae985da128e31818342"/><file name="_settings.scss" hash="e9942cc79f66826c45c525705aca4c5b"/><file name="_support.scss" hash="7c51df6bd18e85e6954b46e37b47db48"/><file name="_units.scss" hash="fea6309f28d01dc5cbf3fa8503f6bfae"/></dir></dir></dir><file name="example.php" hash="1b0d47697d1a85bbfb92cff187a51c4d"/><file name="example.scss" hash="1c36b8695ac3d22afa9caa72a5e0a96f"/><file name="theme.scss" hash="7210d729d56c93a23b91d4d280570e17"/></dir><file name="README.md" hash="f680aedff15c35475551bf0e0652be57"/><file name="SassException.php" hash="ae7482e7d574a36156671b4575d8c0b9"/><file name="SassFile.php" hash="61671ca2d00c771a031372243b9ad7b1"/><file name="SassParser.php" hash="de29cac49e715943a4b6a9590a4600ef"/><file name="VERSION" hash="989e91af7fc25340430a23b0cafe3f1d"/><file name="compile-apache.php" hash="7a95ffbe3baf88cd27260645e51d326d"/><file name="composer.json" hash="fb5dad84d70d71d3ad3ea36e06238c21"/><dir name="renderers"><file name="SassCompactRenderer.php" hash="d06cc6830ab426eacb6758b6b7e60db8"/><file name="SassCompressedRenderer.php" hash="ebbb33ce5f0c205fe96f80d452cdc75e"/><file name="SassExpandedRenderer.php" hash="f7d4dfa1a46748a50f212ab1b4c39cf9"/><file name="SassNestedRenderer.php" hash="ae57a3b8da86ae7c8560f71fc7cf69c4"/><file name="SassRenderer.php" hash="2f9059ce82c1d73f3a386ba005457bde"/></dir><dir name="script"><file name="SassScriptFunction.php" hash="8097a8a37e561a1f119f623dfdf73610"/><file name="SassScriptFunctions.php" hash="99b290ce879e50b9414de4dd6187c1b0"/><file name="SassScriptLexer.php" hash="8e5a0180f4b24e5008223816a5855fd2"/><file name="SassScriptOperation.php" hash="0ed86bf58330c6d407d7fe73a3d72ee8"/><file name="SassScriptParser.php" hash="3d99f5d850767c11be70189ff33bb4e2"/><file name="SassScriptParserExceptions.php" hash="7adc8cdc2f8a343213de10fa9c89a9fb"/><file name="SassScriptVariable.php" hash="49a4b8e3d3d5d358e3361684d6717439"/><dir name="literals"><file name="SassBoolean.php" hash="b456eafe96ef49e55e4256787539a37a"/><file name="SassColour.php" hash="b8ff0c00e202a25c411b653de7df8db4"/><file name="SassList.php" hash="19f4efc813eb12b557f306d3a427ec74"/><file name="SassLiteral.php" hash="d4403c33ca7bac07035832e009df5df8"/><file name="SassLiteralExceptions.php" hash="37841fc5e291f83b053b46dff8fabb1d"/><file name="SassNumber.php" hash="c3881b5a953b2207b15dc446867f6fba"/><file name="SassString.php" hash="4403e9ba0973e3fd04acf2eba5657496"/></dir></dir><file name="test.css" hash="1655ffa4e91349bbe84d9e9f87b5ae39"/><file name="test.php" hash="811210b59e0b2b0e243a53c7328f9d26"/><dir name="tests"><file name="_imported_charset_ibm866.sass" hash="92b1d97a137e4219bb7796d7751aa847"/><file name="_imported_charset_utf8.sass" hash="51489125c07d0e8f2b055295d40d2549"/><file name="_imported_content.sass" hash="aafd4b9ba2de82e4f977e04934f204d7"/><file name="_partial.sass" hash="529fb954d7e0f6b42c484c869e60fbcf"/><file name="alt.css" hash="d33475aa3b976be630eb419996866ee6"/><file name="alt.sass" hash="66be58fb872cd96be90fb95425a0aadf"/><file name="alt.scss" hash="ec1074aaba9b4a1ef3933d091c547c63"/><file name="basic.css" hash="22c341ec6e41dba84606032a40ea21c3"/><file name="basic.sass" hash="450faf5ca8e4bacefd01a74509ae135c"/><file name="bork1.sass" hash="0608533ebc4c4a16ddff507f818a709e"/><file name="bork2.sass" hash="036c6e0bcebc36908f9093d1b536ceb1"/><file name="bork3.sass" hash="ad06e4551ead8422ac443ae0cad7994b"/><file name="bork4.sass" hash="0bd4b0aed58208f5abf4418eb9672ef9"/><file name="bork5.sass" hash="e467427a1e928d1d72ef8db10482e262"/><file name="colour-nth.css" hash="8e457058415890dd4aac86f75a6e39e4"/><file name="colour-nth.scss" hash="3de860789a01fa9b5cf2d9a74a85dba7"/><file name="comments.css" hash="0ca95a61ccc49717e465173fb0c2e6c6"/><file name="comments.sass" hash="41bb5d2d2e14e3dd16c8b0296608a00e"/><file name="compact.css" hash="96105d0147b6881651b723eabe303f65"/><file name="compact.sass" hash="d51cfe7db78fe0d81793c7e24cb32e46"/><file name="complex.css" hash="3ffea6ccf80b24cc136bb102b3b41a67"/><file name="complex.sass" hash="b1426382fb915456b5efc0877ae7072d"/><file name="compressed.css" hash="1975f89cc758e39302d317578fdfdedb"/><file name="compressed.sass" hash="d51cfe7db78fe0d81793c7e24cb32e46"/><file name="content.css" hash="0c0892c48d74761fee54e09ccba6e662"/><file name="content.scss" hash="e624a12355435c147c0772f9fd1fe065"/><file name="css3.css" hash="8b2a0df29de7f2158baa3e97e76d91f2"/><file name="css3.scss" hash="819f570dae1e0c8c77007a03a2642158"/><file name="default.css" hash="8296f416c47ae4b66fa6bdf3259b1015"/><file name="default.sass" hash="90e19da7fd8144eeab4d93e5d3adb3bd"/><file name="default_imported.sass" hash="dbea23754dce7bc6c0f7ff69863c05c5"/><file name="each.css" hash="3f84fdb19433d6c2fb0e63c60c06d072"/><file name="each.scss" hash="9661d8222338cfdd6ba8ff771f1c881c"/><file name="expanded.css" hash="88ee2a16c4d88965bcbcf573a2d7c0fa"/><file name="expanded.sass" hash="66dbccbf13e56c23c9b12401ef4edb2d"/><file name="extend.css" hash="c4e9ba7d8748202d2c1351d5b69e3353"/><file name="extend.sass" hash="f34bd79d09364600631ea4889232ad64"/><file name="extend_included.css" hash="3c3e70c49794a7ff76aeb9a3402cf7bc"/><file name="extend_included.scss" hash="be61d8166e45b16c08e49087985ed1fb"/><file name="extend_placeholders.css" hash="369b772056769bece364221f3c069a8e"/><file name="extend_placeholders.scss" hash="4af5f1ee5888e7cd6cf6c6de45dbfc17"/><file name="filters.css" hash="f37ab5406ea00310513ce2e114cf6f07"/><file name="filters.scss" hash="ea989dd11a1d2a147b72d748b3a9c8c9"/><file name="functions.css" hash="a9da72a84bba8729e82dac08190a79d2"/><file name="functions.scss" hash="c9669b01b11b3abe4d82f701180ac2b0"/><file name="holmes.css" hash="07772c914ace61121cba53beb6ad8ca6"/><file name="holmes.sass" hash="e2199b90032b5f14a4dfc5233a915223"/><file name="hsl-functions.css" hash="b90a44e5919a286a8a62040f211b3580"/><file name="hsl-functions.scss" hash="fa055c7d603b5436613ecac898351cae"/><file name="if.css" hash="82391ad41348b41fc209cca5412ed740"/><file name="if.sass" hash="c3a27a421eb7e3d463918e189195b573"/><file name="if_parentheses.css" hash="7f5bc7f906a7cd678c9598c2e5650833"/><file name="if_parentheses.scss" hash="5140ac11b185061d3c5f7dc238e8ee86"/><file name="import.css" hash="3c8abb5481ee0c0002916b49681af2a5"/><file name="import.sass" hash="4d43389aa785393a47d57734724dad2f"/><file name="import_content.css" hash="4b78a566882b2768336f603d54f73fa4"/><file name="import_content.sass" hash="2db9b7a5b9a581e9f44256b6c8dbedd1"/><file name="importee.sass" hash="606678a5d48f7653f6d8e2e327109310"/><file name="interpolation.css" hash="ef048c83424f05a9c0882007ba0f4958"/><file name="interpolation.scss" hash="ce66433664f7f37277a8d4726a39556c"/><file name="introspection.css" hash="0d9f0e64e263388ec0e87eadef41193e"/><file name="introspection.scss" hash="9d57f03789f7a947ce62d6ab0320f886"/><file name="line_numbers.css" hash="802e2285df194c362503f849647a1380"/><file name="line_numbers.sass" hash="4770a812ab401d2bd35b352408623a17"/><file name="list.css" hash="4dd913d85cf2a28cb12d8af0f622ce03"/><file name="list.scss" hash="24f96a097c84d0da64cb3e753e2439ee"/><file name="list_empty.css" hash="c2fae66e0a28506f1733ac469a1c95ec"/><file name="list_empty.scss" hash="25d245b57859102ba6b36c12e89f3e7e"/><file name="list_variable.css" hash="d10df2dc91b4221bbfe4c3464bd34d5b"/><file name="list_variable.scss" hash="17a541748f730b9da21275a75852cf4e"/><file name="media.css" hash="409f2c0c468598dc19067376a796828f"/><file name="media.scss" hash="1fadbcd19113ff5855d1137be0693799"/><file name="media_in_for.css" hash="fd8292f715cc999ba7b64f8224c40a8a"/><file name="media_in_for.scss" hash="ad7702a6b95e121da52b93d69d782683"/><file name="media_in_mixin.css" hash="8c2bd3f961ab4336c55a5249f78e6bf4"/><file name="media_in_mixin.scss" hash="084e6f0edd3da537020a43d7ce8dbac4"/><file name="media_in_mixin_in_mixin.css" hash="8adc138ca27531ac5693c7e2274fdf9f"/><file name="media_in_mixin_in_mixin.scss" hash="049301e720820f076ceec6cc08037ede"/><file name="misc-functions.css" hash="7da15f26cab9b6df784ce1e37e9a30f1"/><file name="misc-functions.scss" hash="b133df9bb8cf346a3e6d3b3612c1de64"/><file name="misc.css" hash="a05a0a6b49ddbfdd803e92c5abe97594"/><file name="misc.scss" hash="36b58121127544b6a8179ae8a0c90a35"/><file name="mixin-content.css" hash="1b2490ce75d60d2b0c495a5db87a9f49"/><file name="mixin-content.sass" hash="41fa6bbd93b8d0b4ea8826fdd5585381"/><file name="mixin-content.scss" hash="f3252f583aac7dd5bbb7017fbd5654df"/><file name="mixin-ja1.css" hash="c551c8ffd0723e1c9e5795708d5dbda5"/><file name="mixin-ja1.sass" hash="90d3f2653ccbccbc00a9009bd31f8071"/><file name="mixin-list-params.css" hash="47064a4d242dfec9debba53326e529f3"/><file name="mixin-list-params.scss" hash="34478559346aec44c56c867a6b898af3"/><file name="mixin-params.css" hash="1a1f609e66c1dbe24383fe6855e95526"/><file name="mixin-params.scss" hash="a874ab4cacc02475acc827c956275cfe"/><file name="mixin-rgba-param.css" hash="bc5dc6caac3c74b37b82b1ed3cc2e553"/><file name="mixin-rgba-param.scss" hash="961219de858ecf7c17f2f7df24cf68cb"/><file name="mixin_bork.sass" hash="259fd0cca5a94583c0d406646b3217eb"/><file name="mixin_in_mixin.css" hash="46690de92ec525f39d5568bc2e46ee54"/><file name="mixin_in_mixin.scss" hash="0a6bef40d3215b63bb9f972896784a89"/><file name="mixin_setvar.css" hash="757520a01eca279c109d494d7fb4cd02"/><file name="mixin_setvar.scss" hash="12cd65c514056b3c0df1e4e92640a808"/><file name="mixins.css" hash="76ea6005844a4339745b1afe66274c74"/><file name="mixins.sass" hash="55fb1a104a59d6e5411987447af96b55"/><file name="multiline.css" hash="4a3d9bfe75a3b98c52ed95f3d785b079"/><file name="multiline.sass" hash="2f4ff6cfefa20eece2830170e29ea25e"/><file name="nested-media.css" hash="4fc2c8503b918fe9add9fcb230215fe2"/><file name="nested-media.scss" hash="2ee9901f1413f1f0839cfdc9b2ea00af"/><file name="nested.css" hash="26bd112a486652342cbfd55060552576"/><file name="nested.sass" hash="0bdc5d64efc02766544553f968bb82fd"/><file name="nested_bork1.sass" hash="56fa9072b6cc553909bfbd18f571a11d"/><file name="nested_bork2.sass" hash="999ae47bdbc6190972f0f52958870130"/><file name="nested_bork3.sass" hash="ccb998041d90cfe54a39f01afc4c4cc0"/><file name="nested_bork4.sass" hash="eed6453ea8564978c35d60f26a9bbb25"/><file name="nested_bork5.sass" hash="d6de98aee6d80aaecc1aa97311136003"/><file name="nested_import.css" hash="de8bc2a3cd89496c22ff564e65c2b046"/><file name="nested_import.sass" hash="b4493203dae52b5757ca91e17dd42e42"/><file name="nested_media.css" hash="d910a2026928133ce7235e8e1143a425"/><file name="nested_media.scss" hash="6e2dceddb572a0caa6f3959e00d332f4"/><file name="nested_mixin_bork.sass" hash="d9f57da9545e6c9a54d89bebe2f750b9"/><file name="nested_pseudo.css" hash="435b969153bc5030ceb8c251d241d358"/><file name="nested_pseudo.scss" hash="145d425a42541236d8952ea9f5e68ae7"/><file name="number.css" hash="000ca28603c30a49647d53bc5aabed94"/><file name="number.scss" hash="c585efaf419263809a1c91b76d8a0799"/><file name="opacity.css" hash="f54a7fbecddad66df7a6dae52bea4c21"/><file name="opacity.scss" hash="3a20a779e1becfcfaba90758d907c05e"/><file name="other-color.css" hash="45d9e1061d0e71b1c55362c2974b7bdf"/><file name="other-color.scss" hash="e2b8b86016461cbcdae6365ee14b0a5d"/><file name="parent_ref.css" hash="cbecced10861e9c060fa05187f94ee5f"/><file name="parent_ref.sass" hash="b5a3fe6fd3384b0853211e3515427796"/><file name="phpSassTest.php" hash="ce7206b374b0d65762851a6e3423658d"/><file name="phpunit.xml.dist" hash="3f11a2a97eb3d9b8bb48f60915daefda"/><file name="proprietary-selector.css" hash="6da7ab22184ed10ec679065835fc0f5f"/><file name="proprietary-selector.scss" hash="a7fa95fad2ae9aa0b93d8b49101eaf5f"/><file name="rgb-functions.css" hash="24177c2bc7b35526bf06334ea4174e27"/><file name="rgb-functions.scss" hash="7ad824885f782f15738ef67bbf00ae2a"/><file name="scss_import.css" hash="9eeec339e1ce59cbf3f2d29efab1382b"/><file name="scss_import.scss" hash="7ae409e52a06ad89582fe89063cf6bdd"/><file name="scss_importee.css" hash="7cad5194c7f7bb18e50f1ca093597033"/><file name="scss_importee.scss" hash="20c55fb516c7b137eadc6462f74cfa94"/><file name="splats.css" hash="3d11bc1d58858e4967ed498a3d75d008"/><file name="splats.scss" hash="4fab47d7391ff72a2e8d6de13c5e1b80"/><file name="string.css" hash="9f1482fe5b4964e96d24c00765c2503d"/><file name="string.scss" hash="f89f2aad48738bb1fa33a67f733e2e90"/><dir name="subdir"><dir name="nested_subdir"><file name="_nested_partial.sass" hash="24985866e9414ee4ef69621b738833ee"/><file name="nested_subdir.css" hash="759df6872a88c4174a39c32fe7d95a04"/><file name="nested_subdir.sass" hash="9e5e623f6765e28d5bec3bb2d3944eac"/></dir><file name="subdir.css" hash="ddd9dd41c2b72164a7ba634e359c2872"/><file name="subdir.sass" hash="acde24bd965d15ae3f19bf74b1f1c2a8"/></dir><file name="units.css" hash="ebc7390d227439bf2694a3ce29c54a6d"/><file name="units.sass" hash="040de247b027e6368c7edbc57d6e331f"/><file name="warn.css" hash="31c098880201803dc33c8785ecf3de26"/><file name="warn.sass" hash="47c7543a6a374523514669e108249f41"/><file name="warn_imported.sass" hash="2b7455acd686bf2511fce0b710874b01"/></dir><dir name="tree"><file name="SassCommentNode.php" hash="642f1a815d0e7dfc1106a518e8d87b31"/><file name="SassContentNode.php" hash="9e89188216cfe645bc0550e40027051b"/><file name="SassContext.php" hash="20760243da06e897f9c21d7ba1672fd4"/><file name="SassDebugNode.php" hash="9acd25b3581aa8d18313f3ac3d9e6e9a"/><file name="SassDirectiveNode.php" hash="039a39f8662e2131b2c0018a80337fde"/><file name="SassEachNode.php" hash="63aa2d6a2ade5a9a966f45edc70fabec"/><file name="SassElseNode.php" hash="6a6426a9d34047ac81eed7add893a179"/><file name="SassExtendNode.php" hash="02252a9b29559a959348fb87bb586d0e"/><file name="SassForNode.php" hash="0322a55c38b6f7fa0d4382f7e3972f4d"/><file name="SassFunctionDefinitionNode.php" hash="97b6440a715ce30922f1d3fafb7cfc3a"/><file name="SassIfNode.php" hash="af42d33a38ed91a5f5181b2458a2fa60"/><file name="SassImportNode.php" hash="a0b2c5b200cff2262e66327458054878"/><file name="SassMediaNode.php" hash="824aedfdb70bb658cbdb19e7e8fec1e1"/><file name="SassMixinDefinitionNode.php" hash="40763d3f0db2bcccd24e26262b2cc244"/><file name="SassMixinNode.php" hash="058bf4b74bcd7e99be00ff7890081881"/><file name="SassNode.php" hash="89f8a631e0381b736770c5b0da126f41"/><file name="SassNodeExceptions.php" hash="c8acde883ff1f08c56aaea36d3878c69"/><file name="SassPropertyNode.php" hash="388d56d83ab2e05909e8d04d849d786c"/><file name="SassReturnNode.php" hash="c951be13c91fad525b69fc09764e45ee"/><file name="SassRootNode.php" hash="423c2c19d8ad01638b42bf81b19a88fc"/><file name="SassRuleNode.php" hash="0828b0d29742e5e62f006a18961caa48"/><file name="SassVariableNode.php" hash="e4ab9cc2baab946a5b3cfc561baaf5cf"/><file name="SassWarnNode.php" hash="ba0da120f75efd07c57d040adf96a95d"/><file name="SassWhileNode.php" hash="b2c1328c15a28b4e37fed4d998d60dc9"/></dir><file name=".travis.yml" hash="d0ac6ce1cf8465183941fa3ac326a54e"/></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
22
  </package>