utopia 2.13.4 → 2.14.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 (353) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/development.yml +62 -0
  3. data/README.md +3 -5
  4. data/bake/utopia/yarn.rb +4 -2
  5. data/docs/_components/jquery-litebox/jquery.litebox.css +23 -0
  6. data/docs/_components/jquery-litebox/jquery.litebox.gallery.css +48 -0
  7. data/docs/_components/jquery-litebox/jquery.litebox.js +30 -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.bash.css +4 -10
  10. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +5 -2
  11. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +8 -8
  12. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +1 -1
  13. data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +43 -47
  14. data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +3 -41
  15. data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +5 -57
  16. data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +3 -37
  17. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +4 -67
  18. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +2 -33
  19. data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +5 -51
  20. data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +5 -89
  21. data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +4 -47
  22. data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +5 -80
  23. data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +2 -24
  24. data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +3 -47
  25. data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +3 -45
  26. data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +4 -66
  27. data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +3 -45
  28. data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +4 -45
  29. data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +3 -40
  30. data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +2 -29
  31. data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +2 -34
  32. data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +3 -44
  33. data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +2 -31
  34. data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +4 -73
  35. data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +4 -46
  36. data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +4 -51
  37. data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +3 -52
  38. data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +4 -48
  39. data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +2 -15
  40. data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +2 -10
  41. data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +3 -43
  42. data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +5 -44
  43. data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +5 -77
  44. data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +4 -44
  45. data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +2 -29
  46. data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +4 -31
  47. data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +3 -57
  48. data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +3 -55
  49. data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +2 -35
  50. data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +4 -50
  51. data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +2 -29
  52. data/docs/_components/jquery-syntax/jquery.syntax.cache.js +7 -65
  53. data/docs/_components/jquery-syntax/jquery.syntax.core.js +34 -1098
  54. data/docs/_components/jquery-syntax/jquery.syntax.editor.js +11 -291
  55. data/docs/_components/jquery-syntax/jquery.syntax.js +8 -258
  56. data/docs/_components/jquery/jquery.js +1678 -1026
  57. data/docs/_components/jquery/jquery.min.js +2 -4
  58. data/docs/_components/jquery/jquery.min.map +1 -1
  59. data/docs/_components/jquery/jquery.slim.js +1602 -932
  60. data/docs/_components/jquery/jquery.slim.min.js +2 -4
  61. data/docs/_components/jquery/jquery.slim.min.map +1 -1
  62. data/docs/_static/icon.png +0 -0
  63. data/docs/_static/site.css +100 -114
  64. data/docs/{wiki/development-environment-setup.html → development-environment-setup/index.html} +9 -15
  65. data/docs/{wiki/faq/what-is-xnode.html → faq/what-is-xnode/index.html} +9 -15
  66. data/docs/index.html +25 -31
  67. data/docs/javascript/index.html +108 -0
  68. data/docs/{wiki/middleware/content.html → middleware/content/index.html} +9 -15
  69. data/docs/{wiki/middleware/controller/actions.html → middleware/controller/actions/index.html} +11 -17
  70. data/docs/{wiki/middleware/controller.html → middleware/controller/index.html} +9 -15
  71. data/docs/{wiki/middleware/controller/rewrite.html → middleware/controller/rewrite/index.html} +9 -15
  72. data/docs/{wiki/middleware/localization.html → middleware/localization/index.html} +9 -15
  73. data/docs/{wiki/middleware/redirection.html → middleware/redirection/index.html} +9 -15
  74. data/docs/{wiki/middleware/session.html → middleware/session/index.html} +9 -15
  75. data/docs/{wiki/middleware/static.html → middleware/static/index.html} +9 -15
  76. data/docs/{wiki/server-setup.html → server-setup/index.html} +11 -42
  77. data/docs/{wiki/testing.html → testing/index.html} +10 -16
  78. data/docs/{wiki/updating-utopia.html → updating-utopia/index.html} +9 -15
  79. data/docs/{wiki/your-first-page.html → your-first-page/index.html} +11 -17
  80. data/lib/utopia/content.rb +23 -19
  81. data/lib/utopia/content/link.rb +29 -34
  82. data/lib/utopia/content/links.rb +185 -123
  83. data/lib/utopia/content/node.rb +13 -17
  84. data/lib/utopia/content/response.rb +2 -2
  85. data/lib/utopia/localization.rb +18 -10
  86. data/lib/utopia/path.rb +36 -32
  87. data/lib/utopia/version.rb +1 -1
  88. data/setup/site/Gemfile +7 -5
  89. data/spec/utopia/command_spec.rb +1 -1
  90. data/spec/utopia/content/links/bar/index.xnode +0 -0
  91. data/spec/utopia/content/links/bar/parent/child/index.en.xnode +0 -0
  92. data/spec/utopia/content/links/bar/parent/child/index.ja.xnode +0 -0
  93. data/spec/utopia/content/links/bar/parent/links.yaml +2 -0
  94. data/spec/utopia/content/links/index.xnode +0 -0
  95. data/spec/utopia/content/links/links.yaml +10 -1
  96. data/spec/utopia/content/links/redirect/links.yaml +2 -0
  97. data/spec/utopia/content/links_spec.rb +160 -43
  98. data/spec/utopia/content/localized/links.yaml +2 -5
  99. data/spec/utopia/content/node_spec.rb +1 -1
  100. data/spec/utopia/path_spec.rb +50 -5
  101. data/wiki/Gemfile +9 -0
  102. data/wiki/config.ru +7 -0
  103. data/{documentation/pages/wiki/development-environment-setup/content.md → wiki/pages/development-environment-setup/index.md} +0 -0
  104. data/wiki/pages/faq/links.yaml +2 -0
  105. data/{documentation/pages/wiki/faq/what-is-xnode/content.md → wiki/pages/faq/what-is-xnode/index.md} +1 -1
  106. data/wiki/pages/faq/what-is-xnode/links.yaml +2 -0
  107. data/{documentation/pages/wiki/content.md → wiki/pages/index.md} +2 -2
  108. data/{documentation/pages/wiki/javascript/content.md → wiki/pages/javascript/index.md} +15 -13
  109. data/wiki/pages/javascript/links.yaml +2 -0
  110. data/wiki/pages/links.yaml +2 -0
  111. data/{documentation/pages/wiki/middleware/content/content.md → wiki/pages/middleware/content/index.md} +0 -0
  112. data/{documentation/pages/wiki/middleware/controller/actions/content.md → wiki/pages/middleware/controller/actions/index.md} +2 -2
  113. data/{documentation/pages/wiki/middleware/controller/content.md → wiki/pages/middleware/controller/index.md} +0 -0
  114. data/{documentation/pages/wiki → wiki/pages}/middleware/controller/links.yaml +0 -0
  115. data/{documentation/pages/wiki/middleware/controller/rewrite/content.md → wiki/pages/middleware/controller/rewrite/index.md} +0 -0
  116. data/{documentation/pages/wiki/middleware/localization/content.md → wiki/pages/middleware/localization/index.md} +0 -0
  117. data/{documentation/pages/wiki/middleware/redirection/content.md → wiki/pages/middleware/redirection/index.md} +0 -0
  118. data/{documentation/pages/wiki/middleware/session/content.md → wiki/pages/middleware/session/index.md} +0 -0
  119. data/{documentation/pages/wiki/middleware/static/content.md → wiki/pages/middleware/static/index.md} +0 -0
  120. data/{documentation/pages/wiki/server-setup/content.md → wiki/pages/server-setup/index.md} +0 -0
  121. data/{documentation/pages/wiki/testing/content.md → wiki/pages/testing/index.md} +0 -0
  122. data/{documentation/pages/wiki/updating-utopia/content.md → wiki/pages/updating-utopia/index.md} +0 -0
  123. data/{documentation/pages/wiki/your-first-page/content.md → wiki/pages/your-first-page/index.md} +2 -2
  124. metadata +56 -263
  125. data/.travis.yml +0 -28
  126. data/Rakefile +0 -33
  127. data/docs/_components/jquery/core.js +0 -482
  128. data/docs/_static/utopia-background.svg +0 -1
  129. data/docs/_static/utopia.svg +0 -1
  130. data/docs/code/Utopia.html +0 -517
  131. data/docs/code/Utopia/Basename.html +0 -654
  132. data/docs/code/Utopia/Bootstrap.html +0 -538
  133. data/docs/code/Utopia/Command.html +0 -213
  134. data/docs/code/Utopia/Command/Environment.html +0 -321
  135. data/docs/code/Utopia/Command/Server.html +0 -214
  136. data/docs/code/Utopia/Command/Server/Create.html +0 -222
  137. data/docs/code/Utopia/Command/Server/Environment.html +0 -236
  138. data/docs/code/Utopia/Command/Server/Update.html +0 -317
  139. data/docs/code/Utopia/Command/Setup.html +0 -145
  140. data/docs/code/Utopia/Command/Setup/Server.html +0 -298
  141. data/docs/code/Utopia/Command/Setup/Site.html +0 -180
  142. data/docs/code/Utopia/Command/Site.html +0 -285
  143. data/docs/code/Utopia/Command/Site/Create.html +0 -324
  144. data/docs/code/Utopia/Command/Site/Update.html +0 -407
  145. data/docs/code/Utopia/Command/Top.html +0 -279
  146. data/docs/code/Utopia/Content.html +0 -832
  147. data/docs/code/Utopia/Content/Document.html +0 -1822
  148. data/docs/code/Utopia/Content/Document/State.html +0 -1220
  149. data/docs/code/Utopia/Content/Link.html +0 -1286
  150. data/docs/code/Utopia/Content/Links.html +0 -847
  151. data/docs/code/Utopia/Content/MarkupParser.html +0 -881
  152. data/docs/code/Utopia/Content/MarkupParser/ParsedTag.html +0 -422
  153. data/docs/code/Utopia/Content/MarkupParser/UnbalancedTagError.html +0 -615
  154. data/docs/code/Utopia/Content/Namespace.html +0 -485
  155. data/docs/code/Utopia/Content/Node.html +0 -1188
  156. data/docs/code/Utopia/Content/Node/Context.html +0 -938
  157. data/docs/code/Utopia/Content/Response.html +0 -813
  158. data/docs/code/Utopia/Content/SymbolicHash.html +0 -419
  159. data/docs/code/Utopia/Content/Tag.html +0 -399
  160. data/docs/code/Utopia/Content/Tags.html +0 -136
  161. data/docs/code/Utopia/Content/Tags/ContentTag.html +0 -187
  162. data/docs/code/Utopia/Content/Tags/DeferredTag.html +0 -193
  163. data/docs/code/Utopia/Content/Tags/Library.html +0 -333
  164. data/docs/code/Utopia/Content/Tags/NodeTag.html +0 -193
  165. data/docs/code/Utopia/Content/UnbalancedTagError.html +0 -298
  166. data/docs/code/Utopia/ContentLength.html +0 -343
  167. data/docs/code/Utopia/Controller.html +0 -907
  168. data/docs/code/Utopia/Controller/Actions.html +0 -289
  169. data/docs/code/Utopia/Controller/Actions/Action.html +0 -984
  170. data/docs/code/Utopia/Controller/Actions/ClassMethods.html +0 -442
  171. data/docs/code/Utopia/Controller/Base.html +0 -1216
  172. data/docs/code/Utopia/Controller/Respond.html +0 -293
  173. data/docs/code/Utopia/Controller/Respond/ClassMethods.html +0 -236
  174. data/docs/code/Utopia/Controller/Respond/Converter.html +0 -256
  175. data/docs/code/Utopia/Controller/Respond/Converter/Callback.html +0 -484
  176. data/docs/code/Utopia/Controller/Respond/Converter/ToJSON.html +0 -381
  177. data/docs/code/Utopia/Controller/Respond/Passthrough.html +0 -297
  178. data/docs/code/Utopia/Controller/Respond/Responder.html +0 -535
  179. data/docs/code/Utopia/Controller/Rewrite.html +0 -290
  180. data/docs/code/Utopia/Controller/Rewrite/ClassMethods.html +0 -242
  181. data/docs/code/Utopia/Controller/Rewrite/ExtractPrefixRule.html +0 -364
  182. data/docs/code/Utopia/Controller/Rewrite/Rewriter.html +0 -464
  183. data/docs/code/Utopia/Controller/Rewrite/Rule.html +0 -209
  184. data/docs/code/Utopia/Controller/Variables.html +0 -550
  185. data/docs/code/Utopia/Controllers.html +0 -244
  186. data/docs/code/Utopia/Exceptions.html +0 -127
  187. data/docs/code/Utopia/Exceptions/Handler.html +0 -526
  188. data/docs/code/Utopia/Exceptions/Mailer.html +0 -482
  189. data/docs/code/Utopia/Extensions.html +0 -117
  190. data/docs/code/Utopia/Extensions/ArraySplit.html +0 -183
  191. data/docs/code/Utopia/Extensions/DateTimeComparison.html +0 -193
  192. data/docs/code/Utopia/Extensions/TimeDateComparison.html +0 -193
  193. data/docs/code/Utopia/HTTP.html +0 -250
  194. data/docs/code/Utopia/HTTP/Status.html +0 -415
  195. data/docs/code/Utopia/Locale.html +0 -606
  196. data/docs/code/Utopia/Localization.html +0 -1241
  197. data/docs/code/Utopia/Localization/Wrapper.html +0 -459
  198. data/docs/code/Utopia/Logger.html +0 -205
  199. data/docs/code/Utopia/Logger/CompactFormatter.html +0 -335
  200. data/docs/code/Utopia/Path.html +0 -3310
  201. data/docs/code/Utopia/Path/Matcher.html +0 -518
  202. data/docs/code/Utopia/Path/Matcher/MatchData.html +0 -475
  203. data/docs/code/Utopia/Redirection.html +0 -151
  204. data/docs/code/Utopia/Redirection/ClientRedirect.html +0 -717
  205. data/docs/code/Utopia/Redirection/DirectoryIndex.html +0 -298
  206. data/docs/code/Utopia/Redirection/Errors.html +0 -476
  207. data/docs/code/Utopia/Redirection/Moved.html +0 -312
  208. data/docs/code/Utopia/Redirection/RequestFailure.html +0 -226
  209. data/docs/code/Utopia/Redirection/Rewrite.html +0 -296
  210. data/docs/code/Utopia/Session.html +0 -889
  211. data/docs/code/Utopia/Session/LazyHash.html +0 -859
  212. data/docs/code/Utopia/Setup.html +0 -970
  213. data/docs/code/Utopia/Static.html +0 -696
  214. data/docs/code/Utopia/Static/LocalFile.html +0 -1104
  215. data/docs/code/Utopia/Static/MimeTypeLoader.html +0 -541
  216. data/docs/code/Utopia/Static/MimeTypeLoader/ExpansionError.html +0 -124
  217. data/docs/code/Utopia/Tags.html +0 -115
  218. data/docs/code/Utopia/Tags/Environment.html +0 -314
  219. data/docs/code/Utopia/Tags/EnvironmentTag.html +0 -314
  220. data/docs/code/Utopia/Tags/Library.html +0 -340
  221. data/docs/code/_index.html +0 -758
  222. data/docs/code/class_list.html +0 -51
  223. data/docs/code/css/common.css +0 -1
  224. data/docs/code/css/full_list.css +0 -58
  225. data/docs/code/css/style.css +0 -496
  226. data/docs/code/file.README.html +0 -171
  227. data/docs/code/file_list.html +0 -56
  228. data/docs/code/frames.html +0 -17
  229. data/docs/code/index.html +0 -171
  230. data/docs/code/js/app.js +0 -292
  231. data/docs/code/js/full_list.js +0 -216
  232. data/docs/code/js/jquery.js +0 -4
  233. data/docs/code/materials/utopia.png +0 -0
  234. data/docs/code/materials/utopia.svg +0 -1
  235. data/docs/code/method_list.html +0 -3443
  236. data/docs/code/top-level-namespace.html +0 -110
  237. data/docs/wiki.html +0 -92
  238. data/docs/wiki/development-environment-setup/index.html +0 -60
  239. data/docs/wiki/edit.html +0 -103
  240. data/docs/wiki/faq/what-is-xnode/index.html +0 -79
  241. data/docs/wiki/javascript.html +0 -153
  242. data/docs/wiki/javascript/index.html +0 -153
  243. data/docs/wiki/middleware/content/index.html +0 -64
  244. data/docs/wiki/middleware/controller/actions/index.html +0 -117
  245. data/docs/wiki/middleware/controller/actions/rewrite/index.html +0 -48
  246. data/docs/wiki/middleware/controller/index.html +0 -104
  247. data/docs/wiki/middleware/controller/rewrite/index.html +0 -111
  248. data/docs/wiki/middleware/localization/index.html +0 -59
  249. data/docs/wiki/middleware/redirection/index.html +0 -61
  250. data/docs/wiki/middleware/session/index.html +0 -71
  251. data/docs/wiki/middleware/static/index.html +0 -57
  252. data/docs/wiki/server-setup/index.html +0 -118
  253. data/docs/wiki/testing/index.html +0 -59
  254. data/docs/wiki/updating-utopia/index.html +0 -108
  255. data/docs/wiki/your-first-page/index.html +0 -80
  256. data/documentation/.rspec +0 -4
  257. data/documentation/.yarnrc +0 -1
  258. data/documentation/Gemfile +0 -19
  259. data/documentation/Guardfile +0 -9
  260. data/documentation/Rakefile +0 -9
  261. data/documentation/config.ru +0 -41
  262. data/documentation/config/README.md +0 -7
  263. data/documentation/config/environment.rb +0 -12
  264. data/documentation/lib/readme.txt +0 -1
  265. data/documentation/pages/_editor.xnode +0 -64
  266. data/documentation/pages/_heading.xnode +0 -2
  267. data/documentation/pages/_page.xnode +0 -40
  268. data/documentation/pages/errors/exception.xnode +0 -5
  269. data/documentation/pages/errors/file-not-found.xnode +0 -5
  270. data/documentation/pages/links.yaml +0 -2
  271. data/documentation/pages/wiki/_listing.xnode +0 -32
  272. data/documentation/pages/wiki/_navigation.xnode +0 -15
  273. data/documentation/pages/wiki/controller.rb +0 -48
  274. data/documentation/pages/wiki/edit.xnode +0 -10
  275. data/documentation/pages/wiki/links.yaml +0 -6
  276. data/documentation/pages/wiki/show.xnode +0 -12
  277. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +0 -6
  278. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +0 -5
  279. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +0 -8
  280. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +0 -6
  281. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +0 -10
  282. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +0 -3
  283. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.css.css +0 -14
  284. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +0 -16
  285. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.html.css +0 -5
  286. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +0 -3
  287. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +0 -2
  288. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.python.css +0 -6
  289. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +0 -2
  290. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +0 -18
  291. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.core.css +0 -62
  292. data/documentation/public/_components/jquery-syntax/base/jquery.syntax.editor.css +0 -6
  293. data/documentation/public/_components/jquery-syntax/base/theme.js +0 -1
  294. data/documentation/public/_components/jquery-syntax/bright/jquery.syntax.core.css +0 -27
  295. data/documentation/public/_components/jquery-syntax/bright/theme.js +0 -1
  296. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.apache.js +0 -41
  297. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.applescript.js +0 -57
  298. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.assembly.js +0 -37
  299. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +0 -67
  300. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.bash.js +0 -33
  301. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.basic.js +0 -51
  302. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.clang.js +0 -89
  303. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.csharp.js +0 -47
  304. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.css.js +0 -80
  305. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.diff.js +0 -24
  306. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.go.js +0 -47
  307. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.haskell.js +0 -45
  308. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.html.js +0 -66
  309. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.io.js +0 -45
  310. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.java.js +0 -45
  311. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.javascript.js +0 -40
  312. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.kai.js +0 -29
  313. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.lisp.js +0 -34
  314. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.lua.js +0 -44
  315. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.nginx.js +0 -31
  316. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +0 -73
  317. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ooc.js +0 -46
  318. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.pascal.js +0 -51
  319. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.perl5.js +0 -52
  320. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.php-script.js +0 -48
  321. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.php.js +0 -15
  322. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.plain.js +0 -10
  323. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +0 -43
  324. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.python.js +0 -44
  325. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ruby.js +0 -77
  326. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.scala.js +0 -44
  327. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +0 -29
  328. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.sql.js +0 -31
  329. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +0 -57
  330. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.swift.js +0 -55
  331. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.trenni.js +0 -35
  332. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.xml.js +0 -50
  333. data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.yaml.js +0 -29
  334. data/documentation/public/_components/jquery-syntax/jquery.syntax.cache.js +0 -65
  335. data/documentation/public/_components/jquery-syntax/jquery.syntax.core.js +0 -1098
  336. data/documentation/public/_components/jquery-syntax/jquery.syntax.editor.js +0 -291
  337. data/documentation/public/_components/jquery-syntax/jquery.syntax.js +0 -258
  338. data/documentation/public/_components/jquery-syntax/jquery.syntax.min.js +0 -13
  339. data/documentation/public/_components/jquery-syntax/paper/jquery.syntax.core.css +0 -31
  340. data/documentation/public/_components/jquery-syntax/paper/theme.js +0 -1
  341. data/documentation/public/_components/jquery/core.js +0 -482
  342. data/documentation/public/_components/jquery/jquery.js +0 -10220
  343. data/documentation/public/_components/jquery/jquery.min.js +0 -4
  344. data/documentation/public/_components/jquery/jquery.min.map +0 -1
  345. data/documentation/public/_components/jquery/jquery.slim.js +0 -8107
  346. data/documentation/public/_components/jquery/jquery.slim.min.js +0 -4
  347. data/documentation/public/_components/jquery/jquery.slim.min.map +0 -1
  348. data/documentation/public/_static +0 -1
  349. data/documentation/public/materials +0 -1
  350. data/documentation/spec/website_context.rb +0 -12
  351. data/documentation/spec/website_spec.rb +0 -16
  352. data/documentation/tasks +0 -1
  353. data/spec/utopia/content/link_spec.rb +0 -47
