utopia 2.15.0 → 2.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) hide show
  1. checksums.yaml +4 -4
  2. data/bake/utopia/{yarn.rb → node.rb} +7 -7
  3. data/lib/utopia/command.rb +2 -2
  4. data/lib/utopia/command/server.rb +2 -1
  5. data/lib/utopia/command/site.rb +11 -1
  6. data/lib/utopia/content.rb +7 -5
  7. data/lib/utopia/content/markup.rb +1 -1
  8. data/lib/utopia/content/node.rb +2 -2
  9. data/lib/utopia/content/response.rb +3 -3
  10. data/lib/utopia/controller.rb +0 -17
  11. data/lib/utopia/controller/base.rb +27 -3
  12. data/lib/utopia/controller/respond.rb +50 -107
  13. data/lib/utopia/extensions/array_split.rb +2 -2
  14. data/lib/utopia/http.rb +3 -3
  15. data/lib/utopia/middleware.rb +2 -2
  16. data/lib/utopia/path.rb +24 -22
  17. data/lib/utopia/redirection.rb +0 -2
  18. data/lib/utopia/responder.rb +76 -0
  19. data/lib/utopia/version.rb +1 -1
  20. data/setup/server/git/hooks/post-receive +1 -1
  21. data/setup/site/.gitignore +8 -7
  22. data/setup/site/{Gemfile → gems.rb} +0 -0
  23. metadata +74 -398
  24. data/.codeclimate.yml +0 -5
  25. data/.github/workflows/development.yml +0 -62
  26. data/.gitignore +0 -8
  27. data/.rspec +0 -4
  28. data/.yardopts +0 -2
  29. data/Gemfile +0 -28
  30. data/README.md +0 -90
  31. data/benchmark/call_vs_check.rb +0 -38
  32. data/benchmark/const_vs_hash.rb +0 -35
  33. data/benchmark/hash_vs_openstruct.rb +0 -54
  34. data/benchmark/string_vs_symbol.rb +0 -14
  35. data/benchmark/struct_vs_class.rb +0 -91
  36. data/docs/.nojekyll +0 -0
  37. data/docs/_components/jquery-litebox/jquery.litebox.css +0 -23
  38. data/docs/_components/jquery-litebox/jquery.litebox.gallery.css +0 -48
  39. data/docs/_components/jquery-litebox/jquery.litebox.js +0 -30
  40. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +0 -12
  41. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +0 -5
  42. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +0 -8
  43. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +0 -6
  44. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +0 -4
  45. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +0 -6
  46. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.css.css +0 -14
  47. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +0 -16
  48. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.html.css +0 -5
  49. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +0 -3
  50. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +0 -2
  51. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.python.css +0 -6
  52. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +0 -2
  53. data/docs/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +0 -18
  54. data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +0 -58
  55. data/docs/_components/jquery-syntax/base/jquery.syntax.editor.css +0 -6
  56. data/docs/_components/jquery-syntax/base/theme.js +0 -1
  57. data/docs/_components/jquery-syntax/bright/jquery.syntax.core.css +0 -27
  58. data/docs/_components/jquery-syntax/bright/theme.js +0 -1
  59. data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +0 -3
  60. data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +0 -5
  61. data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +0 -3
  62. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +0 -4
  63. data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +0 -2
  64. data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +0 -5
  65. data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +0 -5
  66. data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +0 -4
  67. data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +0 -5
  68. data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +0 -2
  69. data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +0 -3
  70. data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +0 -3
  71. data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +0 -4
  72. data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +0 -3
  73. data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +0 -4
  74. data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +0 -3
  75. data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +0 -2
  76. data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +0 -2
  77. data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +0 -3
  78. data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +0 -2
  79. data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +0 -4
  80. data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +0 -4
  81. data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +0 -4
  82. data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +0 -3
  83. data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +0 -4
  84. data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +0 -2
  85. data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +0 -2
  86. data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +0 -3
  87. data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +0 -5
  88. data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +0 -5
  89. data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +0 -4
  90. data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +0 -2
  91. data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +0 -4
  92. data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +0 -3
  93. data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +0 -3
  94. data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +0 -2
  95. data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +0 -4
  96. data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +0 -2
  97. data/docs/_components/jquery-syntax/jquery.syntax.cache.js +0 -7
  98. data/docs/_components/jquery-syntax/jquery.syntax.core.js +0 -34
  99. data/docs/_components/jquery-syntax/jquery.syntax.editor.js +0 -11
  100. data/docs/_components/jquery-syntax/jquery.syntax.js +0 -8
  101. data/docs/_components/jquery-syntax/jquery.syntax.min.js +0 -13
  102. data/docs/_components/jquery-syntax/paper/jquery.syntax.core.css +0 -31
  103. data/docs/_components/jquery-syntax/paper/theme.js +0 -1
  104. data/docs/_components/jquery/jquery.js +0 -10872
  105. data/docs/_components/jquery/jquery.min.js +0 -2
  106. data/docs/_components/jquery/jquery.min.map +0 -1
  107. data/docs/_components/jquery/jquery.slim.js +0 -8777
  108. data/docs/_components/jquery/jquery.slim.min.js +0 -2
  109. data/docs/_components/jquery/jquery.slim.min.map +0 -1
  110. data/docs/_static/icon.png +0 -0
  111. data/docs/_static/site.css +0 -191
  112. data/docs/development-environment-setup/index.html +0 -54
  113. data/docs/faq/what-is-xnode/index.html +0 -73
  114. data/docs/index.html +0 -86
  115. data/docs/javascript/index.html +0 -108
  116. data/docs/middleware/content/index.html +0 -58
  117. data/docs/middleware/controller/actions/index.html +0 -111
  118. data/docs/middleware/controller/index.html +0 -98
  119. data/docs/middleware/controller/rewrite/index.html +0 -105
  120. data/docs/middleware/localization/index.html +0 -53
  121. data/docs/middleware/redirection/index.html +0 -55
  122. data/docs/middleware/session/index.html +0 -65
  123. data/docs/middleware/static/index.html +0 -51
  124. data/docs/server-setup/index.html +0 -87
  125. data/docs/testing/index.html +0 -53
  126. data/docs/updating-utopia/index.html +0 -102
  127. data/docs/your-first-page/index.html +0 -74
  128. data/materials/utopia.png +0 -0
  129. data/materials/utopia.svg +0 -1
  130. data/spec/mock_node.rb +0 -16
  131. data/spec/spec_helper.rb +0 -13
  132. data/spec/utopia/command_spec.rb +0 -164
  133. data/spec/utopia/content/document_spec.rb +0 -60
  134. data/spec/utopia/content/links/bar/index.xnode +0 -0
  135. data/spec/utopia/content/links/bar/parent/child/index.en.xnode +0 -0
  136. data/spec/utopia/content/links/bar/parent/child/index.ja.xnode +0 -0
  137. data/spec/utopia/content/links/bar/parent/links.yaml +0 -2
  138. data/spec/utopia/content/links/foo/index.xnode +0 -0
  139. data/spec/utopia/content/links/foo/links.yaml +0 -2
  140. data/spec/utopia/content/links/foo/test.de.xnode +0 -0
  141. data/spec/utopia/content/links/foo/test.en.xnode +0 -0
  142. data/spec/utopia/content/links/index.xnode +0 -0
  143. data/spec/utopia/content/links/links.yaml +0 -18
  144. data/spec/utopia/content/links/redirect/links.yaml +0 -2
  145. data/spec/utopia/content/links/welcome.xnode +0 -0
  146. data/spec/utopia/content/links_spec.rb +0 -218
  147. data/spec/utopia/content/localized/five/index.en.xnode +0 -0
  148. data/spec/utopia/content/localized/four/index.en.xnode +0 -0
  149. data/spec/utopia/content/localized/four/index.zh.xnode +0 -0
  150. data/spec/utopia/content/localized/four/links.yaml +0 -4
  151. data/spec/utopia/content/localized/links.yaml +0 -13
  152. data/spec/utopia/content/localized/one.xnode +0 -0
  153. data/spec/utopia/content/localized/three/index.xnode +0 -0
  154. data/spec/utopia/content/localized/two.en.xnode +0 -0
  155. data/spec/utopia/content/localized/two.zh.xnode +0 -0
  156. data/spec/utopia/content/markup_spec.rb +0 -96
  157. data/spec/utopia/content/namespace_spec.rb +0 -45
  158. data/spec/utopia/content/node/lookup/content.xnode +0 -1
  159. data/spec/utopia/content/node/lookup/index.xnode +0 -1
  160. data/spec/utopia/content/node/ordered/first.xnode +0 -0
  161. data/spec/utopia/content/node/ordered/index.xnode +0 -0
  162. data/spec/utopia/content/node/ordered/links.yaml +0 -4
  163. data/spec/utopia/content/node/ordered/second.xnode +0 -0
  164. data/spec/utopia/content/node/related/foo.en.xnode +0 -0
  165. data/spec/utopia/content/node/related/foo.ja.xnode +0 -0
  166. data/spec/utopia/content/node/related/links.yaml +0 -4
  167. data/spec/utopia/content/node_spec.rb +0 -97
  168. data/spec/utopia/content/response_spec.rb +0 -54
  169. data/spec/utopia/content/tags_spec.rb +0 -82
  170. data/spec/utopia/content_spec.rb +0 -100
  171. data/spec/utopia/content_spec.ru +0 -6
  172. data/spec/utopia/content_spec/_heading.xnode +0 -1
  173. data/spec/utopia/content_spec/content/_show-value.xnode +0 -1
  174. data/spec/utopia/content_spec/content/links.yaml +0 -2
  175. data/spec/utopia/content_spec/content/test-partial.xnode +0 -1
  176. data/spec/utopia/content_spec/index.xnode +0 -1
  177. data/spec/utopia/content_spec/node/index.xnode +0 -1
  178. data/spec/utopia/content_spec/test.xnode +0 -10
  179. data/spec/utopia/controller/actions_spec.rb +0 -62
  180. data/spec/utopia/controller/middleware_spec.rb +0 -88
  181. data/spec/utopia/controller/middleware_spec.ru +0 -6
  182. data/spec/utopia/controller/middleware_spec/controller/controller.rb +0 -27
  183. data/spec/utopia/controller/middleware_spec/controller/index.xnode +0 -1
  184. data/spec/utopia/controller/middleware_spec/controller/nested/controller.rb +0 -7
  185. data/spec/utopia/controller/middleware_spec/empty/controller.rb +0 -0
  186. data/spec/utopia/controller/middleware_spec/redirect/controller.rb +0 -12
  187. data/spec/utopia/controller/middleware_spec/redirect/test/controller.rb +0 -9
  188. data/spec/utopia/controller/respond_spec.rb +0 -174
  189. data/spec/utopia/controller/respond_spec.ru +0 -12
  190. data/spec/utopia/controller/respond_spec/api/controller.rb +0 -28
  191. data/spec/utopia/controller/respond_spec/errors/controller.rb +0 -14
  192. data/spec/utopia/controller/respond_spec/errors/file-not-found.xnode +0 -8
  193. data/spec/utopia/controller/respond_spec/html/controller.rb +0 -11
  194. data/spec/utopia/controller/respond_spec/rewrite/controller.rb +0 -13
  195. data/spec/utopia/controller/rewrite_spec.rb +0 -80
  196. data/spec/utopia/controller/sequence_spec.rb +0 -135
  197. data/spec/utopia/controller/variables_spec.rb +0 -59
  198. data/spec/utopia/controller/websocket_spec.rb +0 -68
  199. data/spec/utopia/controller/websocket_spec.ru +0 -5
  200. data/spec/utopia/controller/websocket_spec/server/controller.rb +0 -11
  201. data/spec/utopia/exceptions/handler_spec.rb +0 -47
  202. data/spec/utopia/exceptions/handler_spec.ru +0 -8
  203. data/spec/utopia/exceptions/handler_spec/controller.rb +0 -19
  204. data/spec/utopia/exceptions/mailer_spec.rb +0 -43
  205. data/spec/utopia/exceptions/mailer_spec.ru +0 -10
  206. data/spec/utopia/extensions_spec.rb +0 -73
  207. data/spec/utopia/http/status_spec.rb +0 -44
  208. data/spec/utopia/locale_spec.rb +0 -58
  209. data/spec/utopia/localization_spec.rb +0 -92
  210. data/spec/utopia/localization_spec.ru +0 -15
  211. data/spec/utopia/localization_spec/controller.rb +0 -21
  212. data/spec/utopia/localization_spec/localized.de.txt +0 -1
  213. data/spec/utopia/localization_spec/localized.en.txt +0 -1
  214. data/spec/utopia/localization_spec/localized.ja.txt +0 -1
  215. data/spec/utopia/localization_spec/test.txt +0 -1
  216. data/spec/utopia/middleware_spec.rb +0 -31
  217. data/spec/utopia/path/matcher_spec.rb +0 -66
  218. data/spec/utopia/path_spec.rb +0 -207
  219. data/spec/utopia/performance_spec.rb +0 -92
  220. data/spec/utopia/performance_spec/cache/head/readme.txt +0 -1
  221. data/spec/utopia/performance_spec/cache/meta/readme.txt +0 -1
  222. data/spec/utopia/performance_spec/config.ru +0 -35
  223. data/spec/utopia/performance_spec/lib/readme.txt +0 -1
  224. data/spec/utopia/performance_spec/pages/_heading.xnode +0 -2
  225. data/spec/utopia/performance_spec/pages/_page.xnode +0 -26
  226. data/spec/utopia/performance_spec/pages/api/controller.rb +0 -8
  227. data/spec/utopia/performance_spec/pages/errors/exception.xnode +0 -5
  228. data/spec/utopia/performance_spec/pages/errors/file-not-found.xnode +0 -5
  229. data/spec/utopia/performance_spec/pages/links.yaml +0 -2
  230. data/spec/utopia/performance_spec/pages/welcome/index.xnode +0 -17
  231. data/spec/utopia/rack_helper.rb +0 -32
  232. data/spec/utopia/redirection_spec.rb +0 -77
  233. data/spec/utopia/redirection_spec.ru +0 -27
  234. data/spec/utopia/session_spec.rb +0 -189
  235. data/spec/utopia/session_spec.ru +0 -24
  236. data/spec/utopia/setup_spec.rb +0 -56
  237. data/spec/utopia/static_spec.rb +0 -49
  238. data/spec/utopia/static_spec.ru +0 -5
  239. data/spec/utopia/static_spec/test.txt +0 -1
  240. data/utopia.gemspec +0 -52
  241. data/wiki/Gemfile +0 -9
  242. data/wiki/config.ru +0 -7
  243. data/wiki/pages/development-environment-setup/index.md +0 -16
  244. data/wiki/pages/faq/links.yaml +0 -2
  245. data/wiki/pages/faq/what-is-xnode/index.md +0 -37
  246. data/wiki/pages/faq/what-is-xnode/links.yaml +0 -2
  247. data/wiki/pages/index.md +0 -35
  248. data/wiki/pages/javascript/index.md +0 -75
  249. data/wiki/pages/javascript/links.yaml +0 -2
  250. data/wiki/pages/links.yaml +0 -2
  251. data/wiki/pages/middleware/content/index.md +0 -21
  252. data/wiki/pages/middleware/controller/actions/index.md +0 -76
  253. data/wiki/pages/middleware/controller/index.md +0 -62
  254. data/wiki/pages/middleware/controller/links.yaml +0 -4
  255. data/wiki/pages/middleware/controller/rewrite/index.md +0 -69
  256. data/wiki/pages/middleware/localization/index.md +0 -16
  257. data/wiki/pages/middleware/redirection/index.md +0 -17
  258. data/wiki/pages/middleware/session/index.md +0 -29
  259. data/wiki/pages/middleware/static/index.md +0 -13
  260. data/wiki/pages/server-setup/index.md +0 -52
  261. data/wiki/pages/testing/index.md +0 -15
  262. data/wiki/pages/updating-utopia/index.md +0 -63
  263. data/wiki/pages/your-first-page/index.md +0 -38
