utopia 2.18.4 → 2.19.2

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: 7d3b6e619bc7db476e12fb64c15765a84349a8aabc6ee8b2b4e46a8ea80936e4
4
- data.tar.gz: 3fe0eeafcf89805747e888122545ac3ab73e0a87a61f6a157eb8c7a86a442135
3
+ metadata.gz: afe16033d2147ab12f15fc57a7f22662691ef24fa5f9c2281ae661449e6cbef8
4
+ data.tar.gz: f1120652e3576dd04a33ee41c72532154566bfd257328bf324592c0e0dd3400a
5
5
  SHA512:
6
- metadata.gz: 1a3a7677b5ee5f54ceb5267614f46ca8791d6ac5db62db29485e9392cb993e4b6e39ab6be6a1bbbd9faa7182368612f3347cf4faa769e44ad00d35b9c2abe99b
7
- data.tar.gz: 5f9b615c2fe980279cbc0a5516d0e69e7c94af88805dce6d1c5409b860b5fb2be29f575da05c21aa750056232ef95c0fb802a789cc6630b24ff3fcd8514d0d49
6
+ metadata.gz: 1c10bac71475edee0ec72765c4f313a3ad3b78decd3b141c4b3dca90b137eba79982a894dda1961d83f9b747d1bdca62bf46161e877577e2aa01ebff984da271
7
+ data.tar.gz: e253761fc895fd0d4086a7febcdfeb50b060067df76f8f067b273f18ed0984511687745e0f408e76ea2a481683a3e0662944e0d71d09243d3aaa54b082ac24e6
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
@@ -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
@@ -142,8 +142,10 @@ 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)
146
- return symbolize_keys(data)
145
+ if File.exist?(yaml_path)
146
+ if data = YAML.safe_load(File.read(yaml_path), permitted_classes: [Date, Time])
147
+ return symbolize_keys(data)
148
+ end
147
149
  else
148
150
  return {}
149
151
  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
@@ -73,4 +73,4 @@ otherwise do |request, path|
73
73
  end
74
74
  ```
75
75
 
76
- If you are doing this to perform some kind of rewriting, it may be preferable to use the [Rewrite](../rewrite/) controller layer.
76
+ If you are doing this to perform some kind of rewriting, it may be preferable to use the [Rewrite](../Rewrite/) controller layer.
@@ -65,19 +65,17 @@ module Utopia
65
65
  "\#<#{self.class}#{details.join}>"
66
66
  end
67
67
 
68
- class << self
69
- def freeze
70
- # This ensures that all class variables are frozen.
71
- self.instance_variables.each do |name|
72
- self.instance_variable_get(name).freeze
73
- end
74
-
75
- super
68
+ def self.freeze
69
+ # This ensures that all class variables are frozen.
70
+ self.instance_variables.each do |name|
71
+ self.instance_variable_get(name).freeze
76
72
  end
77
73
 
78
- def direct?(path)
79
- path.dirname == uri_path
80
- end
74
+ super
75
+ end
76
+
77
+ def self.direct?(path)
78
+ path.dirname == uri_path
81
79
  end
82
80
 
83
81
  def catch_response
data/lib/utopia/path.rb CHANGED
@@ -136,6 +136,10 @@ 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
@@ -259,6 +263,8 @@ module Utopia
259
263
  end
260
264
  end
261
265
 
266
+ alias last? file?
267
+
262
268
  # Pops the last path component.
263
269
  def pop
264
270
  # We don't want to convert an absolute path to a relative path.
@@ -52,7 +52,7 @@ module Utopia
52
52
  ["torrent", "application/x-bittorrent"]
53
53
  ],
54
54
  :images => [
55
- "png", "gif", "jpeg", "tiff", "svg"
55
+ "png", "gif", "jpeg", "tiff", "svg", "webp"
56
56
  ],
57
57
  :default => [
58
58
  :media, :text, :archive, :images, :fonts
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Utopia
24
- VERSION = "2.18.4"
24
+ VERSION = "2.19.2"
25
25
  end
data/setup/site/gems.rb CHANGED
@@ -14,6 +14,7 @@ gem 'rake'
14
14
  gem 'bake'
15
15
  gem 'bundler'
16
16
  gem 'rack-test'
17
+ gem 'net-smtp'
17
18
 
18
19
  group :development do
19
20
  gem 'guard-falcon', require: false
@@ -34,10 +34,10 @@ RSpec.shared_context "server" do
34
34
  require 'benchmark/http/spider'
35
35
  end
36
36
 
37
- let(:endpoint) {Async::HTTP::Endpoint.parse("http://localhost", Async::IO::Endpoint.unix("server.ipc"))}
38
-
39
- let!(:server_task) do
40
- reactor.async do
37
+ before do
38
+ @endpoint = Async::HTTP::Endpoint.parse("http://localhost", Async::IO::Endpoint.unix("server.ipc"))
39
+
40
+ @server_task = reactor.async do
41
41
  middleware = Falcon::Server.middleware(app)
42
42
 
43
43
  server = Falcon::Server.new(middleware, endpoint)
@@ -47,6 +47,8 @@ RSpec.shared_context "server" do
47
47
  end
48
48
 
49
49
  after do
50
- server_task.stop
50
+ @server_task.stop
51
51
  end
52
+
53
+ let(:endpoint) {@endpoint}
52
54
  end
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
4
+ version: 2.19.2
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-11-19 00:00:00.000000000 Z
11
+ date: 2021-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: net-smtp
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rack
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -353,7 +367,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
367
  - !ruby/object:Gem::Version
354
368
  version: '0'
355
369
  requirements: []
356
- rubygems_version: 3.1.2
370
+ rubygems_version: 3.4.0.dev
357
371
  signing_key:
358
372
  specification_version: 4
359
373
  summary: Utopia is a framework for building dynamic content-driven websites.