@@ -2,12 +2,10 @@
2
2
  <html>
3
3
  <head>
4
4
 
5
- <title>Static - Utopia</title>
5
+ <title>Static</title>
6
6
 
7
7
  <meta charset="UTF-8"/>
8
8
 
9
- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
10
-
11
9
  <link rel="icon" type="image/png" href="../../_static/icon.png"/>
12
10
  <link rel="stylesheet" href="../../_static/site.css" type="text/css" media="screen"/>
13
11
 
@@ -23,18 +21,13 @@
23
21
  </script>
24
22
  </head>
25
23
 
26
- <body class="">
27
- <header>
28
- <img src="../../_static/utopia.svg"/>
29
- </header>
30
-
31
- <div id="page">
32
-
33
- <nav>
34
- › <a href="../../wiki.html">Wiki</a> › <span>Middleware</span> › <a href="static.html">Static</a></nav>
24
+ <body class="show">
25
+
26
+ <nav> › <a href="../../index.html">Wiki</a> › <span>Middleware</span> › <a href="index.html">Static</a></nav>
35
27
 
36
28
 
37
- <h1 id="static">Static</h1>
29
+ <main>
30
+ <h1 id="static">Static</h1>
38
31
 
39
32
  <p>This middleware serves static files using the <code>mime-types</code> library. By default, it works with <code>Rack::Sendfile</code> and supports <code>ETag</code> based caching. Normally, you’d prefer to put static files into <code>public/_static</code> but it’s also acceptable to put static content into <code>pages/</code> if it makes sense.</p>