@@ -23,8 +23,8 @@
23
23
  module Utopia
24
24
  module Extensions
25
25
  module ArraySplit
26
- def split_at(*args, &block)
27
- if middle = index(*args, &block)
26
+ def split_at(*arguments, &block)
27
+ if middle = index(*arguments, &block)
28
28
  [self[0...middle], self[middle], self[middle+1..-1]]
29
29
  else
30
30
  [[], nil, []]
@@ -90,9 +90,9 @@ module Utopia
90
90
  503 => 'Service Unavailable'.freeze
91
91
  }.merge(Rack::Utils::HTTP_STATUS_CODES)
92
92
 
93
- CONTENT_TYPE = 'Content-Type'.freeze
94
- LOCATION = 'Location'.freeze
95
- CACHE_CONTROL = 'Cache-Control'.freeze
93
+ CONTENT_TYPE = 'content-type'.freeze
94
+ LOCATION = 'location'.freeze
95
+ CACHE_CONTROL = 'cache-control'.freeze
96
96
 
97
97
  # A small HTTP status wrapper that verifies the status code within a given range.
98
98
  class Status
@@ -39,7 +39,7 @@ module Utopia
39
39
 
40
40
  # The same as {default_root} but returns an instance of {Path}.
41
41
  # @return [Path] The path as requested.
