utopia 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +1 -0
  3. data/.travis.yml +3 -1
  4. data/Gemfile +2 -0
  5. data/README.md +2 -2
  6. data/Rakefile +19 -7
  7. data/docs/.nojekyll +0 -0
  8. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +6 -0
  9. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +5 -0
  10. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +8 -0
  11. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +6 -0
  12. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +10 -0
  13. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +3 -0
  14. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.css.css +14 -0
  15. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +16 -0
  16. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.html.css +5 -0
  17. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +3 -0
  18. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +2 -0
  19. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.python.css +6 -0
  20. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +2 -0
  21. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +18 -0
  22. data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +62 -0
  23. data/docs/_components/jquery-syntax/base/jquery.syntax.editor.css +6 -0
  24. data/docs/_components/jquery-syntax/base/theme.js +1 -0
  25. data/docs/_components/jquery-syntax/bright/jquery.syntax.core.css +27 -0
  26. data/docs/_components/jquery-syntax/bright/theme.js +1 -0
  27. data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +41 -0
  28. data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +57 -0
  29. data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +37 -0
  30. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +67 -0
  31. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +33 -0
  32. data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +51 -0
  33. data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +89 -0
  34. data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +47 -0
  35. data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +80 -0
  36. data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +24 -0
  37. data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +47 -0
  38. data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +45 -0
  39. data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +66 -0
  40. data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +45 -0
  41. data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +45 -0
  42. data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +40 -0
  43. data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +29 -0
  44. data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +34 -0
  45. data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +44 -0
  46. data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +31 -0
  47. data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +73 -0
  48. data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +46 -0
  49. data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +51 -0
  50. data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +52 -0
  51. data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +48 -0
  52. data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +15 -0
  53. data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +10 -0
  54. data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +43 -0
  55. data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +44 -0
  56. data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +77 -0
  57. data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +44 -0
  58. data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +29 -0
  59. data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +31 -0
  60. data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +57 -0
  61. data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +55 -0
  62. data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +35 -0
  63. data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +50 -0
  64. data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +29 -0
  65. data/docs/_components/jquery-syntax/jquery.syntax.cache.js +65 -0
  66. data/docs/_components/jquery-syntax/jquery.syntax.core.js +1098 -0
  67. data/docs/_components/jquery-syntax/jquery.syntax.editor.js +291 -0
  68. data/docs/_components/jquery-syntax/jquery.syntax.js +258 -0
  69. data/docs/_components/jquery-syntax/jquery.syntax.min.js +13 -0
  70. data/docs/_components/jquery-syntax/paper/jquery.syntax.core.css +31 -0
  71. data/docs/_components/jquery-syntax/paper/theme.js +1 -0
  72. data/docs/_components/jquery/core.js +482 -0
  73. data/docs/_components/jquery/jquery.js +10220 -0
  74. data/docs/_components/jquery/jquery.min.js +4 -0
  75. data/docs/_components/jquery/jquery.min.map +1 -0
  76. data/docs/_components/jquery/jquery.slim.js +8107 -0
  77. data/docs/_components/jquery/jquery.slim.min.js +4 -0
  78. data/docs/_components/jquery/jquery.slim.min.map +1 -0
  79. data/docs/_static/icon.png +0 -0
  80. data/docs/_static/site.css +205 -0
  81. data/docs/_static/utopia-background.svg +1 -0
  82. data/docs/_static/utopia.svg +1 -0
  83. data/docs/code/Utopia.html +511 -0
  84. data/docs/code/Utopia/Basename.html +654 -0
  85. data/docs/code/Utopia/Bootstrap.html +538 -0
  86. data/docs/code/Utopia/Command.html +207 -0
  87. data/docs/code/Utopia/Command/Environment.html +321 -0
  88. data/docs/code/Utopia/Command/Server.html +214 -0
  89. data/docs/code/Utopia/Command/Server/Create.html +222 -0
  90. data/docs/code/Utopia/Command/Server/Environment.html +236 -0
  91. data/docs/code/Utopia/Command/Server/Update.html +317 -0
  92. data/docs/code/Utopia/Command/Setup.html +145 -0
  93. data/docs/code/Utopia/Command/Setup/Server.html +298 -0
  94. data/docs/code/Utopia/Command/Setup/Site.html +180 -0
  95. data/docs/code/Utopia/Command/Site.html +279 -0
  96. data/docs/code/Utopia/Command/Site/Create.html +324 -0
  97. data/docs/code/Utopia/Command/Site/Update.html +407 -0
  98. data/docs/code/Utopia/Command/Top.html +279 -0
  99. data/docs/code/Utopia/Content.html +826 -0
  100. data/docs/code/Utopia/Content/Document.html +1818 -0
  101. data/docs/code/Utopia/Content/Document/State.html +1220 -0
  102. data/docs/code/Utopia/Content/Link.html +1286 -0
  103. data/docs/code/Utopia/Content/Links.html +841 -0
  104. data/docs/code/Utopia/Content/MarkupParser.html +881 -0
  105. data/docs/code/Utopia/Content/MarkupParser/ParsedTag.html +422 -0
  106. data/docs/code/Utopia/Content/MarkupParser/UnbalancedTagError.html +615 -0
  107. data/docs/code/Utopia/Content/Namespace.html +485 -0
  108. data/docs/code/Utopia/Content/Node.html +1188 -0
  109. data/docs/code/Utopia/Content/Node/Context.html +938 -0
  110. data/docs/code/Utopia/Content/Response.html +813 -0
  111. data/docs/code/Utopia/Content/SymbolicHash.html +419 -0
  112. data/docs/code/Utopia/Content/Tag.html +399 -0
  113. data/docs/code/Utopia/Content/Tags.html +136 -0
  114. data/docs/code/Utopia/Content/Tags/ContentTag.html +187 -0
  115. data/docs/code/Utopia/Content/Tags/DeferredTag.html +193 -0
  116. data/docs/code/Utopia/Content/Tags/Library.html +333 -0
  117. data/docs/code/Utopia/Content/Tags/NodeTag.html +193 -0
  118. data/docs/code/Utopia/Content/UnbalancedTagError.html +298 -0
  119. data/docs/code/Utopia/ContentLength.html +339 -0
  120. data/docs/code/Utopia/Controller.html +901 -0
  121. data/docs/code/Utopia/Controller/Actions.html +289 -0
  122. data/docs/code/Utopia/Controller/Actions/Action.html +978 -0
  123. data/docs/code/Utopia/Controller/Actions/ClassMethods.html +442 -0
  124. data/docs/code/Utopia/Controller/Base.html +1216 -0
  125. data/docs/code/Utopia/Controller/Respond.html +283 -0
  126. data/docs/code/Utopia/Controller/Respond/ClassMethods.html +236 -0
  127. data/docs/code/Utopia/Controller/Respond/Converter.html +256 -0
  128. data/docs/code/Utopia/Controller/Respond/Converter/Callback.html +484 -0
  129. data/docs/code/Utopia/Controller/Respond/Converter/ToJSON.html +375 -0
  130. data/docs/code/Utopia/Controller/Respond/Passthrough.html +291 -0
  131. data/docs/code/Utopia/Controller/Respond/Responder.html +529 -0
  132. data/docs/code/Utopia/Controller/Rewrite.html +290 -0
  133. data/docs/code/Utopia/Controller/Rewrite/ClassMethods.html +242 -0
  134. data/docs/code/Utopia/Controller/Rewrite/ExtractPrefixRule.html +364 -0
  135. data/docs/code/Utopia/Controller/Rewrite/Rewriter.html +464 -0
  136. data/docs/code/Utopia/Controller/Rewrite/Rule.html +209 -0
  137. data/docs/code/Utopia/Controller/Variables.html +550 -0
  138. data/docs/code/Utopia/Controllers.html +244 -0
  139. data/docs/code/Utopia/Exceptions.html +127 -0
  140. data/docs/code/Utopia/Exceptions/Handler.html +526 -0
  141. data/docs/code/Utopia/Exceptions/Mailer.html +476 -0
  142. data/docs/code/Utopia/Extensions.html +117 -0
  143. data/docs/code/Utopia/Extensions/ArraySplit.html +183 -0
  144. data/docs/code/Utopia/Extensions/DateTimeComparison.html +193 -0
  145. data/docs/code/Utopia/Extensions/TimeDateComparison.html +193 -0
  146. data/docs/code/Utopia/HTTP.html +244 -0
  147. data/docs/code/Utopia/HTTP/Status.html +415 -0
  148. data/docs/code/Utopia/Locale.html +606 -0
  149. data/docs/code/Utopia/Localization.html +1235 -0
  150. data/docs/code/Utopia/Localization/Wrapper.html +459 -0
  151. data/docs/code/Utopia/Logger.html +205 -0
  152. data/docs/code/Utopia/Logger/CompactFormatter.html +335 -0
  153. data/docs/code/Utopia/Path.html +3304 -0
  154. data/docs/code/Utopia/Path/Matcher.html +518 -0
  155. data/docs/code/Utopia/Path/Matcher/MatchData.html +475 -0
  156. data/docs/code/Utopia/Redirection.html +145 -0
  157. data/docs/code/Utopia/Redirection/ClientRedirect.html +717 -0
  158. data/docs/code/Utopia/Redirection/DirectoryIndex.html +298 -0
  159. data/docs/code/Utopia/Redirection/Errors.html +470 -0
  160. data/docs/code/Utopia/Redirection/Moved.html +312 -0
  161. data/docs/code/Utopia/Redirection/RequestFailure.html +226 -0
  162. data/docs/code/Utopia/Redirection/Rewrite.html +296 -0
  163. data/docs/code/Utopia/Session.html +883 -0
  164. data/docs/code/Utopia/Session/LazyHash.html +859 -0
  165. data/docs/code/Utopia/Setup.html +964 -0
  166. data/docs/code/Utopia/Static.html +690 -0
  167. data/docs/code/Utopia/Static/LocalFile.html +1098 -0
  168. data/docs/code/Utopia/Static/MimeTypeLoader.html +541 -0
  169. data/docs/code/Utopia/Static/MimeTypeLoader/ExpansionError.html +124 -0
  170. data/docs/code/Utopia/Tags.html +115 -0
  171. data/docs/code/Utopia/Tags/Environment.html +314 -0
  172. data/docs/code/Utopia/Tags/EnvironmentTag.html +314 -0
  173. data/docs/code/Utopia/Tags/Library.html +340 -0
  174. data/docs/code/_index.html +758 -0
  175. data/docs/code/class_list.html +51 -0
  176. data/docs/code/css/common.css +1 -0
  177. data/docs/code/css/full_list.css +58 -0
  178. data/docs/code/css/style.css +499 -0
  179. data/docs/code/file.README.html +169 -0
  180. data/docs/code/file_list.html +56 -0
  181. data/docs/code/frames.html +17 -0
  182. data/docs/code/index.html +169 -0
  183. data/docs/code/js/app.js +248 -0
  184. data/docs/code/js/full_list.js +216 -0
  185. data/docs/code/js/jquery.js +4 -0
  186. data/docs/code/materials/utopia.png +0 -0
  187. data/docs/code/materials/utopia.svg +1 -0
  188. data/docs/code/method_list.html +3443 -0
  189. data/docs/code/top-level-namespace.html +110 -0
  190. data/docs/index.html +92 -0
  191. data/docs/wiki.html +92 -0
  192. data/docs/wiki/bower-integration.html +74 -0
  193. data/docs/wiki/bower-integration/index.html +74 -0
  194. data/docs/wiki/development-environment-setup.html +60 -0
  195. data/docs/wiki/development-environment-setup/index.html +60 -0
  196. data/docs/wiki/edit.html +103 -0
  197. data/docs/wiki/faq/what-is-xnode.html +79 -0
  198. data/docs/wiki/faq/what-is-xnode/index.html +79 -0
  199. data/docs/wiki/middleware/content.html +64 -0
  200. data/docs/wiki/middleware/content/index.html +64 -0
  201. data/docs/wiki/middleware/controller.html +104 -0
  202. data/docs/wiki/middleware/controller/actions.html +117 -0
  203. data/docs/wiki/middleware/controller/actions/index.html +117 -0
  204. data/docs/wiki/middleware/controller/actions/rewrite/index.html +48 -0
  205. data/docs/wiki/middleware/controller/index.html +104 -0
  206. data/docs/wiki/middleware/controller/rewrite.html +111 -0
  207. data/docs/wiki/middleware/controller/rewrite/index.html +111 -0
  208. data/docs/wiki/middleware/localization.html +59 -0
  209. data/docs/wiki/middleware/localization/index.html +59 -0
  210. data/docs/wiki/middleware/redirection.html +61 -0
  211. data/docs/wiki/middleware/redirection/index.html +61 -0
  212. data/docs/wiki/middleware/session.html +71 -0
  213. data/docs/wiki/middleware/session/index.html +71 -0
  214. data/docs/wiki/middleware/static.html +57 -0
  215. data/docs/wiki/middleware/static/index.html +57 -0
  216. data/docs/wiki/server-setup.html +118 -0
  217. data/docs/wiki/server-setup/index.html +118 -0
  218. data/docs/wiki/testing.html +59 -0
  219. data/docs/wiki/testing/index.html +59 -0
  220. data/docs/wiki/updating-utopia.html +108 -0
  221. data/docs/wiki/updating-utopia/index.html +108 -0
  222. data/docs/wiki/your-first-page.html +80 -0
  223. data/docs/wiki/your-first-page/index.html +80 -0
  224. data/documentation/Guardfile +0 -12
  225. data/documentation/Rakefile +3 -0
  226. data/documentation/pages/_page.xnode +2 -0
  227. data/documentation/pages/wiki/content.md +1 -0
  228. data/documentation/pages/wiki/faq/what-is-xnode/content.md +37 -0
  229. data/documentation/pages/wiki/links.yaml +3 -1
  230. data/documentation/pages/wiki/server-setup/content.md +1 -1
  231. data/documentation/pages/wiki/show.xnode +2 -0
  232. data/documentation/pages/wiki/your-first-page/content.md +1 -1
  233. data/lib/utopia/command.rb +4 -4
  234. data/lib/utopia/command/environment.rb +73 -0
  235. data/lib/utopia/command/server.rb +19 -32
  236. data/lib/utopia/command/site.rb +26 -9
  237. data/lib/utopia/content/markup.rb +1 -1
  238. data/lib/utopia/setup.rb +49 -20
  239. data/lib/utopia/version.rb +1 -1
  240. data/setup/site/README.md +6 -7
  241. data/setup/site/Rakefile +3 -0
  242. data/setup/site/pages/_page.xnode +1 -1
  243. data/setup/site/public/_static/site.css +1 -1
  244. data/setup/site/tasks/bower.rake +3 -6
  245. data/setup/site/tasks/deploy.rake +1 -1
  246. data/setup/site/tasks/development.rake +1 -1
  247. data/setup/site/tasks/environment.rake +2 -2
  248. data/setup/site/tasks/static.rake +43 -0
  249. data/spec/utopia/command_spec.rb +170 -0
  250. data/spec/utopia/setup_spec.rb +20 -142
  251. metadata +225 -42
  252. data/documentation/public/_components/jquery-syntax/.sass-cache/040afc1428b286fb3c50151378b349a6149698d3/jquery.syntax.core.sassc +0 -0
  253. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.editor.sassc +0 -0
  254. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.fixed.sassc +0 -0
  255. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.inline.sassc +0 -0
  256. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.list.sassc +0 -0
  257. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.plain.sassc +0 -0
  258. data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.table.sassc +0 -0
  259. data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.core.sassc +0 -0
  260. data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.layout.fixed.sassc +0 -0
  261. data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.layout.inline.sassc +0 -0
  262. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/_layout.scssc +0 -0
  263. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.apache.sassc +0 -0
  264. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.applescript.sassc +0 -0
  265. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.assembly.sassc +0 -0
  266. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.bash-script.sassc +0 -0
  267. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.bash.sassc +0 -0
  268. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.clang.sassc +0 -0
  269. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.css.sassc +0 -0
  270. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.diff.sassc +0 -0
  271. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.html.sassc +0 -0
  272. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.ocaml.sassc +0 -0
  273. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.protobuf.sassc +0 -0
  274. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.python.sassc +0 -0
  275. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.ruby.sassc +0 -0
  276. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.xml.sassc +0 -0
  277. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.core.sassc +0 -0
  278. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.editor.sassc +0 -0
  279. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.editor.sassc +0 -0
  280. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.fixed.sassc +0 -0
  281. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.list.sassc +0 -0
  282. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.plain.sassc +0 -0
  283. data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.table.sassc +0 -0
  284. data/documentation/public/_components/jquery-syntax/.sass-cache/8638ad407c5ea29f6547cf8ac6983da587354889/master.sassc +0 -0
  285. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.editor.sassc +0 -0
  286. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.fixed.sassc +0 -0
  287. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.inline.sassc +0 -0
  288. data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.plain.sassc +0 -0
  289. data/documentation/public/_components/jquery-syntax/.sass-cache/e82f8cf4c8436da086a4506e01ef78755ebab1ce/master.scssc +0 -0
  290. data/lib/utopia/command/setup.rb +0 -78
