utopia 2.20.1 → 2.22.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/bake/utopia/environment.rb +90 -0
- data/bake/utopia/node.rb +3 -1
- data/bake/utopia/server.rb +61 -0
- data/bake/utopia/shell.rb +3 -1
- data/bake/utopia/site.rb +188 -0
- data/bake/utopia/static.rb +3 -2
- data/bake/utopia.rb +3 -1
- data/lib/utopia/content/document.rb +2 -19
- data/lib/utopia/content/link.rb +4 -19
- data/lib/utopia/content/links.rb +2 -19
- data/lib/utopia/content/markup.rb +2 -19
- data/lib/utopia/content/namespace.rb +2 -19
- data/lib/utopia/content/node.rb +4 -20
- data/lib/utopia/content/response.rb +2 -19
- data/lib/utopia/content/tags.rb +2 -19
- data/lib/utopia/content.rb +2 -19
- data/lib/utopia/content_length.rb +2 -19
- data/lib/utopia/controller/actions.rb +2 -19
- data/lib/utopia/controller/base.rb +2 -19
- data/lib/utopia/controller/respond.rb +2 -19
- data/lib/utopia/controller/rewrite.rb +2 -19
- data/lib/utopia/controller/variables.rb +2 -19
- data/lib/utopia/controller.rb +2 -19
- data/lib/utopia/exceptions/handler.rb +2 -19
- data/lib/utopia/exceptions/mailer.rb +2 -19
- data/lib/utopia/exceptions.rb +2 -19
- data/lib/utopia/extensions/array_split.rb +3 -20
- data/lib/utopia/extensions/date_comparisons.rb +3 -20
- data/lib/utopia/http.rb +2 -19
- data/lib/utopia/locale.rb +2 -19
- data/lib/utopia/localization.rb +2 -19
- data/lib/utopia/logger.rb +2 -19
- data/lib/utopia/middleware.rb +2 -19
- data/lib/utopia/path/matcher.rb +2 -19
- data/lib/utopia/path.rb +2 -19
- data/lib/utopia/redirection.rb +2 -19
- data/lib/utopia/responder.rb +2 -19
- data/lib/utopia/session/lazy_hash.rb +2 -19
- data/lib/utopia/session/serialization.rb +2 -19
- data/lib/utopia/session.rb +3 -19
- data/lib/utopia/setup.rb +2 -19
- data/lib/utopia/shell.rb +2 -19
- data/lib/utopia/static/local_file.rb +2 -19
- data/lib/utopia/static/mime_types.rb +2 -19
- data/lib/utopia/static.rb +2 -19
- data/lib/utopia/version.rb +3 -20
- data/lib/utopia.rb +3 -20
- data/license.md +25 -0
- data/readme.md +44 -0
- data/setup/site/.gitignore +0 -1
- data/setup/site/Guardfile +13 -13
- data/setup/site/bake.rb +3 -1
- data/setup/site/config/environment.rb +3 -0
- data/setup/site/config/{README.md → readme.md} +0 -0
- data/setup/site/config/sus.rb +10 -0
- data/setup/site/falcon.rb +3 -0
- data/setup/site/fixtures/website.rb +39 -0
- data/setup/site/gems.rb +8 -7
- data/setup/site/{README.md → readme.md} +0 -0
- data/setup/site/test/website.rb +28 -0
- data.tar.gz.sig +0 -0
- metadata +59 -62
- metadata.gz.sig +0 -0
- data/bake/utopia/test.rb +0 -10
- data/bin/utopia +0 -25
- data/lib/utopia/command/environment.rb +0 -93
- data/lib/utopia/command/server.rb +0 -113
- data/lib/utopia/command/site.rb +0 -233
- data/lib/utopia/command.rb +0 -67
- data/setup/site/.rspec +0 -4
- data/setup/site/spec/spec_helper.rb +0 -16
- data/setup/site/spec/website_context.rb +0 -54
- data/setup/site/spec/website_spec.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64d6cd31c0780c6d2071157034b6d125da0b4e6c3649affafb9338208b0467b7
|
4
|
+
data.tar.gz: 9092ab79ee6fb441051e1114fefbe41761aa5339d2eee574d588729e7ea5c479
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd49ec085295dded939c0da489dfc6bb64a97207032bd3cf177b39cf84f131f00b935c96173c2c6196c50032a07f4786b2312144b776cbadd4c05840b96f9f70
|
7
|
+
data.tar.gz: 5fc0e4c878dfa11693481cbaf560d9024f69c66c48db29cc5722a56757d216449c4026e59f534578a784f6484a94ee0bd894831e93bcddeb26830dcadf17be2b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2018-2022, by Samuel Williams.
|
5
|
+
|
6
|
+
# Update environment variables in config/environment.yaml
|
7
|
+
def initialize(...)
|
8
|
+
super
|
9
|
+
|
10
|
+
require 'securerandom'
|
11
|
+
require 'yaml/store'
|
12
|
+
require 'console'
|
13
|
+
end
|
14
|
+
|
15
|
+
# Setup default environemnts "testing" and "development".
|
16
|
+
# @parameter root [String] The root directory of the project.
|
17
|
+
def setup(root: context.root)
|
18
|
+
defaults(name: "testing", root: root)
|
19
|
+
defaults(name: "development", root: root)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Setup the defaults for a specific environment.
|
23
|
+
# @parameter name [String] The name of the environment to setup.
|
24
|
+
# @parameter root [String] The root directory of the project.
|
25
|
+
def defaults(name, root: context.root)
|
26
|
+
update_environment(root, name) do |store|
|
27
|
+
# Set some useful defaults for the environment.
|
28
|
+
store['UTOPIA_SESSION_SECRET'] ||= SecureRandom.hex(40)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Update the specified environment.
|
33
|
+
# @parameter name [String] The name of the environment to update.
|
34
|
+
# @parameter variables [Hash(String, String)] A list of environment KEY=VALUE pairs to set.
|
35
|
+
def update(name, root: context.root, **variables)
|
36
|
+
update_environment(root, name) do |store|
|
37
|
+
variables&.each do |variable|
|
38
|
+
key, value = variable.split('=', 2)
|
39
|
+
|
40
|
+
if value
|
41
|
+
puts "ENV[#{key.inspect}] will default to #{value.inspect} unless otherwise specified."
|
42
|
+
store[key] = value
|
43
|
+
else
|
44
|
+
puts "ENV[#{key.inspect}] will be unset unless otherwise specified."
|
45
|
+
store.delete(key)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
yield store if block_given?
|
50
|
+
|
51
|
+
Console.logger.debug(self) do |buffer|
|
52
|
+
buffer.puts "Environment #{name} (#{path}):"
|
53
|
+
store.roots.each do |key|
|
54
|
+
value = store[key]
|
55
|
+
|
56
|
+
buffer.puts "#{key}=#{value.inspect}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def read(name, root: context.root)
|
63
|
+
environment_path = self.environment_path(root, name)
|
64
|
+
|
65
|
+
if File.exist?(environment_path)
|
66
|
+
Console.logger.debug(self) {"Loading environment #{name} from #{environment_path}..."}
|
67
|
+
YAML.load_file(environment_path)
|
68
|
+
else
|
69
|
+
Console.logger.debug(self) {"No environment #{name} found at #{environment_path}."}
|
70
|
+
{}
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def environment_path(root, name)
|
77
|
+
File.join(root, "config", "#{name}.yaml")
|
78
|
+
end
|
79
|
+
|
80
|
+
# Setup `config/environment.yaml` according to specified options.
|
81
|
+
def update_environment(root, name)
|
82
|
+
environment_path = self.environment_path(root, name)
|
83
|
+
FileUtils.mkpath File.dirname(environment_path)
|
84
|
+
|
85
|
+
store = YAML::Store.new(environment_path)
|
86
|
+
|
87
|
+
store.transaction do
|
88
|
+
yield store, name, environment_path
|
89
|
+
end
|
90
|
+
end
|
data/bake/utopia/node.rb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2017-2022, by Samuel Williams.
|
5
|
+
|
6
|
+
def initialize(...)
|
7
|
+
super
|
8
|
+
|
9
|
+
require 'fileutils'
|
10
|
+
require 'socket'
|
11
|
+
end
|
12
|
+
|
13
|
+
# Create a remote Utopia website suitable for deployment using git.
|
14
|
+
def create(root: context.root)
|
15
|
+
FileUtils.mkdir_p File.join(root, "public")
|
16
|
+
|
17
|
+
update(root: root)
|
18
|
+
|
19
|
+
# Print out helpful git remote add message:
|
20
|
+
puts "Now add the git remote to your local repository:\n\tgit remote add production ssh://#{Socket.gethostname}#{root}"
|
21
|
+
puts "Then push to it:\n\tgit push --set-upstream production main"
|
22
|
+
end
|
23
|
+
|
24
|
+
# The path to the setup directory in the gem:
|
25
|
+
SETUP_ROOT = File.expand_path("../../setup", __dir__)
|
26
|
+
|
27
|
+
# The root directory of the template server deployment:
|
28
|
+
SERVER_ROOT = File.join(SETUP_ROOT, 'server')
|
29
|
+
|
30
|
+
# Update the git hooks in an existing server repository.
|
31
|
+
def update(root: context.root)
|
32
|
+
# It's okay to call this on an existing repo, it will only update config as required to enable --shared.
|
33
|
+
# --shared allows multiple users to access the site with the same group.
|
34
|
+
system("git", "init", "--shared", chdir: root) or fail "could not initialize repository"
|
35
|
+
|
36
|
+
system("git", "config", "receive.denyCurrentBranch", "ignore", chdir: root) or fail "could not set configuration"
|
37
|
+
system("git", "config", "core.worktree", root, chdir: root) or fail "could not set configuration"
|
38
|
+
|
39
|
+
# Doing this invokes a lot of behaviour that isn't always ideal...
|
40
|
+
# system("bundle", "config", "set", "--local", "deployment", "true")
|
41
|
+
system("bundle", "config", "set", "--local", "without", "development", chdir: root) or fail "could not set bundle configuration"
|
42
|
+
|
43
|
+
# In theory, to convert from non-shared to shared:
|
44
|
+
# chgrp -R <group-name> . # Change files and directories' group
|
45
|
+
# chmod -R g+w . # Change permissions
|
46
|
+
# chmod g-w .git/objects/pack/* # Git pack files should be immutable
|
47
|
+
# chmod g+s `find . -type d` # New files get group id of directory
|
48
|
+
|
49
|
+
# Set some useful defaults for the environment.
|
50
|
+
recipe = context.lookup("utopia:environment:update")
|
51
|
+
recipe.instance.update("environment", root: root) do |store|
|
52
|
+
store['VARIANT'] ||= 'production'
|
53
|
+
store['UTOPIA_SESSION_SECRET'] ||= SecureRandom.hex(40)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Copy git hooks:
|
57
|
+
system("cp", "-r", File.join(SERVER_ROOT, 'git', 'hooks'), File.join(root, '.git')) or fail "could not copy git hooks"
|
58
|
+
# finally set everything in the .git directory to be group writable
|
59
|
+
# This failed for me and I had to do sudo chown http:http .git -R first.
|
60
|
+
system("chmod", "-Rf", "g+w", File.join(root, '.git')) or fail "could not update permissions of .git directory"
|
61
|
+
end
|
data/bake/utopia/shell.rb
CHANGED
data/bake/utopia/site.rb
ADDED
@@ -0,0 +1,188 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2017-2023, by Samuel Williams.
|
5
|
+
# Copyright, 2020, by Michael Adams.
|
6
|
+
|
7
|
+
def initialize(...)
|
8
|
+
super
|
9
|
+
|
10
|
+
require 'fileutils'
|
11
|
+
require 'find'
|
12
|
+
end
|
13
|
+
|
14
|
+
# The path to the setup directory in the gem:
|
15
|
+
SETUP_ROOT = File.expand_path("../../setup", __dir__)
|
16
|
+
|
17
|
+
# Configuration files which should be installed/updated:
|
18
|
+
CONFIGURATION_FILES = ['.gitignore', 'config.ru', 'config/environment.rb', 'falcon.rb', 'gems.rb', 'Guardfile', 'bake.rb', 'test/website.rb', 'fixtures/website.rb']
|
19
|
+
|
20
|
+
# Directories that should exist:
|
21
|
+
DIRECTORIES = ["config", "lib", "pages", "public", "bake", "test"]
|
22
|
+
|
23
|
+
# Directories that should be removed during upgrade process:
|
24
|
+
OLD_PATHS = ["access_log", "cache", "tmp", "Rakefile", "tasks", ".bowerrc"]
|
25
|
+
|
26
|
+
# The root directory of the template site:
|
27
|
+
SITE_ROOT = File.join(SETUP_ROOT, 'site')
|
28
|
+
|
29
|
+
# Create a new local Utopia website using the default template.
|
30
|
+
def create(root: context.root)
|
31
|
+
Console.logger.debug(self) {"Setting up site in #{root} for Utopia v#{Utopia::VERSION}..."}
|
32
|
+
|
33
|
+
DIRECTORIES.each do |directory|
|
34
|
+
FileUtils.mkdir_p(File.join(root, directory))
|
35
|
+
end
|
36
|
+
|
37
|
+
Find.find(SITE_ROOT) do |source_path|
|
38
|
+
# Compute the destination path:
|
39
|
+
destination_path = File.join(root, source_path[SITE_ROOT.size..-1])
|
40
|
+
|
41
|
+
if File.directory?(source_path)
|
42
|
+
# Create the directory:
|
43
|
+
FileUtils.mkdir_p(destination_path)
|
44
|
+
else
|
45
|
+
# Copy the file, unless it already exists:
|
46
|
+
unless File.exist? destination_path
|
47
|
+
FileUtils.copy_entry(source_path, destination_path)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
CONFIGURATION_FILES.each do |configuration_file|
|
53
|
+
destination_path = File.join(root, configuration_file)
|
54
|
+
|
55
|
+
if File.exist?(destination_path)
|
56
|
+
buffer = File.read(destination_path).gsub('$UTOPIA_VERSION', Utopia::VERSION)
|
57
|
+
File.open(destination_path, "w") { |file| file.write(buffer) }
|
58
|
+
else
|
59
|
+
Console.logger.warn(self) {"Could not open #{destination_path}, maybe it should be removed from CONFIGURATION_FILES?"}
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
system("bundle", "install", chdir: root) or warn "could not install bundled gems"
|
64
|
+
|
65
|
+
if !File.exist?('.git')
|
66
|
+
Console.logger.info(self) {"Setting up git repository..."}
|
67
|
+
|
68
|
+
system("git", "init", chdir: root) or warn "could not create git repository"
|
69
|
+
system("git", "add", ".", chdir: root) or warn "could not add all files"
|
70
|
+
system("git", "commit", "-q", "-m", "Initial Utopia v#{Utopia::VERSION} site.", chdir: root) or warn "could not commit files"
|
71
|
+
end
|
72
|
+
|
73
|
+
context.lookup('utopia:environment:defaults').call(root)
|
74
|
+
|
75
|
+
name = `git config user.name || whoami`.chomp
|
76
|
+
|
77
|
+
puts
|
78
|
+
puts " #{name},".ljust(78)
|
79
|
+
puts "Thank you for using Utopia!".center(78)
|
80
|
+
puts "We sincerely hope that Utopia helps to".center(78)
|
81
|
+
puts "make your life easier and more enjoyable.".center(78)
|
82
|
+
puts ""
|
83
|
+
puts "To start the development server, run:".center(78)
|
84
|
+
puts "bake utopia:development".center(78)
|
85
|
+
puts ""
|
86
|
+
puts "For extreme productivity, please consult the online documentation".center(78)
|
87
|
+
puts "https://github.com/socketry/utopia".center(78)
|
88
|
+
puts " ~ Samuel. ".rjust(78)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Upgrade an existing site to use the latest configuration files from the template.
|
92
|
+
def upgrade(root: context.root)
|
93
|
+
branch_name = "utopia-upgrade-#{Utopia::VERSION}"
|
94
|
+
|
95
|
+
$stderr.puts "Upgrading #{destination_root}..."
|
96
|
+
|
97
|
+
system('git', 'checkout', '-b', branch_name, chdir: root) or fail "could not change branch"
|
98
|
+
|
99
|
+
DIRECTORIES.each do |directory|
|
100
|
+
FileUtils.mkdir_p(File.join(root, directory))
|
101
|
+
end
|
102
|
+
|
103
|
+
OLD_PATHS.each do |path|
|
104
|
+
path = File.join(root, path)
|
105
|
+
Console.logger.info(self) {"Removing #{path}..."}
|
106
|
+
FileUtils.rm_rf(path)
|
107
|
+
end
|
108
|
+
|
109
|
+
CONFIGURATION_FILES.each do |configuration_file|
|
110
|
+
source_path = File.join(SITE_ROOT, configuration_file)
|
111
|
+
destination_path = File.join(root, configuration_file)
|
112
|
+
|
113
|
+
Console.logger.info(self) {"Updating #{destination_path}..."}
|
114
|
+
|
115
|
+
FileUtils.copy_entry(source_path, destination_path)
|
116
|
+
buffer = File.read(destination_path).gsub('$UTOPIA_VERSION', Utopia::VERSION)
|
117
|
+
File.open(destination_path, "w") { |file| file.write(buffer) }
|
118
|
+
end
|
119
|
+
|
120
|
+
context.lookup('environment:defaults').call(root)
|
121
|
+
|
122
|
+
begin
|
123
|
+
# Stage any files that have been changed or removed:
|
124
|
+
system("git", "add", "-u", chdir: root) or fail "could not add files"
|
125
|
+
|
126
|
+
# Stage any new files that we have explicitly added:
|
127
|
+
system("git", "add", *CONFIGURATION_FILES, chdir: root) or fail "could not add files"
|
128
|
+
|
129
|
+
move_static!(root)
|
130
|
+
update_gemfile!(root)
|
131
|
+
|
132
|
+
# Commit all changes:
|
133
|
+
system("git", "commit", "-m", "Upgrade to utopia #{Utopia::VERSION}.", chdir: root) or fail "could not commit changes"
|
134
|
+
|
135
|
+
# Checkout main..
|
136
|
+
system("git", "checkout", "main", chdir: root) or fail "could not checkout main"
|
137
|
+
|
138
|
+
# and merge:
|
139
|
+
system("git", "merge", "--squash", "--no-commit", branch_name, chdir: root) or fail "could not merge changes"
|
140
|
+
rescue => error
|
141
|
+
Console.logger.error(self, error) {"Upgrade failed."}
|
142
|
+
|
143
|
+
system("git", "checkout", "master", chdir: root)
|
144
|
+
ensure
|
145
|
+
system("git", "branch", "-D", branch_name, chdir: root)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
private
|
150
|
+
|
151
|
+
# Move legacy `pages/_static` to `public/_static`.
|
152
|
+
def move_static!(root)
|
153
|
+
old_static_path = File.expand_path('pages/_static', root)
|
154
|
+
|
155
|
+
# If public/_static doens't exist, we are done.
|
156
|
+
return unless File.exist?(old_static_path)
|
157
|
+
|
158
|
+
new_static_path = File.expand_path('public/_static', root)
|
159
|
+
|
160
|
+
if File.exist?(new_static_path)
|
161
|
+
if File.lstat(new_static_path).symlink?
|
162
|
+
FileUtils.rm_f new_static_path
|
163
|
+
else
|
164
|
+
Console.logger.warn(self) {"Can't move pages/_static to public/_static, destination already exists."}
|
165
|
+
return
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
# One more sanity check:
|
170
|
+
if File.directory?(old_static_path)
|
171
|
+
system("git", "mv", "pages/_static", "public/")
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# Move `Gemfile` to `gems.rb`.
|
176
|
+
def update_gemfile!(root)
|
177
|
+
gemfile_path = File.expand_path('Gemfile', root)
|
178
|
+
|
179
|
+
# If `Gemfile` doens't exist, we are done:
|
180
|
+
return unless File.exist?(gemfile_path)
|
181
|
+
|
182
|
+
# If `gems.rb` already exists, we are done:
|
183
|
+
gems_path = File.expand_path('gems.rb', root)
|
184
|
+
return if File.exist?(gems_path)
|
185
|
+
|
186
|
+
system("git", "mv", "Gemfile", "gems.rb", chdir: root)
|
187
|
+
system("git", "mv", "Gemfile.lock", "gems.locked", chdir: root)
|
188
|
+
end
|
data/bake/utopia/static.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
4
|
-
#
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2017-2022, by Samuel Williams.
|
5
|
+
|
5
6
|
def generate(output_path: 'static')
|
6
7
|
require 'falcon/server'
|
7
8
|
require 'async/io'
|
data/bake/utopia.rb
CHANGED
@@ -1,24 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2015-2022, by Samuel Williams.
|
22
5
|
|
23
6
|
require_relative 'links'
|
24
7
|
require_relative 'response'
|
data/lib/utopia/content/link.rb
CHANGED
@@ -1,24 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2009-2022, by Samuel Williams.
|
5
|
+
# Copyright, 2017, by Huba Nagy.
|
6
|
+
# Copyright, 2020, by Michael Adams.
|
22
7
|
|
23
8
|
require 'yaml'
|
24
9
|
require 'trenni/builder'
|
data/lib/utopia/content/links.rb
CHANGED
@@ -1,24 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2015-2022, by Samuel Williams.
|
22
5
|
|
23
6
|
require_relative 'link'
|
24
7
|
|
@@ -1,24 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2009-2022, by Samuel Williams.
|
22
5
|
|
23
6
|
require 'trenni/parsers'
|
24
7
|
require 'trenni/entities'
|
@@ -1,24 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2017-2022, by Samuel Williams.
|
22
5
|
|
23
6
|
module Utopia
|
24
7
|
class Content
|
data/lib/utopia/content/node.rb
CHANGED
@@ -1,24 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2009-2022, by Samuel Williams.
|
5
|
+
# Copyright, 2015, by Huba Nagy.
|
22
6
|
|
23
7
|
require_relative 'markup'
|
24
8
|
require_relative 'links'
|
@@ -184,4 +168,4 @@ module Utopia
|
|
184
168
|
end
|
185
169
|
end
|
186
170
|
end
|
187
|
-
end
|
171
|
+
end
|
@@ -1,24 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2010-2022, by Samuel Williams.
|
22
5
|
|
23
6
|
module Utopia
|
24
7
|
class Content
|
data/lib/utopia/content/tags.rb
CHANGED
@@ -1,24 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2012-2022, by Samuel Williams.
|
22
5
|
|
23
6
|
require_relative 'namespace'
|
24
7
|
|
data/lib/utopia/content.rb
CHANGED
@@ -1,24 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
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.
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2009-2022, by Samuel Williams.
|
22
5
|
|
23
6
|
require_relative 'middleware'
|
24
7
|
require_relative 'localization'
|