42
- def self.default_path(*args)
43
- Path[default_root(*args)]
42
+ def self.default_path(*arguments)
43
+ Path[default_root(*arguments)]
44
44
  end
45
45
  end
@@ -25,7 +25,7 @@ module Utopia
25
25
  class Path
26
26
  include Comparable
27
27
 
28
- SEPARATOR = '/'.freeze
28
+ SEPARATOR = '/'
29
29
 
30
30
  def initialize(components = [])
31
31
  @components = components
@@ -34,6 +34,8 @@ module Utopia
34
34
  attr_accessor :components
35
35
 
36
36
  def freeze
37
+ return self if frozen?
38
+
37
39
  @components.freeze
38
40
 
39
41
  super
@@ -126,8 +128,8 @@ module Utopia
126
128
  @components = other_path.components.dup
127
129
  end
128
130
 
129
- def include?(*args)
130
- @components.include?(*args)
131
+ def include?(*arguments)
132
+ @components.include?(*arguments)
131
133
  end
132
134
 
133
135
  def directory?
@@ -200,8 +202,8 @@ module Utopia
200
202
  end
201
203
  end
202
204
 
203
- def with_prefix(*args)
204
- self.class.create(*args) + self
205
+ def with_prefix(*arguments)
206
+ self.class.create(*arguments) + self
205
207
  end
