utopia 2.13.4 → 2.14.0
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/.github/workflows/development.yml +62 -0
- data/README.md +3 -5
- data/bake/utopia/yarn.rb +4 -2
- data/docs/_components/jquery-litebox/jquery.litebox.css +23 -0
- data/docs/_components/jquery-litebox/jquery.litebox.gallery.css +48 -0
- data/docs/_components/jquery-litebox/jquery.litebox.js +30 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +6 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +4 -10
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +5 -2
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +8 -8
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +1 -1
- data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +43 -47
- data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +3 -41
- data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +5 -57
- data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +3 -37
- data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +4 -67
- data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +2 -33
- data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +5 -51
- data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +5 -89
- data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +4 -47
- data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +5 -80
- data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +2 -24
- data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +3 -47
- data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +3 -45
- data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +4 -66
- data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +3 -45
- data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +4 -45
- data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +3 -40
- data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +2 -29
- data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +2 -34
- data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +3 -44
- data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +2 -31
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +4 -73
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +4 -46
- data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +4 -51
- data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +3 -52
- data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +4 -48
- data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +2 -15
- data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +2 -10
- data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +3 -43
- data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +5 -44
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +5 -77
- data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +4 -44
- data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +2 -29
- data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +4 -31
- data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +3 -57
- data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +3 -55
- data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +2 -35
- data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +4 -50
- data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +2 -29
- data/docs/_components/jquery-syntax/jquery.syntax.cache.js +7 -65
- data/docs/_components/jquery-syntax/jquery.syntax.core.js +34 -1098
- data/docs/_components/jquery-syntax/jquery.syntax.editor.js +11 -291
- data/docs/_components/jquery-syntax/jquery.syntax.js +8 -258
- data/docs/_components/jquery/jquery.js +1678 -1026
- data/docs/_components/jquery/jquery.min.js +2 -4
- data/docs/_components/jquery/jquery.min.map +1 -1
- data/docs/_components/jquery/jquery.slim.js +1602 -932
- data/docs/_components/jquery/jquery.slim.min.js +2 -4
- data/docs/_components/jquery/jquery.slim.min.map +1 -1
- data/docs/_static/icon.png +0 -0
- data/docs/_static/site.css +100 -114
- data/docs/{wiki/development-environment-setup.html → development-environment-setup/index.html} +9 -15
- data/docs/{wiki/faq/what-is-xnode.html → faq/what-is-xnode/index.html} +9 -15
- data/docs/index.html +25 -31
- data/docs/javascript/index.html +108 -0
- data/docs/{wiki/middleware/content.html → middleware/content/index.html} +9 -15
- data/docs/{wiki/middleware/controller/actions.html → middleware/controller/actions/index.html} +11 -17
- data/docs/{wiki/middleware/controller.html → middleware/controller/index.html} +9 -15
- data/docs/{wiki/middleware/controller/rewrite.html → middleware/controller/rewrite/index.html} +9 -15
- data/docs/{wiki/middleware/localization.html → middleware/localization/index.html} +9 -15
- data/docs/{wiki/middleware/redirection.html → middleware/redirection/index.html} +9 -15
- data/docs/{wiki/middleware/session.html → middleware/session/index.html} +9 -15
- data/docs/{wiki/middleware/static.html → middleware/static/index.html} +9 -15
- data/docs/{wiki/server-setup.html → server-setup/index.html} +11 -42
- data/docs/{wiki/testing.html → testing/index.html} +10 -16
- data/docs/{wiki/updating-utopia.html → updating-utopia/index.html} +9 -15
- data/docs/{wiki/your-first-page.html → your-first-page/index.html} +11 -17
- data/lib/utopia/content.rb +23 -19
- data/lib/utopia/content/link.rb +29 -34
- data/lib/utopia/content/links.rb +185 -123
- data/lib/utopia/content/node.rb +13 -17
- data/lib/utopia/content/response.rb +2 -2
- data/lib/utopia/localization.rb +18 -10
- data/lib/utopia/path.rb +36 -32
- data/lib/utopia/version.rb +1 -1
- data/setup/site/Gemfile +7 -5
- data/spec/utopia/command_spec.rb +1 -1
- data/spec/utopia/content/links/bar/index.xnode +0 -0
- data/spec/utopia/content/links/bar/parent/child/index.en.xnode +0 -0
- data/spec/utopia/content/links/bar/parent/child/index.ja.xnode +0 -0
- data/spec/utopia/content/links/bar/parent/links.yaml +2 -0
- data/spec/utopia/content/links/index.xnode +0 -0
- data/spec/utopia/content/links/links.yaml +10 -1
- data/spec/utopia/content/links/redirect/links.yaml +2 -0
- data/spec/utopia/content/links_spec.rb +160 -43
- data/spec/utopia/content/localized/links.yaml +2 -5
- data/spec/utopia/content/node_spec.rb +1 -1
- data/spec/utopia/path_spec.rb +50 -5
- data/wiki/Gemfile +9 -0
- data/wiki/config.ru +7 -0
- data/{documentation/pages/wiki/development-environment-setup/content.md → wiki/pages/development-environment-setup/index.md} +0 -0
- data/wiki/pages/faq/links.yaml +2 -0
- data/{documentation/pages/wiki/faq/what-is-xnode/content.md → wiki/pages/faq/what-is-xnode/index.md} +1 -1
- data/wiki/pages/faq/what-is-xnode/links.yaml +2 -0
- data/{documentation/pages/wiki/content.md → wiki/pages/index.md} +2 -2
- data/{documentation/pages/wiki/javascript/content.md → wiki/pages/javascript/index.md} +15 -13
- data/wiki/pages/javascript/links.yaml +2 -0
- data/wiki/pages/links.yaml +2 -0
- data/{documentation/pages/wiki/middleware/content/content.md → wiki/pages/middleware/content/index.md} +0 -0
- data/{documentation/pages/wiki/middleware/controller/actions/content.md → wiki/pages/middleware/controller/actions/index.md} +2 -2
- data/{documentation/pages/wiki/middleware/controller/content.md → wiki/pages/middleware/controller/index.md} +0 -0
- data/{documentation/pages/wiki → wiki/pages}/middleware/controller/links.yaml +0 -0
- data/{documentation/pages/wiki/middleware/controller/rewrite/content.md → wiki/pages/middleware/controller/rewrite/index.md} +0 -0
- data/{documentation/pages/wiki/middleware/localization/content.md → wiki/pages/middleware/localization/index.md} +0 -0
- data/{documentation/pages/wiki/middleware/redirection/content.md → wiki/pages/middleware/redirection/index.md} +0 -0
- data/{documentation/pages/wiki/middleware/session/content.md → wiki/pages/middleware/session/index.md} +0 -0
- data/{documentation/pages/wiki/middleware/static/content.md → wiki/pages/middleware/static/index.md} +0 -0
- data/{documentation/pages/wiki/server-setup/content.md → wiki/pages/server-setup/index.md} +0 -0
- data/{documentation/pages/wiki/testing/content.md → wiki/pages/testing/index.md} +0 -0
- data/{documentation/pages/wiki/updating-utopia/content.md → wiki/pages/updating-utopia/index.md} +0 -0
- data/{documentation/pages/wiki/your-first-page/content.md → wiki/pages/your-first-page/index.md} +2 -2
- metadata +56 -263
- data/.travis.yml +0 -28
- data/Rakefile +0 -33
- data/docs/_components/jquery/core.js +0 -482
- data/docs/_static/utopia-background.svg +0 -1
- data/docs/_static/utopia.svg +0 -1
- data/docs/code/Utopia.html +0 -517
- data/docs/code/Utopia/Basename.html +0 -654
- data/docs/code/Utopia/Bootstrap.html +0 -538
- data/docs/code/Utopia/Command.html +0 -213
- data/docs/code/Utopia/Command/Environment.html +0 -321
- data/docs/code/Utopia/Command/Server.html +0 -214
- data/docs/code/Utopia/Command/Server/Create.html +0 -222
- data/docs/code/Utopia/Command/Server/Environment.html +0 -236
- data/docs/code/Utopia/Command/Server/Update.html +0 -317
- data/docs/code/Utopia/Command/Setup.html +0 -145
- data/docs/code/Utopia/Command/Setup/Server.html +0 -298
- data/docs/code/Utopia/Command/Setup/Site.html +0 -180
- data/docs/code/Utopia/Command/Site.html +0 -285
- data/docs/code/Utopia/Command/Site/Create.html +0 -324
- data/docs/code/Utopia/Command/Site/Update.html +0 -407
- data/docs/code/Utopia/Command/Top.html +0 -279
- data/docs/code/Utopia/Content.html +0 -832
- data/docs/code/Utopia/Content/Document.html +0 -1822
- data/docs/code/Utopia/Content/Document/State.html +0 -1220
- data/docs/code/Utopia/Content/Link.html +0 -1286
- data/docs/code/Utopia/Content/Links.html +0 -847
- data/docs/code/Utopia/Content/MarkupParser.html +0 -881
- data/docs/code/Utopia/Content/MarkupParser/ParsedTag.html +0 -422
- data/docs/code/Utopia/Content/MarkupParser/UnbalancedTagError.html +0 -615
- data/docs/code/Utopia/Content/Namespace.html +0 -485
- data/docs/code/Utopia/Content/Node.html +0 -1188
- data/docs/code/Utopia/Content/Node/Context.html +0 -938
- data/docs/code/Utopia/Content/Response.html +0 -813
- data/docs/code/Utopia/Content/SymbolicHash.html +0 -419
- data/docs/code/Utopia/Content/Tag.html +0 -399
- data/docs/code/Utopia/Content/Tags.html +0 -136
- data/docs/code/Utopia/Content/Tags/ContentTag.html +0 -187
- data/docs/code/Utopia/Content/Tags/DeferredTag.html +0 -193
- data/docs/code/Utopia/Content/Tags/Library.html +0 -333
- data/docs/code/Utopia/Content/Tags/NodeTag.html +0 -193
- data/docs/code/Utopia/Content/UnbalancedTagError.html +0 -298
- data/docs/code/Utopia/ContentLength.html +0 -343
- data/docs/code/Utopia/Controller.html +0 -907
- data/docs/code/Utopia/Controller/Actions.html +0 -289
- data/docs/code/Utopia/Controller/Actions/Action.html +0 -984
- data/docs/code/Utopia/Controller/Actions/ClassMethods.html +0 -442
- data/docs/code/Utopia/Controller/Base.html +0 -1216
- data/docs/code/Utopia/Controller/Respond.html +0 -293
- data/docs/code/Utopia/Controller/Respond/ClassMethods.html +0 -236
- data/docs/code/Utopia/Controller/Respond/Converter.html +0 -256
- data/docs/code/Utopia/Controller/Respond/Converter/Callback.html +0 -484
- data/docs/code/Utopia/Controller/Respond/Converter/ToJSON.html +0 -381
- data/docs/code/Utopia/Controller/Respond/Passthrough.html +0 -297
- data/docs/code/Utopia/Controller/Respond/Responder.html +0 -535
- data/docs/code/Utopia/Controller/Rewrite.html +0 -290
- data/docs/code/Utopia/Controller/Rewrite/ClassMethods.html +0 -242
- data/docs/code/Utopia/Controller/Rewrite/ExtractPrefixRule.html +0 -364
- data/docs/code/Utopia/Controller/Rewrite/Rewriter.html +0 -464
- data/docs/code/Utopia/Controller/Rewrite/Rule.html +0 -209
- data/docs/code/Utopia/Controller/Variables.html +0 -550
- data/docs/code/Utopia/Controllers.html +0 -244
- data/docs/code/Utopia/Exceptions.html +0 -127
- data/docs/code/Utopia/Exceptions/Handler.html +0 -526
- data/docs/code/Utopia/Exceptions/Mailer.html +0 -482
- data/docs/code/Utopia/Extensions.html +0 -117
- data/docs/code/Utopia/Extensions/ArraySplit.html +0 -183
- data/docs/code/Utopia/Extensions/DateTimeComparison.html +0 -193
- data/docs/code/Utopia/Extensions/TimeDateComparison.html +0 -193
- data/docs/code/Utopia/HTTP.html +0 -250
- data/docs/code/Utopia/HTTP/Status.html +0 -415
- data/docs/code/Utopia/Locale.html +0 -606
- data/docs/code/Utopia/Localization.html +0 -1241
- data/docs/code/Utopia/Localization/Wrapper.html +0 -459
- data/docs/code/Utopia/Logger.html +0 -205
- data/docs/code/Utopia/Logger/CompactFormatter.html +0 -335
- data/docs/code/Utopia/Path.html +0 -3310
- data/docs/code/Utopia/Path/Matcher.html +0 -518
- data/docs/code/Utopia/Path/Matcher/MatchData.html +0 -475
- data/docs/code/Utopia/Redirection.html +0 -151
- data/docs/code/Utopia/Redirection/ClientRedirect.html +0 -717
- data/docs/code/Utopia/Redirection/DirectoryIndex.html +0 -298
- data/docs/code/Utopia/Redirection/Errors.html +0 -476
- data/docs/code/Utopia/Redirection/Moved.html +0 -312
- data/docs/code/Utopia/Redirection/RequestFailure.html +0 -226
- data/docs/code/Utopia/Redirection/Rewrite.html +0 -296
- data/docs/code/Utopia/Session.html +0 -889
- data/docs/code/Utopia/Session/LazyHash.html +0 -859
- data/docs/code/Utopia/Setup.html +0 -970
- data/docs/code/Utopia/Static.html +0 -696
- data/docs/code/Utopia/Static/LocalFile.html +0 -1104
- data/docs/code/Utopia/Static/MimeTypeLoader.html +0 -541
- data/docs/code/Utopia/Static/MimeTypeLoader/ExpansionError.html +0 -124
- data/docs/code/Utopia/Tags.html +0 -115
- data/docs/code/Utopia/Tags/Environment.html +0 -314
- data/docs/code/Utopia/Tags/EnvironmentTag.html +0 -314
- data/docs/code/Utopia/Tags/Library.html +0 -340
- data/docs/code/_index.html +0 -758
- data/docs/code/class_list.html +0 -51
- data/docs/code/css/common.css +0 -1
- data/docs/code/css/full_list.css +0 -58
- data/docs/code/css/style.css +0 -496
- data/docs/code/file.README.html +0 -171
- data/docs/code/file_list.html +0 -56
- data/docs/code/frames.html +0 -17
- data/docs/code/index.html +0 -171
- data/docs/code/js/app.js +0 -292
- data/docs/code/js/full_list.js +0 -216
- data/docs/code/js/jquery.js +0 -4
- data/docs/code/materials/utopia.png +0 -0
- data/docs/code/materials/utopia.svg +0 -1
- data/docs/code/method_list.html +0 -3443
- data/docs/code/top-level-namespace.html +0 -110
- data/docs/wiki.html +0 -92
- data/docs/wiki/development-environment-setup/index.html +0 -60
- data/docs/wiki/edit.html +0 -103
- data/docs/wiki/faq/what-is-xnode/index.html +0 -79
- data/docs/wiki/javascript.html +0 -153
- data/docs/wiki/javascript/index.html +0 -153
- data/docs/wiki/middleware/content/index.html +0 -64
- data/docs/wiki/middleware/controller/actions/index.html +0 -117
- data/docs/wiki/middleware/controller/actions/rewrite/index.html +0 -48
- data/docs/wiki/middleware/controller/index.html +0 -104
- data/docs/wiki/middleware/controller/rewrite/index.html +0 -111
- data/docs/wiki/middleware/localization/index.html +0 -59
- data/docs/wiki/middleware/redirection/index.html +0 -61
- data/docs/wiki/middleware/session/index.html +0 -71
- data/docs/wiki/middleware/static/index.html +0 -57
- data/docs/wiki/server-setup/index.html +0 -118
- data/docs/wiki/testing/index.html +0 -59
- data/docs/wiki/updating-utopia/index.html +0 -108
- data/docs/wiki/your-first-page/index.html +0 -80
- data/documentation/.rspec +0 -4
- data/documentation/.yarnrc +0 -1
- data/documentation/Gemfile +0 -19
- data/documentation/Guardfile +0 -9
- data/documentation/Rakefile +0 -9
- data/documentation/config.ru +0 -41
- data/documentation/config/README.md +0 -7
- data/documentation/config/environment.rb +0 -12
- data/documentation/lib/readme.txt +0 -1
- data/documentation/pages/_editor.xnode +0 -64
- data/documentation/pages/_heading.xnode +0 -2
- data/documentation/pages/_page.xnode +0 -40
- data/documentation/pages/errors/exception.xnode +0 -5
- data/documentation/pages/errors/file-not-found.xnode +0 -5
- data/documentation/pages/links.yaml +0 -2
- data/documentation/pages/wiki/_listing.xnode +0 -32
- data/documentation/pages/wiki/_navigation.xnode +0 -15
- data/documentation/pages/wiki/controller.rb +0 -48
- data/documentation/pages/wiki/edit.xnode +0 -10
- data/documentation/pages/wiki/links.yaml +0 -6
- data/documentation/pages/wiki/show.xnode +0 -12
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +0 -6
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +0 -5
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +0 -8
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +0 -6
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +0 -10
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +0 -3
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.css.css +0 -14
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +0 -16
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.html.css +0 -5
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +0 -3
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +0 -2
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.python.css +0 -6
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +0 -2
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +0 -18
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.core.css +0 -62
- data/documentation/public/_components/jquery-syntax/base/jquery.syntax.editor.css +0 -6
- data/documentation/public/_components/jquery-syntax/base/theme.js +0 -1
- data/documentation/public/_components/jquery-syntax/bright/jquery.syntax.core.css +0 -27
- data/documentation/public/_components/jquery-syntax/bright/theme.js +0 -1
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.apache.js +0 -41
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.applescript.js +0 -57
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.assembly.js +0 -37
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +0 -67
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.bash.js +0 -33
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.basic.js +0 -51
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.clang.js +0 -89
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.csharp.js +0 -47
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.css.js +0 -80
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.diff.js +0 -24
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.go.js +0 -47
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.haskell.js +0 -45
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.html.js +0 -66
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.io.js +0 -45
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.java.js +0 -45
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.javascript.js +0 -40
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.kai.js +0 -29
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.lisp.js +0 -34
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.lua.js +0 -44
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.nginx.js +0 -31
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +0 -73
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ooc.js +0 -46
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.pascal.js +0 -51
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.perl5.js +0 -52
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.php-script.js +0 -48
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.php.js +0 -15
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.plain.js +0 -10
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +0 -43
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.python.js +0 -44
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.ruby.js +0 -77
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.scala.js +0 -44
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +0 -29
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.sql.js +0 -31
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +0 -57
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.swift.js +0 -55
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.trenni.js +0 -35
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.xml.js +0 -50
- data/documentation/public/_components/jquery-syntax/jquery.syntax.brush.yaml.js +0 -29
- data/documentation/public/_components/jquery-syntax/jquery.syntax.cache.js +0 -65
- data/documentation/public/_components/jquery-syntax/jquery.syntax.core.js +0 -1098
- data/documentation/public/_components/jquery-syntax/jquery.syntax.editor.js +0 -291
- data/documentation/public/_components/jquery-syntax/jquery.syntax.js +0 -258
- data/documentation/public/_components/jquery-syntax/jquery.syntax.min.js +0 -13
- data/documentation/public/_components/jquery-syntax/paper/jquery.syntax.core.css +0 -31
- data/documentation/public/_components/jquery-syntax/paper/theme.js +0 -1
- data/documentation/public/_components/jquery/core.js +0 -482
- data/documentation/public/_components/jquery/jquery.js +0 -10220
- data/documentation/public/_components/jquery/jquery.min.js +0 -4
- data/documentation/public/_components/jquery/jquery.min.map +0 -1
- data/documentation/public/_components/jquery/jquery.slim.js +0 -8107
- data/documentation/public/_components/jquery/jquery.slim.min.js +0 -4
- data/documentation/public/_components/jquery/jquery.slim.min.map +0 -1
- data/documentation/public/_static +0 -1
- data/documentation/public/materials +0 -1
- data/documentation/spec/website_context.rb +0 -12
- data/documentation/spec/website_spec.rb +0 -16
- data/documentation/tasks +0 -1
- data/spec/utopia/content/link_spec.rb +0 -47
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
|
|
5
|
-
<title>Static
|
|
5
|
+
<title>Static</title>
|
|
6
6
|
|
|
7
7
|
<meta charset="UTF-8"/>
|
|
8
8
|
|
|
9
|
-
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
|
10
|
-
|
|
11
9
|
<link rel="icon" type="image/png" href="../../_static/icon.png"/>
|
|
12
10
|
<link rel="stylesheet" href="../../_static/site.css" type="text/css" media="screen"/>
|
|
13
11
|
|
|
@@ -23,18 +21,13 @@
|
|
|
23
21
|
</script>
|
|
24
22
|
</head>
|
|
25
23
|
|
|
26
|
-
<body class="">
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</header>
|
|
30
|
-
|
|
31
|
-
<div id="page">
|
|
32
|
-
|
|
33
|
-
<nav>
|
|
34
|
-
› <a href="../../wiki.html">Wiki</a> › <span>Middleware</span> › <a href="static.html">Static</a></nav>
|
|
24
|
+
<body class="show">
|
|
25
|
+
|
|
26
|
+
<nav> › <a href="../../index.html">Wiki</a> › <span>Middleware</span> › <a href="index.html">Static</a></nav>
|
|
35
27
|
|
|
36
28
|
|
|
37
|
-
<
|
|
29
|
+
<main>
|
|
30
|
+
<h1 id="static">Static</h1>
|
|
38
31
|
|
|
39
32
|
<p>This middleware serves static files using the <code>mime-types</code> library. By default, it works with <code>Rack::Sendfile</code> and supports <code>ETag</code> based caching. Normally, you’d prefer to put static files into <code>public/_static</code> but it’s also acceptable to put static content into <code>pages/</code> if it makes sense.</p>
|
|
40
33
|
|
|
@@ -47,11 +40,12 @@
|
|
|
47
40
|
cache_control: 'public, max-age=7200'
|
|
48
41
|
</code></pre>
|
|
49
42
|
|
|
43
|
+
</main>
|
|
50
44
|
|
|
51
45
|
<footer>
|
|
52
|
-
Last Modified:
|
|
46
|
+
Last Modified: 2020-04-28 11:35:36 +1200
|
|
47
|
+
— middleware/static/index.md
|
|
53
48
|
</footer>
|
|
54
49
|
|
|
55
|
-
</div>
|
|
56
50
|
</body>
|
|
57
51
|
</html>
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
|
|
5
|
-
<title>Server Setup
|
|
5
|
+
<title>Server Setup</title>
|
|
6
6
|
|
|
7
7
|
<meta charset="UTF-8"/>
|
|
8
8
|
|
|
9
|
-
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
|
10
|
-
|
|
11
9
|
<link rel="icon" type="image/png" href="../_static/icon.png"/>
|
|
12
10
|
<link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
|
|
13
11
|
|
|
@@ -23,24 +21,19 @@
|
|
|
23
21
|
</script>
|
|
24
22
|
</head>
|
|
25
23
|
|
|
26
|
-
<body class="">
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</header>
|
|
30
|
-
|
|
31
|
-
<div id="page">
|
|
32
|
-
|
|
33
|
-
<nav>
|
|
34
|
-
› <a href="../wiki.html">Wiki</a> › <a href="server-setup.html">Server Setup</a></nav>
|
|
24
|
+
<body class="show">
|
|
25
|
+
|
|
26
|
+
<nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Server Setup</a></nav>
|
|
35
27
|
|
|
36
28
|
|
|
37
|
-
<
|
|
29
|
+
<main>
|
|
30
|
+
<h1 id="server-setup">Server Setup</h1>
|
|
38
31
|
|
|
39
32
|
<p>Utopia is designed to make deployment to remote servers easy.</p>
|
|
40
33
|
|
|
41
34
|
<h2 id="deployment">Deployment</h2>
|
|
42
35
|
|
|
43
|
-
<p>The preferred method of deployment to a production server is via git. The <code>utopia</code> command assists with setup of a remote git repository on the server. It will setup a <code>git</code> <code>post-update</code> hook which will deploy the site correctly and restart
|
|
36
|
+
<p>The preferred method of deployment to a production server is via git. The <code>utopia</code> command assists with setup of a remote git repository on the server. It will setup a <code>git</code> <code>post-update</code> hook which will deploy the site correctly and restart the application server for that site.</p>
|
|
44
37
|
|
|
45
38
|
<p>To setup a server for deployment:</p>
|
|
46
39
|
|
|
@@ -70,32 +63,7 @@ ENV["DATABASE_ENV"] will default to "production_cluster_primary" unless otherwis
|
|
|
70
63
|
|
|
71
64
|
<h2 id="platform">Platform</h2>
|
|
72
65
|
|
|
73
|
-
<p>The best deployment platform for Utopia is Linux
|
|
74
|
-
|
|
75
|
-
<ul>
|
|
76
|
-
<li><a href="https://aur.archlinux.org/packages/nginx-mainline-passenger/">nginx-mainline-passenger</a></li>
|
|
77
|
-
<li><a href="https://aur.archlinux.org/packages/passenger-nginx-module/">passenger-nginx-module</a></li>
|
|
78
|
-
</ul>
|
|
79
|
-
|
|
80
|
-
<p>There have been issues with the official packages and thus these packages were developed and tested with Utopia deployment in mind.</p>
|
|
81
|
-
|
|
82
|
-
<h3 id="sample-nginx-configuration">Sample Nginx Configuration</h3>
|
|
83
|
-
|
|
84
|
-
<p>Create a configuration file for your site, e.g. <code>/etc/nginx/sites/www.example.com</code>:</p>
|
|
85
|
-
|
|
86
|
-
<pre><code class="language-nginx">server {
|
|
87
|
-
listen 80;
|
|
88
|
-
server_name www.example.com;
|
|
89
|
-
root /srv/http/www.example.com/public;
|
|
90
|
-
passenger_enabled on;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
server {
|
|
94
|
-
listen 80;
|
|
95
|
-
server_name example.com;
|
|
96
|
-
rewrite ^ http://www.example.com$uri permanent;
|
|
97
|
-
}
|
|
98
|
-
</code></pre>
|
|
66
|
+
<p>The best deployment platform for Utopia is Linux, using <a href="https://github.com/socketry/falcon">falcon</a>.</p>
|
|
99
67
|
|
|
100
68
|
<h3 id="sudo-setup">Sudo Setup</h3>
|
|
101
69
|
|
|
@@ -108,11 +76,12 @@ server {
|
|
|
108
76
|
<p>This allows the deploy task to correctly checkout code as user <code>http</code>.</p>
|
|
109
77
|
|
|
110
78
|
|
|
79
|
+
</main>
|
|
111
80
|
|
|
112
81
|
<footer>
|
|
113
|
-
Last Modified:
|
|
82
|
+
Last Modified: 2020-04-28 11:35:36 +1200
|
|
83
|
+
— server-setup/index.md
|
|
114
84
|
</footer>
|
|
115
85
|
|
|
116
|
-
</div>
|
|
117
86
|
</body>
|
|
118
87
|
</html>
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
|
|
5
|
-
<title>Testing
|
|
5
|
+
<title>Testing</title>
|
|
6
6
|
|
|
7
7
|
<meta charset="UTF-8"/>
|
|
8
8
|
|
|
9
|
-
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
|
10
|
-
|
|
11
9
|
<link rel="icon" type="image/png" href="../_static/icon.png"/>
|
|
12
10
|
<link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
|
|
13
11
|
|
|
@@ -23,20 +21,15 @@
|
|
|
23
21
|
</script>
|
|
24
22
|
</head>
|
|
25
23
|
|
|
26
|
-
<body class="">
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</header>
|
|
30
|
-
|
|
31
|
-
<div id="page">
|
|
32
|
-
|
|
33
|
-
<nav>
|
|
34
|
-
› <a href="../wiki.html">Wiki</a> › <a href="testing.html">Testing</a></nav>
|
|
24
|
+
<body class="show">
|
|
25
|
+
|
|
26
|
+
<nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Testing</a></nav>
|
|
35
27
|
|
|
36
28
|
|
|
37
|
-
<
|
|
29
|
+
<main>
|
|
30
|
+
<h1 id="testing">Testing</h1>
|
|
38
31
|
|
|
39
|
-
<p>Utopia websites include a default set of tests, and associated <code>rake test</code> tasks. These specs can test against the actual running website. By default, <
|
|
32
|
+
<p>Utopia websites include a default set of tests, and associated <code>rake test</code> tasks. These specs can test against the actual running website. By default, <a href="https://github.com/socketry/covered">covered</a> is included for coverage testing.</p>
|
|
40
33
|
|
|
41
34
|
<pre><code class="language-bash">$ rake coverage test
|
|
42
35
|
|
|
@@ -49,11 +42,12 @@ Finished in 0.44849 seconds (files took 0.15547 seconds to load)
|
|
|
49
42
|
Coverage report generated for RSpec. 5 / 5 LOC (100.0%) covered.
|
|
50
43
|
</code></pre>
|
|
51
44
|
|
|
45
|
+
</main>
|
|
52
46
|
|
|
53
47
|
<footer>
|
|
54
|
-
Last Modified:
|
|
48
|
+
Last Modified: 2020-04-28 11:35:36 +1200
|
|
49
|
+
— testing/index.md
|
|
55
50
|
</footer>
|
|
56
51
|
|
|
57
|
-
</div>
|
|
58
52
|
</body>
|
|
59
53
|
</html>
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
|
|
5
|
-
<title>Updating Utopia
|
|
5
|
+
<title>Updating Utopia</title>
|
|
6
6
|
|
|
7
7
|
<meta charset="UTF-8"/>
|
|
8
8
|
|
|
9
|
-
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
|
10
|
-
|
|
11
9
|
<link rel="icon" type="image/png" href="../_static/icon.png"/>
|
|
12
10
|
<link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
|
|
13
11
|
|
|
@@ -23,18 +21,13 @@
|
|
|
23
21
|
</script>
|
|
24
22
|
</head>
|
|
25
23
|
|
|
26
|
-
<body class="">
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</header>
|
|
30
|
-
|
|
31
|
-
<div id="page">
|
|
32
|
-
|
|
33
|
-
<nav>
|
|
34
|
-
› <a href="../wiki.html">Wiki</a> › <a href="updating-utopia.html">Updating Utopia</a></nav>
|
|
24
|
+
<body class="show">
|
|
25
|
+
|
|
26
|
+
<nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Updating Utopia</a></nav>
|
|
35
27
|
|
|
36
28
|
|
|
37
|
-
<
|
|
29
|
+
<main>
|
|
30
|
+
<h1 id="updating-utopia">Updating Utopia</h1>
|
|
38
31
|
|
|
39
32
|
<p>Utopia provides a model for both local development (<code>utopia site create</code>) and deployment (<code>utopia server create</code>). In addition, Utopia provides a basic upgrade path for existing sites when things within the framework change. These are not always automatic, so below are some recipes for how to update your site.</p>
|
|
40
33
|
|
|
@@ -98,11 +91,12 @@ end
|
|
|
98
91
|
$ utopia server update
|
|
99
92
|
</code></pre>
|
|
100
93
|
|
|
94
|
+
</main>
|
|
101
95
|
|
|
102
96
|
<footer>
|
|
103
|
-
Last Modified:
|
|
97
|
+
Last Modified: 2020-04-28 11:35:36 +1200
|
|
98
|
+
— updating-utopia/index.md
|
|
104
99
|
</footer>
|
|
105
100
|
|
|
106
|
-
</div>
|
|
107
101
|
</body>
|
|
108
102
|
</html>
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
|
|
5
|
-
<title>Your First Page
|
|
5
|
+
<title>Your First Page</title>
|
|
6
6
|
|
|
7
7
|
<meta charset="UTF-8"/>
|
|
8
8
|
|
|
9
|
-
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
|
10
|
-
|
|
11
9
|
<link rel="icon" type="image/png" href="../_static/icon.png"/>
|
|
12
10
|
<link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
|
|
13
11
|
|
|
@@ -23,18 +21,13 @@
|
|
|
23
21
|
</script>
|
|
24
22
|
</head>
|
|
25
23
|
|
|
26
|
-
<body class="">
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</header>
|
|
30
|
-
|
|
31
|
-
<div id="page">
|
|
32
|
-
|
|
33
|
-
<nav>
|
|
34
|
-
› <a href="../wiki.html">Wiki</a> › <a href="your-first-page.html">Your First Page</a></nav>
|
|
24
|
+
<body class="show">
|
|
25
|
+
|
|
26
|
+
<nav> › <a href="../index.html">Wiki</a> › <a href="index.html">Your First Page</a></nav>
|
|
35
27
|
|
|
36
28
|
|
|
37
|
-
<
|
|
29
|
+
<main>
|
|
30
|
+
<h1 id="your-first-page">Your First Page</h1>
|
|
38
31
|
|
|
39
32
|
<p>To setup the default site, simply create a directory and use the <code>utopia</code> command:</p>
|
|
40
33
|
|
|
@@ -44,7 +37,7 @@ $ utopia site create
|
|
|
44
37
|
$ rake server
|
|
45
38
|
</code></pre>
|
|
46
39
|
|
|
47
|
-
<p>You will now have a basic template site running on <code>
|
|
40
|
+
<p>You will now have a basic template site running on <code>https://localhost:9292</code>.</p>
|
|
48
41
|
|
|
49
42
|
<h2 id="welcome-page">Welcome Page</h2>
|
|
50
43
|
|
|
@@ -67,14 +60,15 @@ use Utopia::Redirection::Rewrite,
|
|
|
67
60
|
<p>You’ll notice that there is a file <code>/links.yaml</code>. This file contains important metadata relating to the <code>errors</code> subdirectory. As we don’t want these nodes showing up in a top level menu, we mark them as <code>display: false</code></p>
|
|
68
61
|
|
|
69
62
|
<pre><code class="language-yaml">errors:
|
|
70
|
-
|
|
63
|
+
display: false
|
|
71
64
|
</code></pre>
|
|
72
65
|
|
|
66
|
+
</main>
|
|
73
67
|
|
|
74
68
|
<footer>
|
|
75
|
-
Last Modified:
|
|
69
|
+
Last Modified: 2020-04-28 23:17:10 +1200
|
|
70
|
+
— your-first-page/index.md
|
|
76
71
|
</footer>
|
|
77
72
|
|
|
78
|
-
</div>
|
|
79
73
|
</body>
|
|
80
74
|
</html>
|
data/lib/utopia/content.rb
CHANGED
|
@@ -59,7 +59,7 @@ module Utopia
|
|
|
59
59
|
# The core namespace for utopia specific functionality:
|
|
60
60
|
@namespaces[UTOPIA_NAMESPACE] ||= Tags
|
|
61
61
|
end
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
def freeze
|
|
64
64
|
return self if frozen?
|
|
65
65
|
|
|
@@ -72,6 +72,7 @@ module Utopia
|
|
|
72
72
|
|
|
73
73
|
attr :root
|
|
74
74
|
|
|
75
|
+
# TODO we should remove this method and expose `@links` directly.
|
|
75
76
|
def links(path, **options)
|
|
76
77
|
@links.index(path, **options)
|
|
77
78
|
end
|
|
@@ -91,20 +92,23 @@ module Utopia
|
|
|
91
92
|
end
|
|
92
93
|
end
|
|
93
94
|
|
|
94
|
-
#
|
|
95
|
-
def lookup_node(
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
+
def lookup_node(path, locale = nil)
|
|
97
|
+
resolve_link(
|
|
98
|
+
@links.for(path, locale)
|
|
99
|
+
)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def resolve_link(link)
|
|
103
|
+
if path = link&.path
|
|
104
|
+
full_path = File.join(@root, path.dirname, link.key + XNODE_EXTENSION)
|
|
105
|
+
|
|
106
|
+
if File.exist?(full_path)
|
|
107
|
+
return Node.new(self, path, path, full_path)
|
|
108
|
+
end
|
|
103
109
|
end
|
|
104
|
-
|
|
105
|
-
return nil
|
|
106
110
|
end
|
|
107
|
-
|
|
111
|
+
|
|
108
112
|
def call(env)
|
|
109
113
|
request = Rack::Request.new(env)
|
|
110
114
|
path = Path.create(request.path_info)
|
|
@@ -112,17 +116,17 @@ module Utopia
|
|
|
112
116
|
# Check if the request is to a non-specific index. This only works for requests with a given name:
|
|
113
117
|
basename = path.basename
|
|
114
118
|
directory_path = File.join(@root, path.dirname.components, basename)
|
|
115
|
-
|
|
119
|
+
|
|
116
120
|
# If the request for /foo/bar is actually a directory, rewrite it to /foo/bar/index:
|
|
117
121
|
if File.directory? directory_path
|
|
118
122
|
index_path = [basename, INDEX]
|
|
119
123
|
|
|
120
124
|
return [307, {HTTP::LOCATION => path.dirname.join(index_path).to_s}, []]
|
|
121
125
|
end
|
|
122
|
-
|
|
126
|
+
|
|
123
127
|
locale = env[Localization::CURRENT_LOCALE_KEY]
|
|
124
128
|
if link = @links.for(path, locale)
|
|
125
|
-
if
|
|
129
|
+
if node = resolve_link(link)
|
|
126
130
|
attributes = request.env.fetch(VARIABLES_KEY, {}).to_hash
|
|
127
131
|
|
|
128
132
|
return node.process!(request, attributes)
|
|
@@ -153,14 +157,14 @@ module Utopia
|
|
|
153
157
|
|
|
154
158
|
while components.any?
|
|
155
159
|
tag_path = File.join(@root, components, name_path)
|
|
156
|
-
|
|
160
|
+
|
|
157
161
|
if File.exist? tag_path
|
|
158
162
|
return Node.new(self, Path[components] + name, parent_path + name, tag_path)
|
|
159
163
|
end
|
|
160
|
-
|
|
164
|
+
|
|
161
165
|
if String === name_path
|
|
162
166
|
tag_path = File.join(@root, components, '_' + name_path)
|
|
163
|
-
|
|
167
|
+
|
|
164
168
|
if File.exist? tag_path
|
|
165
169
|
return Node.new(self, Path[components] + name, parent_path + name, tag_path)
|
|
166
170
|
end
|
data/lib/utopia/content/link.rb
CHANGED
|
@@ -30,60 +30,55 @@ require_relative '../locale'
|
|
|
30
30
|
|
|
31
31
|
module Utopia
|
|
32
32
|
class Content
|
|
33
|
-
INDEX = 'index'.freeze
|
|
34
|
-
|
|
35
33
|
# Represents a link to some content with associated metadata.
|
|
36
34
|
class Link
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
@info = info || {}
|
|
35
|
+
# @param kind [Symbol] the kind of link.
|
|
36
|
+
def initialize(kind, name, locale, path, info, title = nil)
|
|
41
37
|
@kind = kind
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
@locale = path.extension
|
|
55
|
-
@path = path
|
|
56
|
-
when :virtual
|
|
57
|
-
@name, @locale = path.to_s.split('.', 2)
|
|
58
|
-
@path = @info[:path] ? Path.create(@info[:path]) : nil
|
|
38
|
+
@name = name
|
|
39
|
+
@locale = locale
|
|
40
|
+
@path = Path.create(path)
|
|
41
|
+
@info = info || {}
|
|
42
|
+
@title = Trenni::Strings.to_title(title || name)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def key
|
|
46
|
+
if locale
|
|
47
|
+
"#{@path.last}.#{@locale}"
|
|
59
48
|
else
|
|
60
|
-
|
|
49
|
+
@path.last
|
|
61
50
|
end
|
|
62
|
-
|
|
63
|
-
@title = Trenni::Strings.to_title(@name)
|
|
64
51
|
end
|
|
65
|
-
|
|
52
|
+
|
|
66
53
|
def href
|
|
67
54
|
@href ||= @info.fetch(:uri) do
|
|
68
55
|
(@path.dirname + @path.basename).to_s if @path
|
|
69
56
|
end
|
|
70
57
|
end
|
|
71
|
-
|
|
58
|
+
|
|
72
59
|
# Look up from the `links.yaml` metadata with a given symbolic key.
|
|
73
60
|
def [] key
|
|
74
61
|
@info[key]
|
|
75
62
|
end
|
|
76
|
-
|
|
63
|
+
|
|
77
64
|
attr :kind
|
|
78
65
|
attr :name
|
|
79
66
|
attr :path
|
|
80
67
|
attr :info
|
|
81
68
|
attr :locale
|
|
82
|
-
|
|
69
|
+
|
|
83
70
|
def href?
|
|
84
71
|
!!href
|
|
85
72
|
end
|
|
86
|
-
|
|
73
|
+
|
|
74
|
+
def index?
|
|
75
|
+
@kind == :index
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def virtual?
|
|
79
|
+
@kind == :virtual
|
|
80
|
+
end
|
|
81
|
+
|
|
87
82
|
def relative_href(base = nil)
|
|
88
83
|
if base and href.start_with? '/'
|
|
89
84
|
Path.shortest_path(href, base)
|
|
@@ -91,11 +86,11 @@ module Utopia
|
|
|
91
86
|
href
|
|
92
87
|
end
|
|
93
88
|
end
|
|
94
|
-
|
|
89
|
+
|
|
95
90
|
def title
|
|
96
91
|
@info.fetch(:title, @title)
|
|
97
92
|
end
|
|
98
|
-
|
|
93
|
+
|
|
99
94
|
def to_anchor(base: nil, content: self.title, builder: nil, **attributes)
|
|
100
95
|
attributes[:class] ||= 'link'
|
|
101
96
|
|
|
@@ -124,7 +119,7 @@ module Utopia
|
|
|
124
119
|
def eql? other
|
|
125
120
|
self.class.eql?(other.class) and kind.eql?(other.kind) and name.eql?(other.name) and path.eql?(other.path) and info.eql?(other.info)
|
|
126
121
|
end
|
|
127
|
-
|
|
122
|
+
|
|
128
123
|
def == other
|
|
129
124
|
other and kind == other.kind and name == other.name and path == other.path
|
|
130
125
|
end
|