@@ -0,0 +1,291 @@
1
+ // This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
2
+ // Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
3
+ // See <jquery.syntax.js> for licensing details.
4
+
5
+ Syntax.Editor = function(container, text) {
6
+ this.container = container;
7
+ this.current = this.getLines();
8
+ }
9
+
10
+ // This function generates an array of accumulated line offsets e.g.
11
+ // If line 8 is actually in child element 6, indices[8] = -2
12
+ Syntax.Editor.prototype.getLines = function() {
13
+ var children = this.container.childNodes, lines = [], offsets = [];
14
+
15
+ // Sometimes, e.g. when deleting text, children elements are not complete lines.
16
+ // We need to accumulate incomplete lines (1), and then append them to the
17
+ // start of the next complete line (2)
18
+ var text = "", startChild = 0;
19
+ for (var i = 0; i < children.length; i += 1) {
20
+ var childLines = Syntax.innerText([children[i]]).split('\n');
21
+
22
+ if (childLines.length > 1) {
23
+ childLines[0] = text + childLines[0]; // (2)
24
+ text = childLines.pop();
25
+ } else {
26
+ text += childLines[0]; // (1)
27
+ continue;
28
+ }
29
+
30
+ for (var j = 0; j < childLines.length; j += 1) {
31
+ offsets.push(startChild - lines.length);
32
+ lines.push(childLines[j]);
33
+ }
34
+
35
+ startChild = i + 1;
36
+ }
37
+
38
+ // Final line, any remaining text
39
+ if (text != "") {
40
+ offsets.push(startChild - lines.length);
41
+ lines.push(text);
42
+ } else {
43
+ startChild -= 1;
44
+ }
45
+
46
+ offsets.push(startChild);
47
+
48
+ console.log("getLines", offsets, lines, children);
49
+
50
+ return {lines: lines, offsets: offsets};
51
+ }
52
+
53
+ // This function updates the editor's internal state with regards to lines changed.
54
+ // This can be lines added, removed or modified partially. This function returns
55
+ // a list of lines which are different between the previous set of lines and the
56
+ // updated set of lines.
57
+ // This algorithm is not a general diff algorithm because we expect three cases only:
58
+ // 1: A single line was modified (most common case)
59
+ // 2: Some lines were removed (selection -> delete)
60
+ // 3: Some lines were added (paste)
61
+ Syntax.Editor.prototype.updateChangedLines = function() {
62
+ var result = {};
63
+
64
+ var updated = this.getLines();
65
+
66
+ // Find the sequence of lines at the start preceeding the change:
67
+ var i = 0, j = 0;
68
+ while (i < this.current.lines.length && j < updated.lines.length) {
69
+ if (this.current.lines[i] == updated.lines[j]) {
70
+ i += 1;
71
+ j += 1;
72
+ } else {
73
+ break;
74
+ }
75
+ }
76
+
77
+ // The length of the initial segment which hasn't changed:
78
+ result.start = j;
79
+
80
+ // Find the sequence of lines at the end proceeding the change:
81
+ i = this.current.lines.length, j = updated.lines.length;
82
+ while (i > result.start && j > result.start) {
83
+ if (this.current.lines[i-1] == updated.lines[j-1]) {
84
+ i -= 1;
85
+ j -= 1;
86
+ } else {
87
+ break;
88
+ }
89
+ }
90
+
91
+ // The index of the remaining portion which hasn't changed:
92
+ result.end = j;
93
+ // The index to the original set of lines which were the same:
94
+ result.originalEnd = i;
95
+
96
+ // Did we add or remove some lines?
97
+ result.difference = updated.lines.length - this.current.lines.length;
98
+
99
+ // This should be augmented to improve the above.
100
+ while (result.start > 0) {
101
+ if (updated.offsets[result.start] == updated.offsets[result.start-1])
102
+ break;
103
+
104
+ result.start -= 1;
105
+ }
106
+
107
+ if (result.difference > 0) {
108
+ while (result.end < (updated.lines.length-1)) {
109
+ if (updated.offsets[result.end-1] == updated.offsets[result.end])
110
+ break;
111
+
112
+ result.end += 1;
113
+ result.originalEnd += 1;
114
+ }
115
+ }
116
+
117
+ // Update the internal state for the next update.
118
+ this.current = updated;
119
+ this.changed = result;
120
+
121
+ return result;
122
+ }
123
+
124
+ Syntax.Editor.prototype.textForLines = function(start, end) {
125
+ return this.current.lines.slice(start, end).join('\n') + '\n';
126
+ }
127
+
128
+ Syntax.Editor.prototype.updateLines = function(changed, newLines) {
129
+ // We have two cases to handle, either we are replacing lines
130
+ // (1a) Replacing old lines with one more more new lines (update)
131
+ // (1b) Replacing old lines with zero new lines (removal)
132
+ // Or we are inserting lines
133
+ // (2a) We are inserting lines at the start of the element
134
+ // (2b) We are inserting lines after an existing element.
135
+
136
+ if (changed.start != changed.end) {
137
+ // When text is deleted, at most two elements can remain:
138
+ // (1) Whatever was partially remaining on the first line.
139
+ // (2) Whatever was partially remaining on the last line.
140
+ // All other lines have already been removed by the container.
141
+ // changed.difference tells us how many elements have already been removed.
142
+
143
+ // Cases (1a) and (1b)
144
+ var start = changed.start, end = changed.end;
145
+
146
+ start += this.current.offsets[start];
147
+ end += this.current.offsets[end];
148
+
149
+ var oldLines = Array.prototype.slice.call(this.container.childNodes, start, end);
150
+
151
+ $(oldLines).replaceWith(newLines);
152
+ } else {
153
+ if (changed.start == 0)
154
+ $(this.container).prepend(newLines);
155
+ else {
156
+ var start = changed.start;
157
+
158
+ start += this.current.offsets[start];
159
+
160
+ $(this.container.childNodes[start]).after(newLines);
161
+ }
162
+ }
163
+ }
164
+
165
+ // http://jsfiddle.net/TjXEG/1/
166
+ Syntax.Editor.getCharacterOffset = function(element) {
167
+ var caretOffset = 0;
168
+ if (typeof window.getSelection != "undefined") {
169
+ var range = window.getSelection().getRangeAt(0);
170
+ var preCaretRange = range.cloneRange();
171
+ preCaretRange.selectNodeContents(element);
172
+ preCaretRange.setEnd(range.endContainer, range.endOffset);
173
+ caretOffset = preCaretRange.toString().length;
174
+ } else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
175
+ var textRange = document.selection.createRange();
176
+ var preCaretTextRange = document.body.createTextRange();
177
+ preCaretTextRange.moveToElementText(element);
178
+ preCaretTextRange.setEndPoint("EndToEnd", textRange);
179
+ caretOffset = preCaretTextRange.text.length;
180
+ }
181
+ return caretOffset;
182
+ };
183
+
184
+ Syntax.Editor.getNodesForCharacterOffsets = function(offsets, node) {
185
+ var treeWalker = document.createTreeWalker(
186
+ node,
187
+ NodeFilter.SHOW_TEXT,
188
+ function(node) {
189
+ return NodeFilter.FILTER_ACCEPT;
190
+ },
191
+ false
192
+ );
193
+
194
+ var nodes = [], charCount = 0, i = 0;
195
+ while (i < offsets.length && treeWalker.nextNode()) {
196
+ var end = charCount + treeWalker.currentNode.length;
197
+
198
+ while (i < offsets.length && offsets[i] < end) {
199
+ nodes.push([treeWalker.currentNode, charCount, end]);
200
+
201
+ i += 1;
202
+ }
203
+
204
+ charCount = end;
205
+ }
206
+
207
+ return nodes;
208
+ };
209
+
210
+ Syntax.Editor.prototype.getClientState = function() {
211
+ var state = {};
212
+
213
+ var selection = window.getSelection();
214
+
215
+ if (selection.rangeCount > 0)
216
+ state.range = selection.getRangeAt(0);
217
+
218
+ if (state.range) {
219
+ state.startOffset = Syntax.Editor.getCharacterOffset(this.container);
220
+ }
221
+
222
+ return state;
223
+ };
224
+
225
+ Syntax.Editor.prototype.setClientState = function(state) {
226
+ if (state.startOffset) {
227
+ var nodes = Syntax.Editor.getNodesForCharacterOffsets([state.startOffset], this.container);
228
+
229
+ var range = document.createRange();
230
+ range.setStart(nodes[0][0], state.startOffset - nodes[0][1]);
231
+ range.setEnd(nodes[0][0], state.startOffset - nodes[0][1]);
232
+
233
+ var selection = window.getSelection();
234
+ selection.removeAllRanges();
235
+ selection.addRange(range);
236
+ }
237
+ };
238
+
239
+ Syntax.layouts.editor = function(options, code/*, container*/) {
240
+ var container = jQuery('<div class="editor syntax highlighted" contentEditable="true">');
241
+
242
+ container.append(code.children());
243
+
244
+ var editor = new Syntax.Editor(container.get(0));
245
+
246
+ var updateContainer = function(lineHint) {
247
+ // Need to save cursor position/selection
248
+ var clientState = editor.getClientState();
249
+ var changed = editor.updateChangedLines();
250
+
251
+ // Sometimes there are problems where multiple spans exist on the same line.
252
+ if (changed.difference < 0 && changed.start > 0)
253
+ changed.start -= 1;
254
+
255
+ var text = editor.textForLines(changed.start, changed.end);
256
+
257
+ if (changed.start == changed.end) {
258
+ editor.updateLines(changed, []);
259
+ } else {
260
+ // Lines have been added, update the highlighting.
261
+ Syntax.highlightText(text, options, function(html) {
262
+ editor.updateLines(changed, html.children().get());
263
+
264
+ // Restore cusor position/selection if possible
265
+ editor.setClientState(clientState);
266
+ });
267
+ }
268
+ };
269
+
270
+ // 'blur keyup paste mouseup'
271
+ container.bind('keyup', function(){
272
+ updateContainer();
273
+ });
274
+
275
+ container.bind('paste', function(event){
276
+ updateContainer();
277
+ });
278
+
279
+ container.bind('keydown', function(event){
280
+ if (event.keyCode == 9) {
281
+ event.preventDefault();
282
+ document.execCommand('insertHTML', false, " ");
283
+ }
284
+ else if (event.keyCode == 13) {
285
+ event.preventDefault();
286
+ document.execCommand('insertHTML', false, "\n");
287
+ }
288
+ });
289
+
290
+ return jQuery('<div class="syntax-container">').append(container);
291
+ };
@@ -0,0 +1,258 @@
1
+ /*
2
+ This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
3
+ For more information, please see http://www.oriontransfer.co.nz/software/jquery-syntax
4
+
5
+ Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
24
+ */
25
+
26
+ /*global Function: true, ResourceLoader: true, Syntax: true, alert: false, jQuery: true */
27
+
28
+ // ECMAScript 5! Why wasn't this done before!?
29
+ if (!Function.prototype.bind) {
30
+ Function.prototype.bind = function (target) {
31
+ var args = Array.prototype.slice.call(arguments, 1), fn = this;
32
+
33
+ return function () {
34
+ return fn.apply(target, args);
35
+ };
36
+ };
37
+ }
38
+
39
+ function ResourceLoader (loader) {
40
+ this.dependencies = {};
41
+ this.loading = {};
42
+ this.loader = loader;
43
+ }
44
+
45
+ ResourceLoader.prototype._finish = function (name) {
46
+ var deps = this.dependencies[name];
47
+
48
+ if (deps) {
49
+ // I'm not sure if this makes me want to cry... or laugh... or kill!?
50
+ var chain = this._loaded.bind(this, name);
51
+
52
+ for (var i = 0; i < deps.length; i += 1) {
53
+ chain = this.get.bind(this, deps[i], chain);
54
+ }
55
+
56
+ chain();
57
+ } else {
58
+ this._loaded(name);
59
+ }
60
+ };
61
+
62
+ ResourceLoader.prototype._loaded = function (name) {
63
+ // When the script has been succesfully loaded, we expect the script
64
+ // to register with this loader (i.e. this[name]).
65
+ var resource = this[name], loading = this.loading[name];
66
+
67
+ // Clear the loading list
68
+ this.loading[name] = null;
69
+
70
+ if (!resource) {
71
+ alert("ResourceLoader: Could not load resource named " + name);
72
+ } else {
73
+ for (var i = 0; i < loading.length; i += 1) {
74
+ loading[i](resource);
75
+ }
76
+ }
77
+ };
78
+
79
+ // This function must ensure that current cannot be completely loaded until next
80
+ // is completely loaded.
81
+ ResourceLoader.prototype.dependency = function (current, next) {
82
+ // If the resource has completely loaded, then we don't need to queue it
83
+ // as a dependency
84
+ if (this[next] && !this.loading[name]) {
85
+ return;
86
+ }
87
+
88
+ if (this.dependencies[current]) {
89
+ this.dependencies[current].push(next);
90
+ } else {
91
+ this.dependencies[current] = [next];
92
+ }
93
+ };
94
+
95
+ // This function must be reentrant for the same name. Additionally, if name is undefined, the callback will be invoked but with no argument.
96
+ ResourceLoader.prototype.get = function (name, callback) {
97
+ if (name == undefined) {
98
+ callback();
99
+ } else if (this.loading[name]) {
100
+ this.loading[name].push(callback)
101
+ } else if (this[name]) {
102
+ callback(this[name]);
103
+ } else {
104
+ this.loading[name] = [callback];
105
+ this.loader(name, this._finish.bind(this, name));
106
+ }
107
+ };
108
+
109
+ var Syntax = {
110
+ root: null,
111
+ aliases: {},
112
+ styles: {},
113
+ themes: {},
114
+ lib: {},
115
+
116
+ cacheScripts: true,
117
+ cacheStyleSheets: true,
118
+ codeSelector: 'code:not(.highlighted)',
119
+
120
+ defaultOptions: {
121
+ theme: "base",
122
+ replace: true,
123
+ linkify: true
124
+ },
125
+
126
+ brushes: new ResourceLoader(function (name, callback) {
127
+ name = Syntax.aliases[name] || name;
128
+
129
+ Syntax.getResource('jquery.syntax.brush', name, callback);
130
+ }),
131
+
132
+ loader: new ResourceLoader(function (name, callback) {
133
+ Syntax.getResource('jquery.syntax', name, callback);
134
+ }),
135
+
136
+ getStyles: function (path) {
137
+ var link = jQuery('<link>');
138
+ jQuery("head").append(link);
139
+
140
+ if (!Syntax.cacheStyleSheets) {
141
+ path = path + "?" + Math.random()
142
+ }
143
+
144
+ link.attr({
145
+ rel: "stylesheet",
146
+ type: "text/css",
147
+ href: path
148
+ });
149
+ },
150
+
151
+ getScript: function (path, callback) {
152
+ var script = document.createElement('script');
153
+
154
+ // Internet Exploder
155
+ script.onreadystatechange = function() {
156
+ if (this.onload && (this.readyState == 'loaded' || this.readyState == 'complete')) {
157
+ this.onload();
158
+
159
+ // Ensure the function is only called once.
160
+ this.onload = null;
161
+ }
162
+ };
163
+
164
+ // Every other modern browser
165
+ script.onload = callback;
166
+ script.type = "text/javascript";
167
+
168
+ if (!Syntax.cacheScripts)
169
+ path = path + '?' + Math.random()
170
+
171
+ script.src = path;
172
+
173
+ document.getElementsByTagName('head')[0].appendChild(script);
174
+ },
175
+
176
+ getResource: function (prefix, name, callback) {
177
+ Syntax.detectRoot();
178
+
179
+ var basename = prefix + "." + name;
180
+ var styles = this.styles[basename];
181
+
182
+ if (styles) {
183
+ for (var i = 0; i < styles.length; i += 1) {
184
+ this.getStyles(this.root + styles[i]);
185
+ }
186
+ }
187
+
188
+ Syntax.getScript(this.root + basename + '.js', callback);
189
+ },
190
+
191
+ alias: function (name, aliases) {
192
+ Syntax.aliases[name] = name;
193
+
194
+ for (var i = 0; i < aliases.length; i += 1) {
195
+ Syntax.aliases[aliases[i]] = name;
196
+ }
197
+ },
198
+
199
+ brushAliases: function (brush) {
200
+ var aliases = [];
201
+
202
+ for (var name in Syntax.aliases) {
203
+ if (Syntax.aliases[name] === brush) {
204
+ aliases.push(name);
205
+ }
206
+ }
207
+
208
+ return aliases;
209
+ },
210
+
211
+ brushNames: function () {
212
+ var names = [];
213
+
214
+ for (var name in Syntax.aliases) {
215
+ if (name === Syntax.aliases[name]) {
216
+ names.push(name);
217
+ }
218
+ }
219
+
220
+ return names;
221
+ },
222
+
223
+ detectRoot: function () {
224
+ if (Syntax.root == null) {
225
+ // Initialize root based on current script path.
226
+ var scripts = jQuery('script').filter(function(){
227
+ return this.src.match(/jquery\.syntax/);
228
+ });
229
+
230
+ var first = scripts.get(0);
231
+
232
+ if (first) {
233
+ // Calculate the basename for the given script src.
234
+ var root = first.src.match(/.*\//);
235
+
236
+ if (root) {
237
+ Syntax.root = root[0];
238
+ }
239
+ }
240
+ }
241
+ }
242
+ };
243
+
244
+ jQuery.fn.syntax = function (options, callback) {
245
+ if (this.length == 0) return;
246
+
247
+ options = jQuery.extend(Syntax.defaultOptions, options)
248
+
249
+ Syntax.loader.get('core', function (elements) {
250
+ Syntax.highlight(this, options, callback);
251
+ }.bind(this));
252
+ };
253
+
254
+ jQuery.syntax = function (options, callback) {
255
+ var context = options ? options.context : null;
256
+
257
+ jQuery(Syntax.codeSelector, context).syntax(options, callback);
258
+ };