206
208
 
207
209
  # Computes the difference of the path.
@@ -235,6 +237,22 @@ module Utopia
235
237
  return self.class.new(result)
236
238
  end
237
239
 
240
+ def first
241
+ if absolute?
242
+ @components[1]
243
+ else
244
+ @components[0]
245
+ end
246
+ end
247
+
248
+ def last
249
+ @components.last
250
+ end
251
+
252
+ def pop
253
+ @components.pop
254
+ end
255
+
238
256
  # @return [String] the last path component without any file extension.
239
257
  def basename
240
258
  basename, _ = @components.last.split('.', 2)
@@ -284,7 +302,7 @@ module Utopia
284
302
  end
285
303
 
286
304
  def split(at)
287
- if at.kind_of? String
305
+ if at.kind_of?(String)
288
306
  at = @components.index(at)
289
307
  end
290
308
 
@@ -342,22 +360,6 @@ module Utopia
342
360
  @components.delete_at(component_offset(index))
343
361
  end
344
362
 
345
- def first
346
- if absolute?
347
- @components[1]
348
- else
349
- @components[0]
350
- end
351
- end
352
-
353
- def last
354
- if directory?
355
- @components[-2]
356
- else
357
- @components[-1]
358
- end
359
- end
360
-
361
363
  private
362
364
 
363
365
  # We adjust the index slightly so that indices reference path components rather than the directory markers at the start and end of the path components array.
@@ -54,8 +54,6 @@ module Utopia
54
54
  super
55
55
  end
56
56
 
57
- CONTENT_TYPE = 'Content-Type'.freeze
58
-
59
57
  def unhandled_error?(response)
60
58
  response[0] >= 400 && response[1].empty?
61
59
  end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ require_relative 'middleware'
24
+
25
+ module Utopia
26
+ class Responder
27
+ Handler = Struct.new(:content_type, :block) do
28
+ def split(*arguments)
29
+ self.content_type.split(*arguments)
30
+ end
31
+
32
+ def call(context, request, media_range, *arguments, **options)
33
+ context.instance_exec(media_range, *arguments, **options, &self.block)
34
+ end
35
+ end
36
+
37
+ Responds = Struct.new(:responder, :context, :request) do
38
+ # @todo Refactor `object` -> `*arguments`...
39
+ def with(object, **options)
40
+ responder.call(context, request, object, **options)
41
+ end
42
+ end
43
+
44
+ def initialize
45
+ @handlers = HTTP::Accept::MediaTypes::Map.new
46
+ end
47
+
48
+ attr :handlers
49
+
50
+ def freeze
51
+ @handlers.freeze
52
+
53
+ super
54
+ end
55
+
56
+ def call(context, request, *arguments, **options)
57
+ # Parse the list of browser preferred content types and return ordered by priority:
58
+ media_types = HTTP::Accept::MediaTypes.browser_preferred_media_types(request.env)
59
+
60
+ handler, media_range = @handlers.for(media_types)
61
+
62
+ if handler
63
+ handler.call(context, request, media_range, *arguments, **options)
64
+ end
65
+ end
66
+
67
+ # Add a converter for the specified content type. Call the block with the response content if the request accepts the specified content_type.
68
+ def handle(content_type, &block)
69
+ @handlers << Handler.new(content_type, block)
70
+ end
71
+
72
+ def respond_to(context, request)
73
+ Responds.new(self, context, request)
74
+ end
75
+ end
76
+ end
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Utopia
24
- VERSION = "2.15.0"
24
+ VERSION = "2.17.0"
25
25
  end
@@ -62,7 +62,7 @@ Dir.chdir(GIT_WORK_TREE) do
62
62
  sudo %W{git checkout -f}
63
63
  sudo %W{git submodule update -i}
64
64
 
65
- if File.exist? 'Gemfile'
65
+ if File.exist? 'gems.rb'
66
66
  sudo %W{bundle install}
67
67
  end
68
68
 
@@ -1,14 +1,15 @@
1
1
  # Development specific:
2
- .rspec_status
3
- .tags*
4
- .bundle
5
- bin/
2
+ /.rspec_status
3
+ /.bundle
6
4
 
7
5
  # Temporary data should not be added to the repository:
8
- tmp/
6
+ /tmp
7
+
8
+ # Node modules are 3rd party dependencies which can be fetched easily:
9
+ /node_modules
9
10
 
10
11
  # This file should only ever exist on production, and may contain sensitive information:
11
- config/environment.yaml
12
+ /config/environment.yaml
12
13
 
13
14
  # Ignore resized gallery photos:
14
- public/_gallery/
15
+ /public/_gallery
File without changes
metadata CHANGED
@@ -1,99 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.15.0
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-02 00:00:00.000000000 Z
11
+ date: 2020-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: trenni
14
+ name: concurrent-ruby
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: mime-types
28
+ name: console
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.0'
40
+ version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: msgpack
42
+ name: http-accept
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '2.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
- name: samovar
56
+ name: mail
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.1'
61
+ version: '2.6'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.1'
68
+ version: '2.6'
69
69
  - !ruby/object:Gem::Dependency
70
- name: console
70
+ name: mime-types
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.0'
75
+ version: '3.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.0'
82
+ version: '3.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: variant
84
+ name: msgpack
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0.1'
89
+ version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0.1'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rack
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '2.2'
111
111
  - !ruby/object:Gem::Dependency
112
- name: http-accept
112
+ name: samovar
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
@@ -123,33 +123,61 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '2.1'
125
125
  - !ruby/object:Gem::Dependency
126
- name: mail
126
+ name: trenni
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '2.6'
131
+ version: '3.0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '2.6'
138
+ version: '3.0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: concurrent-ruby
140
+ name: variant
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '1.0'
145
+ version: '0.1'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '1.0'
152
+ version: '0.1'
153
+ - !ruby/object:Gem::Dependency
154
+ name: async-rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: async-websocket
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: bake
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -165,7 +193,7 @@ dependencies:
165
193
  - !ruby/object:Gem::Version
