utopia 2.13.4 → 2.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bake/utopia/{yarn.rb → node.rb} +13 -5
- data/lib/.DS_Store +0 -0
- data/lib/utopia/.DS_Store +0 -0
- data/lib/utopia/command.rb +2 -2
- data/lib/utopia/command/site.rb +1 -1
- data/lib/utopia/content.rb +23 -19
- data/lib/utopia/content/.DS_Store +0 -0
- data/lib/utopia/content/link.rb +29 -34
- data/lib/utopia/content/links.rb +185 -123
- data/lib/utopia/content/markup.rb +1 -1
- data/lib/utopia/content/node.rb +15 -19
- data/lib/utopia/content/response.rb +5 -5
- data/lib/utopia/controller.rb +0 -17
- data/lib/utopia/controller/.DS_Store +0 -0
- data/lib/utopia/controller/base.rb +27 -3
- data/lib/utopia/controller/respond.rb +50 -107
- data/lib/utopia/extensions/array_split.rb +2 -2
- data/lib/utopia/http.rb +3 -3
- data/lib/utopia/localization.rb +18 -10
- data/lib/utopia/middleware.rb +2 -2
- data/lib/utopia/path.rb +40 -36
- data/lib/utopia/redirection.rb +0 -2
- data/lib/utopia/responder.rb +76 -0
- data/lib/utopia/version.rb +1 -1
- data/setup/.DS_Store +0 -0
- data/setup/server/.DS_Store +0 -0
- data/setup/site/.DS_Store +0 -0
- data/setup/site/.gitignore +8 -7
- data/setup/site/Gemfile +7 -5
- data/setup/site/pages/.DS_Store +0 -0
- data/setup/site/public/.DS_Store +0 -0
- metadata +81 -603
- data/.codeclimate.yml +0 -5
- data/.gitignore +0 -8
- data/.rspec +0 -4
- data/.travis.yml +0 -28
- data/.yardopts +0 -2
- data/Gemfile +0 -28
- data/README.md +0 -92
- data/Rakefile +0 -33
- data/benchmark/call_vs_check.rb +0 -38
- data/benchmark/const_vs_hash.rb +0 -35
- data/benchmark/hash_vs_openstruct.rb +0 -54
- data/benchmark/string_vs_symbol.rb +0 -14
- data/benchmark/struct_vs_class.rb +0 -91
- data/docs/.nojekyll +0 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +0 -6
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +0 -5
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +0 -8
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +0 -6
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +0 -10
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +0 -3
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.css.css +0 -14
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +0 -16
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.html.css +0 -5
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +0 -3
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +0 -2
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.python.css +0 -6
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +0 -2
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +0 -18
- data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +0 -62
- data/docs/_components/jquery-syntax/base/jquery.syntax.editor.css +0 -6
- data/docs/_components/jquery-syntax/base/theme.js +0 -1
- data/docs/_components/jquery-syntax/bright/jquery.syntax.core.css +0 -27
- data/docs/_components/jquery-syntax/bright/theme.js +0 -1
- data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +0 -41
- data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +0 -57
- data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +0 -37
- data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +0 -67
- data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +0 -33
- data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +0 -51
- data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +0 -89
- data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +0 -47
- data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +0 -80
- data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +0 -24
- data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +0 -47
- data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +0 -45
- data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +0 -66
- data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +0 -45
- data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +0 -45
- data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +0 -40
- data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +0 -29
- data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +0 -34
- data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +0 -44
- data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +0 -31
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +0 -73
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +0 -46
- data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +0 -51
- data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +0 -52
- data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +0 -48
- data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +0 -15
- data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +0 -10
- data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +0 -43
- data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +0 -44
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +0 -77
- data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +0 -44
- data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +0 -29
- data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +0 -31
- data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +0 -57
- data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +0 -55
- data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +0 -35
- data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +0 -50
- data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +0 -29
- data/docs/_components/jquery-syntax/jquery.syntax.cache.js +0 -65
- data/docs/_components/jquery-syntax/jquery.syntax.core.js +0 -1098
- data/docs/_components/jquery-syntax/jquery.syntax.editor.js +0 -291
- data/docs/_components/jquery-syntax/jquery.syntax.js +0 -258
- data/docs/_components/jquery-syntax/jquery.syntax.min.js +0 -13
- data/docs/_components/jquery-syntax/paper/jquery.syntax.core.css +0 -31
- data/docs/_components/jquery-syntax/paper/theme.js +0 -1
- data/docs/_components/jquery/core.js +0 -482
- data/docs/_components/jquery/jquery.js +0 -10220
- data/docs/_components/jquery/jquery.min.js +0 -4
- data/docs/_components/jquery/jquery.min.map +0 -1
- data/docs/_components/jquery/jquery.slim.js +0 -8107
- data/docs/_components/jquery/jquery.slim.min.js +0 -4
- data/docs/_components/jquery/jquery.slim.min.map +0 -1
- data/docs/_static/icon.png +0 -0
- data/docs/_static/site.css +0 -205
- 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/index.html +0 -92
- data/docs/wiki.html +0 -92
- data/docs/wiki/development-environment-setup.html +0 -60
- data/docs/wiki/development-environment-setup/index.html +0 -60
- data/docs/wiki/edit.html +0 -103
- data/docs/wiki/faq/what-is-xnode.html +0 -79
- 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.html +0 -64
- data/docs/wiki/middleware/content/index.html +0 -64
- data/docs/wiki/middleware/controller.html +0 -104
- data/docs/wiki/middleware/controller/actions.html +0 -117
- 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.html +0 -111
- data/docs/wiki/middleware/controller/rewrite/index.html +0 -111
- data/docs/wiki/middleware/localization.html +0 -59
- data/docs/wiki/middleware/localization/index.html +0 -59
- data/docs/wiki/middleware/redirection.html +0 -61
- data/docs/wiki/middleware/redirection/index.html +0 -61
- data/docs/wiki/middleware/session.html +0 -71
- data/docs/wiki/middleware/session/index.html +0 -71
- data/docs/wiki/middleware/static.html +0 -57
- data/docs/wiki/middleware/static/index.html +0 -57
- data/docs/wiki/server-setup.html +0 -118
- data/docs/wiki/server-setup/index.html +0 -118
- data/docs/wiki/testing.html +0 -59
- data/docs/wiki/testing/index.html +0 -59
- data/docs/wiki/updating-utopia.html +0 -108
- data/docs/wiki/updating-utopia/index.html +0 -108
- data/docs/wiki/your-first-page.html +0 -80
- 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/content.md +0 -35
- data/documentation/pages/wiki/controller.rb +0 -48
- data/documentation/pages/wiki/development-environment-setup/content.md +0 -16
- data/documentation/pages/wiki/edit.xnode +0 -10
- data/documentation/pages/wiki/faq/what-is-xnode/content.md +0 -37
- data/documentation/pages/wiki/javascript/content.md +0 -75
- data/documentation/pages/wiki/links.yaml +0 -6
- data/documentation/pages/wiki/middleware/content/content.md +0 -21
- data/documentation/pages/wiki/middleware/controller/actions/content.md +0 -76
- data/documentation/pages/wiki/middleware/controller/content.md +0 -62
- data/documentation/pages/wiki/middleware/controller/links.yaml +0 -4
- data/documentation/pages/wiki/middleware/controller/rewrite/content.md +0 -69
- data/documentation/pages/wiki/middleware/localization/content.md +0 -16
- data/documentation/pages/wiki/middleware/redirection/content.md +0 -17
- data/documentation/pages/wiki/middleware/session/content.md +0 -29
- data/documentation/pages/wiki/middleware/static/content.md +0 -13
- data/documentation/pages/wiki/server-setup/content.md +0 -52
- data/documentation/pages/wiki/show.xnode +0 -12
- data/documentation/pages/wiki/testing/content.md +0 -15
- data/documentation/pages/wiki/updating-utopia/content.md +0 -63
- data/documentation/pages/wiki/your-first-page/content.md +0 -38
- 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/materials/utopia.png +0 -0
- data/materials/utopia.svg +0 -1
- data/setup/site/.yarnrc +0 -1
- data/spec/mock_node.rb +0 -16
- data/spec/spec_helper.rb +0 -13
- data/spec/utopia/command_spec.rb +0 -164
- data/spec/utopia/content/document_spec.rb +0 -60
- data/spec/utopia/content/link_spec.rb +0 -47
- data/spec/utopia/content/links/foo/index.xnode +0 -0
- data/spec/utopia/content/links/foo/links.yaml +0 -2
- data/spec/utopia/content/links/foo/test.de.xnode +0 -0
- data/spec/utopia/content/links/foo/test.en.xnode +0 -0
- data/spec/utopia/content/links/links.yaml +0 -9
- data/spec/utopia/content/links/welcome.xnode +0 -0
- data/spec/utopia/content/links_spec.rb +0 -101
- data/spec/utopia/content/localized/five/index.en.xnode +0 -0
- data/spec/utopia/content/localized/four/index.en.xnode +0 -0
- data/spec/utopia/content/localized/four/index.zh.xnode +0 -0
- data/spec/utopia/content/localized/four/links.yaml +0 -4
- data/spec/utopia/content/localized/links.yaml +0 -16
- data/spec/utopia/content/localized/one.xnode +0 -0
- data/spec/utopia/content/localized/three/index.xnode +0 -0
- data/spec/utopia/content/localized/two.en.xnode +0 -0
- data/spec/utopia/content/localized/two.zh.xnode +0 -0
- data/spec/utopia/content/markup_spec.rb +0 -96
- data/spec/utopia/content/namespace_spec.rb +0 -45
- data/spec/utopia/content/node/lookup/content.xnode +0 -1
- data/spec/utopia/content/node/lookup/index.xnode +0 -1
- data/spec/utopia/content/node/ordered/first.xnode +0 -0
- data/spec/utopia/content/node/ordered/index.xnode +0 -0
- data/spec/utopia/content/node/ordered/links.yaml +0 -4
- data/spec/utopia/content/node/ordered/second.xnode +0 -0
- data/spec/utopia/content/node/related/foo.en.xnode +0 -0
- data/spec/utopia/content/node/related/foo.ja.xnode +0 -0
- data/spec/utopia/content/node/related/links.yaml +0 -4
- data/spec/utopia/content/node_spec.rb +0 -97
- data/spec/utopia/content/response_spec.rb +0 -54
- data/spec/utopia/content/tags_spec.rb +0 -82
- data/spec/utopia/content_spec.rb +0 -100
- data/spec/utopia/content_spec.ru +0 -6
- data/spec/utopia/content_spec/_heading.xnode +0 -1
- data/spec/utopia/content_spec/content/_show-value.xnode +0 -1
- data/spec/utopia/content_spec/content/links.yaml +0 -2
- data/spec/utopia/content_spec/content/test-partial.xnode +0 -1
- data/spec/utopia/content_spec/index.xnode +0 -1
- data/spec/utopia/content_spec/node/index.xnode +0 -1
- data/spec/utopia/content_spec/test.xnode +0 -10
- data/spec/utopia/controller/actions_spec.rb +0 -62
- data/spec/utopia/controller/middleware_spec.rb +0 -88
- data/spec/utopia/controller/middleware_spec.ru +0 -6
- data/spec/utopia/controller/middleware_spec/controller/controller.rb +0 -27
- data/spec/utopia/controller/middleware_spec/controller/index.xnode +0 -1
- data/spec/utopia/controller/middleware_spec/controller/nested/controller.rb +0 -7
- data/spec/utopia/controller/middleware_spec/empty/controller.rb +0 -0
- data/spec/utopia/controller/middleware_spec/redirect/controller.rb +0 -12
- data/spec/utopia/controller/middleware_spec/redirect/test/controller.rb +0 -9
- data/spec/utopia/controller/respond_spec.rb +0 -174
- data/spec/utopia/controller/respond_spec.ru +0 -12
- data/spec/utopia/controller/respond_spec/api/controller.rb +0 -28
- data/spec/utopia/controller/respond_spec/errors/controller.rb +0 -14
- data/spec/utopia/controller/respond_spec/errors/file-not-found.xnode +0 -8
- data/spec/utopia/controller/respond_spec/html/controller.rb +0 -11
- data/spec/utopia/controller/respond_spec/rewrite/controller.rb +0 -13
- data/spec/utopia/controller/rewrite_spec.rb +0 -80
- data/spec/utopia/controller/sequence_spec.rb +0 -135
- data/spec/utopia/controller/variables_spec.rb +0 -59
- data/spec/utopia/controller/websocket_spec.rb +0 -68
- data/spec/utopia/controller/websocket_spec.ru +0 -5
- data/spec/utopia/controller/websocket_spec/server/controller.rb +0 -11
- data/spec/utopia/exceptions/handler_spec.rb +0 -47
- data/spec/utopia/exceptions/handler_spec.ru +0 -8
- data/spec/utopia/exceptions/handler_spec/controller.rb +0 -19
- data/spec/utopia/exceptions/mailer_spec.rb +0 -43
- data/spec/utopia/exceptions/mailer_spec.ru +0 -10
- data/spec/utopia/extensions_spec.rb +0 -73
- data/spec/utopia/http/status_spec.rb +0 -44
- data/spec/utopia/locale_spec.rb +0 -58
- data/spec/utopia/localization_spec.rb +0 -92
- data/spec/utopia/localization_spec.ru +0 -15
- data/spec/utopia/localization_spec/controller.rb +0 -21
- data/spec/utopia/localization_spec/localized.de.txt +0 -1
- data/spec/utopia/localization_spec/localized.en.txt +0 -1
- data/spec/utopia/localization_spec/localized.ja.txt +0 -1
- data/spec/utopia/localization_spec/test.txt +0 -1
- data/spec/utopia/middleware_spec.rb +0 -31
- data/spec/utopia/path/matcher_spec.rb +0 -66
- data/spec/utopia/path_spec.rb +0 -162
- data/spec/utopia/performance_spec.rb +0 -92
- data/spec/utopia/performance_spec/cache/head/readme.txt +0 -1
- data/spec/utopia/performance_spec/cache/meta/readme.txt +0 -1
- data/spec/utopia/performance_spec/config.ru +0 -35
- data/spec/utopia/performance_spec/lib/readme.txt +0 -1
- data/spec/utopia/performance_spec/pages/_heading.xnode +0 -2
- data/spec/utopia/performance_spec/pages/_page.xnode +0 -26
- data/spec/utopia/performance_spec/pages/api/controller.rb +0 -8
- data/spec/utopia/performance_spec/pages/errors/exception.xnode +0 -5
- data/spec/utopia/performance_spec/pages/errors/file-not-found.xnode +0 -5
- data/spec/utopia/performance_spec/pages/links.yaml +0 -2
- data/spec/utopia/performance_spec/pages/welcome/index.xnode +0 -17
- data/spec/utopia/rack_helper.rb +0 -32
- data/spec/utopia/redirection_spec.rb +0 -77
- data/spec/utopia/redirection_spec.ru +0 -27
- data/spec/utopia/session_spec.rb +0 -189
- data/spec/utopia/session_spec.ru +0 -24
- data/spec/utopia/setup_spec.rb +0 -56
- data/spec/utopia/static_spec.rb +0 -49
- data/spec/utopia/static_spec.ru +0 -5
- data/spec/utopia/static_spec/test.txt +0 -1
- data/utopia.gemspec +0 -52
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/middleware.rb
CHANGED
|
@@ -39,7 +39,7 @@ module Utopia
|
|
|
39
39
|
|
|
40
40
|
# The same as {default_root} but returns an instance of {Path}.
|
|
41
41
|
# @return [Path] The path as requested.
|
|
42
|
-
def self.default_path(*
|
|
43
|
-
Path[default_root(*
|
|
42
|
+
def self.default_path(*arguments)
|
|
43
|
+
Path[default_root(*arguments)]
|
|
44
44
|
end
|
|
45
45
|
end
|
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,23 +115,25 @@ 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
|
-
|
|
127
|
-
def include?(*
|
|
128
|
-
@components.include?(*
|
|
128
|
+
|
|
129
|
+
def include?(*arguments)
|
|
130
|
+
@components.include?(*arguments)
|
|
129
131
|
end
|
|
130
132
|
|
|
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
|
-
|
|
201
|
-
def with_prefix(*
|
|
202
|
-
self.class.create(*
|
|
202
|
+
|
|
203
|
+
def with_prefix(*arguments)
|
|
204
|
+
self.class.create(*arguments) + 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/redirection.rb
CHANGED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
|
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.
|
|
22
|
+
|
|
23
|
+
require_relative 'middleware'
|
|
24
|
+
|
|
25
|
+
module Utopia
|
|
26
|
+
class Responder
|
|
27
|
+
Handler = Struct.new(:content_type, :block) do
|
|
28
|
+
def split(*arguments)
|
|
29
|
+
self.content_type.split(*arguments)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def call(context, request, media_range, *arguments, **options)
|
|
33
|
+
context.instance_exec(media_range, *arguments, **options, &self.block)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
Responds = Struct.new(:responder, :context, :request) do
|
|
38
|
+
# @todo Refactor `object` -> `*arguments`...
|
|
39
|
+
def with(object, **options)
|
|
40
|
+
responder.call(context, request, object, **options)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def initialize
|
|
45
|
+
@handlers = HTTP::Accept::MediaTypes::Map.new
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
attr :handlers
|
|
49
|
+
|
|
50
|
+
def freeze
|
|
51
|
+
@handlers.freeze
|
|
52
|
+
|
|
53
|
+
super
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def call(context, request, *arguments, **options)
|
|
57
|
+
# Parse the list of browser preferred content types and return ordered by priority:
|
|
58
|
+
media_types = HTTP::Accept::MediaTypes.browser_preferred_media_types(request.env)
|
|
59
|
+
|
|
60
|
+
handler, media_range = @handlers.for(media_types)
|
|
61
|
+
|
|
62
|
+
if handler
|
|
63
|
+
handler.call(context, request, media_range, *arguments, **options)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Add a converter for the specified content type. Call the block with the response content if the request accepts the specified content_type.
|
|
68
|
+
def handle(content_type, &block)
|
|
69
|
+
@handlers << Handler.new(content_type, block)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def respond_to(context, request)
|
|
73
|
+
Responds.new(self, context, request)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
data/lib/utopia/version.rb
CHANGED
data/setup/.DS_Store
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/setup/site/.gitignore
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
# Development specific:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
.bundle
|
|
5
|
-
bin/
|
|
2
|
+
/.rspec_status
|
|
3
|
+
/.bundle
|
|
6
4
|
|
|
7
5
|
# Temporary data should not be added to the repository:
|
|
8
|
-
tmp
|
|
6
|
+
/tmp
|
|
7
|
+
|
|
8
|
+
# Node modules are 3rd party dependencies which can be fetched easily:
|
|
9
|
+
/node_modules
|
|
9
10
|
|
|
10
11
|
# This file should only ever exist on production, and may contain sensitive information:
|
|
11
|
-
config/environment.yaml
|
|
12
|
+
/config/environment.yaml
|
|
12
13
|
|
|
13
14
|
# Ignore resized gallery photos:
|
|
14
|
-
public/_gallery
|
|
15
|
+
/public/_gallery
|
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
|