frontsau 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +21 -0
  5. data/README.md +30 -0
  6. data/Rakefile +2 -0
  7. data/bin/frontsau +15 -0
  8. data/bin/frontsau-phaml-compiler +35 -0
  9. data/example/.frontsau +12 -0
  10. data/example/assets/head.jpg +0 -0
  11. data/example/assets/script.js +4 -0
  12. data/example/assets/style.css +6 -0
  13. data/example/css/includes.sass +2 -0
  14. data/example/css/style.sass +6 -0
  15. data/example/image/head.jpg +0 -0
  16. data/example/index.html +0 -0
  17. data/example/js/script.coffee +1 -0
  18. data/frontsau.gemspec +41 -0
  19. data/lib/Phamlp/Phamlp.php +72 -0
  20. data/lib/Phamlp/PhamlpException.php +31 -0
  21. data/lib/Phamlp/haml/HamlException.php +29 -0
  22. data/lib/Phamlp/haml/HamlHelpers.php +199 -0
  23. data/lib/Phamlp/haml/HamlParser.php +1250 -0
  24. data/lib/Phamlp/haml/filters/HamlBaseFilter.php +30 -0
  25. data/lib/Phamlp/haml/filters/HamlCdataFilter.php +29 -0
  26. data/lib/Phamlp/haml/filters/HamlCssFilter.php +30 -0
  27. data/lib/Phamlp/haml/filters/HamlEscapedFilter.php +32 -0
  28. data/lib/Phamlp/haml/filters/HamlJavascriptFilter.php +31 -0
  29. data/lib/Phamlp/haml/filters/HamlPhpFilter.php +27 -0
  30. data/lib/Phamlp/haml/filters/HamlPlainFilter.php +28 -0
  31. data/lib/Phamlp/haml/filters/HamlPreserveFilter.php +29 -0
  32. data/lib/Phamlp/haml/filters/HamlSassFilter.php +37 -0
  33. data/lib/Phamlp/haml/filters/HamlScssFilter.php +37 -0
  34. data/lib/Phamlp/haml/filters/_HamlMarkdownFilter.php +50 -0
  35. data/lib/Phamlp/haml/filters/_HamlTextileFilter.php +50 -0
  36. data/lib/Phamlp/haml/messages/_i18n.php +32 -0
  37. data/lib/Phamlp/haml/messages/de.php +32 -0
  38. data/lib/Phamlp/haml/messages/fr.php +32 -0
  39. data/lib/Phamlp/haml/renderers/HamlCompactRenderer.php +32 -0
  40. data/lib/Phamlp/haml/renderers/HamlCompressedRenderer.php +48 -0
  41. data/lib/Phamlp/haml/renderers/HamlExpandedRenderer.php +58 -0
  42. data/lib/Phamlp/haml/renderers/HamlNestedRenderer.php +77 -0
  43. data/lib/Phamlp/haml/renderers/HamlRenderer.php +137 -0
  44. data/lib/Phamlp/haml/tree/HamlCodeBlockNode.php +58 -0
  45. data/lib/Phamlp/haml/tree/HamlCommentNode.php +41 -0
  46. data/lib/Phamlp/haml/tree/HamlDoctypeNode.php +27 -0
  47. data/lib/Phamlp/haml/tree/HamlElementNode.php +52 -0
  48. data/lib/Phamlp/haml/tree/HamlFilterNode.php +50 -0
  49. data/lib/Phamlp/haml/tree/HamlHelperNode.php +73 -0
  50. data/lib/Phamlp/haml/tree/HamlNode.php +253 -0
  51. data/lib/Phamlp/haml/tree/HamlNodeExceptions.php +19 -0
  52. data/lib/Phamlp/haml/tree/HamlRootNode.php +58 -0
  53. data/lib/Phamlp/sass/SassException.php +29 -0
  54. data/lib/Phamlp/sass/SassFile.php +164 -0
  55. data/lib/Phamlp/sass/SassParser.php +848 -0
  56. data/lib/Phamlp/sass/extensions/compass/config.php +65 -0
  57. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss +47 -0
  58. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss +101 -0
  59. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss +32 -0
  60. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss +11 -0
  61. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss +86 -0
  62. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss +68 -0
  63. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss +249 -0
  64. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss +109 -0
  65. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss +57 -0
  66. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss +37 -0
  67. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss +147 -0
  68. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss +93 -0
  69. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss +3 -0
  70. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss +133 -0
  71. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss +54 -0
  72. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss +104 -0
  73. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss +37 -0
  74. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss +58 -0
  75. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/basic/grid.png +0 -0
  76. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass +4 -0
  77. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb +30 -0
  78. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass +10 -0
  79. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass +4 -0
  80. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass +12 -0
  81. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons/cross.png +0 -0
  82. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons/key.png +0 -0
  83. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons/tick.png +0 -0
  84. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass +49 -0
  85. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/buttons/manifest.rb +17 -0
  86. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/doc.png +0 -0
  87. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/email.png +0 -0
  88. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/external.png +0 -0
  89. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/feed.png +0 -0
  90. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/im.png +0 -0
  91. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/pdf.png +0 -0
  92. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/visited.png +0 -0
  93. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/xls.png +0 -0
  94. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons.sass +13 -0
  95. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/link_icons/manifest.rb +23 -0
  96. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/project/grid.png +0 -0
  97. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/project/ie.sass +16 -0
  98. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/project/manifest.rb +30 -0
  99. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/project/partials/_base.sass +11 -0
  100. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/project/print.sass +8 -0
  101. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/project/screen.sass +45 -0
  102. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/grid.png +0 -0
  103. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/ie.sass +16 -0
  104. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/manifest.rb +33 -0
  105. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_base.sass +10 -0
  106. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_form.sass +6 -0
  107. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_page.sass +18 -0
  108. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_two_col.sass +38 -0
  109. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/print.sass +5 -0
  110. data/lib/Phamlp/sass/extensions/compass/frameworks/blueprint/templates/semantic/screen.sass +14 -0
  111. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/_compass.scss +2 -0
  112. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/_css3.scss +15 -0
  113. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/_layout.scss +1 -0
  114. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/_reset.scss +3 -0
  115. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/_utilities.scss +6 -0
  116. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_background-clip.scss +43 -0
  117. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_background-origin.scss +42 -0
  118. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_background-size.scss +14 -0
  119. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_border-radius.scss +135 -0
  120. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +50 -0
  121. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_box-sizing.scss +13 -0
  122. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_box.scss +112 -0
  123. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_columns.scss +55 -0
  124. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_font-face.scss +33 -0
  125. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_gradient.scss +82 -0
  126. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_inline-block.scss +12 -0
  127. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_opacity.scss +27 -0
  128. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_shared.scss +47 -0
  129. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss +25 -0
  130. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_transform.scss +85 -0
  131. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_transition.scss +85 -0
  132. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss +23 -0
  133. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/reset/_utilities.scss +133 -0
  134. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_general.scss +6 -0
  135. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_links.scss +3 -0
  136. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_lists.scss +4 -0
  137. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_print.scss +17 -0
  138. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_sprites.scss +1 -0
  139. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_tables.scss +3 -0
  140. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_text.scss +3 -0
  141. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss +31 -0
  142. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_float.scss +15 -0
  143. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_hacks.scss +35 -0
  144. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_min.scss +16 -0
  145. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_reset.scss +2 -0
  146. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_tabs.scss +1 -0
  147. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_tag-cloud.scss +18 -0
  148. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss +5 -0
  149. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss +28 -0
  150. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss +7 -0
  151. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss +34 -0
  152. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss +52 -0
  153. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss +47 -0
  154. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss +29 -0
  155. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +56 -0
  156. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss +20 -0
  157. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/tables/_borders.scss +27 -0
  158. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.scss +9 -0
  159. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss +25 -0
  160. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss +2 -0
  161. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss +34 -0
  162. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/ellipsis/ellipsis.sass +9 -0
  163. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/ellipsis/manifest.rb +27 -0
  164. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/ellipsis/xml/ellipsis.xml +14 -0
  165. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/extension/manifest.rb +20 -0
  166. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/extension/stylesheets/main.sass +1 -0
  167. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/extension/templates/project/manifest.rb +2 -0
  168. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/extension/templates/project/screen.sass +2 -0
  169. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/project/USAGE.markdown +32 -0
  170. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/project/ie.sass +6 -0
  171. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/project/manifest.rb +4 -0
  172. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/project/print.sass +6 -0
  173. data/lib/Phamlp/sass/extensions/compass/frameworks/compass/templates/project/screen.sass +7 -0
  174. data/lib/Phamlp/sass/extensions/compass/functions/colourStops.php +268 -0
  175. data/lib/Phamlp/sass/extensions/compass/functions/constants.php +44 -0
  176. data/lib/Phamlp/sass/extensions/compass/functions/fontFiles.php +30 -0
  177. data/lib/Phamlp/sass/extensions/compass/functions/imageSize.php +39 -0
  178. data/lib/Phamlp/sass/extensions/compass/functions/inlineData.php +84 -0
  179. data/lib/Phamlp/sass/extensions/compass/functions/lists.php +47 -0
  180. data/lib/Phamlp/sass/extensions/compass/functions/selectors.php +128 -0
  181. data/lib/Phamlp/sass/extensions/compass/functions/urls.php +143 -0
  182. data/lib/Phamlp/sass/extensions/compass/stylesheets/_compass.scss +2 -0
  183. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/_css3.scss +15 -0
  184. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/_layout.scss +1 -0
  185. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/_reset.scss +3 -0
  186. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/_utilities.scss +6 -0
  187. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_background-clip.scss +43 -0
  188. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_background-origin.scss +42 -0
  189. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_background-size.scss +14 -0
  190. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_border-radius.scss +135 -0
  191. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_box-shadow.scss +50 -0
  192. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_box-sizing.scss +13 -0
  193. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_box.scss +112 -0
  194. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_columns.scss +55 -0
  195. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_font-face.scss +33 -0
  196. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_gradient.scss +96 -0
  197. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_inline-block.scss +12 -0
  198. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_opacity.scss +27 -0
  199. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_shared.scss +47 -0
  200. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_text-shadow.scss +25 -0
  201. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_transform.scss +85 -0
  202. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/css3/_transition.scss +85 -0
  203. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/layout/_sticky-footer.scss +23 -0
  204. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/reset/_utilities.scss +133 -0
  205. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/_general.scss +6 -0
  206. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/_links.scss +3 -0
  207. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/_lists.scss +4 -0
  208. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/_print.scss +17 -0
  209. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/_sprites.scss +1 -0
  210. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/_tables.scss +3 -0
  211. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/_text.scss +3 -0
  212. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/general/_clearfix.scss +31 -0
  213. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/general/_float.scss +15 -0
  214. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/general/_hacks.scss +35 -0
  215. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/general/_min.scss +16 -0
  216. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/general/_reset.scss +2 -0
  217. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/general/_tabs.scss +1 -0
  218. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/general/_tag-cloud.scss +18 -0
  219. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/links/_hover-link.scss +5 -0
  220. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/links/_link-colors.scss +28 -0
  221. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/links/_unstyled-link.scss +7 -0
  222. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/lists/_bullets.scss +34 -0
  223. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss +52 -0
  224. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss +47 -0
  225. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/lists/_inline-list.scss +29 -0
  226. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +56 -0
  227. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss +20 -0
  228. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/tables/_borders.scss +27 -0
  229. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/tables/_scaffolding.scss +9 -0
  230. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/text/_ellipsis.scss +25 -0
  231. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/text/_nowrap.scss +2 -0
  232. data/lib/Phamlp/sass/extensions/compass/stylesheets/compass/utilities/text/_replacement.scss +34 -0
  233. data/lib/Phamlp/sass/messages/_i18n.php +122 -0
  234. data/lib/Phamlp/sass/messages/de.php +70 -0
  235. data/lib/Phamlp/sass/messages/fr.php +70 -0
  236. data/lib/Phamlp/sass/renderers/SassCompactRenderer.php +130 -0
  237. data/lib/Phamlp/sass/renderers/SassCompressedRenderer.php +102 -0
  238. data/lib/Phamlp/sass/renderers/SassExpandedRenderer.php +62 -0
  239. data/lib/Phamlp/sass/renderers/SassNestedRenderer.php +61 -0
  240. data/lib/Phamlp/sass/renderers/SassRenderer.php +51 -0
  241. data/lib/Phamlp/sass/script/SassScriptFunction.php +169 -0
  242. data/lib/Phamlp/sass/script/SassScriptFunctions.php +751 -0
  243. data/lib/Phamlp/sass/script/SassScriptLexer.php +114 -0
  244. data/lib/Phamlp/sass/script/SassScriptOperation.php +151 -0
  245. data/lib/Phamlp/sass/script/SassScriptParser.php +192 -0
  246. data/lib/Phamlp/sass/script/SassScriptParserExceptions.php +40 -0
  247. data/lib/Phamlp/sass/script/SassScriptVariable.php +57 -0
  248. data/lib/Phamlp/sass/script/literals/SassBoolean.php +67 -0
  249. data/lib/Phamlp/sass/script/literals/SassColour.php +886 -0
  250. data/lib/Phamlp/sass/script/literals/SassLiteral.php +359 -0
  251. data/lib/Phamlp/sass/script/literals/SassLiteralExceptions.php +47 -0
  252. data/lib/Phamlp/sass/script/literals/SassNumber.php +503 -0
  253. data/lib/Phamlp/sass/script/literals/SassString.php +106 -0
  254. data/lib/Phamlp/sass/tree/SassCommentNode.php +64 -0
  255. data/lib/Phamlp/sass/tree/SassContext.php +120 -0
  256. data/lib/Phamlp/sass/tree/SassDebugNode.php +84 -0
  257. data/lib/Phamlp/sass/tree/SassDirectiveNode.php +76 -0
  258. data/lib/Phamlp/sass/tree/SassElseNode.php +28 -0
  259. data/lib/Phamlp/sass/tree/SassExtendNode.php +47 -0
  260. data/lib/Phamlp/sass/tree/SassForNode.php +99 -0
  261. data/lib/Phamlp/sass/tree/SassIfNode.php +95 -0
  262. data/lib/Phamlp/sass/tree/SassImportNode.php +69 -0
  263. data/lib/Phamlp/sass/tree/SassMixinDefinitionNode.php +88 -0
  264. data/lib/Phamlp/sass/tree/SassMixinNode.php +91 -0
  265. data/lib/Phamlp/sass/tree/SassNode.php +342 -0
  266. data/lib/Phamlp/sass/tree/SassNodeExceptions.php +117 -0
  267. data/lib/Phamlp/sass/tree/SassPropertyNode.php +239 -0
  268. data/lib/Phamlp/sass/tree/SassRootNode.php +100 -0
  269. data/lib/Phamlp/sass/tree/SassRuleNode.php +337 -0
  270. data/lib/Phamlp/sass/tree/SassVariableNode.php +90 -0
  271. data/lib/Phamlp/sass/tree/SassWhileNode.php +64 -0
  272. data/lib/frontsau/assets/rack.rb +12 -0
  273. data/lib/frontsau/assets/sprockets.rb +59 -0
  274. data/lib/frontsau/assets/static_assets_compiler.rb +50 -0
  275. data/lib/frontsau/assets/url_rewriter.rb +22 -0
  276. data/lib/frontsau/assets/watcher.rb +60 -0
  277. data/lib/frontsau/thor_app.rb +118 -0
  278. data/lib/frontsau/version.rb +3 -0
  279. data/lib/frontsau.rb +64 -0
  280. metadata +578 -0