166
194
  version: '0'
167
195
  - !ruby/object:Gem::Dependency
168
- name: falcon
196
+ name: bake-bundler
169
197
  requirement: !ruby/object:Gem::Requirement
170
198
  requirements:
171
199
  - - ">="
@@ -179,7 +207,7 @@ dependencies:
179
207
  - !ruby/object:Gem::Version
180
208
  version: '0'
181
209
  - !ruby/object:Gem::Dependency
182
- name: async-rspec
210
+ name: bake-modernize
183
211
  requirement: !ruby/object:Gem::Requirement
184
212
  requirements:
185
213
  - - ">="
@@ -193,7 +221,7 @@ dependencies:
193
221
  - !ruby/object:Gem::Version
194
222
  version: '0'
195
223
  - !ruby/object:Gem::Dependency
196
- name: async-websocket
224
+ name: bundler
197
225
  requirement: !ruby/object:Gem::Requirement
198
226
  requirements:
199
227
  - - ">="
@@ -221,7 +249,7 @@ dependencies:
221
249
  - !ruby/object:Gem::Version
222
250
  version: '0'
223
251
  - !ruby/object:Gem::Dependency
224
- name: bundler
252
+ name: falcon
225
253
  requirement: !ruby/object:Gem::Requirement
226
254
  requirements:
227
255
  - - ">="
@@ -249,7 +277,7 @@ dependencies:
249
277
  - !ruby/object:Gem::Version
250
278
  version: '3.6'
251
279
  - !ruby/object:Gem::Dependency
252
- name: bake-bundler
280
+ name: utopia-project
253
281
  requirement: !ruby/object:Gem::Requirement
254
282
  requirements:
255
283
  - - ">="
@@ -262,127 +290,19 @@ dependencies:
262
290
  - - ">="
263
291
  - !ruby/object:Gem::Version
264
292
  version: '0'
265
- description: "\t\tUtopia is a website generation framework which provides a robust
266
- set of tools\n\t\tto build highly complex dynamic websites. It uses the filesystem
267
- heavily for\n\t\tcontent and provides frameworks for interacting with files and
268
- directories as\n\t\tstructure representing the website.\n"
293
+ description:
269
294
  email:
270
- - samuel.williams@oriontransfer.co.nz
271
295
  executables:
272
296
  - utopia
273
297
  extensions: []
274
298
  extra_rdoc_files: []
275
299
  files:
276
- - ".codeclimate.yml"
277
- - ".github/workflows/development.yml"
278
- - ".gitignore"
279
- - ".rspec"
280
- - ".yardopts"
281
- - Gemfile
282
- - README.md
283
300
  - bake/utopia.rb
301
+ - bake/utopia/node.rb
284
302
  - bake/utopia/shell.rb
285
303
  - bake/utopia/static.rb
286
304
  - bake/utopia/test.rb
287
- - bake/utopia/yarn.rb
288
- - benchmark/call_vs_check.rb
289
- - benchmark/const_vs_hash.rb
290
- - benchmark/hash_vs_openstruct.rb
291
- - benchmark/string_vs_symbol.rb
292
- - benchmark/struct_vs_class.rb
293
305
  - bin/utopia
294
- - docs/.nojekyll
295
- - docs/_components/jquery-litebox/jquery.litebox.css
296
- - docs/_components/jquery-litebox/jquery.litebox.gallery.css
297
- - docs/_components/jquery-litebox/jquery.litebox.js
298
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css
299
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css
300
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css
301
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css
302
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css
303
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css
304
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.css.css
305
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css
306
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.html.css
307
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css
308
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css
309
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.python.css
310
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css
311
- - docs/_components/jquery-syntax/base/jquery.syntax.brush.xml.css
312
- - docs/_components/jquery-syntax/base/jquery.syntax.core.css
313
- - docs/_components/jquery-syntax/base/jquery.syntax.editor.css
314
- - docs/_components/jquery-syntax/base/theme.js
315
- - docs/_components/jquery-syntax/bright/jquery.syntax.core.css
316
- - docs/_components/jquery-syntax/bright/theme.js
317
- - docs/_components/jquery-syntax/jquery.syntax.brush.apache.js
318
- - docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js
319
- - docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js
320
- - docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js
321
- - docs/_components/jquery-syntax/jquery.syntax.brush.bash.js
322
- - docs/_components/jquery-syntax/jquery.syntax.brush.basic.js
323
- - docs/_components/jquery-syntax/jquery.syntax.brush.clang.js
324
- - docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js
325
- - docs/_components/jquery-syntax/jquery.syntax.brush.css.js
326
- - docs/_components/jquery-syntax/jquery.syntax.brush.diff.js
327
- - docs/_components/jquery-syntax/jquery.syntax.brush.go.js
328
- - docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js
329
- - docs/_components/jquery-syntax/jquery.syntax.brush.html.js
330
- - docs/_components/jquery-syntax/jquery.syntax.brush.io.js
331
- - docs/_components/jquery-syntax/jquery.syntax.brush.java.js
332
- - docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js
333
- - docs/_components/jquery-syntax/jquery.syntax.brush.kai.js
334
- - docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js
335
- - docs/_components/jquery-syntax/jquery.syntax.brush.lua.js
336
- - docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js
337
- - docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js
338
- - docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js
339
- - docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js
340
- - docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js
341
- - docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js
342
- - docs/_components/jquery-syntax/jquery.syntax.brush.php.js
343
- - docs/_components/jquery-syntax/jquery.syntax.brush.plain.js
344
- - docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js
345
- - docs/_components/jquery-syntax/jquery.syntax.brush.python.js
346
- - docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js
347
- - docs/_components/jquery-syntax/jquery.syntax.brush.scala.js
348
- - docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js
349
- - docs/_components/jquery-syntax/jquery.syntax.brush.sql.js
350
- - docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js
351
- - docs/_components/jquery-syntax/jquery.syntax.brush.swift.js
352
- - docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js
353
- - docs/_components/jquery-syntax/jquery.syntax.brush.xml.js
354
- - docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js
355
- - docs/_components/jquery-syntax/jquery.syntax.cache.js
356
- - docs/_components/jquery-syntax/jquery.syntax.core.js
357
- - docs/_components/jquery-syntax/jquery.syntax.editor.js
358
- - docs/_components/jquery-syntax/jquery.syntax.js
359
- - docs/_components/jquery-syntax/jquery.syntax.min.js
360
- - docs/_components/jquery-syntax/paper/jquery.syntax.core.css
361
- - docs/_components/jquery-syntax/paper/theme.js
362
- - docs/_components/jquery/jquery.js
363
- - docs/_components/jquery/jquery.min.js
364
- - docs/_components/jquery/jquery.min.map
365
- - docs/_components/jquery/jquery.slim.js
366
- - docs/_components/jquery/jquery.slim.min.js
367
- - docs/_components/jquery/jquery.slim.min.map
368
- - docs/_static/icon.png
369
- - docs/_static/site.css
370
- - docs/development-environment-setup/index.html
371
- - docs/faq/what-is-xnode/index.html
372
- - docs/index.html
373
- - docs/javascript/index.html
374
- - docs/middleware/content/index.html
375
- - docs/middleware/controller/actions/index.html
376
- - docs/middleware/controller/index.html
377
- - docs/middleware/controller/rewrite/index.html
378
- - docs/middleware/localization/index.html
379
- - docs/middleware/redirection/index.html
380
- - docs/middleware/session/index.html
381
- - docs/middleware/static/index.html
382
- - docs/server-setup/index.html
383
- - docs/testing/index.html
384
- - docs/updating-utopia/index.html
385
- - docs/your-first-page/index.html
386
306
  - lib/utopia.rb