40
33
 
@@ -47,11 +40,12 @@
47
40
  cache_control: 'public, max-age=7200'
48
41
  </code></pre>
49
42
 
43
+ </main>
50
44
 
51
45
  <footer>
52
- Last Modified: 2016-12-13 12:36:48 +1300 —
46
+ Last Modified: 2020-04-28 11:35:36 +1200
47
+ — middleware/static/index.md
53
48
  </footer>
54
49
 
55
- </div>
56
50
  </body>
57
51
  </html>
@@ -2,12 +2,10 @@
2
2
  <html>
3
3
  <head>
4
4
 
5
- <title>Server Setup - Utopia</title>
5
+ <title>Server Setup</title>
6
6
 
7
7
  <meta charset="UTF-8"/>
8
8
 
9
- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
10
-
11
9
  <link rel="icon" type="image/png" href="../_static/icon.png"/>
12
10
  <link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
13
11
 
@@ -23,24 +21,19 @@
23
21
  </script>
24
22
  </head>
25
23
 
26
- <body class="">
27
- <header>
28
- <img src="../_static/utopia.svg"/>
29
- </header>
30
-
31
- <div id="page">
32
-
33
- <nav>
34
- › <a href="../wiki.html">Wiki</a> › <a href="server-setup.html">Server Setup</a></nav>
24
+ <body class="show">
25
+
26
+ <nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Server Setup</a></nav>
35
27
 
