utopia 2.18.0 → 2.18.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8851f81c898bf14616952ae21c9c5379bff340c112e84c422f652ceeff26a2f
4
- data.tar.gz: e1abf3e367e371b83edfb2089371367952d6f4d23ffae441074abe3dd3daff66
3
+ metadata.gz: 526a3c6e7bb9c6d338f6b48e0a2967b9c0d5388206059904efd111600c9c9b37
4
+ data.tar.gz: dd9cb6a66793cd0d621cb6edc843480f0297ef594c2750bacc203c3649091fac
5
5
  SHA512:
6
- metadata.gz: e191685798e34a85a19c06828987938efc4876b50691add9dd923ab6b53d38c6a5e578cc3b94fa5fc3129dba368106dcf621f02d1a6cf0e8243238d79fac83e9
7
- data.tar.gz: fc79ea764f46e0352ed1fa000a049d32c7c2c3ea8511ef12fd2e5270d4465873fac12468bb93fe576eeea496297dd23826bff342216493b98b54b2b36f7e0dc5
6
+ metadata.gz: 3ae7de79938757ecd86a84d35a56d1185955812ab41cc0e29d44a6604ef669bfadbc52f36390e1d19cf53acc7a1f375cf59d484627d899c8ed3bdf3bb78b9927
7
+ data.tar.gz: 9d193e4f88eb12f346371c738396b555b94315f9dcdd004d9395cff0229887f37ad6f22ee5c87d86a12aa9e65b9ecd174005348e495e14ffda76ad57b930e8c5
data/bake/utopia/node.rb CHANGED
@@ -15,9 +15,11 @@ def update
15
15
 
16
16
  install_root = root + "public/_components"
17
17
 
18
- package_root.children.select(&:directory?).collect(&:basename).each do |package_directory|
18
+ package_paths = expand_package_paths(package_root)
19
+
20
+ package_paths.each do |package_path|
21
+ package_directory = package_path.relative_path_from(package_root)
19
22
  install_path = install_root + package_directory
20
- package_path = package_root + package_directory
21
23
 
22
24
  dist_path = package_path + 'dist'
23
25
 
@@ -34,3 +36,21 @@ def update
34
36
  FileUtils::Verbose.cp_r File.expand_path(link_path, install_path), install_path
35
37
  end
36
38
  end
39
+
40
+ private
41
+
42
+ def expand_package_paths(root, into = [])
43
+ paths = root.children.select(&:directory?)
44
+
45
+ paths.each do |path|
46
+ basename = path.basename.to_s
47
+ # Handle organisation sub-directories which start with an '@' symbol:
48
+ if basename.start_with?('@')
49
+ expand_package_paths(path, into)
50
+ else
51
+ into << path
52
+ end
53
+ end
54
+
55
+ return into
56
+ end
data/lib/.DS_Store ADDED
Binary file
Binary file
@@ -110,10 +110,10 @@ module Utopia
110
110
  puts "make your life easier and more enjoyable.".center(78)
111
111
  puts ""
112
112
  puts "To start the development server, run:".center(78)
113
- puts "rake server".center(78)
113
+ puts "bake utopia:development".center(78)
114
114
  puts ""
115
115
  puts "For extreme productivity, please consult the online documentation".center(78)
116
- puts "https://github.com/ioquatix/utopia".center(78)
116
+ puts "https://github.com/socketry/utopia".center(78)
117
117
  puts " ~ Samuel. ".rjust(78)
118
118
  end
119
119
  end
@@ -92,7 +92,7 @@ module Utopia
92
92
  end
93
93
  end
94
94
 
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.
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
96
  def lookup_node(path, locale = nil)