387
307
  - lib/utopia/command.rb
388
308
  - lib/utopia/command/environment.rb
@@ -417,6 +337,7 @@ files:
417
337
  - lib/utopia/path.rb
418
338
  - lib/utopia/path/matcher.rb
419
339
  - lib/utopia/redirection.rb
340
+ - lib/utopia/responder.rb
420
341
  - lib/utopia/session.rb
421
342
  - lib/utopia/session/lazy_hash.rb
422
343
  - lib/utopia/session/serialization.rb
@@ -426,12 +347,9 @@ files:
426
347
  - lib/utopia/static/local_file.rb
427
348
  - lib/utopia/static/mime_types.rb
428
349
  - lib/utopia/version.rb
429
- - materials/utopia.png
430
- - materials/utopia.svg
431
350
  - setup/server/git/hooks/post-receive
432
351
  - setup/site/.gitignore
433
352
  - setup/site/.rspec
434
- - setup/site/Gemfile
435
353
  - setup/site/Guardfile
436
354
  - setup/site/README.md
437
355
  - setup/site/bake.rb
@@ -439,6 +357,7 @@ files:
439
357
  - setup/site/config/README.md
440
358
  - setup/site/config/environment.rb
441
359
  - setup/site/falcon.rb
360
+ - setup/site/gems.rb
442
361
  - setup/site/lib/readme.txt
443
362
  - setup/site/pages/_heading.xnode
444
363
  - setup/site/pages/_page.xnode
@@ -454,145 +373,12 @@ files:
454
373
  - setup/site/spec/spec_helper.rb
455
374
  - setup/site/spec/website_context.rb
456
375
  - setup/site/spec/website_spec.rb
