utopia 2.13.4 → 2.16.1

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 (486) hide show
  1. checksums.yaml +4 -4
  2. data/bake/utopia/{yarn.rb → node.rb} +13 -5
  3. data/lib/.DS_Store +0 -0
  4. data/lib/utopia/.DS_Store +0 -0
  5. data/lib/utopia/command.rb +2 -2
  6. data/lib/utopia/command/site.rb +1 -1
  7. data/lib/utopia/content.rb +23 -19
  8. data/lib/utopia/content/.DS_Store +0 -0
  9. data/lib/utopia/content/link.rb +29 -34
  10. data/lib/utopia/content/links.rb +185 -123
  11. data/lib/utopia/content/markup.rb +1 -1
  12. data/lib/utopia/content/node.rb +15 -19
  13. data/lib/utopia/content/response.rb +5 -5
  14. data/lib/utopia/controller.rb +0 -17
  15. data/lib/utopia/controller/.DS_Store +0 -0
  16. data/lib/utopia/controller/base.rb +27 -3
  17. data/lib/utopia/controller/respond.rb +50 -107
  18. data/lib/utopia/extensions/array_split.rb +2 -2
  19. data/lib/utopia/http.rb +3 -3
  20. data/lib/utopia/localization.rb +18 -10
  21. data/lib/utopia/middleware.rb +2 -2
  22. data/lib/utopia/path.rb +40 -36
  23. data/lib/utopia/redirection.rb +0 -2
  24. data/lib/utopia/responder.rb +76 -0
  25. data/lib/utopia/version.rb +1 -1
  26. data/setup/.DS_Store +0 -0
  27. data/setup/server/.DS_Store +0 -0
  28. data/setup/site/.DS_Store +0 -0
  29. data/setup/site/.gitignore +8 -7
  30. data/setup/site/Gemfile +7 -5
  31. data/setup/site/pages/.DS_Store +0 -0
  32. data/setup/site/public/.DS_Store +0 -0
  33. metadata +81 -603
  34. data/.codeclimate.yml +0 -5
  35. data/.gitignore +0 -8
  36. data/.rspec +0 -4
  37. data/.travis.yml +0 -28
  38. data/.yardopts +0 -2
  39. data/Gemfile +0 -28
  40. data/README.md +0 -92
  41. data/Rakefile +0 -33
  42. data/benchmark/call_vs_check.rb +0 -38
  43. data/benchmark/const_vs_hash.rb +0 -35
  44. data/benchmark/hash_vs_openstruct.rb +0 -54
  45. data/benchmark/string_vs_symbol.rb +0 -14
  46. data/benchmark/struct_vs_class.rb +0 -91
  47. data/docs/.nojekyll +0 -0
  48. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +0 -6
  49. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +0 -5
  50. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +0 -8
  51. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +0 -6
  52. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +0 -10
  53. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +0 -3
  54. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.css.css +0 -14
  55. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +0 -16
  56. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.html.css +0 -5
  57. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +0 -3
  58. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +0 -2
  59. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.python.css +0 -6
  60. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +0 -2
  61. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +0 -18
  62. data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +0 -62
  63. data/docs/_components/jquery-syntax/base/jquery.syntax.editor.css +0 -6
  64. data/docs/_components/jquery-syntax/base/theme.js +0 -1
  65. data/docs/_components/jquery-syntax/bright/jquery.syntax.core.css +0 -27
  66. data/docs/_components/jquery-syntax/bright/theme.js +0 -1
  67. data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +0 -41
  68. data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +0 -57
  69. data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +0 -37
  70. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +0 -67
  71. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +0 -33
  72. data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +0 -51
  73. data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +0 -89
  74. data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +0 -47
  75. data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +0 -80
  76. data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +0 -24
  77. data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +0 -47
  78. data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +0 -45
  79. data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +0 -66
  80. data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +0 -45
  81. data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +0 -45
  82. data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +0 -40
  83. data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +0 -29
  84. data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +0 -34
  85. data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +0 -44
  86. data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +0 -31
  87. data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +0 -73
  88. data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +0 -46
  89. data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +0 -51
  90. data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +0 -52
  91. data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +0 -48
  92. data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +0 -15
  93. data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +0 -10
  94. data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +0 -43
  95. data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +0 -44
  96. data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +0 -77
  97. data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +0 -44
  98. data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +0 -29
  99. data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +0 -31
  100. data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +0 -57
  101. data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +0 -55
  102. data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +0 -35
  103. data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +0 -50
  104. data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +0 -29
  105. data/docs/_components/jquery-syntax/jquery.syntax.cache.js +0 -65
  106. data/docs/_components/jquery-syntax/jquery.syntax.core.js +0 -1098
  107. data/docs/_components/jquery-syntax/jquery.syntax.editor.js +0 -291
  108. data/docs/_components/jquery-syntax/jquery.syntax.js +0 -258
  109. data/docs/_components/jquery-syntax/jquery.syntax.min.js +0 -13
  110. data/docs/_components/jquery-syntax/paper/jquery.syntax.core.css +0 -31
  111. data/docs/_components/jquery-syntax/paper/theme.js +0 -1
  112. data/docs/_components/jquery/core.js +0 -482
  113. data/docs/_components/jquery/jquery.js +0 -10220
  114. data/docs/_components/jquery/jquery.min.js +0 -4
  115. data/docs/_components/jquery/jquery.min.map +0 -1
  116. data/docs/_components/jquery/jquery.slim.js +0 -8107
  117. data/docs/_components/jquery/jquery.slim.min.js +0 -4
  118. data/docs/_components/jquery/jquery.slim.min.map +0 -1
  119. data/docs/_static/icon.png +0 -0
  120. data/docs/_static/site.css +0 -205
  121. data/docs/_static/utopia-background.svg +0 -1
  122. data/docs/_static/utopia.svg +0 -1
  123. data/docs/code/Utopia.html +0 -517
  124. data/docs/code/Utopia/Basename.html +0 -654
  125. data/docs/code/Utopia/Bootstrap.html +0 -538
  126. data/docs/code/Utopia/Command.html +0 -213
  127. data/docs/code/Utopia/Command/Environment.html +0 -321
  128. data/docs/code/Utopia/Command/Server.html +0 -214
  129. data/docs/code/Utopia/Command/Server/Create.html +0 -222
  130. data/docs/code/Utopia/Command/Server/Environment.html +0 -236
  131. data/docs/code/Utopia/Command/Server/Update.html +0 -317
  132. data/docs/code/Utopia/Command/Setup.html +0 -145
  133. data/docs/code/Utopia/Command/Setup/Server.html +0 -298
  134. data/docs/code/Utopia/Command/Setup/Site.html +0 -180
  135. data/docs/code/Utopia/Command/Site.html +0 -285
  136. data/docs/code/Utopia/Command/Site/Create.html +0 -324
  137. data/docs/code/Utopia/Command/Site/Update.html +0 -407
  138. data/docs/code/Utopia/Command/Top.html +0 -279
  139. data/docs/code/Utopia/Content.html +0 -832
  140. data/docs/code/Utopia/Content/Document.html +0 -1822
  141. data/docs/code/Utopia/Content/Document/State.html +0 -1220
  142. data/docs/code/Utopia/Content/Link.html +0 -1286
  143. data/docs/code/Utopia/Content/Links.html +0 -847
  144. data/docs/code/Utopia/Content/MarkupParser.html +0 -881
  145. data/docs/code/Utopia/Content/MarkupParser/ParsedTag.html +0 -422
  146. data/docs/code/Utopia/Content/MarkupParser/UnbalancedTagError.html +0 -615
  147. data/docs/code/Utopia/Content/Namespace.html +0 -485
  148. data/docs/code/Utopia/Content/Node.html +0 -1188
  149. data/docs/code/Utopia/Content/Node/Context.html +0 -938
  150. data/docs/code/Utopia/Content/Response.html +0 -813
  151. data/docs/code/Utopia/Content/SymbolicHash.html +0 -419
  152. data/docs/code/Utopia/Content/Tag.html +0 -399
  153. data/docs/code/Utopia/Content/Tags.html +0 -136
  154. data/docs/code/Utopia/Content/Tags/ContentTag.html +0 -187
  155. data/docs/code/Utopia/Content/Tags/DeferredTag.html +0 -193
  156. data/docs/code/Utopia/Content/Tags/Library.html +0 -333
  157. data/docs/code/Utopia/Content/Tags/NodeTag.html +0 -193
  158. data/docs/code/Utopia/Content/UnbalancedTagError.html +0 -298
  159. data/docs/code/Utopia/ContentLength.html +0 -343
  160. data/docs/code/Utopia/Controller.html +0 -907
  161. data/docs/code/Utopia/Controller/Actions.html +0 -289
  162. data/docs/code/Utopia/Controller/Actions/Action.html +0 -984
  163. data/docs/code/Utopia/Controller/Actions/ClassMethods.html +0 -442
  164. data/docs/code/Utopia/Controller/Base.html +0 -1216
  165. data/docs/code/Utopia/Controller/Respond.html +0 -293
  166. data/docs/code/Utopia/Controller/Respond/ClassMethods.html +0 -236
  167. data/docs/code/Utopia/Controller/Respond/Converter.html +0 -256
  168. data/docs/code/Utopia/Controller/Respond/Converter/Callback.html +0 -484
  169. data/docs/code/Utopia/Controller/Respond/Converter/ToJSON.html +0 -381
  170. data/docs/code/Utopia/Controller/Respond/Passthrough.html +0 -297
  171. data/docs/code/Utopia/Controller/Respond/Responder.html +0 -535
  172. data/docs/code/Utopia/Controller/Rewrite.html +0 -290
  173. data/docs/code/Utopia/Controller/Rewrite/ClassMethods.html +0 -242
  174. data/docs/code/Utopia/Controller/Rewrite/ExtractPrefixRule.html +0 -364
  175. data/docs/code/Utopia/Controller/Rewrite/Rewriter.html +0 -464
  176. data/docs/code/Utopia/Controller/Rewrite/Rule.html +0 -209
  177. data/docs/code/Utopia/Controller/Variables.html +0 -550
  178. data/docs/code/Utopia/Controllers.html +0 -244
  179. data/docs/code/Utopia/Exceptions.html +0 -127
  180. data/docs/code/Utopia/Exceptions/Handler.html +0 -526
  181. data/docs/code/Utopia/Exceptions/Mailer.html +0 -482
  182. data/docs/code/Utopia/Extensions.html +0 -117
  183. data/docs/code/Utopia/Extensions/ArraySplit.html +0 -183
  184. data/docs/code/Utopia/Extensions/DateTimeComparison.html +0 -193
  185. data/docs/code/Utopia/Extensions/TimeDateComparison.html +0 -193
  186. data/docs/code/Utopia/HTTP.html +0 -250
  187. data/docs/code/Utopia/HTTP/Status.html +0 -415
  188. data/docs/code/Utopia/Locale.html +0 -606
  189. data/docs/code/Utopia/Localization.html +0 -1241
  190. data/docs/code/Utopia/Localization/Wrapper.html +0 -459
  191. data/docs/code/Utopia/Logger.html +0 -205
  192. data/docs/code/Utopia/Logger/CompactFormatter.html +0 -335
  193. data/docs/code/Utopia/Path.html +0 -3310
  194. data/docs/code/Utopia/Path/Matcher.html +0 -518
  195. data/docs/code/Utopia/Path/Matcher/MatchData.html +0 -475
  196. data/docs/code/Utopia/Redirection.html +0 -151
  197. data/docs/code/Utopia/Redirection/ClientRedirect.html +0 -717
  198. data/docs/code/Utopia/Redirection/DirectoryIndex.html +0 -298
  199. data/docs/code/Utopia/Redirection/Errors.html +0 -476
  200. data/docs/code/Utopia/Redirection/Moved.html +0 -312
  201. data/docs/code/Utopia/Redirection/RequestFailure.html +0 -226
  202. data/docs/code/Utopia/Redirection/Rewrite.html +0 -296
  203. data/docs/code/Utopia/Session.html +0 -889
  204. data/docs/code/Utopia/Session/LazyHash.html +0 -859
  205. data/docs/code/Utopia/Setup.html +0 -970
  206. data/docs/code/Utopia/Static.html +0 -696
  207. data/docs/code/Utopia/Static/LocalFile.html +0 -1104
  208. data/docs/code/Utopia/Static/MimeTypeLoader.html +0 -541
  209. data/docs/code/Utopia/Static/MimeTypeLoader/ExpansionError.html +0 -124
  210. data/docs/code/Utopia/Tags.html +0 -115
  211. data/docs/code/Utopia/Tags/Environment.html +0 -314
  212. data/docs/code/Utopia/Tags/EnvironmentTag.html +0 -314
  213. data/docs/code/Utopia/Tags/Library.html +0 -340
  214. data/docs/code/_index.html +0 -758
  215. data/docs/code/class_list.html +0 -51
  216. data/docs/code/css/common.css +0 -1
  217. data/docs/code/css/full_list.css +0 -58
  218. data/docs/code/css/style.css +0 -496
  219. data/docs/code/file.README.html +0 -171
  220. data/docs/code/file_list.html +0 -56
  221. data/docs/code/frames.html +0 -17
  222. data/docs/code/index.html +0 -171
  223. data/docs/code/js/app.js +0 -292
  224. data/docs/code/js/full_list.js +0 -216
  225. data/docs/code/js/jquery.js +0 -4
  226. data/docs/code/materials/utopia.png +0 -0
  227. data/docs/code/materials/utopia.svg +0 -1
  228. data/docs/code/method_list.html +0 -3443
  229. data/docs/code/top-level-namespace.html +0 -110
  230. data/docs/index.html +0 -92
  231. data/docs/wiki.html +0 -92
  232. data/docs/wiki/development-environment-setup.html +0 -60
  233. data/docs/wiki/development-environment-setup/index.html +0 -60
  234. data/docs/wiki/edit.html +0 -103
  235. data/docs/wiki/faq/what-is-xnode.html +0 -79
  236. data/docs/wiki/faq/what-is-xnode/index.html +0 -79
  237. data/docs/wiki/javascript.html +0 -153
  238. data/docs/wiki/javascript/index.html +0 -153
  239. data/docs/wiki/middleware/content.html +0 -64
  240. data/docs/wiki/middleware/content/index.html +0 -64
  241. data/docs/wiki/middleware/controller.html +0 -104
  242. data/docs/wiki/middleware/controller/actions.html +0 -117
  243. data/docs/wiki/middleware/controller/actions/index.html +0 -117
  244. data/docs/wiki/middleware/controller/actions/rewrite/index.html +0 -48
  245. data/docs/wiki/middleware/controller/index.html +0 -104
  246. data/docs/wiki/middleware/controller/rewrite.html +0 -111
  247. data/docs/wiki/middleware/controller/rewrite/index.html +0 -111
  248. data/docs/wiki/middleware/localization.html +0 -59
  249. data/docs/wiki/middleware/localization/index.html +0 -59
  250. data/docs/wiki/middleware/redirection.html +0 -61
  251. data/docs/wiki/middleware/redirection/index.html +0 -61
  252. data/docs/wiki/middleware/session.html +0 -71
  253. data/docs/wiki/middleware/session/index.html +0 -71
  254. data/docs/wiki/middleware/static.html +0 -57
  255. data/docs/wiki/middleware/static/index.html +0 -57
  256. data/docs/wiki/server-setup.html +0 -118
  257. data/docs/wiki/server-setup/index.html +0 -118
  258. data/docs/wiki/testing.html +0 -59
  259. data/docs/wiki/testing/index.html +0 -59
  260. data/docs/wiki/updating-utopia.html +0 -108
  261. data/docs/wiki/updating-utopia/index.html +0 -108
  262. data/docs/wiki/your-first-page.html +0 -80
  263. data/docs/wiki/your-first-page/index.html +0 -80
  264. data/documentation/.rspec +0 -4
  265. data/documentation/.yarnrc +0 -1
  266. data/documentation/Gemfile +0 -19
  267. data/documentation/Guardfile +0 -9
  268. data/documentation/Rakefile +0 -9
  269. data/documentation/config.ru +0 -41
  270. data/documentation/config/README.md +0 -7
  271. data/documentation/config/environment.rb +0 -12
  272. data/documentation/lib/readme.txt +0 -1
  273. data/documentation/pages/_editor.xnode +0 -64
  274. data/documentation/pages/_heading.xnode +0 -2
  275. data/documentation/pages/_page.xnode +0 -40
  276. data/documentation/pages/errors/exception.xnode +0 -5
  277. data/documentation/pages/errors/file-not-found.xnode +0 -5
  278. data/documentation/pages/links.yaml +0 -2
  279. data/documentation/pages/wiki/_listing.xnode +0 -32
  280. data/documentation/pages/wiki/_navigation.xnode +0 -15
  281. data/documentation/pages/wiki/content.md +0 -35
  282. data/documentation/pages/wiki/controller.rb +0 -48
  283. data/documentation/pages/wiki/development-environment-setup/content.md +0 -16
  284. data/documentation/pages/wiki/edit.xnode +0 -10
  285. data/documentation/pages/wiki/faq/what-is-xnode/content.md +0 -37
  286. data/documentation/pages/wiki/javascript/content.md +0 -75
  287. data/documentation/pages/wiki/links.yaml +0 -6
  288. data/documentation/pages/wiki/middleware/content/content.md +0 -21
  289. data/documentation/pages/wiki/middleware/controller/actions/content.md +0 -76
  290. data/documentation/pages/wiki/middleware/controller/content.md +0 -62
  291. data/documentation/pages/wiki/middleware/controller/links.yaml +0 -4
  292. data/documentation/pages/wiki/middleware/controller/rewrite/content.md +0 -69
  293. data/documentation/pages/wiki/middleware/localization/content.md +0 -16
  294. data/documentation/pages/wiki/middleware/redirection/content.md +0 -17
  295. data/documentation/pages/wiki/middleware/session/content.md +0 -29
  296. data/documentation/pages/wiki/middleware/static/content.md +0 -13
  297. data/documentation/pages/wiki/server-setup/content.md +0 -52
  298. data/documentation/pages/wiki/show.xnode +0 -12
  299. data/documentation/pages/wiki/testing/content.md +0 -15
  300. data/documentation/pages/wiki/updating-utopia/content.md +0 -63
  301. data/documentation/pages/wiki/your-first-page/content.md +0 -38
  302. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +0 -6
  303. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +0 -5
  304. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +0 -8
  305. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +0 -6
  306. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +0 -10
  307. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +0 -3
  308. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.css.css +0 -14
  309. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +0 -16
  310. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.html.css +0 -5
  311. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +0 -3
  312. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +0 -2
  313. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.python.css +0 -6
  314. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +0 -2
  315. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +0 -18
  316. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.core.css +0 -62
  317. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.editor.css +0 -6
  318. data/documentation/public/_components/jquery-syntax/base/theme.js +0 -1
  319. data/documentation/public/_components/jquery-syntax/bright/jquery.syntax.core.css +0 -27
  320. data/documentation/public/_components/jquery-syntax/bright/theme.js +0 -1
  321. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.apache.js +0 -41
  322. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.applescript.js +0 -57
  323. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.assembly.js +0 -37
  324. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +0 -67
  325. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.bash.js +0 -33
  326. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.basic.js +0 -51
  327. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.clang.js +0 -89
  328. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.csharp.js +0 -47
  329. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.css.js +0 -80
  330. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.diff.js +0 -24
  331. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.go.js +0 -47
  332. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.haskell.js +0 -45
  333. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.html.js +0 -66
  334. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.io.js +0 -45
  335. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.java.js +0 -45
  336. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.javascript.js +0 -40
  337. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.kai.js +0 -29
  338. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.lisp.js +0 -34
  339. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.lua.js +0 -44
  340. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.nginx.js +0 -31
  341. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +0 -73
  342. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ooc.js +0 -46
  343. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.pascal.js +0 -51
  344. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.perl5.js +0 -52
  345. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.php-script.js +0 -48
  346. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.php.js +0 -15
  347. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.plain.js +0 -10
  348. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +0 -43
  349. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.python.js +0 -44
  350. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ruby.js +0 -77
  351. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.scala.js +0 -44
  352. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +0 -29
  353. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.sql.js +0 -31
  354. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +0 -57
  355. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.swift.js +0 -55
  356. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.trenni.js +0 -35
  357. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.xml.js +0 -50
  358. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.yaml.js +0 -29
  359. data/documentation/public/_components/jquery-syntax/jquery.syntax.cache.js +0 -65
  360. data/documentation/public/_components/jquery-syntax/jquery.syntax.core.js +0 -1098
  361. data/documentation/public/_components/jquery-syntax/jquery.syntax.editor.js +0 -291
  362. data/documentation/public/_components/jquery-syntax/jquery.syntax.js +0 -258
  363. data/documentation/public/_components/jquery-syntax/jquery.syntax.min.js +0 -13
  364. data/documentation/public/_components/jquery-syntax/paper/jquery.syntax.core.css +0 -31
  365. data/documentation/public/_components/jquery-syntax/paper/theme.js +0 -1
  366. data/documentation/public/_components/jquery/core.js +0 -482
  367. data/documentation/public/_components/jquery/jquery.js +0 -10220
  368. data/documentation/public/_components/jquery/jquery.min.js +0 -4
  369. data/documentation/public/_components/jquery/jquery.min.map +0 -1
  370. data/documentation/public/_components/jquery/jquery.slim.js +0 -8107
  371. data/documentation/public/_components/jquery/jquery.slim.min.js +0 -4
  372. data/documentation/public/_components/jquery/jquery.slim.min.map +0 -1
  373. data/documentation/public/_static +0 -1
  374. data/documentation/public/materials +0 -1
  375. data/documentation/spec/website_context.rb +0 -12
  376. data/documentation/spec/website_spec.rb +0 -16
  377. data/documentation/tasks +0 -1
  378. data/materials/utopia.png +0 -0
  379. data/materials/utopia.svg +0 -1
  380. data/setup/site/.yarnrc +0 -1
  381. data/spec/mock_node.rb +0 -16
  382. data/spec/spec_helper.rb +0 -13
  383. data/spec/utopia/command_spec.rb +0 -164
  384. data/spec/utopia/content/document_spec.rb +0 -60
  385. data/spec/utopia/content/link_spec.rb +0 -47
  386. data/spec/utopia/content/links/foo/index.xnode +0 -0
  387. data/spec/utopia/content/links/foo/links.yaml +0 -2
  388. data/spec/utopia/content/links/foo/test.de.xnode +0 -0
  389. data/spec/utopia/content/links/foo/test.en.xnode +0 -0
  390. data/spec/utopia/content/links/links.yaml +0 -9
  391. data/spec/utopia/content/links/welcome.xnode +0 -0
  392. data/spec/utopia/content/links_spec.rb +0 -101
  393. data/spec/utopia/content/localized/five/index.en.xnode +0 -0
  394. data/spec/utopia/content/localized/four/index.en.xnode +0 -0
  395. data/spec/utopia/content/localized/four/index.zh.xnode +0 -0
  396. data/spec/utopia/content/localized/four/links.yaml +0 -4
  397. data/spec/utopia/content/localized/links.yaml +0 -16
  398. data/spec/utopia/content/localized/one.xnode +0 -0
  399. data/spec/utopia/content/localized/three/index.xnode +0 -0
  400. data/spec/utopia/content/localized/two.en.xnode +0 -0
  401. data/spec/utopia/content/localized/two.zh.xnode +0 -0
  402. data/spec/utopia/content/markup_spec.rb +0 -96
  403. data/spec/utopia/content/namespace_spec.rb +0 -45
  404. data/spec/utopia/content/node/lookup/content.xnode +0 -1
  405. data/spec/utopia/content/node/lookup/index.xnode +0 -1
  406. data/spec/utopia/content/node/ordered/first.xnode +0 -0
  407. data/spec/utopia/content/node/ordered/index.xnode +0 -0
  408. data/spec/utopia/content/node/ordered/links.yaml +0 -4
  409. data/spec/utopia/content/node/ordered/second.xnode +0 -0
  410. data/spec/utopia/content/node/related/foo.en.xnode +0 -0
  411. data/spec/utopia/content/node/related/foo.ja.xnode +0 -0
  412. data/spec/utopia/content/node/related/links.yaml +0 -4
  413. data/spec/utopia/content/node_spec.rb +0 -97
  414. data/spec/utopia/content/response_spec.rb +0 -54
  415. data/spec/utopia/content/tags_spec.rb +0 -82
  416. data/spec/utopia/content_spec.rb +0 -100
  417. data/spec/utopia/content_spec.ru +0 -6
  418. data/spec/utopia/content_spec/_heading.xnode +0 -1
  419. data/spec/utopia/content_spec/content/_show-value.xnode +0 -1
  420. data/spec/utopia/content_spec/content/links.yaml +0 -2
  421. data/spec/utopia/content_spec/content/test-partial.xnode +0 -1
  422. data/spec/utopia/content_spec/index.xnode +0 -1
  423. data/spec/utopia/content_spec/node/index.xnode +0 -1
  424. data/spec/utopia/content_spec/test.xnode +0 -10
  425. data/spec/utopia/controller/actions_spec.rb +0 -62
  426. data/spec/utopia/controller/middleware_spec.rb +0 -88
  427. data/spec/utopia/controller/middleware_spec.ru +0 -6
  428. data/spec/utopia/controller/middleware_spec/controller/controller.rb +0 -27
  429. data/spec/utopia/controller/middleware_spec/controller/index.xnode +0 -1
  430. data/spec/utopia/controller/middleware_spec/controller/nested/controller.rb +0 -7
  431. data/spec/utopia/controller/middleware_spec/empty/controller.rb +0 -0
  432. data/spec/utopia/controller/middleware_spec/redirect/controller.rb +0 -12
  433. data/spec/utopia/controller/middleware_spec/redirect/test/controller.rb +0 -9
  434. data/spec/utopia/controller/respond_spec.rb +0 -174
  435. data/spec/utopia/controller/respond_spec.ru +0 -12
  436. data/spec/utopia/controller/respond_spec/api/controller.rb +0 -28
  437. data/spec/utopia/controller/respond_spec/errors/controller.rb +0 -14
  438. data/spec/utopia/controller/respond_spec/errors/file-not-found.xnode +0 -8
  439. data/spec/utopia/controller/respond_spec/html/controller.rb +0 -11
  440. data/spec/utopia/controller/respond_spec/rewrite/controller.rb +0 -13
  441. data/spec/utopia/controller/rewrite_spec.rb +0 -80
  442. data/spec/utopia/controller/sequence_spec.rb +0 -135
  443. data/spec/utopia/controller/variables_spec.rb +0 -59
  444. data/spec/utopia/controller/websocket_spec.rb +0 -68
  445. data/spec/utopia/controller/websocket_spec.ru +0 -5
  446. data/spec/utopia/controller/websocket_spec/server/controller.rb +0 -11
  447. data/spec/utopia/exceptions/handler_spec.rb +0 -47
  448. data/spec/utopia/exceptions/handler_spec.ru +0 -8
  449. data/spec/utopia/exceptions/handler_spec/controller.rb +0 -19
  450. data/spec/utopia/exceptions/mailer_spec.rb +0 -43
  451. data/spec/utopia/exceptions/mailer_spec.ru +0 -10
  452. data/spec/utopia/extensions_spec.rb +0 -73
  453. data/spec/utopia/http/status_spec.rb +0 -44
  454. data/spec/utopia/locale_spec.rb +0 -58
  455. data/spec/utopia/localization_spec.rb +0 -92
  456. data/spec/utopia/localization_spec.ru +0 -15
  457. data/spec/utopia/localization_spec/controller.rb +0 -21
  458. data/spec/utopia/localization_spec/localized.de.txt +0 -1
  459. data/spec/utopia/localization_spec/localized.en.txt +0 -1
  460. data/spec/utopia/localization_spec/localized.ja.txt +0 -1
  461. data/spec/utopia/localization_spec/test.txt +0 -1
  462. data/spec/utopia/middleware_spec.rb +0 -31
  463. data/spec/utopia/path/matcher_spec.rb +0 -66
  464. data/spec/utopia/path_spec.rb +0 -162
  465. data/spec/utopia/performance_spec.rb +0 -92
  466. data/spec/utopia/performance_spec/cache/head/readme.txt +0 -1
  467. data/spec/utopia/performance_spec/cache/meta/readme.txt +0 -1
  468. data/spec/utopia/performance_spec/config.ru +0 -35
  469. data/spec/utopia/performance_spec/lib/readme.txt +0 -1
  470. data/spec/utopia/performance_spec/pages/_heading.xnode +0 -2
  471. data/spec/utopia/performance_spec/pages/_page.xnode +0 -26
  472. data/spec/utopia/performance_spec/pages/api/controller.rb +0 -8
  473. data/spec/utopia/performance_spec/pages/errors/exception.xnode +0 -5
  474. data/spec/utopia/performance_spec/pages/errors/file-not-found.xnode +0 -5
  475. data/spec/utopia/performance_spec/pages/links.yaml +0 -2
  476. data/spec/utopia/performance_spec/pages/welcome/index.xnode +0 -17
  477. data/spec/utopia/rack_helper.rb +0 -32
  478. data/spec/utopia/redirection_spec.rb +0 -77
  479. data/spec/utopia/redirection_spec.ru +0 -27
  480. data/spec/utopia/session_spec.rb +0 -189
  481. data/spec/utopia/session_spec.ru +0 -24
  482. data/spec/utopia/setup_spec.rb +0 -56
  483. data/spec/utopia/static_spec.rb +0 -49
  484. data/spec/utopia/static_spec.ru +0 -5
  485. data/spec/utopia/static_spec/test.txt +0 -1
  486. data/utopia.gemspec +0 -52
@@ -1,291 +0,0 @@
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
- };
@@ -1,258 +0,0 @@
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
- };