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
|
@@ -39,7 +39,7 @@ module Utopia
|
|
|
39
39
|
self.content_type = "text/html; charset=utf-8"
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
attr_accessor :status
|
|
43
43
|
attr :headers
|
|
44
44
|
attr :body
|
|
45
45
|
|
|
@@ -68,7 +68,7 @@ module Utopia
|
|
|
68
68
|
@headers[EXPIRES] = (Time.now + duration).httpdate
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
# Specify the content type of the response data.
|
|
73
73
|
def content_type= value
|
|
74
74
|
@headers[CONTENT_TYPE] = value
|
data/lib/utopia/localization.rb
CHANGED
|
@@ -35,6 +35,10 @@ module Utopia
|
|
|
35
35
|
@env[LOCALIZATION_KEY]
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
def localized?
|
|
39
|
+
localization != nil
|
|
40
|
+
end
|
|
41
|
+
|
|
38
42
|
# Returns the current locale or nil if not localized.
|
|
39
43
|
def current_locale
|
|
40
44
|
@env[CURRENT_LOCALE_KEY]
|
|
@@ -49,6 +53,10 @@ module Utopia
|
|
|
49
53
|
def all_locales
|
|
50
54
|
localization && localization.all_locales || []
|
|
51
55
|
end
|
|
56
|
+
|
|
57
|
+
def localized_path(path, locale)
|
|
58
|
+
"/#{locale}#{path}"
|
|
59
|
+
end
|
|
52
60
|
end
|
|
53
61
|
|
|
54
62
|
def self.[] request
|
|
@@ -66,15 +74,19 @@ module Utopia
|
|
|
66
74
|
# @param default_locales [String] The locales to try in order if none is provided.
|
|
67
75
|
# @param hosts [Hash<Pattern, String>] Specify a mapping of the HTTP_HOST header to a given locale.
|
|
68
76
|
# @param ignore [Array<Pattern>] A list of patterns matched against PATH_INFO which will not be localized.
|
|
69
|
-
def initialize(app, locales:, default_locale: nil, default_locales: nil, hosts: {}, ignore: []
|
|
77
|
+
def initialize(app, locales:, default_locale: nil, default_locales: nil, hosts: {}, ignore: [])
|
|
70
78
|
@app = app
|
|
71
79
|
|
|
72
80
|
@all_locales = HTTP::Accept::Languages::Locales.new(locales)
|
|
73
81
|
|
|
74
82
|
# Locales here are represented as an array of strings, e.g. ['en', 'ja', 'cn', 'de'] and are used in order if no locale is specified by the user.
|
|
75
83
|
unless @default_locales = default_locales
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
if default_locale
|
|
85
|
+
@default_locales = [default_locale, nil]
|
|
86
|
+
else
|
|
87
|
+
# We append nil, i.e. no localization.
|
|
88
|
+
@default_locales = @all_locales.names + [nil]
|
|
89
|
+
end
|
|
78
90
|
end
|
|
79
91
|
|
|
80
92
|
@default_locale = default_locale || @default_locales.first
|
|
@@ -87,6 +99,8 @@ module Utopia
|
|
|
87
99
|
@hosts = hosts
|
|
88
100
|
|
|
89
101
|
@ignore = ignore || options[:nonlocalized]
|
|
102
|
+
|
|
103
|
+
@methods = methods
|
|
90
104
|
end
|
|
91
105
|
|
|
92
106
|
def freeze
|
|
@@ -166,13 +180,7 @@ module Utopia
|
|
|
166
180
|
return []
|
|
167
181
|
end
|
|
168
182
|
|
|
169
|
-
SAFE_METHODS = ['GET', 'HEAD']
|
|
170
|
-
|
|
171
183
|
def localized?(env)
|
|
172
|
-
# Only SAFE_METHODS can be localized:
|
|
173
|
-
request_method = env[Rack::REQUEST_METHOD]
|
|
174
|
-
return false unless SAFE_METHODS.include?(request_method)
|
|
175
|
-
|
|
176
184
|
# Ignore requests which match the ignored paths:
|
|
177
185
|
path_info = env[Rack::PATH_INFO]
|
|
178
186
|
return false if @ignore.any? { |pattern| path_info[pattern] != nil }
|
|
@@ -206,7 +214,7 @@ module Utopia
|
|
|
206
214
|
|
|
207
215
|
# We have a non-localized request, but there might be a localized resource. We return the best localization possible:
|
|
208
216
|
preferred_locales(env) do |localized_env|
|
|
209
|
-
# puts "Trying locale: #{
|
|
217
|
+
# puts "Trying locale: #{localized_env[CURRENT_LOCALE_KEY]}: #{localized_env[Rack::PATH_INFO]}..."
|
|
210
218
|
|
|
211
219
|
response = @app.call(localized_env)
|
|
212
220
|
|
data/lib/utopia/path.rb
CHANGED
|
@@ -30,9 +30,9 @@ module Utopia
|
|
|
30
30
|
def initialize(components = [])
|
|
31
31
|
@components = components
|
|
32
32
|
end
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
attr_accessor :components
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
def freeze
|
|
37
37
|
@components.freeze
|
|
38
38
|
|
|
@@ -65,22 +65,22 @@ module Utopia
|
|
|
65
65
|
|
|
66
66
|
return self.create([".."] * up + path.components[i..-1])
|
|
67
67
|
end
|
|
68
|
-
|
|
68
|
+
|
|
69
69
|
def shortest_path(root)
|
|
70
70
|
self.class.shortest_path(self, root)
|
|
71
71
|
end
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
# Converts '+' into whitespace and hex encoded characters into their equivalent characters.
|
|
74
74
|
def self.unescape(string)
|
|
75
75
|
string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) {
|
|
76
76
|
[$1.delete('%')].pack('H*')
|
|
77
77
|
}
|
|
78
78
|
end
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
def self.[] path
|
|
81
81
|
self.create(path)
|
|
82
82
|
end
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
def self.split(path)
|
|
85
85
|
case path
|
|
86
86
|
when Path
|
|
@@ -115,15 +115,17 @@ module Utopia
|
|
|
115
115
|
return self.new(path)
|
|
116
116
|
when String
|
|
117
117
|
return self.new(unescape(path).split(SEPARATOR, -1))
|
|
118
|
+
when nil
|
|
119
|
+
return nil
|
|
118
120
|
else
|
|
119
121
|
return self.new([path])
|
|
120
122
|
end
|
|
121
123
|
end
|
|
122
|
-
|
|
124
|
+
|
|
123
125
|
def replace(other_path)
|
|
124
126
|
@components = other_path.components.dup
|
|
125
127
|
end
|
|
126
|
-
|
|
128
|
+
|
|
127
129
|
def include?(*args)
|
|
128
130
|
@components.include?(*args)
|
|
129
131
|
end
|
|
@@ -131,7 +133,7 @@ module Utopia
|
|
|
131
133
|
def directory?
|
|
132
134
|
return @components.last == ''
|
|
133
135
|
end
|
|
134
|
-
|
|
136
|
+
|
|
135
137
|
def to_directory
|
|
136
138
|
if directory?
|
|
137
139
|
return self
|
|
@@ -139,15 +141,15 @@ module Utopia
|
|
|
139
141
|
return join([''])
|
|
140
142
|
end
|
|
141
143
|
end
|
|
142
|
-
|
|
144
|
+
|
|
143
145
|
def relative?
|
|
144
146
|
@components.first != ''
|
|
145
147
|
end
|
|
146
|
-
|
|
148
|
+
|
|
147
149
|
def absolute?
|
|
148
150
|
@components.first == ''
|
|
149
151
|
end
|
|
150
|
-
|
|
152
|
+
|
|
151
153
|
def to_absolute
|
|
152
154
|
if absolute?
|
|
153
155
|
return self
|
|
@@ -155,11 +157,11 @@ module Utopia
|
|
|
155
157
|
return self.class.new([''] + @components)
|
|
156
158
|
end
|
|
157
159
|
end
|
|
158
|
-
|
|
160
|
+
|
|
159
161
|
def to_relative!
|
|
160
162
|
@components.shift if relative?
|
|
161
163
|
end
|
|
162
|
-
|
|
164
|
+
|
|
163
165
|
def to_str
|
|
164
166
|
if @components == ['']
|
|
165
167
|
SEPARATOR
|
|
@@ -167,21 +169,21 @@ module Utopia
|
|
|
167
169
|
@components.join(SEPARATOR)
|
|
168
170
|
end
|
|
169
171
|
end
|
|
170
|
-
|
|
172
|
+
|
|
171
173
|
alias to_s to_str
|
|
172
174
|
|
|
173
175
|
def to_a
|
|
174
176
|
@components
|
|
175
177
|
end
|
|
176
|
-
|
|
178
|
+
|
|
177
179
|
def join(other)
|
|
178
180
|
self.class.new(@components + other).simplify
|
|
179
181
|
end
|
|
180
|
-
|
|
182
|
+
|
|
181
183
|
def expand(root)
|
|
182
184
|
root + self
|
|
183
185
|
end
|
|
184
|
-
|
|
186
|
+
|
|
185
187
|
def +(other)
|
|
186
188
|
if other.kind_of? Path
|
|
187
189
|
if other.absolute?
|
|
@@ -197,11 +199,11 @@ module Utopia
|
|
|
197
199
|
return join([other.to_s])
|
|
198
200
|
end
|
|
199
201
|
end
|
|
200
|
-
|
|
202
|
+
|
|
201
203
|
def with_prefix(*args)
|
|
202
204
|
self.class.create(*args) + self
|
|
203
205
|
end
|
|
204
|
-
|
|
206
|
+
|
|
205
207
|
# Computes the difference of the path.
|
|
206
208
|
# /a/b/c - /a/b -> c
|
|
207
209
|
# a/b/c - a/b -> c
|
|
@@ -216,10 +218,10 @@ module Utopia
|
|
|
216
218
|
|
|
217
219
|
return self.class.new(@components[i,@components.size])
|
|
218
220
|
end
|
|
219
|
-
|
|
221
|
+
|
|
220
222
|
def simplify
|
|
221
223
|
result = absolute? ? [''] : []
|
|
222
|
-
|
|
224
|
+
|
|
223
225
|
@components.each do |bit|
|
|
224
226
|
if bit == ".."
|
|
225
227
|
result.pop
|
|
@@ -227,18 +229,20 @@ module Utopia
|
|
|
227
229
|
result << bit
|
|
228
230
|
end
|
|
229
231
|
end
|
|
230
|
-
|
|
232
|
+
|
|
231
233
|
result << '' if directory?
|
|
232
234
|
|
|
233
235
|
return self.class.new(result)
|
|
234
236
|
end
|
|
235
|
-
|
|
237
|
+
|
|
238
|
+
# @return [String] the last path component without any file extension.
|
|
236
239
|
def basename
|
|
237
240
|
basename, _ = @components.last.split('.', 2)
|
|
238
241
|
|
|
239
242
|
return basename || ''
|
|
240
243
|
end
|
|
241
244
|
|
|
245
|
+
# @return [String] the last path component's file extension.
|
|
242
246
|
def extension
|
|
243
247
|
_, extension = @components.last.split('.', 2)
|
|
244
248
|
|
|
@@ -247,14 +251,14 @@ module Utopia
|
|
|
247
251
|
|
|
248
252
|
def dirname(count = 1)
|
|
249
253
|
path = self.class.new(@components[0...-count])
|
|
250
|
-
|
|
254
|
+
|
|
251
255
|
return absolute? ? path.to_absolute : path
|
|
252
256
|
end
|
|
253
|
-
|
|
254
|
-
def
|
|
257
|
+
|
|
258
|
+
def local_path(separator = File::SEPARATOR)
|
|
255
259
|
@components.join(separator)
|
|
256
260
|
end
|
|
257
|
-
|
|
261
|
+
|
|
258
262
|
def descend(&block)
|
|
259
263
|
return to_enum(:descend) unless block_given?
|
|
260
264
|
|
|
@@ -278,7 +282,7 @@ module Utopia
|
|
|
278
282
|
components.pop
|
|
279
283
|
end
|
|
280
284
|
end
|
|
281
|
-
|
|
285
|
+
|
|
282
286
|
def split(at)
|
|
283
287
|
if at.kind_of? String
|
|
284
288
|
at = @components.index(at)
|
|
@@ -290,15 +294,15 @@ module Utopia
|
|
|
290
294
|
return nil
|
|
291
295
|
end
|
|
292
296
|
end
|
|
293
|
-
|
|
297
|
+
|
|
294
298
|
def dup
|
|
295
299
|
return Path.new(components.dup)
|
|
296
300
|
end
|
|
297
|
-
|
|
301
|
+
|
|
298
302
|
def <=> other
|
|
299
303
|
@components <=> other.components
|
|
300
304
|
end
|
|
301
|
-
|
|
305
|
+
|
|
302
306
|
def eql? other
|
|
303
307
|
self.class.eql?(other.class) and @components.eql?(other.components)
|
|
304
308
|
end
|
data/lib/utopia/version.rb
CHANGED
data/setup/site/Gemfile
CHANGED
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
source 'https://rubygems.org'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
# gem 'utopia-
|
|
5
|
+
group :preload do
|
|
6
|
+
gem 'utopia', '~> $UTOPIA_VERSION'
|
|
7
|
+
# gem 'utopia-gallery'
|
|
8
|
+
# gem 'utopia-analytics'
|
|
9
|
+
|
|
10
|
+
gem 'variant'
|
|
11
|
+
end
|
|
8
12
|
|
|
9
13
|
gem 'rake'
|
|
10
14
|
gem 'bake'
|
|
11
|
-
gem 'variant'
|
|
12
15
|
gem 'bundler'
|
|
13
|
-
|
|
14
16
|
gem 'rack-test'
|
|
15
17
|
|
|
16
18
|
group :development do
|
data/spec/utopia/command_spec.rb
CHANGED
|
@@ -34,7 +34,7 @@ RSpec.describe "utopia command" do
|
|
|
34
34
|
|
|
35
35
|
before(:all) do
|
|
36
36
|
# We need to build a package to test deployment:
|
|
37
|
-
system("
|
|
37
|
+
system("bundle", "exec", "bake", "bundler:build") or abort("Could not build package for setup spec!")
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
around(:each) do |example|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -27,75 +27,192 @@ RSpec.describe Utopia::Content::Links do
|
|
|
27
27
|
let(:root) {File.expand_path("links", __dir__)}
|
|
28
28
|
subject {described_class.new(root)}
|
|
29
29
|
|
|
30
|
-
describe '
|
|
31
|
-
subject{Utopia::Content::Links::INDEX_XNODE_FILTER}
|
|
32
|
-
|
|
30
|
+
describe '#index_filter' do
|
|
33
31
|
it "should match index" do
|
|
34
|
-
expect("index.xnode").to match(subject)
|
|
32
|
+
expect("index.xnode").to match(subject.index_filter)
|
|
35
33
|
end
|
|
36
34
|
|
|
37
35
|
it "should not match invalid index" do
|
|
38
|
-
expect("old-index.xnode").to_not match(subject)
|
|
36
|
+
expect("old-index.xnode").to_not match(subject.index_filter)
|
|
39
37
|
end
|
|
40
38
|
end
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
context 'matching name' do
|
|
41
|
+
it "can match named link" do
|
|
42
|
+
links = subject.index("/", name: "welcome")
|
|
43
|
+
|
|
44
|
+
expect(links.size).to be == 1
|
|
45
|
+
expect(links[0].name).to be == "welcome"
|
|
46
|
+
end
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
it "doesn't match partial names" do
|
|
49
|
+
links = subject.index("/", name: "come")
|
|
50
|
+
|
|
51
|
+
expect(links).to be_empty
|
|
52
|
+
end
|
|
46
53
|
end
|
|
47
54
|
|
|
48
|
-
|
|
49
|
-
links
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
expect(links[0].href).to be == nil
|
|
55
|
-
|
|
56
|
-
expect(links[1].title).to be == "Welcome"
|
|
57
|
-
expect(links[1].to_href).to be == '<a class="link" href="/welcome">Welcome</a>'
|
|
58
|
-
expect(links[1].kind).to be == :file
|
|
59
|
-
expect(links[1].href).to be == "/welcome"
|
|
60
|
-
expect(links[1].name).to be == 'welcome'
|
|
61
|
-
|
|
62
|
-
expect(links[2].title).to be == 'Foo Bar'
|
|
63
|
-
expect(links[2].kind).to be == :directory
|
|
64
|
-
expect(links[2].href).to be == "/foo/index"
|
|
65
|
-
expect(links[2].name).to be == 'foo'
|
|
66
|
-
|
|
67
|
-
expect(links[1]).to be_eql links[1]
|
|
68
|
-
expect(links[0]).to_not be_eql links[1]
|
|
55
|
+
context 'with name filter' do
|
|
56
|
+
it "should filter links by name" do
|
|
57
|
+
links = subject.index("/", name: /foo/)
|
|
58
|
+
|
|
59
|
+
expect(links.size).to be == 1
|
|
60
|
+
end
|
|
69
61
|
end
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
63
|
+
context 'without locale' do
|
|
64
|
+
it "should index all links" do
|
|
65
|
+
links = subject.index("/foo")
|
|
66
|
+
expect(links.size).to be == 2
|
|
67
|
+
|
|
68
|
+
expect(links[0].name).to be == "test"
|
|
69
|
+
expect(links[0].locale).to be == "de"
|
|
70
|
+
|
|
71
|
+
expect(links[1].name).to be == "test"
|
|
72
|
+
expect(links[1].locale).to be == "en"
|
|
73
|
+
end
|
|
75
74
|
end
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
context 'with locale' do
|
|
77
|
+
it "should select localized links" do
|
|
78
|
+
links = subject.index("/foo", locale: 'en')
|
|
79
|
+
expect(links.size).to be == 1
|
|
80
|
+
|
|
81
|
+
expect(links[0].name).to be == "test"
|
|
82
|
+
expect(links[0].locale).to be == "en"
|
|
83
|
+
end
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
context 'localized links' do
|
|
86
|
+
context 'with localized links' do
|
|
87
87
|
let(:root) {File.expand_path("localized", __dir__)}
|
|
88
88
|
|
|
89
89
|
it "should read correct link order for en" do
|
|
90
|
-
links = subject.index(
|
|
90
|
+
links = subject.index("/", locale: 'en')
|
|
91
91
|
|
|
92
92
|
expect(links.collect(&:title)).to be == ['One', 'Two', 'Three', 'Four', 'Five']
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
it "should read correct link order for zh" do
|
|
96
|
-
links = subject.index(
|
|
96
|
+
links = subject.index("/", locale: 'zh')
|
|
97
97
|
|
|
98
98
|
expect(links.collect(&:title)).to be == ['One', 'Two', 'Three', '四']
|
|
99
99
|
end
|
|
100
100
|
end
|
|
101
|
+
|
|
102
|
+
describe '#index' do
|
|
103
|
+
it "should give a list of links" do
|
|
104
|
+
links = subject.index("/")
|
|
105
|
+
|
|
106
|
+
expect(links.size).to be == 4
|
|
107
|
+
|
|
108
|
+
expect(links[0].title).to be == "Welcome"
|
|
109
|
+
expect(links[0].kind).to be == :file
|
|
110
|
+
expect(links[0].name).to be == 'welcome'
|
|
111
|
+
expect(links[0].locale).to be_nil
|
|
112
|
+
expect(links[0].path).to be == ['', 'welcome']
|
|
113
|
+
expect(links[0].href).to be == "/welcome"
|
|
114
|
+
expect(links[0].to_href).to be == '<a class="link" href="/welcome">Welcome</a>'
|
|
115
|
+
|
|
116
|
+
expect(links[1].title).to be == 'Foo Bar'
|
|
117
|
+
expect(links[1].kind).to be == :directory
|
|
118
|
+
expect(links[1].name).to be == 'foo'
|
|
119
|
+
expect(links[1].locale).to be_nil
|
|
120
|
+
expect(links[1].path).to be == ['', 'foo', 'index']
|
|
121
|
+
expect(links[1].href).to be == "/foo/index"
|
|
122
|
+
|
|
123
|
+
expect(links[2].title).to be == 'Bar'
|
|
124
|
+
expect(links[2].kind).to be == :directory
|
|
125
|
+
expect(links[2].name).to be == 'bar'
|
|
126
|
+
expect(links[2].locale).to be_nil
|
|
127
|
+
expect(links[2].path).to be == ['', 'bar', 'index']
|
|
128
|
+
expect(links[2].href).to be == "/bar/index"
|
|
129
|
+
|
|
130
|
+
expect(links[3].title).to be == 'Redirect'
|
|
131
|
+
expect(links[3].kind).to be == :directory
|
|
132
|
+
expect(links[3].name).to be == 'redirect'
|
|
133
|
+
expect(links[3].locale).to be_nil
|
|
134
|
+
expect(links[3].path).to be == ['', 'redirect']
|
|
135
|
+
expect(links[3].href).to be == "https://www.codeotaku.com"
|
|
136
|
+
|
|
137
|
+
expect(links[1]).to be_eql links[1]
|
|
138
|
+
expect(links[0]).to_not be_eql links[1]
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "can list directories" do
|
|
142
|
+
links = subject.index("/bar")
|
|
143
|
+
|
|
144
|
+
expect(links.size).to be == 1
|
|
145
|
+
|
|
146
|
+
expect(links[0].title).to be == "Parent?"
|
|
147
|
+
expect(links[0].kind).to be == :directory
|
|
148
|
+
expect(links[0].name).to be == "parent"
|
|
149
|
+
expect(links[0].locale).to be_nil
|
|
150
|
+
expect(links[0].path).to be == ['', 'bar', 'parent']
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "can list directories with multiple localized indexes" do
|
|
154
|
+
links = subject.index("/bar/parent").sort_by(&:locale)
|
|
155
|
+
|
|
156
|
+
expect(links.size).to be == 2
|
|
157
|
+
|
|
158
|
+
expect(links[0].title).to be == "Child"
|
|
159
|
+
expect(links[0].kind).to be == :directory
|
|
160
|
+
expect(links[0].name).to be == "child"
|
|
161
|
+
expect(links[0].locale).to be == 'en'
|
|
162
|
+
expect(links[0].path).to be == ['', 'bar', 'parent', 'child', 'index']
|
|
163
|
+
|
|
164
|
+
expect(links[1].title).to be == "Child"
|
|
165
|
+
expect(links[1].kind).to be == :directory
|
|
166
|
+
expect(links[1].name).to be == "child"
|
|
167
|
+
expect(links[1].locale).to be == 'ja'
|
|
168
|
+
expect(links[1].path).to be == ['', 'bar', 'parent', 'child', 'index']
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it "can get title of /index" do
|
|
172
|
+
links = subject.index("/", indices: true, name: "index")
|
|
173
|
+
|
|
174
|
+
expect(links.size).to be 1
|
|
175
|
+
|
|
176
|
+
link = links.first
|
|
177
|
+
|
|
178
|
+
expect(link.title).to be == "Home"
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it "can get title of /foo/index" do
|
|
182
|
+
links = subject.index("/foo", indices: true, name: "index")
|
|
183
|
+
|
|
184
|
+
expect(links.size).to be 1
|
|
185
|
+
|
|
186
|
+
link = links.first
|
|
187
|
+
|
|
188
|
+
expect(link.title).to be == "Foo Bar"
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it "can get title of /bar/index" do
|
|
192
|
+
links = subject.index("/bar", indices: true, name: "index")
|
|
193
|
+
|
|
194
|
+
expect(links.size).to be 1
|
|
195
|
+
|
|
196
|
+
link = links.first
|
|
197
|
+
|
|
198
|
+
expect(link.title).to be == "Bar"
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
describe '#for' do
|
|
203
|
+
it "can get title of /index" do
|
|
204
|
+
link = subject.for(Utopia::Path["/index"])
|
|
205
|
+
expect(link.title).to be == "Home"
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it "can get title of /foo/index" do
|
|
209
|
+
link = subject.for(Utopia::Path["/foo/index"])
|
|
210
|
+
expect(link.title).to be == "Foo Bar"
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
it "can get title of /bar/index" do
|
|
214
|
+
link = subject.for(Utopia::Path["/bar/index"])
|
|
215
|
+
expect(link.title).to be == "Bar"
|
|
216
|
+
end
|
|
217
|
+
end
|
|
101
218
|
end
|