36
28
 
37
- <h1 id="server-setup">Server Setup</h1>
29
+ <main>
30
+ <h1 id="server-setup">Server Setup</h1>
38
31
 
39
32
  <p>Utopia is designed to make deployment to remote servers easy.</p>
40
33
 
41
34
  <h2 id="deployment">Deployment</h2>
42
35
 
43
- <p>The preferred method of deployment to a production server is via git. The <code>utopia</code> command assists with setup of a remote git repository on the server. It will setup a <code>git</code> <code>post-update</code> hook which will deploy the site correctly and restart passenger for that site.</p>
36
+ <p>The preferred method of deployment to a production server is via git. The <code>utopia</code> command assists with setup of a remote git repository on the server. It will setup a <code>git</code> <code>post-update</code> hook which will deploy the site correctly and restart the application server for that site.</p>
44
37
 
45
38
  <p>To setup a server for deployment:</p>
46
39
 
@@ -70,32 +63,7 @@ ENV["DATABASE_ENV"] will default to "production_cluster_primary" unless otherwis
70
63
 
71
64
  <h2 id="platform">Platform</h2>
72
65
 
73
- <p>The best deployment platform for Utopia is Linux. Specifically, <a href="https://www.archlinux.org/">Arch Linux</a> with the following packages:</p>
74
-
75
- <ul>
76
- <li><a href="https://aur.archlinux.org/packages/nginx-mainline-passenger/">nginx-mainline-passenger</a></li>
77
- <li><a href="https://aur.archlinux.org/packages/passenger-nginx-module/">passenger-nginx-module</a></li>
78
- </ul>
79
-
80
- <p>There have been issues with the official packages and thus these packages were developed and tested with Utopia deployment in mind.</p>
81
-
82
- <h3 id="sample-nginx-configuration">Sample Nginx Configuration</h3>
83
-
84
- <p>Create a configuration file for your site, e.g. <code>/etc/nginx/sites/www.example.com</code>:</p>
85
-
86
- <pre><code class="language-nginx">server {
87
- listen 80;
88
- server_name www.example.com;
89
- root /srv/http/www.example.com/public;
90
- passenger_enabled on;
91
- }
92
-
93
- server {
94
- listen 80;
95
- server_name example.com;
96
- rewrite ^ http://www.example.com$uri permanent;
97
- }
98
- </code></pre>
66
+ <p>The best deployment platform for Utopia is Linux, using <a href="https://github.com/socketry/falcon">falcon</a>.</p>
99
67
 