457
- - spec/mock_node.rb
458
- - spec/spec_helper.rb
459
- - spec/utopia/command_spec.rb
460
- - spec/utopia/content/document_spec.rb
461
- - spec/utopia/content/links/bar/index.xnode
462
- - spec/utopia/content/links/bar/parent/child/index.en.xnode
463
- - spec/utopia/content/links/bar/parent/child/index.ja.xnode
464
- - spec/utopia/content/links/bar/parent/links.yaml
465
- - spec/utopia/content/links/foo/index.xnode
466
- - spec/utopia/content/links/foo/links.yaml
467
- - spec/utopia/content/links/foo/test.de.xnode
468
- - spec/utopia/content/links/foo/test.en.xnode
469
- - spec/utopia/content/links/index.xnode
470
- - spec/utopia/content/links/links.yaml
471
- - spec/utopia/content/links/redirect/links.yaml
472
- - spec/utopia/content/links/welcome.xnode
473
- - spec/utopia/content/links_spec.rb
474
- - spec/utopia/content/localized/five/index.en.xnode
475
- - spec/utopia/content/localized/four/index.en.xnode
476
- - spec/utopia/content/localized/four/index.zh.xnode
477
- - spec/utopia/content/localized/four/links.yaml
478
- - spec/utopia/content/localized/links.yaml
479
- - spec/utopia/content/localized/one.xnode
480
- - spec/utopia/content/localized/three/index.xnode
481
- - spec/utopia/content/localized/two.en.xnode
482
- - spec/utopia/content/localized/two.zh.xnode
483
- - spec/utopia/content/markup_spec.rb
484
- - spec/utopia/content/namespace_spec.rb
485
- - spec/utopia/content/node/lookup/content.xnode
486
- - spec/utopia/content/node/lookup/index.xnode
487
- - spec/utopia/content/node/ordered/first.xnode
488
- - spec/utopia/content/node/ordered/index.xnode
489
- - spec/utopia/content/node/ordered/links.yaml
490
- - spec/utopia/content/node/ordered/second.xnode
491
- - spec/utopia/content/node/related/foo.en.xnode
492
- - spec/utopia/content/node/related/foo.ja.xnode
493
- - spec/utopia/content/node/related/links.yaml
494
- - spec/utopia/content/node_spec.rb
495
- - spec/utopia/content/response_spec.rb
496
- - spec/utopia/content/tags_spec.rb
497
- - spec/utopia/content_spec.rb
498
- - spec/utopia/content_spec.ru
499
- - spec/utopia/content_spec/_heading.xnode
500
- - spec/utopia/content_spec/content/_show-value.xnode
501
- - spec/utopia/content_spec/content/links.yaml
502
- - spec/utopia/content_spec/content/test-partial.xnode
503
- - spec/utopia/content_spec/index.xnode
504
- - spec/utopia/content_spec/node/index.xnode
505
- - spec/utopia/content_spec/test.xnode
506
- - spec/utopia/controller/actions_spec.rb
507
- - spec/utopia/controller/middleware_spec.rb
508
- - spec/utopia/controller/middleware_spec.ru
509
- - spec/utopia/controller/middleware_spec/controller/controller.rb
510
- - spec/utopia/controller/middleware_spec/controller/index.xnode
511
- - spec/utopia/controller/middleware_spec/controller/nested/controller.rb
512
- - spec/utopia/controller/middleware_spec/empty/controller.rb
513
- - spec/utopia/controller/middleware_spec/redirect/controller.rb
514
- - spec/utopia/controller/middleware_spec/redirect/test/controller.rb
515
- - spec/utopia/controller/respond_spec.rb
516
- - spec/utopia/controller/respond_spec.ru
517
- - spec/utopia/controller/respond_spec/api/controller.rb
518
- - spec/utopia/controller/respond_spec/errors/controller.rb
519
- - spec/utopia/controller/respond_spec/errors/file-not-found.xnode
520
- - spec/utopia/controller/respond_spec/html/controller.rb
521
- - spec/utopia/controller/respond_spec/rewrite/controller.rb
522
- - spec/utopia/controller/rewrite_spec.rb
523
- - spec/utopia/controller/sequence_spec.rb
524
- - spec/utopia/controller/variables_spec.rb
525
- - spec/utopia/controller/websocket_spec.rb
526
- - spec/utopia/controller/websocket_spec.ru
527
- - spec/utopia/controller/websocket_spec/server/controller.rb
528
- - spec/utopia/exceptions/handler_spec.rb
529
- - spec/utopia/exceptions/handler_spec.ru
530
- - spec/utopia/exceptions/handler_spec/controller.rb
531
- - spec/utopia/exceptions/mailer_spec.rb
532
- - spec/utopia/exceptions/mailer_spec.ru
533
- - spec/utopia/extensions_spec.rb
534
- - spec/utopia/http/status_spec.rb
535
- - spec/utopia/locale_spec.rb
536
- - spec/utopia/localization_spec.rb
537
- - spec/utopia/localization_spec.ru
538
- - spec/utopia/localization_spec/controller.rb
539
- - spec/utopia/localization_spec/localized.de.txt
540
- - spec/utopia/localization_spec/localized.en.txt
541
- - spec/utopia/localization_spec/localized.ja.txt
542
- - spec/utopia/localization_spec/test.txt
543
- - spec/utopia/middleware_spec.rb
544
- - spec/utopia/path/matcher_spec.rb
545
- - spec/utopia/path_spec.rb
546
- - spec/utopia/performance_spec.rb
547
- - spec/utopia/performance_spec/cache/head/readme.txt
548
- - spec/utopia/performance_spec/cache/meta/readme.txt
549
- - spec/utopia/performance_spec/config.ru
550
- - spec/utopia/performance_spec/lib/readme.txt
551
- - spec/utopia/performance_spec/pages/_heading.xnode
552
- - spec/utopia/performance_spec/pages/_page.xnode
553
- - spec/utopia/performance_spec/pages/api/controller.rb
554
- - spec/utopia/performance_spec/pages/errors/exception.xnode
555
- - spec/utopia/performance_spec/pages/errors/file-not-found.xnode
556
- - spec/utopia/performance_spec/pages/links.yaml
557
- - spec/utopia/performance_spec/pages/welcome/index.xnode
558
- - spec/utopia/rack_helper.rb
559
- - spec/utopia/redirection_spec.rb
560
- - spec/utopia/redirection_spec.ru
561
- - spec/utopia/session_spec.rb
562
- - spec/utopia/session_spec.ru
563
- - spec/utopia/setup_spec.rb
564
- - spec/utopia/static_spec.rb
565
- - spec/utopia/static_spec.ru
566
- - spec/utopia/static_spec/test.txt
567
- - utopia.gemspec
568
- - wiki/Gemfile
569
- - wiki/config.ru
570
- - wiki/pages/development-environment-setup/index.md
571
- - wiki/pages/faq/links.yaml
572
- - wiki/pages/faq/what-is-xnode/index.md
573
- - wiki/pages/faq/what-is-xnode/links.yaml
574
- - wiki/pages/index.md
575
- - wiki/pages/javascript/index.md
576
- - wiki/pages/javascript/links.yaml
577
- - wiki/pages/links.yaml
578
- - wiki/pages/middleware/content/index.md
579
- - wiki/pages/middleware/controller/actions/index.md
580
- - wiki/pages/middleware/controller/index.md
581
- - wiki/pages/middleware/controller/links.yaml
582
- - wiki/pages/middleware/controller/rewrite/index.md
583
- - wiki/pages/middleware/localization/index.md
584
- - wiki/pages/middleware/redirection/index.md
585
- - wiki/pages/middleware/session/index.md
586
- - wiki/pages/middleware/static/index.md
587
- - wiki/pages/server-setup/index.md
588
- - wiki/pages/testing/index.md
589
- - wiki/pages/updating-utopia/index.md
590
- - wiki/pages/your-first-page/index.md
591
376
  homepage: https://github.com/ioquatix/utopia
592
377
  licenses:
593
378
  - MIT
594
- metadata: {}
595
- post_install_message:
379
+ metadata:
380
+ funding_uri: https://github.com/sponsors/ioquatix/
381
+ post_install_message:
596
382
  rdoc_options: []
597
383
  require_paths:
598
384
  - lib
@@ -608,117 +394,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
608
394
  version: '0'
609
395
  requirements: []
610
396
  rubygems_version: 3.1.2
611
- signing_key:
397
+ signing_key:
612
398
  specification_version: 4
613
399
  summary: Utopia is a framework for building dynamic content-driven websites.