@@ -0,0 +1,114 @@
1
+ <?php
2
+ /* SVN FILE: $Id: SassScriptLexer.php 118 2010-09-21 09:45:11Z chris.l.yates@gmail.com $ */
3
+ /**
4
+ * SassScriptLexer class file.
5
+ * @author Chris Yates <chris.l.yates@gmail.com>
6
+ * @copyright Copyright (c) 2010 PBM Web Development
7
+ * @license http://phamlp.googlecode.com/files/license.txt
8
+ * @package PHamlP
9
+ * @subpackage Sass.script
10
+ */
11
+
12
+ require_once('literals/SassBoolean.php');
13
+ require_once('literals/SassColour.php');
14
+ require_once('literals/SassNumber.php');
15
+ require_once('literals/SassString.php');
16
+ require_once('SassScriptFunction.php');
17
+ require_once('SassScriptOperation.php');
18
+ require_once('SassScriptVariable.php');
19
+
20
+ /**
21
+ * SassScriptLexer class.
22
+ * Lexes SassSCript into tokens for the parser.
23
+ *
24
+ * Implements a {@link http://en.wikipedia.org/wiki/Shunting-yard_algorithm Shunting-yard algorithm} to provide {@link http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish notation} output.
25
+ * @package PHamlP
26
+ * @subpackage Sass.script
27
+ */
28
+ class SassScriptLexer {
29
+ const MATCH_WHITESPACE = '/^\s+/';
30
+
31
+ /**
32
+ * @var SassScriptParser the parser object
33
+ */
34
+ private $parser;
35
+
36
+ /**
37
+ * SassScriptLexer constructor.
38
+ * @return SassScriptLexer
39
+ */
40
+ public function __construct($parser) {
41
+ $this->parser = $parser;
42
+ }
43
+
44
+ /**
45
+ * Lex an expression into SassScript tokens.
46
+ * @param string expression to lex
47
+ * @param SassContext the context in which the expression is lexed
48
+ * @return array tokens
49
+ */
50
+ public function lex($string, $context) {
51
+ $tokens = array();
52
+ while ($string !== false) {
53
+ if (($match = $this->isWhitespace($string)) !== false) {
54
+ $tokens[] = null;
55
+ }
56
+ elseif (($match = SassScriptFunction::isa($string)) !== false) {
57
+ preg_match(SassScriptFunction::MATCH_FUNC, $match, $matches);
58
+
59
+ $args = array();
60
+ foreach (SassScriptFunction::extractArgs($matches[SassScriptFunction::ARGS])
61
+ as $expression) {
62
+ $args[] = $this->parser->evaluate($expression, $context);
63
+ }
64
+
65
+ $tokens[] = new SassScriptFunction(
66
+ $matches[SassScriptFunction::NAME], $args);
67
+ }
68
+ elseif (($match = SassString::isa($string)) !== false) {
69
+ $tokens[] = new SassString($match);
70
+ }
71
+ elseif (($match = SassBoolean::isa($string)) !== false) {
72
+ $tokens[] = new SassBoolean($match);
73
+ }
74
+ elseif (($match = SassColour::isa($string)) !== false) {
75
+ $tokens[] = new SassColour($match);
76
+ }
77
+ elseif (($match = SassNumber::isa($string)) !== false) {
78
+ $tokens[] = new SassNumber($match);
79
+ }
80
+ elseif (($match = SassScriptOperation::isa($string)) !== false) {
81
+ $tokens[] = new SassScriptOperation($match);
82
+ }
83
+ elseif (($match = SassScriptVariable::isa($string)) !== false) {
84
+ $tokens[] = new SassScriptVariable($match);
85
+ }
86
+ else {
87
+ $_string = $string;
88
+ $match = '';
89
+ while (strlen($_string) && !$this->isWhitespace($_string)) {
90
+ foreach (SassScriptOperation::$inStrOperators as $operator) {
91
+ if (substr($_string, 0, strlen($operator)) == $operator) {
92
+ break 2;
93
+ }
94
+ }
95
+ $match .= $_string[0];
96
+ $_string = substr($_string, 1);
97
+ }
98
+ $tokens[] = new SassString($match);
99
+ }
100
+ $string = substr($string, strlen($match));
101
+ }
102
+ return $tokens;
103
+ }
104
+
105
+ /**
106
+ * Returns a value indicating if a token of this type can be matched at
107
+ * the start of the subject string.
108
+ * @param string the subject string
109
+ * @return mixed match at the start of the string or false if no match
110
+ */
111
+ public function isWhitespace($subject) {
112
+ return (preg_match(self::MATCH_WHITESPACE, $subject, $matches) ? $matches[0] : false);
113
+ }
114
+ }
@@ -0,0 +1,151 @@
1
+ <?php
2
+ /* SVN FILE: $Id: SassScriptOperation.php 118 2010-09-21 09:45:11Z chris.l.yates@gmail.com $ */
3
+ /**
4
+ * SassScriptOperation class file.
5
+ * @author Chris Yates <chris.l.yates@gmail.com>
6
+ * @copyright Copyright (c) 2010 PBM Web Development
7
+ * @license http://phamlp.googlecode.com/files/license.txt
8
+ * @package PHamlP
9
+ * @subpackage Sass.script
10
+ */
11
+
12
+ /**
13
+ * SassScriptOperation class.
14
+ * The operation to perform.
15
+ * @package PHamlP
16
+ * @subpackage Sass.script
17
+ */
18
+ class SassScriptOperation {
19
+ const MATCH = '/^(\(|\)|\+|-|\*|\/|%|<=|>=|<|>|==|!=|=|#{|}|,|and\b|or\b|xor\b|not\b)/';
20
+
21
+ /**
22
+ * @var array map symbols to tokens.
23
+ * A token is function, associativity, precedence, number of operands
24
+ */
25
+ public static $operators = array(
26
+ '*' => array('times', 'l', 8, 2),
27
+ '/' => array('div', 'l', 8, 2),
28
+ '%' => array('modulo', 'l', 8, 2),
29
+ '+' => array('plus', 'l', 7, 2),
30
+ '-' => array('minus', 'l', 7, 2),
31
+ '<<' => array('shiftl', 'l', 6, 2),
32
+ '>>' => array('shiftr', 'l', 6, 2),
33
+ '<=' => array('lte', 'l', 5, 2),
34
+ '>=' => array('gte', 'l', 5, 2),
35
+ '<' => array('lt', 'l', 5, 2),
36
+ '>' => array('gt', 'l', 5, 2),
37
+ '==' => array('eq', 'l', 4, 2),
38
+ '!=' => array('neq', 'l', 4, 2),
39
+ 'and' => array('and', 'l', 3, 2),
40
+ 'or' => array('or', 'l', 3, 2),
41
+ 'xor' => array('xor', 'l', 3, 2),
42
+ 'not' => array('not', 'l', 3, 1),
43
+ '=' => array('assign', 'l', 2, 2),
44
+ ')' => array('rparen', 'l', 1),
45
+ '(' => array('lparen', 'l', 0),
46
+ ',' => array('comma', 'l', 0, 2),
47
+ '#{' => array('begin_interpolation'),
48
+ '}' => array('end_interpolation'),
49
+ );
50
+
51
+ /**
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.
59
+ */
60
+ public static $defaultOperator = array('concat', 'l', 0, 2);
61
+
62
+ /**
63
+ * @var string operator for this operation
64
+ */
65
+ private $operator;
66
+ /**
67
+ * @var string associativity of the operator; left or right
68
+ */
69
+ private $associativity;
70
+ /**
71
+ * @var integer precedence of the operator
72
+ */
73
+ private $precedence;
74
+ /**
75
+ * @var integer number of operands required by the operator
76
+ */
77
+ private $operandCount;
78
+
79
+ /**
80
+ * SassScriptOperation constructor
81
+ *
82
+ * @param mixed string: operator symbol; array: operator token
83
+ * @return SassScriptOperation
84
+ */
85
+ public function __construct($operation) {
86
+ if (is_string($operation)) {
87
+ $operation = self::$operators[$operation];
88
+ }
89
+ $this->operator = $operation[0];
90
+ if (isset($operation[1])) {
91
+ $this->associativity = $operation[1];
92
+ $this->precedence = $operation[2];
93
+ $this->operandCount = (isset($operation[3]) ?
94
+ $operation[3] : null);
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Getter function for properties
100
+ * @param string name of property
101
+ * @return mixed value of the property
102
+ * @throws SassScriptOperationException if the property does not exist
103
+ */
104
+ public function __get($name) {
105
+ if (property_exists($this, $name)) {
106
+ return $this->$name;
107
+ }
108
+ else {
109
+ throw new SassScriptOperationException('Unknown property: {name}', array('{name}'=>$name), SassScriptParser::$context->node);
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Performs this operation.
115
+ * @param array operands for the operation. The operands are SassLiterals
116
+ * @return SassLiteral the result of the operation
117
+ * @throws SassScriptOperationException if the oprand count is incorrect or
118
+ * the operation is undefined
119
+ */
120
+ public function perform($operands) {
121
+ if (count($operands) !== $this->operandCount) {
122
+ throw new SassScriptOperationException('Incorrect operand count for {operation}; expected {expected}, received {received}', array('{operation}'=>get_class($operands[0]), '{expected}'=>$this->operandCount, '{received}'=>count($operands)), SassScriptParser::$context->node);
123
+ }
124
+
125
+ if (count($operands) > 1 && is_null($operands[1])) {
126
+ $operation = 'op_unary_' . $this->operator;
127
+ }
128
+ else {
129
+ $operation = 'op_' . $this->operator;
130
+ if ($this->associativity == 'l') {
131
+ $operands = array_reverse($operands);
132
+ }
133
+ }
134
+
135
+ if (method_exists($operands[0], $operation)) {
136
+ return $operands[0]->$operation(!empty($operands[1]) ? $operands[1] : null);
137
+ }
138
+
139
+ throw new SassScriptOperationException('Undefined operation "{operation}" for {what}', array('{operation}'=>$operation, '{what}'=>get_class($operands[0])), SassScriptParser::$context->node);
140
+ }
141
+
142
+ /**
143
+ * Returns a value indicating if a token of this type can be matched at
144
+ * the start of the subject string.
145
+ * @param string the subject string
146
+ * @return mixed match at the start of the string or false if no match
147
+ */
148
+ public static function isa($subject) {
149
+ return (preg_match(self::MATCH, $subject, $matches) ? trim($matches[0]) : false);
150
+ }
151
+ }
@@ -0,0 +1,192 @@
1
+ <?php
2
+ /* SVN FILE: $Id: SassScriptParser.php 118 2010-09-21 09:45:11Z chris.l.yates@gmail.com $ */
3
+ /**
4
+ * SassScriptParser class file.
5
+ * @author Chris Yates <chris.l.yates@gmail.com>
6
+ * @copyright Copyright (c) 2010 PBM Web Development
7
+ * @license http://phamlp.googlecode.com/files/license.txt
8
+ * @package PHamlP
9
+ * @subpackage Sass.script
10
+ */
11
+
12
+ require_once('SassScriptLexer.php');
13
+ require_once('SassScriptParserExceptions.php');
14
+
15
+ /**
16
+ * SassScriptParser class.
17
+ * Parses SassScript. SassScript is lexed into {@link http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish notation} by the SassScriptLexer and
18
+ * the calculated result returned.
19
+ * @package PHamlP
20
+ * @subpackage Sass.script
21
+ */
22
+ class SassScriptParser {
23
+ const MATCH_INTERPOLATION = '/(?<!\\\\)#\{(.*?)\}/';
24
+ const DEFAULT_ENV = 0;
25
+ const CSS_RULE = 1;
26
+ const CSS_PROPERTY = 2;
27
+
28
+ /**
29
+ * @var SassContext Used for error reporting
30
+ */
31
+ public static $context;
32
+
33
+ /**
34
+ * @var SassScriptLexer the lexer object
35
+ */
36
+ private $lexer;
37
+
38
+ /**
39
+ * SassScriptParser constructor.
40
+ * @return SassScriptParser
41
+ */
42
+ public function __construct() {
43
+ $this->lexer = new SassScriptLexer($this);
44
+ }
45
+
46
+ /**
47
+ * Replace interpolated SassScript contained in '#{}' with the parsed value.
48
+ * @param string the text to interpolate
49
+ * @param SassContext the context in which the string is interpolated
50
+ * @return string the interpolated text
51
+ */
52
+ public function interpolate($string, $context) {
53
+ for ($i = 0, $n = preg_match_all(self::MATCH_INTERPOLATION, $string, $matches);
54
+ $i < $n; $i++) {
55
+ $matches[1][$i] = $this->evaluate($matches[1][$i], $context)->toString();
56
+ }
57
+ return str_replace($matches[0], $matches[1], $string);
58
+ }
59
+
60
+ /**
61
+ * Evaluate a SassScript.
62
+ * @param string expression to parse
63
+ * @param SassContext the context in which the expression is evaluated
64
+ * @param integer the environment in which the expression is evaluated
65
+ * @return SassLiteral parsed value
66
+ */
67
+ public function evaluate($expression, $context, $environment=self::DEFAULT_ENV) {
68
+ self::$context = $context;
69
+ $operands = array();
70
+
71
+ $tokens = $this->parse($expression, $context, $environment);
72
+
73
+ while (count($tokens)) {
74
+ $token = array_shift($tokens);
75
+ if ($token instanceof SassScriptFunction) {
76
+ array_push($operands, $token->perform());
77
+ }
78
+ elseif ($token instanceof SassLiteral) {
79
+ if ($token instanceof SassString) {
80
+ $token = new SassString($this->interpolate($token->toString(), self::$context));
81
+ }
82
+ array_push($operands, $token);
83
+ }
84
+ else {
85
+ $args = array();
86
+ for ($i = 0, $c = $token->operandCount; $i < $c; $i++) {
87
+ $args[] = array_pop($operands);
88
+ }
89
+ array_push($operands, $token->perform($args));
90
+ }
91
+ }
92
+ return array_shift($operands);
93
+ }
94
+
95
+ /**
96
+ * Parse SassScript to a set of tokens in RPN
97
+ * using the Shunting Yard Algorithm.
98
+ * @param string expression to parse
99
+ * @param SassContext the context in which the expression is parsed
100
+ * @param integer the environment in which the expression is parsed
101
+ * @return array tokens in RPN
102
+ */
103
+ public function parse($expression, $context, $environment=self::DEFAULT_ENV) {
104
+ $outputQueue = array();
105
+ $operatorStack = array();
106
+ $parenthesis = 0;
107
+
108
+ $tokens = $this->lexer->lex($expression, $context);
109
+
110
+ foreach($tokens as $i=>$token) {
111
+ // If two literals/expessions are seperated by whitespace use the concat operator
112
+ if (empty($token)) {
113
+ if ($i > 0 && (!$tokens[$i-1] instanceof SassScriptOperation || $tokens[$i-1]->operator === SassScriptOperation::$operators[')'][0]) &&
114
+ (!$tokens[$i+1] instanceof SassScriptOperation || $tokens[$i+1]->operator === SassScriptOperation::$operators['('][0])) {
115
+ $token = new SassScriptOperation(SassScriptOperation::$defaultOperator, $context);
116
+ }
117
+ else {
118
+ continue;
119
+ }
120
+ }
121
+ elseif ($token instanceof SassScriptVariable) {
122
+ $token = $token->evaluate($context);
123
+ $environment = self::DEFAULT_ENV;
124
+ }
125
+
126
+ // If the token is a number or function add it to the output queue.
127
+ if ($token instanceof SassLiteral || $token instanceof SassScriptFunction) {
128
+ if ($environment === self::CSS_PROPERTY && $token instanceof SassNumber && !$parenthesis) {
129
+ $token->inExpression = false;
130
+ }
131
+ array_push($outputQueue, $token);
132
+ }
133
+ // If the token is an operation
134
+ elseif ($token instanceof SassScriptOperation) {
135
+ // If the token is a left parenthesis push it onto the stack.
136
+ if ($token->operator == SassScriptOperation::$operators['('][0]) {
137
+ array_push($operatorStack, $token);
138
+ $parenthesis++;
139
+ }
140
+ // If the token is a right parenthesis:
141
+ elseif ($token->operator == SassScriptOperation::$operators[')'][0]) {
142
+ $parenthesis--;
143
+ while ($c = count($operatorStack)) {
144
+ // If the token at the top of the stack is a left parenthesis
145
+ if ($operatorStack[$c - 1]->operator == SassScriptOperation::$operators['('][0]) {
146
+ // Pop the left parenthesis from the stack, but not onto the output queue.
147
+ array_pop($operatorStack);
148
+ break;
149
+ }
150
+ // else pop the operator off the stack onto the output queue.
151
+ array_push($outputQueue, array_pop($operatorStack));
152
+ }
153
+ // If the stack runs out without finding a left parenthesis
154
+ // there are mismatched parentheses.
155
+ if ($c == 0) {
156
+ throw new SassScriptParserException('Unmatched parentheses', array(), $context->node);
157
+ }
158
+ }
159
+ // the token is an operator, o1, so:
160
+ else {
161
+ // while there is an operator, o2, at the top of the stack
162
+ while ($c = count($operatorStack)) {
163
+ $operation = $operatorStack[$c - 1];
164
+ // if o2 is left parenthesis, or
165
+ // the o1 has left associativty and greater precedence than o2, or
166
+ // the o1 has right associativity and lower or equal precedence than o2
167
+ if (($operation->operator == SassScriptOperation::$operators['('][0]) ||
168
+ ($token->associativity == 'l' && $token->precedence > $operation->precedence) ||
169
+ ($token->associativity == 'r' && $token->precedence <= $operation->precedence)) {
170
+ break; // stop checking operators
171
+ }
172
+ //pop o2 off the stack and onto the output queue
173
+ array_push($outputQueue, array_pop($operatorStack));
174
+ }
175
+ // push o1 onto the stack
176
+ array_push($operatorStack, $token);
177
+ }
178
+ }
179
+ }
180
+
181
+ // When there are no more tokens
182
+ while ($c = count($operatorStack)) { // While there are operators on the stack:
183
+ if ($operatorStack[$c - 1]->operator !== SassScriptOperation::$operators['('][0]) {
184
+ array_push($outputQueue, array_pop($operatorStack));
185
+ }
186
+ else {
187
+ throw new SassScriptParserException('Unmatched parentheses', array(), $context->node);
188
+ }
189
+ }
190
+ return $outputQueue;
191
+ }
192
+ }
@@ -0,0 +1,40 @@
1
+ <?php
2
+ /* SVN FILE: $Id: SassScriptParserExceptions.php 61 2010-04-16 10:19:59Z chris.l.yates $ */
3
+ /**
4
+ * SassScript Parser exception class file.
5
+ * @author Chris Yates <chris.l.yates@gmail.com>
6
+ * @copyright Copyright (c) 2010 PBM Web Development
7
+ * @license http://phamlp.googlecode.com/files/license.txt
8
+ * @package PHamlP
9
+ * @subpackage Sass.script
10
+ */
11
+
12
+ require_once(dirname(__FILE__).'/../SassException.php');
13
+
14
+ /**
15
+ * SassScriptParserException class.
16
+ * @package PHamlP
17
+ * @subpackage Sass.script
18
+ */
19
+ class SassScriptParserException extends SassException {}
20
+
21
+ /**
22
+ * SassScriptLexerException class.
23
+ * @package PHamlP
24
+ * @subpackage Sass.script
25
+ */
26
+ class SassScriptLexerException extends SassScriptParserException {}
27
+
28
+ /**
29
+ * SassScriptOperationException class.
30
+ * @package PHamlP
31
+ * @subpackage Sass.script
32
+ */
33
+ class SassScriptOperationException extends SassScriptParserException {}
34
+
35
+ /**
36
+ * SassScriptFunctionException class.
37
+ * @package PHamlP
38
+ * @subpackage Sass.script
39
+ */
40
+ class SassScriptFunctionException extends SassScriptParserException {}
@@ -0,0 +1,57 @@
1
+ <?php
2
+ /* SVN FILE: $Id: SassVariable.php 49 2010-04-04 10:51:24Z chris.l.yates $ */
3
+ /**
4
+ * SassVariable class file.
5
+ * @author Chris Yates <chris.l.yates@gmail.com>
6
+ * @copyright Copyright (c) 2010 PBM Web Development
7
+ * @license http://phamlp.googlecode.com/files/license.txt
8
+ * @package PHamlP
9
+ * @subpackage Sass.script.literals
10
+ */
11
+
12
+ /**
13
+ * SassVariable class.
14
+ * @package PHamlP
15
+ * @subpackage Sass.script.literals
16
+ */
17
+ class SassScriptVariable {
18
+ /**
19
+ * Regex for matching and extracting Variables
20
+ */
21
+ const MATCH = '/^(?<!\\\\)(?(?!!important\b)[!\$]([\w-]+))/';
22
+
23
+ /**
24
+ * @var string name of variable
25
+ */
26
+ private $name;
27
+
28
+ /**
29
+ * SassVariable constructor
30
+ * @param string value of the Variable type
31
+ * @return SassVariable
32
+ */
33
+ public function __construct($value) {
34
+ $this->name = substr($value, 1);
35
+ }
36
+
37
+ /**
38
+ * Returns the SassScript object for this variable.
39
+ * @param SassContext context of the variable
40
+ * @return SassLiteral the SassScript object for this variable
41
+ */
42
+ public function evaluate($context) {
43
+ return $context->getVariable($this->name);
44
+ }
45
+
46
+ /**
47
+ * Returns a value indicating if a token of this type can be matched at
48
+ * the start of the subject string.
49
+ * @param string the subject string
50
+ * @return mixed match at the start of the string or false if no match
51
+ */
52
+ public static function isa($subject) {
53
+ // we need to do the check as preg_match returns a count of 1 if
54
+ // subject == '!important'; the match being an empty match
55
+ return (preg_match(self::MATCH, $subject, $matches) ? (empty($matches[0]) ? false : $matches[0]) : false);
56
+ }
57
+ }
@@ -0,0 +1,67 @@
1
+ <?php
2
+ /* SVN FILE: $Id: SassBoolean.php 118 2010-09-21 09:45:11Z chris.l.yates@gmail.com $ */
3
+ /**
4
+ * SassBoolean class file.
5
+ * @author Chris Yates <chris.l.yates@gmail.com>
6
+ * @copyright Copyright (c) 2010 PBM Web Development
7
+ * @license http://phamlp.googlecode.com/files/license.txt
8
+ * @package PHamlP
9
+ * @subpackage Sass.script.literals
10
+ */
11
+
12
+ require_once('SassLiteral.php');
13
+
14
+ /**
15
+ * SassBoolean class.
16
+ * @package PHamlP
17
+ * @subpackage Sass.script.literals
18
+ */
19
+ class SassBoolean extends SassLiteral {
20
+ /**@#+
21
+ * Regex for matching and extracting booleans
22
+ */
23
+ const MATCH = '/^(true|false)\b/';
24
+
25
+ /**
26
+ * SassBoolean constructor
27
+ * @param string value of the boolean type
28
+ * @return SassBoolean
29
+ */
30
+ public function __construct($value) {
31
+ if (is_bool($value)) {
32
+ $this->value = $value;
33
+ }
34
+ elseif ($value === 'true' || $value === 'false') {
35
+ $this->value = ($value === 'true' ? true : false);
36
+ }
37
+ else {
38
+ throw new SassBooleanException('Invalid {what}', array('{what}'=>'SassBoolean'), SassScriptParser::$context->node);
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Returns the value of this boolean.
44
+ * @return boolean the value of this boolean
45
+ */
46
+ public function getValue() {
47
+ return $this->value;
48
+ }
49
+
50
+ /**
51
+ * Returns a string representation of the value.
52
+ * @return string string representation of the value.
53
+ */
54
+ public function toString() {
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.
61
+ * @param string the subject string
62
+ * @return mixed match at the start of the string or false if no match
63
+ */
64
+ public static function isa($subject) {
65
+ return (preg_match(self::MATCH, $subject, $matches) ? $matches[0] : false);
66
+ }
67
+ }