97
97
  resolve_link(
98
98
  @links.for(path, locale)
@@ -100,11 +100,9 @@ module Utopia
100
100
  end
101
101
 
102
102
  def resolve_link(link)
103
- if path = link&.path
104
- full_path = File.join(@root, path.dirname, link.key + XNODE_EXTENSION)
105
-
103
+ if full_path = link&.full_path(@root)
106
104
  if File.exist?(full_path)
107
- return Node.new(self, path, path, full_path)
105
+ return Node.new(self, link.path, link.path, full_path)
108
106
  end
109
107
  end
110
108
  end
Binary file
@@ -50,6 +50,12 @@ module Utopia
50
50
  end
51
51
  end
52
52
 
53
+ def full_path(root, extension = XNODE_EXTENSION)
54
+ if @path&.file?
55
+ File.join(root, @path.dirname, self.key + XNODE_EXTENSION)
56
+ end
57
+ end
58
+
53
59
  def href
54
60
  @href ||= @info.fetch(:uri) do
55
61
  @info.fetch(:href) do
@@ -96,17 +102,17 @@ module Utopia
96
102
  def to_anchor(base: nil, content: self.title, builder: nil, **attributes)
97
103
  attributes[:class] ||= 'link'
98
104
 
99
- Trenni::Builder.fragment(builder) do |builder|
105
+ Trenni::Builder.fragment(builder) do |inner_builder|
100
106
  if href?
101
107
  attributes[:href] ||= relative_href(base)
102
108
  attributes[:target] ||= @info[:target]
103
109
 
104
- builder.inline('a', attributes) do
105
- builder.text(content)
110
+ inner_builder.inline('a', attributes) do
111
+ inner_builder.text(content)
106
112
  end
107
113
  else
108
- builder.inline('span', attributes) do
109
- builder.text(content)
114
+ inner_builder.inline('span', attributes) do
115
+ inner_builder.text(content)
110
116
  end
111
117
  end
112
118
  end
@@ -142,7 +142,7 @@ module Utopia
142
142
  def load_metadata(path)
143
143
  yaml_path = File.join(path, LINKS_YAML)
144
144
 
145
- if File.exist?(yaml_path) && data = YAML::load_file(yaml_path)
145
+ if File.exist?(yaml_path) && data = YAML.load_file(yaml_path)
146
146
  return symbolize_keys(data)
147
147
  else
148
148
  return {}
Binary file
@@ -0,0 +1,76 @@
1
+ # Utopia::Controller::Actions
2
+
3
+ Actions let you match path patterns in your controller and execute code. In your `controller.rb` simply add:
4
+
5
+ ```ruby
6
+ prepend Actions
7
+ ```
8
+
9
+ If you are adding multiple things, like rewriting, they should come earlier in the chain, e.g:
10
+
11
+ ```ruby
12
+ prepend Rewrite, Actions
13
+ ```
14
+
15
+ A simple CRUD controller might look like:
16
+
17
+ ```ruby
18
+ prepend Actions
19
+
20
+ on 'index' do
21
+ @users = User.all
22
+ end
23
+
24
+ on 'new' do |request|
25
+ @user = User.new
26
+
27
+ if request.post?
28
+ @user.update_attributes(request.params['user'])
29
+
30
+ redirect! "index"
31
+ end
32
+ end
33
+
34
+ on 'edit' do |request|
35
+ @user = User.find(request.params['id'])
36
+
37
+ if request.post?
38
+ @user.update_attributes(request.params['user'])
39
+
40
+ redirect! "index"
41
+ end
42
+ end
43
+
44
+ on 'delete' do |request|
45
+ User.find(request.params['id']).destroy
46
+
47
+ redirect! "index"
48
+ end
49
+ ```
50
+
51
+ ## Path Matching
52
+
53
+ Path matching works from right to left, and `'**'` is a greedy operator. Controllers are invoked with a path relative to the controller's `URI_PATH`, so all lookups are relative to the controller.
54
+
55
+ <dl>
56
+ <dt><code class="language-ruby">"*"</code></dt>
57
+ <dd>Match a single path element</dd>
58
+ <dt><code class="language-ruby">"**"</code></dt>
59
+ <dd>Match all remaining path elements</dd>
60
+ <dt><code class="language-ruby">String</code></dt>
61
+ <dd>Match a named path component, e.g. <code class="language-ruby">"edit"</code>.</dd>
62
+ <dt><code class="language-ruby">Symbol</code></dt>
63
+ <dd>Equivalent to <code class="language-ruby">["**", symbol.to_s]</code>, e.g. <code class="language-ruby">:logout</code>.</dd>
64
+ </dl>
65
+
66
+ ## Otherwise Matching
67
+
68
+ If no action was matched, it is sometimes useful to perform some specific behaviour. You can specify this by using the otherwise handler:
69
+
70
+ ```ruby
71
+ otherwise do |request, path|
72
+ fail! :teapot
73
+ end
74
+ ```
75
+
76
+ If you are doing this to perform some kind of rewriting, it may be preferable to use the [Rewrite](../rewrite/) controller layer.
@@ -0,0 +1,69 @@
1
+ # Utopia::Controller::Rewrite
2
+
3
+ This module can match and rewrite requests before they processed. This allows you to handle URLs like `/post/15/view` or `/blog/123-pictures-of-my-cat` easily. The basic rewrite operation is to extract some part of the path and optionally executes a block. That means that the path is modified before being passed on to the next layer in the controller, and controller instance variables may be set.
4
+
5
+ ## Regular Expressions
6
+
7
+ In your `controller.rb`:
8
+
9
+ ```ruby
10
+ prepend Rewrite, Actions
11
+
12
+ rewrite.extract_prefix permalink: /(?<id>\d+)-(?<title>.*)/ do |request, path, match|
13
+ # The rewrite matched, but there was no valid post, so we fail:
14
+ fail! unless @post = Post.find(@permalink[:id])
15
+
16
+ # If the path matched, but there was no suffix, we make it default to the post action:
17
+ if match.post_match.empty?
18
+ match.post_match.components << "post"
19
+ end
20
+ end
21
+
22
+ on 'post' do
23
+ # You can do further processing here.
24
+ fail! unless @post.published?
25
+
26
+ @comments = @post.comments.first(5)
27
+ end
28
+
29
+ on 'edit' do
30
+ # You can do further processing here.
31
+ fail! unless @current_user&.editor?
32
+ end
33
+ ```
34
+
35
+ In your `post.xnode`, as an example:
36
+
37
+ ```trenni
38
+ <content:page>
39
+ <content:heading>Post #{attributes[:permalink][:id]} about #{attributes[:permalink][:title]}</content:heading>
40
+
41
+ <p>#{attributes[:post].content}</p>
42
+ </content:page>
43
+ ```
44
+
45
+ Keep in mind, that URLs like `/123-pictures-of-my-cat/edit` will work as expected, and hit the `edit` action of the controller.
46
+
47
+ ## Restful Resources
48
+
49
+ Similar to the above, if we were solely interested in IDs, we could do the following:
50
+
51
+ ```ruby
52
+ prepend Rewrite, Actions
53
+
54
+ rewrite.extract_prefix post_id: Integer do |request, path, match|
55
+ # The rewrite matched, but there was no valid post, so we fail:
56
+ fail! unless @post = Post.find(@post_id)
57
+
58
+ # If the path matched, but there was no suffix, we make it default to the post action:
59
+ if match.post_match.empty?
60
+ match.post_match.components << "post"
61
+ end
62
+ end
63
+ ```
64
+
65
+ This will only match complete integers. Assuming this code is in `/blog/controller.rb`, it would match something like `/blog/123/view` and assign <code class="language-ruby">Integer("123")</code> to <code class="language-ruby">@post_id</code>.
66
+
67
+ ### Matching.. other things
68
+
69
+ It's possible to match using <code class="language-ruby">Integer</code>, <code class="language-ruby">Float</code>, <code class="language-ruby">String</code>, and you can provide your own class which will be instantiated. If it doesn't match, raise an exception and the rewrite rule will fail.
@@ -155,7 +155,7 @@ module Utopia
155
155
  end
156
156
 
157
157
  if @dump_environment
158
- mail.attachments['environment.yaml'] = YAML::dump(env)
158
+ mail.attachments['environment.yaml'] = YAML.dump(env)
159
159
  end
160
160
 
161
161
  return mail
data/lib/utopia/path.rb CHANGED
@@ -136,11 +136,15 @@ module Utopia
136
136
  return @components.last == ''
137
137
  end
138
138
 
139
+ def file?
140
+ return @components.last != ''
141
+ end
142
+
139
143
  def to_directory
140
144
  if directory?
141
145
  return self
142
146
  else
143
- return join([''])
147
+ return self.class.new(@components + [''])
144
148
  end
145
149
  end
146
150
 
@@ -178,8 +182,14 @@ module Utopia
178
182
  @components
179
183
  end
180
184
 
185
+ # @parameter other [Array(String)] The path components to append.
181
186
  def join(other)
182
- self.class.new(@components + other).simplify
187
+ # Check whether other is an absolute path:
188
+ if other.first == ''
189
+ self.class.new(other)
190
+ else
191
+ self.class.new(@components + other).simplify
192
+ end
183
193
  end
184
194
 
185
195
  def expand(root)
@@ -253,6 +263,8 @@ module Utopia
253
263
  end
254
264
  end
255
265
 
266
+ alias last? file?
267
+
256
268
  # Pops the last path component.
257
269
  def pop
258
270
  # We don't want to convert an absolute path to a relative path.
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Utopia
24
- VERSION = "2.18.0"
24
+ VERSION = "2.18.5"
25
25
  end
data/setup/.DS_Store ADDED
Binary file
Binary file
Binary file
data/setup/site/README.md CHANGED
@@ -6,11 +6,11 @@ Welcome to Utopia, a Ruby framework for web site and application development. Fo
6
6
 
7
7
  To start the development server, simply execute
8
8
 
9
- > rake
9
+ > bake
10
10
  Generating transient session key for development...
11
11
  20:57:36 - INFO - Starting Falcon HTTP server on localhost:9292
12
12
  20:57:36 - INFO - Guard::RSpec is running
13
13
  20:57:36 - INFO - Guard is now watching at '...'
14
14
  [1] guard(main)>
15
15
 
16
- Then browse http://localhost:9292 (or as specified) to see your new site.
16
+ Then browse https://localhost:9292 (or as specified) to see your new site.
data/setup/site/config.ru CHANGED
@@ -14,6 +14,7 @@ else
14
14
  use Rack::ShowExceptions unless UTOPIA.testing?
15
15
  end
16
16
 
17
+ # serve static files from public/
17
18
  use Utopia::Static, root: 'public'
18
19
 
19
20
  use Utopia::Redirection::Rewrite, {
@@ -39,6 +40,7 @@ use Utopia::Session,
39
40
 
40
41
  use Utopia::Controller
41
42
 
43
+ # serve static files from pages/
42
44
  use Utopia::Static
43
45
 
44
46
  # Serve dynamic content
Binary file
@@ -14,7 +14,7 @@
14
14
 
15
15
  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous" />
16
16
 
17
- <link rel="icon" type="image/png" href="/_static/icon.png" />
17
+ <link rel="icon" type="image/png" href="/_static/icon.svg" />
18
18
  <link rel="stylesheet" href="/_static/site.css" type="text/css" media="screen" />
19
19
  </head>
20
20
 
Binary file
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="100%" height="100%" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:square;stroke-miterlimit:1.5;">
3
+ <g transform="matrix(0.922789,0,0,0.922789,16.591,0.837867)">
4
+ <path d="M120.731,31.594L212.702,84.694L212.702,190.893L120.731,243.993L28.759,190.893L28.759,84.694L120.731,31.594Z" style="fill:none;"/>
5
+ <clipPath id="_clip1">
6
+ <path d="M120.731,31.594L212.702,84.694L212.702,190.893L120.731,243.993L28.759,190.893L28.759,84.694L120.731,31.594Z"/>
7
+ </clipPath>
8
+ <g clip-path="url(#_clip1)">
9
+ <g transform="matrix(18.3943,0,0,10.62,-1929.57,-966.601)">
10
+ <g transform="matrix(1,0,0,0.178571,106.463,93.9922)">
11
+ <rect x="0" y="0" width="10" height="56" style="fill:#f79433;"/>
12
+ </g>
13
+ <g transform="matrix(1,0,0,0.416667,106.463,80.6588)">
14
+ <rect x="0" y="56" width="10" height="24" style="fill:#4e8dd8;"/>
15
+ </g>
16
+ </g>
17
+ </g>
18
+ <path d="M120.731,31.594L212.702,84.694L212.702,190.893L120.731,243.993L28.759,190.893L28.759,84.694L120.731,31.594Z" style="fill:none;stroke:black;stroke-width:26.01px;"/>
19
+ </g>
20
+ </svg>
@@ -1 +1,11 @@
1
- <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 10 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect x="0" y="0" width="10" height="56" style="fill:#f79433;"/><rect x="0" y="56" width="10" height="24" style="fill:#4e8dd8;"/></svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <svg
3
+ width="100%" height="100%"
4
+ viewBox="0 0 10 80"
5
+ preserveAspectRatio="none"
6
+ version="1.1"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:xlink= "http://www.w3.org/1999/xlink">
9
+ <rect x="0" y="0" width="10" height="56" style="fill:#f79433;"/>
10
+ <rect x="0" y="56" width="10" height="24" style="fill:#4e8dd8;"/>
11
+ </svg>
@@ -1 +1,19 @@
1
- <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 420 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g><rect x="0" y="0" width="420" height="56" style="fill:#f79433;"/><rect x="0" y="56" width="420" height="24" style="fill:#4e8dd8;"/><g><path d="M75.145,70.819c2.37,-3.097 4.173,-6.921 5.111,-11.365c0.91,-4.318 1.498,-9.261 1.498,-14.692l0,-44.762l-62.754,0l0,44.762c0,2.628 0.244,5.333 0.407,8.035c0.168,2.782 0.674,5.515 1.345,8.118c0.68,2.644 1.739,5.173 3.067,7.517c1.363,2.405 3.263,4.526 5.609,6.303c2.319,1.755 5.245,3.163 8.677,4.172c1.617,0.478 3.416,1.093 5.354,1.093l13.856,0c3.071,0 5.797,-1.058 8.131,-2.001c4.042,-1.631 7.305,-4.049 9.699,-7.18Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M151.481,18.701l0,-18.701l-62.754,-0.022l0,18.723l22.246,0l0.02,61.299l17.93,0l-0.02,-61.299l22.578,0Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M229.926,39.999c0,-22.051 -16.979,-39.992 -37.852,-39.992c-20.872,0 -37.851,17.942 -37.851,39.992c0,22.054 16.979,39.994 37.851,39.994c20.873,0 37.852,-17.94 37.852,-39.994Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M269.238,50.909c9.717,0 17.181,-2.066 22.183,-6.395c5.087,-4.399 7.667,-10.942 7.667,-19.575c0,-3.257 -0.393,-5.962 -1.167,-8.476c-0.778,-2.528 -1.883,-4.934 -3.281,-6.814c-1.401,-1.882 -3.098,-3.458 -5.045,-4.703c-1.895,-1.21 -4.003,-2.198 -6.264,-2.943c-2.239,-0.737 -4.64,-1.263 -7.139,-1.56c-2.464,-0.292 -5.016,-0.443 -7.587,-0.443l-29.468,0l0,80l17.93,0l0,-29.091l12.171,0Z" style="fill:#fff;fill-rule:nonzero;"/><rect x="304.879" y="0" width="17.93" height="80" style="fill:#fff;"/><path d="M362.589,0l-29.477,80l75.888,0l-31.247,-80l-15.164,0Z" style="fill:#fff;fill-rule:nonzero;"/></g></g></svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <svg
3
+ width="100%" height="100%"
4
+ viewBox="0 0 420 80"
5
+ preserveAspectRatio="none"
6
+ version="1.1"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:xlink= "http://www.w3.org/1999/xlink">
9
+ <rect x="0" y="0" width="420" height="56" style="fill:#f79433;"/>
10
+ <rect x="0" y="56" width="420" height="24" style="fill:#4e8dd8;"/>
11
+ <g>
12
+ <path d="M75.145,70.819c2.37,-3.097 4.173,-6.921 5.111,-11.365c0.91,-4.318 1.498,-9.261 1.498,-14.692l0,-44.762l-62.754,0l0,44.762c0,2.628 0.244,5.333 0.407,8.035c0.168,2.782 0.674,5.515 1.345,8.118c0.68,2.644 1.739,5.173 3.067,7.517c1.363,2.405 3.263,4.526 5.609,6.303c2.319,1.755 5.245,3.163 8.677,4.172c1.617,0.478 3.416,1.093 5.354,1.093l13.856,0c3.071,0 5.797,-1.058 8.131,-2.001c4.042,-1.631 7.305,-4.049 9.699,-7.18Z" style="fill:#fff;fill-rule:nonzero;"/>
13
+ <path d="M151.481,18.701l0,-18.701l-62.754,-0.022l0,18.723l22.246,0l0.02,61.299l17.93,0l-0.02,-61.299l22.578,0Z" style="fill:#fff;fill-rule:nonzero;"/>
14
+ <path d="M229.926,39.999c0,-22.051 -16.979,-39.992 -37.852,-39.992c-20.872,0 -37.851,17.942 -37.851,39.992c0,22.054 16.979,39.994 37.851,39.994c20.873,0 37.852,-17.94 37.852,-39.994Z" style="fill:#fff;fill-rule:nonzero;"/>
15
+ <path d="M269.238,50.909c9.717,0 17.181,-2.066 22.183,-6.395c5.087,-4.399 7.667,-10.942 7.667,-19.575c0,-3.257 -0.393,-5.962 -1.167,-8.476c-0.778,-2.528 -1.883,-4.934 -3.281,-6.814c-1.401,-1.882 -3.098,-3.458 -5.045,-4.703c-1.895,-1.21 -4.003,-2.198 -6.264,-2.943c-2.239,-0.737 -4.64,-1.263 -7.139,-1.56c-2.464,-0.292 -5.016,-0.443 -7.587,-0.443l-29.468,0l0,80l17.93,0l0,-29.091l12.171,0Z" style="fill:#fff;fill-rule:nonzero;"/>
16
+ <path d="M362.589,0l-29.477,80l75.888,0l-31.247,-80l-15.164,0Z" style="fill:#fff;fill-rule:nonzero;"/>
17
+ <rect x="304.879" y="0" width="17.93" height="80" style="fill:#fff;"/>
18
+ </g>
19
+ </svg>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.18.0
4
+ version: 2.18.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 2021-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -248,20 +248,6 @@ dependencies:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
250
  version: '3.6'
251
- - !ruby/object:Gem::Dependency
252
- name: utopia-project
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - ">="
256
- - !ruby/object:Gem::Version
257
- version: '0'
258
- type: :development
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - ">="
263
- - !ruby/object:Gem::Version
264
- version: '0'
265
251
  description:
266
252
  email:
267
253
  executables:
@@ -275,12 +261,15 @@ files:
275
261
  - bake/utopia/static.rb
276
262
  - bake/utopia/test.rb
277
263
  - bin/utopia
264
+ - lib/.DS_Store
278
265
  - lib/utopia.rb
266
+ - lib/utopia/.DS_Store
279
267
  - lib/utopia/command.rb
280
268
  - lib/utopia/command/environment.rb
281
269
  - lib/utopia/command/server.rb
282
270
  - lib/utopia/command/site.rb
283
271
  - lib/utopia/content.rb
272
+ - lib/utopia/content/.DS_Store
284
273
  - lib/utopia/content/document.rb
285
274
  - lib/utopia/content/link.rb
286
275
  - lib/utopia/content/links.rb
@@ -291,9 +280,12 @@ files:
291
280
  - lib/utopia/content/tags.rb
292
281
  - lib/utopia/content_length.rb
293
282
  - lib/utopia/controller.rb
283
+ - lib/utopia/controller/.DS_Store
284
+ - lib/utopia/controller/actions.md
294
285
  - lib/utopia/controller/actions.rb
295
286
  - lib/utopia/controller/base.rb
296
287
  - lib/utopia/controller/respond.rb
288
+ - lib/utopia/controller/rewrite.md
297
289
  - lib/utopia/controller/rewrite.rb
298
290
  - lib/utopia/controller/variables.rb
299
291
  - lib/utopia/exceptions.rb
@@ -319,7 +311,10 @@ files:
319
311
  - lib/utopia/static/local_file.rb
320
312
  - lib/utopia/static/mime_types.rb
321
313
  - lib/utopia/version.rb
314
+ - setup/.DS_Store
315
+ - setup/server/.DS_Store
322
316
  - setup/server/git/hooks/post-receive
317
+ - setup/site/.DS_Store
323
318
  - setup/site/.gitignore
324
319
  - setup/site/.rspec
325
320
  - setup/site/Guardfile
@@ -331,13 +326,15 @@ files:
331
326
  - setup/site/falcon.rb
332
327
  - setup/site/gems.rb
333
328
  - setup/site/lib/readme.txt
329
+ - setup/site/pages/.DS_Store
334
330
  - setup/site/pages/_heading.xnode
335
331
  - setup/site/pages/_page.xnode
336
332
  - setup/site/pages/errors/exception.xnode
337
333
  - setup/site/pages/errors/file-not-found.xnode
338
334
  - setup/site/pages/links.yaml
339
335
  - setup/site/pages/welcome/index.xnode
340
- - setup/site/public/_static/icon.png
336
+ - setup/site/public/.DS_Store
337
+ - setup/site/public/_static/icon.svg
341
338
  - setup/site/public/_static/site.css
342
339
  - setup/site/public/_static/utopia-background.svg
343
340
  - setup/site/public/_static/utopia.svg
@@ -345,6 +342,7 @@ files:
345
342
  - setup/site/spec/spec_helper.rb
346
343
  - setup/site/spec/website_context.rb
347
344
  - setup/site/spec/website_spec.rb
345
+ - setup/site/tmp/Gemfile
348
346
  homepage: https://github.com/ioquatix/utopia
349
347
  licenses:
350
348
  - MIT
@@ -356,7 +354,7 @@ require_paths:
356
354
  - lib
357
355
  required_ruby_version: !ruby/object:Gem::Requirement
358
356
  requirements:
359
- - - "~>"
357
+ - - ">="
360
358
  - !ruby/object:Gem::Version
361
359
  version: '2.5'
362
360
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -365,7 +363,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
365
363
  - !ruby/object:Gem::Version
366
364
  version: '0'
367
365
  requirements: []
368
- rubygems_version: 3.1.2
366
+ rubygems_version: 3.2.3
369
367
  signing_key:
370
368
  specification_version: 4
371
369
  summary: Utopia is a framework for building dynamic content-driven websites.
Binary file