614
- test_files:
615
- - spec/mock_node.rb
616
- - spec/spec_helper.rb
617
- - spec/utopia/command_spec.rb
618
- - spec/utopia/content/document_spec.rb
619
- - spec/utopia/content/links/bar/index.xnode
620
- - spec/utopia/content/links/bar/parent/child/index.en.xnode
621
- - spec/utopia/content/links/bar/parent/child/index.ja.xnode
622
- - spec/utopia/content/links/bar/parent/links.yaml
623
- - spec/utopia/content/links/foo/index.xnode
624
- - spec/utopia/content/links/foo/links.yaml
625
- - spec/utopia/content/links/foo/test.de.xnode
626
- - spec/utopia/content/links/foo/test.en.xnode
627
- - spec/utopia/content/links/index.xnode
628
- - spec/utopia/content/links/links.yaml
629
- - spec/utopia/content/links/redirect/links.yaml
630
- - spec/utopia/content/links/welcome.xnode
631
- - spec/utopia/content/links_spec.rb
632
- - spec/utopia/content/localized/five/index.en.xnode
633
- - spec/utopia/content/localized/four/index.en.xnode
634
- - spec/utopia/content/localized/four/index.zh.xnode
635
- - spec/utopia/content/localized/four/links.yaml
636
- - spec/utopia/content/localized/links.yaml
637
- - spec/utopia/content/localized/one.xnode
638
- - spec/utopia/content/localized/three/index.xnode
639
- - spec/utopia/content/localized/two.en.xnode
640
- - spec/utopia/content/localized/two.zh.xnode
641
- - spec/utopia/content/markup_spec.rb
642
- - spec/utopia/content/namespace_spec.rb
643
- - spec/utopia/content/node/lookup/content.xnode
644
- - spec/utopia/content/node/lookup/index.xnode
645
- - spec/utopia/content/node/ordered/first.xnode
646
- - spec/utopia/content/node/ordered/index.xnode
647
- - spec/utopia/content/node/ordered/links.yaml
648
- - spec/utopia/content/node/ordered/second.xnode
649
- - spec/utopia/content/node/related/foo.en.xnode
650
- - spec/utopia/content/node/related/foo.ja.xnode
651
- - spec/utopia/content/node/related/links.yaml
652
- - spec/utopia/content/node_spec.rb
653
- - spec/utopia/content/response_spec.rb
654
- - spec/utopia/content/tags_spec.rb
655
- - spec/utopia/content_spec.rb
656
- - spec/utopia/content_spec.ru
657
- - spec/utopia/content_spec/_heading.xnode
658
- - spec/utopia/content_spec/content/_show-value.xnode
659
- - spec/utopia/content_spec/content/links.yaml
660
- - spec/utopia/content_spec/content/test-partial.xnode
661
- - spec/utopia/content_spec/index.xnode
662
- - spec/utopia/content_spec/node/index.xnode
663
- - spec/utopia/content_spec/test.xnode
664
- - spec/utopia/controller/actions_spec.rb
665
- - spec/utopia/controller/middleware_spec.rb
666
- - spec/utopia/controller/middleware_spec.ru
667
- - spec/utopia/controller/middleware_spec/controller/controller.rb
668
- - spec/utopia/controller/middleware_spec/controller/index.xnode
669
- - spec/utopia/controller/middleware_spec/controller/nested/controller.rb
670
- - spec/utopia/controller/middleware_spec/empty/controller.rb
671
- - spec/utopia/controller/middleware_spec/redirect/controller.rb
672
- - spec/utopia/controller/middleware_spec/redirect/test/controller.rb
673
- - spec/utopia/controller/respond_spec.rb
674
- - spec/utopia/controller/respond_spec.ru
675
- - spec/utopia/controller/respond_spec/api/controller.rb
676
- - spec/utopia/controller/respond_spec/errors/controller.rb
677
- - spec/utopia/controller/respond_spec/errors/file-not-found.xnode
678
- - spec/utopia/controller/respond_spec/html/controller.rb
679
- - spec/utopia/controller/respond_spec/rewrite/controller.rb
680
- - spec/utopia/controller/rewrite_spec.rb
681
- - spec/utopia/controller/sequence_spec.rb
682
- - spec/utopia/controller/variables_spec.rb
683
- - spec/utopia/controller/websocket_spec.rb
684
- - spec/utopia/controller/websocket_spec.ru
685
- - spec/utopia/controller/websocket_spec/server/controller.rb
686
- - spec/utopia/exceptions/handler_spec.rb
687
- - spec/utopia/exceptions/handler_spec.ru
688
- - spec/utopia/exceptions/handler_spec/controller.rb
689
- - spec/utopia/exceptions/mailer_spec.rb
690
- - spec/utopia/exceptions/mailer_spec.ru
691
- - spec/utopia/extensions_spec.rb
692
- - spec/utopia/http/status_spec.rb
693
- - spec/utopia/locale_spec.rb
694
- - spec/utopia/localization_spec.rb
695
- - spec/utopia/localization_spec.ru
696
- - spec/utopia/localization_spec/controller.rb
697
- - spec/utopia/localization_spec/localized.de.txt
698
- - spec/utopia/localization_spec/localized.en.txt
699
- - spec/utopia/localization_spec/localized.ja.txt
700
- - spec/utopia/localization_spec/test.txt
701
- - spec/utopia/middleware_spec.rb
702
- - spec/utopia/path/matcher_spec.rb
703
- - spec/utopia/path_spec.rb
704
- - spec/utopia/performance_spec.rb
705
- - spec/utopia/performance_spec/cache/head/readme.txt
706
- - spec/utopia/performance_spec/cache/meta/readme.txt
707
- - spec/utopia/performance_spec/config.ru
708
- - spec/utopia/performance_spec/lib/readme.txt
709
- - spec/utopia/performance_spec/pages/_heading.xnode
710
- - spec/utopia/performance_spec/pages/_page.xnode
711
- - spec/utopia/performance_spec/pages/api/controller.rb
712
- - spec/utopia/performance_spec/pages/errors/exception.xnode
713
- - spec/utopia/performance_spec/pages/errors/file-not-found.xnode
714
- - spec/utopia/performance_spec/pages/links.yaml
715
- - spec/utopia/performance_spec/pages/welcome/index.xnode
716
- - spec/utopia/rack_helper.rb
717
- - spec/utopia/redirection_spec.rb
718
- - spec/utopia/redirection_spec.ru
719
- - spec/utopia/session_spec.rb
720
- - spec/utopia/session_spec.ru
721
- - spec/utopia/setup_spec.rb
722
- - spec/utopia/static_spec.rb
723
- - spec/utopia/static_spec.ru
724
- - spec/utopia/static_spec/test.txt
400
+ test_files: []