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 +4 -4
- data/bake/utopia/node.rb +22 -2
- data/lib/.DS_Store +0 -0
- data/lib/utopia/.DS_Store +0 -0
- data/lib/utopia/command/site.rb +2 -2
- data/lib/utopia/content.rb +3 -5
- data/lib/utopia/content/.DS_Store +0 -0
- data/lib/utopia/content/link.rb +11 -5
- data/lib/utopia/content/links.rb +1 -1
- data/lib/utopia/controller/.DS_Store +0 -0
- data/lib/utopia/controller/actions.md +76 -0
- data/lib/utopia/controller/rewrite.md +69 -0
- data/lib/utopia/exceptions/mailer.rb +1 -1
- data/lib/utopia/path.rb +14 -2
- data/lib/utopia/version.rb +1 -1
- data/setup/.DS_Store +0 -0
- data/setup/server/.DS_Store +0 -0
- data/setup/site/.DS_Store +0 -0
- data/setup/site/README.md +2 -2
- data/setup/site/config.ru +2 -0
- data/setup/site/pages/.DS_Store +0 -0
- data/setup/site/pages/_page.xnode +1 -1
- data/setup/site/public/.DS_Store +0 -0
- data/setup/site/public/_static/icon.svg +20 -0
- data/setup/site/public/_static/utopia-background.svg +11 -1
- data/setup/site/public/_static/utopia.svg +19 -1
- metadata +17 -19
- data/setup/site/public/_static/icon.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 526a3c6e7bb9c6d338f6b48e0a2967b9c0d5388206059904efd111600c9c9b37
|
4
|
+
data.tar.gz: dd9cb6a66793cd0d621cb6edc843480f0297ef594c2750bacc203c3649091fac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
data/lib/utopia/command/site.rb
CHANGED
@@ -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 "
|
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/
|
116
|
+
puts "https://github.com/socketry/utopia".center(78)
|
117
117
|
puts " ~ Samuel. ".rjust(78)
|
118
118
|
end
|
119
119
|
end
|
data/lib/utopia/content.rb
CHANGED
@@ -92,7 +92,7 @@ module Utopia
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
-
# @param path [Path] the
|
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
|
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
|
data/lib/utopia/content/link.rb
CHANGED
@@ -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 |
|
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
|
-
|
105
|
-
|
110
|
+
inner_builder.inline('a', attributes) do
|
111
|
+
inner_builder.text(content)
|
106
112
|
end
|
107
113
|
else
|
108
|
-
|
109
|
-
|
114
|
+
inner_builder.inline('span', attributes) do
|
115
|
+
inner_builder.text(content)
|
110
116
|
end
|
111
117
|
end
|
112
118
|
end
|
data/lib/utopia/content/links.rb
CHANGED
@@ -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
|
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.
|
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
|
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
|
-
|
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.
|
data/lib/utopia/version.rb
CHANGED
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
|
-
>
|
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
|
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.
|
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"
|
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"
|
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.
|
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:
|
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
|
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.
|
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
|