100
68
  <h3 id="sudo-setup">Sudo Setup</h3>
101
69
 
@@ -108,11 +76,12 @@ server {
108
76
  <p>This allows the deploy task to correctly checkout code as user <code>http</code>.</p>
109
77
 
110
78
 
79
+ </main>
111
80
 
112
81
  <footer>
113
- Last Modified: 2018-03-24 20:49:16 +1300 —
82
+ Last Modified: 2020-04-28 11:35:36 +1200
83
+ — server-setup/index.md
114
84
  </footer>
115
85
 
116
- </div>
117
86
  </body>
118
87
  </html>
@@ -2,12 +2,10 @@
2
2
  <html>
3
3
  <head>
4
4
 
5
- <title>Testing - Utopia</title>
5
+ <title>Testing</title>
6
6
 
7
7
  <meta charset="UTF-8"/>
8
8
 
9
- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
10
-
11
9
  <link rel="icon" type="image/png" href="../_static/icon.png"/>
12
10
  <link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
13
11
 
@@ -23,20 +21,15 @@
23
21
  </script>
24
22
  </head>
25
23
 
26
- <body class="">
27
- <header>
28
- <img src="../_static/utopia.svg"/>
29
- </header>
30
-
31
- <div id="page">
32
-
33
- <nav>
34
- › <a href="../wiki.html">Wiki</a> › <a href="testing.html">Testing</a></nav>
24
+ <body class="show">
25
+
26
+ <nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Testing</a></nav>
35
27
 
36
28
 
37
- <h1 id="testing">Testing</h1>
29
+ <main>
30
+ <h1 id="testing">Testing</h1>
38
31
 
39
- <p>Utopia websites include a default set of tests, and associated <code>rake test</code> tasks. These specs can test against the actual running website. By default, <code>simplecov</code> is included for coverage testing.</p>
32
+ <p>Utopia websites include a default set of tests, and associated <code>rake test</code> tasks. These specs can test against the actual running website. By default, <a href="https://github.com/socketry/covered">covered</a> is included for coverage testing.</p>
40
33
 
41
34
  <pre><code class="language-bash">$ rake coverage test
42
35
 
@@ -49,11 +42,12 @@ Finished in 0.44849 seconds (files took 0.15547 seconds to load)
49
42
  Coverage report generated for RSpec. 5 / 5 LOC (100.0%) covered.
50
43
  </code></pre>
51
44
 
45
+ </main>
52
46
 
53
47
  <footer>
54
- Last Modified: 2016-12-13 12:41:41 +1300 —
48
+ Last Modified: 2020-04-28 11:35:36 +1200
49
+ — testing/index.md
55
50
  </footer>
56
51
 
57
- </div>
58
52
  </body>
59
53
  </html>
@@ -2,12 +2,10 @@
2
2
  <html>
3
3
  <head>
4
4
 
5
- <title>Updating Utopia - Utopia</title>
5
+ <title>Updating Utopia</title>
6
6
 
7
7
  <meta charset="UTF-8"/>
8
8
 
9
- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
10
-
11
9
  <link rel="icon" type="image/png" href="../_static/icon.png"/>
12
10
  <link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
13
11
 
@@ -23,18 +21,13 @@
23
21
  </script>
24
22
  </head>
25
23
 
26
- <body class="">
27
- <header>
28
- <img src="../_static/utopia.svg"/>
29
- </header>
30
-
31
- <div id="page">
32
-
33
- <nav>
34
- › <a href="../wiki.html">Wiki</a> › <a href="updating-utopia.html">Updating Utopia</a></nav>
24
+ <body class="show">
25
+
26
+ <nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Updating Utopia</a></nav>
35
27
 
36
28
 
37
- <h1 id="updating-utopia">Updating Utopia</h1>
29
+ <main>
30
+ <h1 id="updating-utopia">Updating Utopia</h1>
38
31
 
39
32
  <p>Utopia provides a model for both local development (<code>utopia site create</code>) and deployment (<code>utopia server create</code>). In addition, Utopia provides a basic upgrade path for existing sites when things within the framework change. These are not always automatic, so below are some recipes for how to update your site.</p>
40
33
 
@@ -98,11 +91,12 @@ end
98
91
  $ utopia server update
99
92
  </code></pre>
100
93
 
94
+ </main>
101
95
 
102
96
  <footer>
103
- Last Modified: 2017-06-22 15:25:56 +1200
97
+ Last Modified: 2020-04-28 11:35:36 +1200
98
+ — updating-utopia/index.md
104
99
  </footer>
105
100
 
106
- </div>
107
101
  </body>
108
102
  </html>
@@ -2,12 +2,10 @@
2
2
  <html>
3
3
  <head>
4
4
 
5
- <title>Your First Page - Utopia</title>
5
+ <title>Your First Page</title>
6
6
 
7
7
  <meta charset="UTF-8"/>
8
8
 
9
- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
10
-
11
9
  <link rel="icon" type="image/png" href="../_static/icon.png"/>
12
10
  <link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
13
11
 
@@ -23,18 +21,13 @@
23
21
  </script>
24
22
  </head>
25
23
 
26
- <body class="">
27
- <header>
28
- <img src="../_static/utopia.svg"/>
29
- </header>
30
-
31
- <div id="page">
32
-
33
- <nav>
34
- › <a href="../wiki.html">Wiki</a> › <a href="your-first-page.html">Your First Page</a></nav>
24
+ <body class="show">
25
+
26
+ <nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Your First Page</a></nav>
35
27
 
36
28
 
37
- <h1 id="your-first-page">Your First Page</h1>
29
+ <main>
30
+ <h1 id="your-first-page">Your First Page</h1>
38
31
 
39
32
  <p>To setup the default site, simply create a directory and use the <code>utopia</code> command:</p>
40
33
 
@@ -44,7 +37,7 @@ $ utopia site create
44
37
  $ rake server
45
38
  </code></pre>
46
39
 
47
- <p>You will now have a basic template site running on <code>http://localhost:9292</code>.</p>
40
+ <p>You will now have a basic template site running on <code>https://localhost:9292</code>.</p>
48
41
 
49
42
  <h2 id="welcome-page">Welcome Page</h2>
50
43
 
@@ -67,14 +60,15 @@ use Utopia::Redirection::Rewrite,
67
60
  <p>You’ll notice that there is a file <code>/links.yaml</code>. This file contains important metadata relating to the <code>errors</code> subdirectory. As we don’t want these nodes showing up in a top level menu, we mark them as <code>display: false</code></p>
68
61
 
69
62
  <pre><code class="language-yaml">errors:
70
- display: false
63
+ display: false
71
64
  </code></pre>
72
65
 
66
+ </main>
73
67
 
74
68
  <footer>
75
- Last Modified: 2017-11-11 02:12:21 +1300 —
69
+ Last Modified: 2020-04-28 23:17:10 +1200
70
+ — your-first-page/index.md
76
71
  </footer>
77
72
 
78
- </div>
79
73
  </body>
80
74
  </html>
@@ -59,7 +59,7 @@ module Utopia
59
59
  # The core namespace for utopia specific functionality:
60
60
  @namespaces[UTOPIA_NAMESPACE] ||= Tags
61
61
  end
62
-
62
+
63
63
  def freeze
64
64
  return self if frozen?
65
65
 
@@ -72,6 +72,7 @@ module Utopia
72
72
 
73
73
  attr :root
74
74
 
75
+ # TODO we should remove this method and expose `@links` directly.
75
76
  def links(path, **options)
76
77
  @links.index(path, **options)
77
78
  end
@@ -91,20 +92,23 @@ module Utopia
91
92
  end
92
93
  end
93
94
 
94
- # The request_path is an absolute uri path, e.g. /foo/bar. If an xnode file exists on disk for this exact path, it is instantiated, otherwise nil.
95
- def lookup_node(request_path)
96
- name = request_path.last
97
- name_xnode = name.to_s + XNODE_EXTENSION
98
-
99
- node_path = File.join(@root, request_path.dirname.components, name_xnode)
100
-
101
- if File.exist? node_path
102
- return Node.new(self, request_path.dirname + name, request_path, node_path)
95
+ # @param path [Path] the request_path is an absolute uri path, e.g. `/foo/bar`. If an xnode file exists on disk for this exact path, it is instantiated, otherwise nil.
96
+ def lookup_node(path, locale = nil)
97
+ resolve_link(
98
+ @links.for(path, locale)
99
+ )
100
+ end
101
+
102
+ def resolve_link(link)
103
+ if path = link&.path
104
+ full_path = File.join(@root, path.dirname, link.key + XNODE_EXTENSION)
105
+
106
+ if File.exist?(full_path)
107
+ return Node.new(self, path, path, full_path)
108
+ end
103
109
  end
104
-
105
- return nil
106
110
  end
107
-
111
+
108
112
  def call(env)
109
113
  request = Rack::Request.new(env)
110
114
  path = Path.create(request.path_info)
@@ -112,17 +116,17 @@ module Utopia
112
116
  # Check if the request is to a non-specific index. This only works for requests with a given name:
113
117
  basename = path.basename
114
118
  directory_path = File.join(@root, path.dirname.components, basename)
115
-
119
+
116
120
  # If the request for /foo/bar is actually a directory, rewrite it to /foo/bar/index:
117
121
  if File.directory? directory_path
118
122
  index_path = [basename, INDEX]
119
123
 
120
124
  return [307, {HTTP::LOCATION => path.dirname.join(index_path).to_s}, []]
121
125
  end
122
-
126
+
123
127
  locale = env[Localization::CURRENT_LOCALE_KEY]
124
128
  if link = @links.for(path, locale)
125
- if link.path and node = lookup_node(link.path)
129
+ if node = resolve_link(link)
126
130
  attributes = request.env.fetch(VARIABLES_KEY, {}).to_hash
127
131
 
128
132
  return node.process!(request, attributes)
@@ -153,14 +157,14 @@ module Utopia
153
157
 
154
158
  while components.any?
155
159
  tag_path = File.join(@root, components, name_path)
156
-
160
+
157
161
  if File.exist? tag_path
158
162
  return Node.new(self, Path[components] + name, parent_path + name, tag_path)
159
163
  end
160
-
164
+
161
165
  if String === name_path
162
166
  tag_path = File.join(@root, components, '_' + name_path)
163
-
167
+
164
168
  if File.exist? tag_path
165
169
  return Node.new(self, Path[components] + name, parent_path + name, tag_path)
166
170
  end
@@ -30,60 +30,55 @@ require_relative '../locale'
30
30
 
31
31
  module Utopia
32
32
  class Content
33
- INDEX = 'index'.freeze
34
-
35
33
  # Represents a link to some content with associated metadata.
36
34
  class Link
37
- def initialize(kind, path, info = nil)
38
- path = Path.create(path)
39
-
40
- @info = info || {}
35
+ # @param kind [Symbol] the kind of link.
36
+ def initialize(kind, name, locale, path, info, title = nil)
41
37
  @kind = kind
42
-
43
- case @kind
44
- when :file
45
- @name, @locale = path.last.split('.', 2)
46
- @path = path
47
- when :directory
48
- @name = path.basename
49
-
50
- if @name == INDEX
51
- @name = path.dirname.basename
52
- end
53
-
54
- @locale = path.extension
55
- @path = path
56
- when :virtual
57
- @name, @locale = path.to_s.split('.', 2)
58
- @path = @info[:path] ? Path.create(@info[:path]) : nil
38
+ @name = name
39
+ @locale = locale
40
+ @path = Path.create(path)
41
+ @info = info || {}
42
+ @title = Trenni::Strings.to_title(title || name)
43
+ end
44
+
45
+ def key
46
+ if locale
47
+ "#{@path.last}.#{@locale}"
59
48
  else
60
- raise ArgumentError.new("Unknown link kind #{@kind} with path #{path}")
49
+ @path.last
61
50
  end
62
-
63
- @title = Trenni::Strings.to_title(@name)
64
51
  end
65
-
52
+
66
53
  def href
67
54
  @href ||= @info.fetch(:uri) do
68
55
  (@path.dirname + @path.basename).to_s if @path
69
56
  end
70
57
  end
71
-
58
+
72
59
  # Look up from the `links.yaml` metadata with a given symbolic key.
73
60
  def [] key
74
61
  @info[key]
75
62
  end
76
-
63
+
77
64
  attr :kind
78
65
  attr :name
79
66
  attr :path
80
67
  attr :info
81
68
  attr :locale
82
-
69
+
83
70
  def href?
84
71
  !!href
85
72
  end
86
-
73
+
74
+ def index?
75
+ @kind == :index
76
+ end
77
+
78
+ def virtual?
79
+ @kind == :virtual
80
+ end
81
+
87
82
  def relative_href(base = nil)
88
83
  if base and href.start_with? '/'
89
84
  Path.shortest_path(href, base)
@@ -91,11 +86,11 @@ module Utopia
91
86
  href
92
87
  end
93
88
  end
94
-
89
+
95
90
  def title
96
91
  @info.fetch(:title, @title)
97
92
  end
98
-
93
+
99
94
  def to_anchor(base: nil, content: self.title, builder: nil, **attributes)
100
95
  attributes[:class] ||= 'link'
101
96
 
@@ -124,7 +119,7 @@ module Utopia
124
119
  def eql? other
125
120
  self.class.eql?(other.class) and kind.eql?(other.kind) and name.eql?(other.name) and path.eql?(other.path) and info.eql?(other.info)
126
121
  end
127
-
122
+
128
123
  def == other
129
124
  other and kind == other.kind and name == other.name and path == other.path
130
125
  end