brut 0.0.20 → 0.0.22
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/.gitignore +24 -3
- data/.nvim.lua +1 -0
- data/Dockerfile.dx +12 -3
- data/Gemfile.lock +9 -7
- data/README.md +0 -7
- data/Rakefile +6 -4
- data/bin/dev +20 -0
- data/bin/docs +27 -0
- data/bin/setup +47 -1
- data/brut-css/.nvim.lua +1 -0
- data/brut-css/README.md +28 -0
- data/brut-css/bin/build +31 -0
- data/brut-css/bin/dev +1 -0
- data/brut-css/bin/docs +15 -0
- data/brut-css/bin/setup +5 -0
- data/brut-css/config/media-queries-all.css +15 -0
- data/brut-css/config/media-queries-minimal.css +5 -0
- data/brut-css/config/postcss.config.cjs +7 -0
- data/brut-css/config/pseudo-classes-all.css +9 -0
- data/brut-css/dx +1 -0
- data/brut-css/package-lock.json +3217 -0
- data/brut-css/package.json +36 -0
- data/brut-css/src/css/appearance.css +145 -0
- data/brut-css/src/css/border.css +522 -0
- data/brut-css/src/css/colors.css +3502 -0
- data/brut-css/src/css/dimensions.css +548 -0
- data/brut-css/src/css/flex.css +179 -0
- data/brut-css/src/css/index.css +13 -0
- data/brut-css/src/css/layout.css +120 -0
- data/brut-css/src/css/list.css +41 -0
- data/brut-css/src/css/positioning.css +354 -0
- data/brut-css/src/css/properties/colors.css +455 -0
- data/brut-css/src/css/properties/index.css +3 -0
- data/brut-css/src/css/properties/spacing.css +140 -0
- data/brut-css/src/css/properties/typography.css +224 -0
- data/brut-css/src/css/reset.css +107 -0
- data/brut-css/src/css/spacing.css +585 -0
- data/brut-css/src/css/typography.css +519 -0
- data/brut-css/src/css/utils.css +104 -0
- data/brut-css/src/docs/1_getting-started/1_overview.md +46 -0
- data/brut-css/src/docs/1_getting-started/2_installation.md +25 -0
- data/brut-css/src/docs/1_getting-started/3_core-concepts.md +75 -0
- data/brut-css/src/docs/1_getting-started/4_simple-example.md +132 -0
- data/brut-css/src/docs/1_getting-started/page.html.ejs +10 -0
- data/brut-css/src/docs/2_properties/page.html.ejs +71 -0
- data/brut-css/src/docs/3_classes/color-demo.html.ejs +31 -0
- data/brut-css/src/docs/3_classes/page.html.ejs +87 -0
- data/brut-css/src/docs/4_customization/1_design-system.md +36 -0
- data/brut-css/src/docs/4_customization/2_breakpoints.md +75 -0
- data/brut-css/src/docs/4_customization/3_pseudo-classes.md +74 -0
- data/brut-css/src/docs/4_customization/4_advanced-configuration.md +40 -0
- data/brut-css/src/docs/4_customization/page.html.ejs +10 -0
- data/brut-css/src/docs/docs.css +98 -0
- data/brut-css/src/docs/includes/body-and-header.html.ejs +30 -0
- data/brut-css/src/docs/includes/footer-and-rest.html.ejs +9 -0
- data/brut-css/src/docs/includes/head.html.ejs +5 -0
- data/brut-css/src/docs/includes/nav.html.ejs +10 -0
- data/brut-css/src/docs/index.html.ejs +32 -0
- data/brut-css/src/docs/prism-twilight.min.css +1 -0
- data/brut-css/src/js/Logger.js +71 -0
- data/brut-css/src/js/build.js +111 -0
- data/brut-css/src/js/cli/CLIArgError.js +7 -0
- data/brut-css/src/js/cli/Debug.js +27 -0
- data/brut-css/src/js/cli/DocsDir.js +16 -0
- data/brut-css/src/js/cli/DocsTemplateSourceDir.js +16 -0
- data/brut-css/src/js/cli/InputFile.js +31 -0
- data/brut-css/src/js/cli/MediaQueryConfigFile.js +10 -0
- data/brut-css/src/js/cli/OutputFile.js +22 -0
- data/brut-css/src/js/cli/ParsedArg.js +17 -0
- data/brut-css/src/js/cli/PathToBrutCSSRoot.js +19 -0
- data/brut-css/src/js/cli/PseudoClassConfigFile.js +11 -0
- data/brut-css/src/js/cli.js +108 -0
- data/brut-css/src/js/docGenerator.js +467 -0
- data/brut-css/src/js/mediaQueryConfigParser.js +98 -0
- data/brut-css/src/js/post-css-plugins/addMediaQueriesPlugin.js +49 -0
- data/brut-css/src/js/post-css-plugins/addPseudoClassesPlugin.js +42 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/Category.js +9 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/DocState.js +185 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/Documentable.js +8 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/Group.js +7 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/ParsedComment.js +73 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/Property.js +9 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/PropertyCategory.js +4 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/PropertyGroup.js +8 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/Rule.js +12 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/RuleCategory.js +4 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/RuleGroup.js +8 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/SeeRef.js +5 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin/SeeURL.js +9 -0
- data/brut-css/src/js/post-css-plugins/generateDocumentationPlugin.js +49 -0
- data/brut-css/src/js/post-css-plugins/generateRootCustomPropertiesPlugin.js +45 -0
- data/brut-css/src/js/pseudoClassConfigParser.js +145 -0
- data/brut-js/.projections.json +10 -0
- data/brut-js/README.md +118 -0
- data/brut-js/bin/build +10 -0
- data/brut-js/bin/ci +5 -0
- data/brut-js/bin/setup +5 -0
- data/brut-js/docs/README.md +8 -0
- data/brut-js/docs/jsdoc-plugins/customElementTag.js +8 -0
- data/brut-js/docs/jsdoc-theme/publish.js +692 -0
- data/brut-js/docs/jsdoc-theme/static/scripts/linenumber.js +25 -0
- data/brut-js/docs/jsdoc-theme/static/scripts/prettify/Apache-License-2.0.txt +202 -0
- data/brut-js/docs/jsdoc-theme/static/scripts/prettify/lang-css.js +2 -0
- data/brut-js/docs/jsdoc-theme/static/scripts/prettify/prettify.js +28 -0
- data/brut-js/docs/jsdoc-theme/static/styles/jsdoc-default.css +327 -0
- data/brut-js/docs/jsdoc-theme/static/styles/prettify-jsdoc.css +111 -0
- data/brut-js/docs/jsdoc-theme/static/styles/prettify-tomorrow.css +132 -0
- data/brut-js/docs/jsdoc-theme/tmpl/augments.tmpl +10 -0
- data/brut-js/docs/jsdoc-theme/tmpl/container.tmpl +199 -0
- data/brut-js/docs/jsdoc-theme/tmpl/details.tmpl +143 -0
- data/brut-js/docs/jsdoc-theme/tmpl/example.tmpl +2 -0
- data/brut-js/docs/jsdoc-theme/tmpl/examples.tmpl +13 -0
- data/brut-js/docs/jsdoc-theme/tmpl/exceptions.tmpl +32 -0
- data/brut-js/docs/jsdoc-theme/tmpl/layout.tmpl +38 -0
- data/brut-js/docs/jsdoc-theme/tmpl/mainpage.tmpl +14 -0
- data/brut-js/docs/jsdoc-theme/tmpl/members.tmpl +38 -0
- data/brut-js/docs/jsdoc-theme/tmpl/method.tmpl +131 -0
- data/brut-js/docs/jsdoc-theme/tmpl/modifies.tmpl +14 -0
- data/brut-js/docs/jsdoc-theme/tmpl/params.tmpl +131 -0
- data/brut-js/docs/jsdoc-theme/tmpl/properties.tmpl +108 -0
- data/brut-js/docs/jsdoc-theme/tmpl/returns.tmpl +19 -0
- data/brut-js/docs/jsdoc-theme/tmpl/source.tmpl +8 -0
- data/brut-js/docs/jsdoc-theme/tmpl/tutorial.tmpl +19 -0
- data/brut-js/docs/jsdoc-theme/tmpl/type.tmpl +7 -0
- data/brut-js/docs/jsdoc.config.json +23 -0
- data/brut-js/docs/package-lock.json +343 -0
- data/brut-js/docs/package.json +7 -0
- data/brut-js/package-lock.json +2171 -0
- data/brut-js/package.json +32 -0
- data/brut-js/specs/AjaxSubmit.spec.js +256 -0
- data/brut-js/specs/Autosubmit.spec.js +127 -0
- data/brut-js/specs/ConfirmSubmit.spec.js +193 -0
- data/brut-js/specs/ConstraintViolationMessage.spec.js +33 -0
- data/brut-js/specs/ConstraintViolationMessages.spec.js +29 -0
- data/brut-js/specs/CopyToClipboard.spec.js +35 -0
- data/brut-js/specs/Form.spec.js +181 -0
- data/brut-js/specs/I18nTranslation.spec.js +19 -0
- data/brut-js/specs/LocaleDetection.spec.js +22 -0
- data/brut-js/specs/Message.spec.js +15 -0
- data/brut-js/specs/SpecHelper.js +23 -0
- data/brut-js/specs/Tabs.spec.js +41 -0
- data/brut-js/specs/config/asset_metadata.json +7 -0
- data/brut-js/src/AjaxSubmit.js +384 -0
- data/brut-js/src/Autosubmit.js +63 -0
- data/brut-js/src/BaseCustomElement.js +261 -0
- data/brut-js/src/ConfirmSubmit.js +116 -0
- data/brut-js/src/ConfirmationDialog.js +143 -0
- data/brut-js/src/ConstraintViolationMessage.js +125 -0
- data/brut-js/src/ConstraintViolationMessages.js +98 -0
- data/brut-js/src/CopyToClipboard.js +96 -0
- data/brut-js/src/Form.js +151 -0
- data/brut-js/src/I18nTranslation.js +61 -0
- data/brut-js/src/LocaleDetection.js +117 -0
- data/brut-js/src/Logger.js +90 -0
- data/brut-js/src/Message.js +56 -0
- data/brut-js/src/RichString.js +113 -0
- data/brut-js/src/Tabs.js +168 -0
- data/brut-js/src/Tracing.js +247 -0
- data/brut-js/src/appForTestingOnly.js +15 -0
- data/brut-js/src/index.js +130 -0
- data/brut-js/src/testing/AssetMetadata.js +35 -0
- data/brut-js/src/testing/AssetMetadataLoader.js +25 -0
- data/brut-js/src/testing/CustomElementTest.js +235 -0
- data/brut-js/src/testing/DOMCreator.js +45 -0
- data/brut-js/src/testing/index.js +48 -0
- data/brutrb.com/.vitepress/config.mjs +106 -0
- data/brutrb.com/.vitepress/plugins/jsdocLinker.js +34 -0
- data/brutrb.com/.vitepress/plugins/rdocLinker.js +18 -0
- data/brutrb.com/.vitepress/theme/custom.css +7 -0
- data/brutrb.com/.vitepress/theme/index.js +18 -0
- data/brutrb.com/.vitepress/theme/style.css +149 -0
- data/brutrb.com/ai.md +68 -0
- data/brutrb.com/assets.md +138 -0
- data/brutrb.com/bin/build +5 -0
- data/brutrb.com/bin/deploy +7 -0
- data/brutrb.com/bin/dev +5 -0
- data/brutrb.com/bin/setup +5 -0
- data/brutrb.com/brut-js.md +117 -0
- data/brutrb.com/business-logic.md +55 -0
- data/brutrb.com/cli.md +278 -0
- data/brutrb.com/components.md +243 -0
- data/brutrb.com/configuration.md +257 -0
- data/brutrb.com/css.md +103 -0
- data/brutrb.com/custom-element-tests.md +149 -0
- data/brutrb.com/database-access.md +201 -0
- data/brutrb.com/database-schema.md +312 -0
- data/brutrb.com/deployment.md +66 -0
- data/brutrb.com/dev-environment.md +179 -0
- data/brutrb.com/doc-conventions.md +39 -0
- data/brutrb.com/end-to-end-tests.md +174 -0
- data/brutrb.com/flash-and-session.md +224 -0
- data/brutrb.com/forms.md +866 -0
- data/brutrb.com/getting-started.md +66 -0
- data/brutrb.com/handlers.md +153 -0
- data/brutrb.com/hooks.md +178 -0
- data/brutrb.com/i18n.md +188 -0
- data/brutrb.com/images/Makefile +10 -0
- data/brutrb.com/images/dev-env-overview.dot +54 -0
- data/brutrb.com/images/dev-env-overview.png +0 -0
- data/brutrb.com/images/dev-env-protocol.dot +37 -0
- data/brutrb.com/images/dev-env-protocol.png +0 -0
- data/brutrb.com/images/logo-300.png +0 -0
- data/brutrb.com/images/logo.png +0 -0
- data/brutrb.com/images/overview.graffle +0 -0
- data/brutrb.com/images/overview.png +0 -0
- data/brutrb.com/images/spa.dot +19 -0
- data/brutrb.com/images/spa.png +0 -0
- data/brutrb.com/images/workspace-protocol.dot +44 -0
- data/brutrb.com/images/workspace-protocol.png +0 -0
- data/brutrb.com/index.md +36 -0
- data/brutrb.com/instrumentation.md +183 -0
- data/brutrb.com/javascript.md +122 -0
- data/brutrb.com/jobs.md +14 -0
- data/{doc-src → brutrb.com}/keyword-injection.md +122 -68
- data/brutrb.com/markdown-examples.md +85 -0
- data/brutrb.com/middleware.md +80 -0
- data/brutrb.com/not-released.md +5 -0
- data/brutrb.com/overview.md +404 -0
- data/brutrb.com/package-lock.json +2404 -0
- data/brutrb.com/package.json +11 -0
- data/brutrb.com/pages.md +378 -0
- data/brutrb.com/public/images/logo-300.png +0 -0
- data/brutrb.com/public/images/logo.png +0 -0
- data/brutrb.com/routes.md +215 -0
- data/brutrb.com/security.md +105 -0
- data/brutrb.com/seed-data.md +63 -0
- data/brutrb.com/space-time-continuum.md +85 -0
- data/brutrb.com/tutorial.md +3 -0
- data/brutrb.com/unit-tests.md +148 -0
- data/docker-compose.dx.yml +6 -3
- data/docs/404.html +21 -0
- data/docs/CNAME +1 -0
- data/docs/ai.html +24 -0
- data/docs/api/Brut/BackEnd/SeedData.html +493 -0
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +214 -0
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +125 -0
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +125 -0
- data/docs/api/Brut/BackEnd/Sidekiq.html +125 -0
- data/docs/api/Brut/BackEnd/Validators/FormValidator.html +414 -0
- data/docs/api/Brut/BackEnd/Validators.html +128 -0
- data/docs/api/Brut/BackEnd.html +132 -0
- data/docs/api/Brut/CLI/App.html +1576 -0
- data/docs/api/Brut/CLI/AppRunner.html +491 -0
- data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +264 -0
- data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +306 -0
- data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +262 -0
- data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +314 -0
- data/docs/api/Brut/CLI/Apps/BuildAssets.html +183 -0
- data/docs/api/Brut/CLI/Apps/DB/Create.html +365 -0
- data/docs/api/Brut/CLI/Apps/DB/Drop.html +357 -0
- data/docs/api/Brut/CLI/Apps/DB/Migrate.html +383 -0
- data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +335 -0
- data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +329 -0
- data/docs/api/Brut/CLI/Apps/DB/Seed.html +347 -0
- data/docs/api/Brut/CLI/Apps/DB/Status.html +383 -0
- data/docs/api/Brut/CLI/Apps/DB.html +183 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +303 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +512 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +398 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +374 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +410 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +262 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +303 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +480 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +450 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +380 -0
- data/docs/api/Brut/CLI/Apps/Scaffold.html +253 -0
- data/docs/api/Brut/CLI/Apps/Test/Audit.html +464 -0
- data/docs/api/Brut/CLI/Apps/Test/E2e.html +407 -0
- data/docs/api/Brut/CLI/Apps/Test/JS.html +262 -0
- data/docs/api/Brut/CLI/Apps/Test/Run.html +578 -0
- data/docs/api/Brut/CLI/Apps/Test.html +253 -0
- data/docs/api/Brut/CLI/Apps.html +125 -0
- data/docs/api/Brut/CLI/Command.html +2342 -0
- data/docs/api/Brut/CLI/Error.html +139 -0
- data/docs/api/Brut/CLI/ExecutionResults/Result.html +664 -0
- data/docs/api/Brut/CLI/ExecutionResults.html +675 -0
- data/docs/api/Brut/CLI/Executor.html +430 -0
- data/docs/api/Brut/CLI/InvalidOption.html +245 -0
- data/docs/api/Brut/CLI/Options.html +753 -0
- data/docs/api/Brut/CLI/Output.html +699 -0
- data/docs/api/Brut/CLI/SystemExecError.html +451 -0
- data/docs/api/Brut/CLI.html +263 -0
- data/docs/api/Brut/FactoryBot.html +225 -0
- data/docs/api/Brut/Framework/App.html +1097 -0
- data/docs/api/Brut/Framework/Config.html +1045 -0
- data/docs/api/Brut/Framework/Container.html +1379 -0
- data/docs/api/Brut/Framework/Error.html +140 -0
- data/docs/api/Brut/Framework/Errors/AbstractMethod.html +144 -0
- data/docs/api/Brut/Framework/Errors/Bug.html +234 -0
- data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +257 -0
- data/docs/api/Brut/Framework/Errors/MissingParameter.html +273 -0
- data/docs/api/Brut/Framework/Errors/NoClassForPath.html +471 -0
- data/docs/api/Brut/Framework/Errors/NotFound.html +308 -0
- data/docs/api/Brut/Framework/Errors/NotImplemented.html +234 -0
- data/docs/api/Brut/Framework/Errors.html +328 -0
- data/docs/api/Brut/Framework/FussyTypeEnforcement.html +392 -0
- data/docs/api/Brut/Framework/MCP.html +861 -0
- data/docs/api/Brut/Framework/ProjectEnvironment.html +648 -0
- data/docs/api/Brut/Framework.html +129 -0
- data/docs/api/Brut/FrontEnd/AssetPathResolver.html +317 -0
- data/docs/api/Brut/FrontEnd/Component/Helpers.html +326 -0
- data/docs/api/Brut/FrontEnd/Component.html +365 -0
- data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +470 -0
- data/docs/api/Brut/FrontEnd/Components/FormTag.html +518 -0
- data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +317 -0
- data/docs/api/Brut/FrontEnd/Components/Input.html +195 -0
- data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +339 -0
- data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +660 -0
- data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +417 -0
- data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +918 -0
- data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +651 -0
- data/docs/api/Brut/FrontEnd/Components/Inputs.html +125 -0
- data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +367 -0
- data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +336 -0
- data/docs/api/Brut/FrontEnd/Components/TimeTag.html +655 -0
- data/docs/api/Brut/FrontEnd/Components/Traceparent.html +352 -0
- data/docs/api/Brut/FrontEnd/Components.html +135 -0
- data/docs/api/Brut/FrontEnd/Download.html +467 -0
- data/docs/api/Brut/FrontEnd/Flash.html +1150 -0
- data/docs/api/Brut/FrontEnd/Form.html +1157 -0
- data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +634 -0
- data/docs/api/Brut/FrontEnd/Forms/Input.html +615 -0
- data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +547 -0
- data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1318 -0
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +609 -0
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +587 -0
- data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +613 -0
- data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +582 -0
- data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +609 -0
- data/docs/api/Brut/FrontEnd/Forms.html +127 -0
- data/docs/api/Brut/FrontEnd/GenericResponse.html +377 -0
- data/docs/api/Brut/FrontEnd/Handler.html +442 -0
- data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +318 -0
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +336 -0
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +399 -0
- data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +354 -0
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +151 -0
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +315 -0
- data/docs/api/Brut/FrontEnd/Handlers.html +125 -0
- data/docs/api/Brut/FrontEnd/HandlingResults.html +339 -0
- data/docs/api/Brut/FrontEnd/HttpMethod.html +661 -0
- data/docs/api/Brut/FrontEnd/HttpStatus.html +496 -0
- data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +284 -0
- data/docs/api/Brut/FrontEnd/Layout.html +318 -0
- data/docs/api/Brut/FrontEnd/Middleware.html +135 -0
- data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +288 -0
- data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +292 -0
- data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +324 -0
- data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +372 -0
- data/docs/api/Brut/FrontEnd/Middlewares.html +125 -0
- data/docs/api/Brut/FrontEnd/Page.html +773 -0
- data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +797 -0
- data/docs/api/Brut/FrontEnd/Pages.html +125 -0
- data/docs/api/Brut/FrontEnd/RequestContext.html +1312 -0
- data/docs/api/Brut/FrontEnd/RouteHook.html +424 -0
- data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +242 -0
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +249 -0
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +264 -0
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +261 -0
- data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +284 -0
- data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +252 -0
- data/docs/api/Brut/FrontEnd/RouteHooks.html +115 -0
- data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +227 -0
- data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +305 -0
- data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +324 -0
- data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +319 -0
- data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +315 -0
- data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +315 -0
- data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +327 -0
- data/docs/api/Brut/FrontEnd/Routing/Route.html +761 -0
- data/docs/api/Brut/FrontEnd/Routing.html +927 -0
- data/docs/api/Brut/FrontEnd/Session.html +1195 -0
- data/docs/api/Brut/FrontEnd.html +134 -0
- data/docs/api/Brut/I18n/BaseMethods.html +931 -0
- data/docs/api/Brut/I18n/ForBackEnd.html +302 -0
- data/docs/api/Brut/I18n/ForCLI.html +302 -0
- data/docs/api/Brut/I18n/ForHTML.html +296 -0
- data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +316 -0
- data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +930 -0
- data/docs/api/Brut/I18n.html +127 -0
- data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +435 -0
- data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +286 -0
- data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +302 -0
- data/docs/api/Brut/Instrumentation/OpenTelemetry.html +864 -0
- data/docs/api/Brut/Instrumentation.html +126 -0
- data/docs/api/Brut/SinatraHelpers/ClassMethods.html +532 -0
- data/docs/api/Brut/SinatraHelpers.html +281 -0
- data/docs/api/Brut/SpecSupport/ClockSupport.html +383 -0
- data/docs/api/Brut/SpecSupport/ComponentSupport.html +502 -0
- data/docs/api/Brut/SpecSupport/E2ETestServer.html +503 -0
- data/docs/api/Brut/SpecSupport/E2eSupport.html +142 -0
- data/docs/api/Brut/SpecSupport/EnhancedNode.html +403 -0
- data/docs/api/Brut/SpecSupport/FlashSupport.html +278 -0
- data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +401 -0
- data/docs/api/Brut/SpecSupport/GeneralSupport.html +195 -0
- data/docs/api/Brut/SpecSupport/HandlerSupport.html +160 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +553 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +439 -0
- data/docs/api/Brut/SpecSupport/Matchers.html +125 -0
- data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +335 -0
- data/docs/api/Brut/SpecSupport/RSpecSetup.html +602 -0
- data/docs/api/Brut/SpecSupport/SessionSupport.html +196 -0
- data/docs/api/Brut/SpecSupport.html +129 -0
- data/docs/api/Brut.html +225 -0
- data/docs/api/Clock.html +603 -0
- data/docs/api/RichString.html +968 -0
- data/docs/api/SemanticLogger/Appender/Async.html +219 -0
- data/docs/api/Sequel/Extensions/BrutInstrumentation.html +115 -0
- data/docs/api/Sequel/Extensions/BrutMigrations.html +533 -0
- data/docs/api/Sequel/Extensions.html +117 -0
- data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +105 -0
- data/docs/api/Sequel/Plugins/CreatedAt.html +125 -0
- data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +207 -0
- data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +186 -0
- data/docs/api/Sequel/Plugins/ExternalId.html +218 -0
- data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +202 -0
- data/docs/api/Sequel/Plugins/FindBang.html +125 -0
- data/docs/api/Sequel/Plugins.html +117 -0
- data/docs/api/Sequel.html +117 -0
- data/docs/api/_index.html +1553 -0
- data/docs/api/class_list.html +54 -0
- data/docs/api/css/common.css +1 -0
- data/docs/api/css/full_list.css +58 -0
- data/docs/api/css/style.css +503 -0
- data/docs/api/file.README.html +127 -0
- data/docs/api/file_list.html +59 -0
- data/docs/api/frames.html +22 -0
- data/docs/api/index.html +127 -0
- data/docs/api/js/app.js +344 -0
- data/docs/api/js/full_list.js +242 -0
- data/docs/api/js/jquery.js +4 -0
- data/docs/api/method_list.html +3998 -0
- data/docs/api/top-level-namespace.html +112 -0
- data/docs/assets/ai.md.tZrjP9im.js +1 -0
- data/docs/assets/ai.md.tZrjP9im.lean.js +1 -0
- data/docs/assets/app.D_yaTITQ.js +1 -0
- data/docs/assets/assets.md.D3wunzLx.js +19 -0
- data/docs/assets/assets.md.D3wunzLx.lean.js +1 -0
- data/docs/assets/brut-js.md.o2DAO2s2.js +12 -0
- data/docs/assets/brut-js.md.o2DAO2s2.lean.js +1 -0
- data/docs/assets/business-logic.md.BY4hGy0m.js +1 -0
- data/docs/assets/business-logic.md.BY4hGy0m.lean.js +1 -0
- data/docs/assets/chunks/@localSearchIndexroot.BsN5i0Fi.js +1 -0
- data/docs/assets/chunks/VPLocalSearchBox.B2-ZzyTY.js +8 -0
- data/docs/assets/chunks/framework.1L-BeKqY.js +18 -0
- data/docs/assets/chunks/theme.CfGFVRvE.js +2 -0
- data/docs/assets/cli.md.RmeA2b0i.js +127 -0
- data/docs/assets/cli.md.RmeA2b0i.lean.js +1 -0
- data/docs/assets/components.md.eCttGlN-.js +104 -0
- data/docs/assets/components.md.eCttGlN-.lean.js +1 -0
- data/docs/assets/configuration.md.BRriU0cL.js +78 -0
- data/docs/assets/configuration.md.BRriU0cL.lean.js +1 -0
- data/docs/assets/css.md.DJgj2clw.js +21 -0
- data/docs/assets/css.md.DJgj2clw.lean.js +1 -0
- data/docs/assets/custom-element-tests.md.BrYJQEl3.js +69 -0
- data/docs/assets/custom-element-tests.md.BrYJQEl3.lean.js +1 -0
- data/docs/assets/database-access.md.C7l-Vuvb.js +63 -0
- data/docs/assets/database-access.md.C7l-Vuvb.lean.js +1 -0
- data/docs/assets/database-schema.md.BUjR0VS1.js +63 -0
- data/docs/assets/database-schema.md.BUjR0VS1.lean.js +1 -0
- data/docs/assets/deployment.md.Dbka4OTr.js +1 -0
- data/docs/assets/deployment.md.Dbka4OTr.lean.js +1 -0
- data/docs/assets/dev-env-overview.Gj7NWM8-.png +0 -0
- data/docs/assets/dev-env-protocol.DysDAtnz.png +0 -0
- data/docs/assets/dev-environment.md.BNc8AYiK.js +11 -0
- data/docs/assets/dev-environment.md.BNc8AYiK.lean.js +1 -0
- data/docs/assets/doc-conventions.md.DCfRXXi-.js +1 -0
- data/docs/assets/doc-conventions.md.DCfRXXi-.lean.js +1 -0
- data/docs/assets/end-to-end-tests.md.yfQHC0b5.js +26 -0
- data/docs/assets/end-to-end-tests.md.yfQHC0b5.lean.js +1 -0
- data/docs/assets/flash-and-session.md.BXY8RvT0.js +93 -0
- data/docs/assets/flash-and-session.md.BXY8RvT0.lean.js +1 -0
- data/docs/assets/forms.md.CBTYQ_Cz.js +379 -0
- data/docs/assets/forms.md.CBTYQ_Cz.lean.js +1 -0
- data/docs/assets/getting-started.md.Bz2s1Vjb.js +2 -0
- data/docs/assets/getting-started.md.Bz2s1Vjb.lean.js +1 -0
- data/docs/assets/handlers.md.089DVD3v.js +69 -0
- data/docs/assets/handlers.md.089DVD3v.lean.js +1 -0
- data/docs/assets/hooks.md.C4-moMny.js +80 -0
- data/docs/assets/hooks.md.C4-moMny.lean.js +1 -0
- data/docs/assets/i18n.md.Do9i1qWl.js +23 -0
- data/docs/assets/i18n.md.Do9i1qWl.lean.js +1 -0
- data/docs/assets/index.md.B28EwVpq.js +1 -0
- data/docs/assets/index.md.B28EwVpq.lean.js +1 -0
- data/docs/assets/instrumentation.md.CL6ax7nT.js +35 -0
- data/docs/assets/instrumentation.md.CL6ax7nT.lean.js +1 -0
- data/docs/assets/javascript.md.GWbhRS51.js +31 -0
- data/docs/assets/javascript.md.GWbhRS51.lean.js +1 -0
- data/docs/assets/jobs.md.S-2amAYp.js +1 -0
- data/docs/assets/jobs.md.S-2amAYp.lean.js +1 -0
- data/docs/assets/keyword-injection.md.Dt2tKREs.js +25 -0
- data/docs/assets/keyword-injection.md.Dt2tKREs.lean.js +1 -0
- data/docs/assets/markdown-examples.md.CCFEQO44.js +33 -0
- data/docs/assets/markdown-examples.md.CCFEQO44.lean.js +1 -0
- data/docs/assets/middleware.md.Czz_UlJN.js +20 -0
- data/docs/assets/middleware.md.Czz_UlJN.lean.js +1 -0
- data/docs/assets/not-released.md.BBy28McC.js +1 -0
- data/docs/assets/not-released.md.BBy28McC.lean.js +1 -0
- data/docs/assets/overview.Da81cB9R.png +0 -0
- data/docs/assets/overview.md.CDalkuxV.js +133 -0
- data/docs/assets/overview.md.CDalkuxV.lean.js +1 -0
- data/docs/assets/pages.md.BE3kfOc5.js +122 -0
- data/docs/assets/pages.md.BE3kfOc5.lean.js +1 -0
- data/docs/assets/routes.md.BMM7peut.js +29 -0
- data/docs/assets/routes.md.BMM7peut.lean.js +1 -0
- data/docs/assets/security.md.C668yXCi.js +1 -0
- data/docs/assets/security.md.C668yXCi.lean.js +1 -0
- data/docs/assets/seed-data.md.BvFZlqIk.js +14 -0
- data/docs/assets/seed-data.md.BvFZlqIk.lean.js +1 -0
- data/docs/assets/spa.qejUdp-5.png +0 -0
- data/docs/assets/space-time-continuum.md.KPUIKysQ.js +1 -0
- data/docs/assets/space-time-continuum.md.KPUIKysQ.lean.js +1 -0
- data/docs/assets/style.D73IYGCX.css +1 -0
- data/docs/assets/tutorial.md.BnoGjrdK.js +1 -0
- data/docs/assets/tutorial.md.BnoGjrdK.lean.js +1 -0
- data/docs/assets/unit-tests.md.DUGrnLj5.js +13 -0
- data/docs/assets/unit-tests.md.DUGrnLj5.lean.js +1 -0
- data/docs/assets/workspace-protocol.C0gXsoDb.png +0 -0
- data/docs/assets.html +42 -0
- data/docs/brut-css/brut.css +1 -0
- data/docs/brut-css/brut.max.css +22372 -0
- data/docs/brut-css/classes/appearances.html +783 -0
- data/docs/brut-css/classes/background-colors.html +3529 -0
- data/docs/brut-css/classes/border-colors.html +3529 -0
- data/docs/brut-css/classes/borders.html +2293 -0
- data/docs/brut-css/classes/dimensions.html +2581 -0
- data/docs/brut-css/classes/flex.html +917 -0
- data/docs/brut-css/classes/foreground-colors.html +3261 -0
- data/docs/brut-css/classes/junk-drawer.html +431 -0
- data/docs/brut-css/classes/layout.html +668 -0
- data/docs/brut-css/classes/lists.html +331 -0
- data/docs/brut-css/classes/positioning.html +1751 -0
- data/docs/brut-css/classes/spacings.html +2633 -0
- data/docs/brut-css/classes/typography.html +2206 -0
- data/docs/brut-css/customization/advanced-configuration.html +204 -0
- data/docs/brut-css/customization/breakpoints.html +227 -0
- data/docs/brut-css/customization/design-system.html +197 -0
- data/docs/brut-css/customization/pseudo-classes.html +228 -0
- data/docs/brut-css/docs.css +98 -0
- data/docs/brut-css/getting-started/core-concepts.html +234 -0
- data/docs/brut-css/getting-started/installation.html +190 -0
- data/docs/brut-css/getting-started/overview.html +210 -0
- data/docs/brut-css/getting-started/simple-example.html +285 -0
- data/docs/brut-css/index.html +193 -0
- data/docs/brut-css/prism-twilight.min.css +1 -0
- data/docs/brut-css/properties/colors.html +1548 -0
- data/docs/brut-css/properties/spacings.html +614 -0
- data/docs/brut-css/properties/typography.html +777 -0
- data/docs/brut-js/api/AjaxSubmit.html +374 -0
- data/docs/brut-js/api/AjaxSubmit.js.html +435 -0
- data/docs/brut-js/api/Autosubmit.html +192 -0
- data/docs/brut-js/api/Autosubmit.js.html +114 -0
- data/docs/brut-js/api/BaseCustomElement.html +1091 -0
- data/docs/brut-js/api/BaseCustomElement.js.html +312 -0
- data/docs/brut-js/api/BrutCustomElements.html +172 -0
- data/docs/brut-js/api/BufferedLogger.html +173 -0
- data/docs/brut-js/api/ConfirmSubmit.html +278 -0
- data/docs/brut-js/api/ConfirmSubmit.js.html +167 -0
- data/docs/brut-js/api/ConfirmationDialog.html +425 -0
- data/docs/brut-js/api/ConfirmationDialog.js.html +194 -0
- data/docs/brut-js/api/ConstraintViolationMessage.html +448 -0
- data/docs/brut-js/api/ConstraintViolationMessage.js.html +176 -0
- data/docs/brut-js/api/ConstraintViolationMessages.html +590 -0
- data/docs/brut-js/api/ConstraintViolationMessages.js.html +149 -0
- data/docs/brut-js/api/CopyToClipboard.html +345 -0
- data/docs/brut-js/api/CopyToClipboard.js.html +147 -0
- data/docs/brut-js/api/Form.html +294 -0
- data/docs/brut-js/api/Form.js.html +202 -0
- data/docs/brut-js/api/I18nTranslation.html +409 -0
- data/docs/brut-js/api/I18nTranslation.js.html +112 -0
- data/docs/brut-js/api/LocaleDetection.html +312 -0
- data/docs/brut-js/api/LocaleDetection.js.html +168 -0
- data/docs/brut-js/api/Logger.html +702 -0
- data/docs/brut-js/api/Logger.js.html +141 -0
- data/docs/brut-js/api/Message.html +238 -0
- data/docs/brut-js/api/Message.js.html +107 -0
- data/docs/brut-js/api/PrefixedLogger.html +369 -0
- data/docs/brut-js/api/RichString.html +1049 -0
- data/docs/brut-js/api/RichString.js.html +164 -0
- data/docs/brut-js/api/Tabs.html +295 -0
- data/docs/brut-js/api/Tabs.js.html +219 -0
- data/docs/brut-js/api/Tracing.html +277 -0
- data/docs/brut-js/api/Tracing.js.html +298 -0
- data/docs/brut-js/api/external-CustomElementRegistry.html +140 -0
- data/docs/brut-js/api/external-Performance.html +138 -0
- data/docs/brut-js/api/external-Promise.html +138 -0
- data/docs/brut-js/api/external-ValidityState.html +138 -0
- data/docs/brut-js/api/external-Window.html +233 -0
- data/docs/brut-js/api/external-fetch.html +138 -0
- data/docs/brut-js/api/global.html +400 -0
- data/docs/brut-js/api/index.html +168 -0
- data/docs/brut-js/api/index.js.html +181 -0
- data/docs/brut-js/api/module-testing.html +383 -0
- data/docs/brut-js/api/scripts/linenumber.js +25 -0
- data/docs/brut-js/api/scripts/prettify/Apache-License-2.0.txt +202 -0
- data/docs/brut-js/api/scripts/prettify/lang-css.js +2 -0
- data/docs/brut-js/api/scripts/prettify/prettify.js +28 -0
- data/docs/brut-js/api/styles/jsdoc-default.css +327 -0
- data/docs/brut-js/api/styles/prettify-jsdoc.css +111 -0
- data/docs/brut-js/api/styles/prettify-tomorrow.css +132 -0
- data/docs/brut-js/api/testing.AssetMetadata.html +172 -0
- data/docs/brut-js/api/testing.AssetMetadataLoader.html +171 -0
- data/docs/brut-js/api/testing.CustomElementTest.html +679 -0
- data/docs/brut-js/api/testing.DOMCreator.html +171 -0
- data/docs/brut-js/api/testing_AssetMetadata.js.html +86 -0
- data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +76 -0
- data/docs/brut-js/api/testing_CustomElementTest.js.html +286 -0
- data/docs/brut-js/api/testing_DOMCreator.js.html +96 -0
- data/docs/brut-js/api/testing_index.js.html +99 -0
- data/docs/brut-js.html +35 -0
- data/docs/business-logic.html +24 -0
- data/docs/cli.html +150 -0
- data/docs/components.html +127 -0
- data/docs/configuration.html +101 -0
- data/docs/css.html +44 -0
- data/docs/custom-element-tests.html +92 -0
- data/docs/database-access.html +86 -0
- data/docs/database-schema.html +86 -0
- data/docs/deployment.html +24 -0
- data/docs/dev-environment.html +34 -0
- data/docs/doc-conventions.html +24 -0
- data/docs/end-to-end-tests.html +49 -0
- data/docs/flash-and-session.html +116 -0
- data/docs/forms.html +402 -0
- data/docs/getting-started.html +25 -0
- data/docs/handlers.html +92 -0
- data/docs/hashmap.json +1 -0
- data/docs/hooks.html +103 -0
- data/docs/i18n.html +46 -0
- data/docs/images/logo-300.png +0 -0
- data/docs/images/logo.png +0 -0
- data/docs/index.html +24 -0
- data/docs/instrumentation.html +58 -0
- data/docs/javascript.html +54 -0
- data/docs/jobs.html +24 -0
- data/docs/keyword-injection.html +48 -0
- data/docs/markdown-examples.html +56 -0
- data/docs/middleware.html +43 -0
- data/docs/not-released.html +24 -0
- data/docs/overview.html +156 -0
- data/docs/pages.html +145 -0
- data/docs/routes.html +52 -0
- data/docs/security.html +24 -0
- data/docs/seed-data.html +37 -0
- data/docs/space-time-continuum.html +24 -0
- data/docs/tutorial.html +24 -0
- data/docs/unit-tests.html +36 -0
- data/docs/vp-icons.css +1 -0
- data/lib/brut/back_end/seed_data.rb +19 -2
- data/lib/brut/back_end/sidekiq/middlewares/server.rb +2 -1
- data/lib/brut/back_end/sidekiq/middlewares.rb +2 -1
- data/lib/brut/back_end/sidekiq.rb +2 -1
- data/lib/brut/back_end/validator.rb +5 -1
- data/lib/brut/back_end.rb +4 -2
- data/lib/brut/cli/app_runner.rb +1 -1
- data/lib/brut/cli/apps/test.rb +5 -0
- data/lib/brut/cli.rb +4 -3
- data/lib/brut/factory_bot.rb +0 -5
- data/lib/brut/framework/app.rb +70 -5
- data/lib/brut/framework/config.rb +5 -3
- data/lib/brut/framework/container.rb +3 -2
- data/lib/brut/framework/errors.rb +12 -4
- data/lib/brut/framework/mcp.rb +58 -1
- data/lib/brut/framework/project_environment.rb +6 -2
- data/lib/brut/framework.rb +1 -1
- data/lib/brut/front_end/component.rb +69 -71
- data/lib/brut/front_end/components/constraint_violations.rb +1 -4
- data/lib/brut/front_end/components/form_tag.rb +1 -1
- data/lib/brut/front_end/components/input.rb +3 -3
- data/lib/brut/front_end/components/inputs/csrf_token.rb +1 -1
- data/lib/brut/front_end/components/inputs/{text_field.rb → input_tag.rb} +7 -9
- data/lib/brut/front_end/components/inputs/radio_button.rb +1 -1
- data/lib/brut/front_end/components/inputs/select_tag_with_options.rb +187 -0
- data/lib/brut/front_end/components/inputs/{textarea.rb → textarea_tag.rb} +2 -2
- data/lib/brut/front_end/components/time_tag.rb +2 -1
- data/lib/brut/front_end/form.rb +4 -4
- data/lib/brut/front_end/forms/input.rb +2 -1
- data/lib/brut/front_end/forms/input_definition.rb +5 -2
- data/lib/brut/front_end/forms/radio_button_group_input.rb +2 -1
- data/lib/brut/front_end/forms/radio_button_group_input_definition.rb +2 -2
- data/lib/brut/front_end/forms/select_input.rb +2 -4
- data/lib/brut/front_end/forms/select_input_definition.rb +2 -2
- data/lib/brut/front_end/handler.rb +28 -26
- data/lib/brut/front_end/handlers/csp_reporting_handler.rb +5 -2
- data/lib/brut/front_end/handlers/instrumentation_handler.rb +8 -4
- data/lib/brut/front_end/handlers/locale_detection_handler.rb +9 -5
- data/lib/brut/front_end/handlers/missing_handler.rb +5 -2
- data/lib/brut/front_end/layout.rb +16 -0
- data/lib/brut/front_end/page.rb +52 -29
- data/lib/brut/front_end/request_context.rb +3 -2
- data/lib/brut/front_end/routing.rb +5 -1
- data/lib/brut/front_end.rb +4 -13
- data/lib/brut/i18n/base_methods.rb +167 -79
- data/lib/brut/i18n/for_back_end.rb +4 -0
- data/lib/brut/i18n/for_cli.rb +4 -0
- data/lib/brut/i18n/for_html.rb +32 -4
- data/lib/brut/i18n/http_accept_language.rb +47 -0
- data/lib/brut/instrumentation/open_telemetry.rb +36 -1
- data/lib/brut/instrumentation.rb +3 -5
- data/lib/brut/sinatra_helpers.rb +11 -3
- data/lib/brut/spec_support/component_support.rb +30 -16
- data/lib/brut/spec_support/e2e_support.rb +1 -1
- data/lib/brut/spec_support/e2e_test_server.rb +3 -0
- data/lib/brut/spec_support/general_support.rb +3 -0
- data/lib/brut/spec_support/handler_support.rb +6 -1
- data/lib/brut/spec_support/matcher.rb +1 -0
- data/lib/brut/spec_support/matchers/be_page_for.rb +1 -0
- data/lib/brut/spec_support/matchers/have_html_attribute.rb +1 -0
- data/lib/brut/spec_support/matchers/have_i18n_string.rb +2 -5
- data/lib/brut/spec_support/matchers/have_link_to.rb +1 -0
- data/lib/brut/spec_support/matchers/have_redirected_to.rb +1 -0
- data/lib/brut/spec_support/matchers/have_rendered.rb +1 -0
- data/lib/brut/spec_support/matchers/have_returned_rack_response.rb +44 -0
- data/lib/brut/spec_support.rb +1 -1
- data/lib/brut/version.rb +1 -1
- data/lib/brut.rb +5 -4
- data/lib/sequel/extensions/brut_migrations.rb +1 -1
- metadata +648 -13
- data/doc-src/architecture.md +0 -102
- data/doc-src/assets.md +0 -98
- data/doc-src/forms.md +0 -214
- data/doc-src/handlers.md +0 -83
- data/doc-src/javascript.md +0 -265
- data/doc-src/pages.md +0 -210
- data/doc-src/route-hooks.md +0 -59
- data/lib/brut/front_end/components/inputs/select.rb +0 -117
@@ -0,0 +1,1312 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Class: Brut::FrontEnd::RequestContext
|
8
|
+
|
9
|
+
— Documentation by YARD 0.9.37
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="../../css/style.css" type="text/css" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="../../css/common.css" type="text/css" />
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
pathId = "Brut::FrontEnd::RequestContext";
|
19
|
+
relpath = '../../';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="../../class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="../../_index.html">Index (R)</a> »
|
40
|
+
<span class='title'><span class='object_link'><a href="../../Brut.html" title="Brut (module)">Brut</a></span></span> » <span class='title'><span class='object_link'><a href="../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span>
|
41
|
+
»
|
42
|
+
<span class="title">RequestContext</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="../../class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Class: Brut::FrontEnd::RequestContext
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
<dl>
|
70
|
+
<dt>Inherits:</dt>
|
71
|
+
<dd>
|
72
|
+
<span class="inheritName">Object</span>
|
73
|
+
|
74
|
+
<ul class="fullTree">
|
75
|
+
<li>Object</li>
|
76
|
+
|
77
|
+
<li class="next">Brut::FrontEnd::RequestContext</li>
|
78
|
+
|
79
|
+
</ul>
|
80
|
+
<a href="#" class="inheritanceTree">show all</a>
|
81
|
+
|
82
|
+
</dd>
|
83
|
+
</dl>
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
<dl>
|
96
|
+
<dt>Defined in:</dt>
|
97
|
+
<dd>lib/brut/front_end/request_context.rb</dd>
|
98
|
+
</dl>
|
99
|
+
|
100
|
+
</div>
|
101
|
+
|
102
|
+
<h2>Overview</h2><div class="docstring">
|
103
|
+
<div class="discussion">
|
104
|
+
<p>Container for request-specific information that serves as the source of what can be automaticall passed to various methods by Brut.</p>
|
105
|
+
|
106
|
+
<p>The intention for this class is to provide access to the 80% of stuff needed by most requests, to alleviate the need to have to dig
|
107
|
+
into <code>env</code> or the Rack request. This also allows arbitrary information to be inserted and made available later.</p>
|
108
|
+
|
109
|
+
<p>Several methods of Brut objects take keyword arguments in their initializer or a particular method. The names of those keyword
|
110
|
+
arguments correspond to values that are contained by this class. Thus, if you are creating, say, a <span class='object_link'><a href="Page.html" title="Brut::FrontEnd::Page (class)">Page</a></span> subclass,
|
111
|
+
and create an initializer for it that accepts the <code>clock:</code> keyword argument, the managed instance of <span class='object_link'><a href="../../Clock.html" title="Clock (class)">Clock</a></span> will be passed into it
|
112
|
+
when Brut creates an instance of the class.</p>
|
113
|
+
|
114
|
+
|
115
|
+
</div>
|
116
|
+
</div>
|
117
|
+
<div class="tags">
|
118
|
+
|
119
|
+
|
120
|
+
</div>
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
<h2>
|
129
|
+
Class Method Summary
|
130
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
131
|
+
</h2>
|
132
|
+
|
133
|
+
<ul class="summary">
|
134
|
+
|
135
|
+
<li class="public ">
|
136
|
+
<span class="summary_signature">
|
137
|
+
|
138
|
+
<a href="#current-class_method" title="current (class method)">.<strong>current</strong> ⇒ Object </a>
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
</span>
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
<span class="summary_desc"><div class='inline'>
|
153
|
+
</div></span>
|
154
|
+
|
155
|
+
</li>
|
156
|
+
|
157
|
+
|
158
|
+
<li class="public ">
|
159
|
+
<span class="summary_signature">
|
160
|
+
|
161
|
+
<a href="#inject-class_method" title="inject (class method)">.<strong>inject</strong>(klass, request_params: nil) ⇒ Object </a>
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
</span>
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
<span class="summary_desc"><div class='inline'><p>Create an instance of klass injected with the request context.</p>
|
176
|
+
</div></span>
|
177
|
+
|
178
|
+
</li>
|
179
|
+
|
180
|
+
|
181
|
+
</ul>
|
182
|
+
|
183
|
+
<h2>
|
184
|
+
Instance Method Summary
|
185
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
186
|
+
</h2>
|
187
|
+
|
188
|
+
<ul class="summary">
|
189
|
+
|
190
|
+
<li class="public ">
|
191
|
+
<span class="summary_signature">
|
192
|
+
|
193
|
+
<a href="#[]-instance_method" title="#[] (instance method)">#<strong>[]</strong>(key) ⇒ Object </a>
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
</span>
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
<span class="summary_desc"><div class='inline'><p>Access a given value, returning <code>nil</code> if it's not mapped or is <code>nil</code>.</p>
|
208
|
+
</div></span>
|
209
|
+
|
210
|
+
</li>
|
211
|
+
|
212
|
+
|
213
|
+
<li class="public ">
|
214
|
+
<span class="summary_signature">
|
215
|
+
|
216
|
+
<a href="#[]=-instance_method" title="#[]= (instance method)">#<strong>[]=</strong>(key, value) ⇒ Object </a>
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
</span>
|
221
|
+
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
<span class="summary_desc"><div class='inline'><p>Set an arbitrary value that can be injected later.</p>
|
231
|
+
</div></span>
|
232
|
+
|
233
|
+
</li>
|
234
|
+
|
235
|
+
|
236
|
+
<li class="public ">
|
237
|
+
<span class="summary_signature">
|
238
|
+
|
239
|
+
<a href="#as_constructor_args-instance_method" title="#as_constructor_args (instance method)">#<strong>as_constructor_args</strong>(klass, request_params:, route: nil, form: nil) ⇒ Hash </a>
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
</span>
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
<span class="summary_desc"><div class='inline'><p>Based on <code>klass</code>' constructor, returns a Hash that maps all keywords it requires to the values stored in this <code>RequestContext</code>.</p>
|
254
|
+
</div></span>
|
255
|
+
|
256
|
+
</li>
|
257
|
+
|
258
|
+
|
259
|
+
<li class="public ">
|
260
|
+
<span class="summary_signature">
|
261
|
+
|
262
|
+
<a href="#as_method_args-instance_method" title="#as_method_args (instance method)">#<strong>as_method_args</strong>(object, method_name, request_params:, form:, route: nil) ⇒ Hash </a>
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
</span>
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
<span class="summary_desc"><div class='inline'><p>Based on <code>object</code>' method, returns a Hash that maps all keywords it requires to the values stored in this <code>RequestContext</code>.</p>
|
277
|
+
</div></span>
|
278
|
+
|
279
|
+
</li>
|
280
|
+
|
281
|
+
|
282
|
+
<li class="public ">
|
283
|
+
<span class="summary_signature">
|
284
|
+
|
285
|
+
<a href="#fetch-instance_method" title="#fetch (instance method)">#<strong>fetch</strong>(key) ⇒ Object </a>
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
</span>
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
<span class="summary_desc"><div class='inline'><p>Access the given value, raising an exception if it has not been set or if it's nil.</p>
|
300
|
+
</div></span>
|
301
|
+
|
302
|
+
</li>
|
303
|
+
|
304
|
+
|
305
|
+
<li class="public ">
|
306
|
+
<span class="summary_signature">
|
307
|
+
|
308
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(env:, session:, flash:, xhr:, body:, host:) ⇒ RequestContext </a>
|
309
|
+
|
310
|
+
|
311
|
+
|
312
|
+
</span>
|
313
|
+
|
314
|
+
|
315
|
+
<span class="note title constructor">constructor</span>
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
<span class="summary_desc"><div class='inline'><p>Create a new RequestContext based on some of the information provided by Rack.</p>
|
325
|
+
</div></span>
|
326
|
+
|
327
|
+
</li>
|
328
|
+
|
329
|
+
|
330
|
+
<li class="public ">
|
331
|
+
<span class="summary_signature">
|
332
|
+
|
333
|
+
<a href="#key%3F-instance_method" title="#key? (instance method)">#<strong>key?</strong>(key) ⇒ true|false </a>
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
</span>
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
<span class="summary_desc"><div class='inline'><p>Check if a given value has been mapped.</p>
|
348
|
+
</div></span>
|
349
|
+
|
350
|
+
</li>
|
351
|
+
|
352
|
+
|
353
|
+
</ul>
|
354
|
+
|
355
|
+
|
356
|
+
<div id="constructor_details" class="method_details_list">
|
357
|
+
<h2>Constructor Details</h2>
|
358
|
+
|
359
|
+
<div class="method_details first">
|
360
|
+
<h3 class="signature first" id="initialize-instance_method">
|
361
|
+
|
362
|
+
#<strong>initialize</strong>(env:, session:, flash:, xhr:, body:, host:) ⇒ <tt><span class='object_link'><a href="" title="Brut::FrontEnd::RequestContext (class)">RequestContext</a></span></tt>
|
363
|
+
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
|
368
|
+
</h3><div class="docstring">
|
369
|
+
<div class="discussion">
|
370
|
+
<p>Create a new RequestContext based on some of the information provided by Rack</p>
|
371
|
+
|
372
|
+
|
373
|
+
</div>
|
374
|
+
</div>
|
375
|
+
<div class="tags">
|
376
|
+
<p class="tag_title">Parameters:</p>
|
377
|
+
<ul class="param">
|
378
|
+
|
379
|
+
<li>
|
380
|
+
|
381
|
+
<span class='name'>env</span>
|
382
|
+
|
383
|
+
|
384
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
385
|
+
|
386
|
+
|
387
|
+
|
388
|
+
—
|
389
|
+
<div class='inline'><p>the Rack <code>env</code> object, as available to any middleware</p>
|
390
|
+
</div>
|
391
|
+
|
392
|
+
</li>
|
393
|
+
|
394
|
+
<li>
|
395
|
+
|
396
|
+
<span class='name'>session</span>
|
397
|
+
|
398
|
+
|
399
|
+
<span class='type'>(<tt><span class='object_link'><a href="Session.html" title="Brut::FrontEnd::Session (class)">Brut::FrontEnd::Session</a></span></tt>)</span>
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
—
|
404
|
+
<div class='inline'><p>the current session, noting that this is the Brut (or your app) session class and not the Rack session.</p>
|
405
|
+
</div>
|
406
|
+
|
407
|
+
</li>
|
408
|
+
|
409
|
+
<li>
|
410
|
+
|
411
|
+
<span class='name'>flash</span>
|
412
|
+
|
413
|
+
|
414
|
+
<span class='type'>(<tt><span class='object_link'><a href="Flash.html" title="Brut::FrontEnd::Flash (class)">Brut::FrontEnd::Flash</a></span></tt>)</span>
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
—
|
419
|
+
<div class='inline'><p>the current flash</p>
|
420
|
+
</div>
|
421
|
+
|
422
|
+
</li>
|
423
|
+
|
424
|
+
<li>
|
425
|
+
|
426
|
+
<span class='name'>xhr</span>
|
427
|
+
|
428
|
+
|
429
|
+
<span class='type'>(<tt>true|false</tt>)</span>
|
430
|
+
|
431
|
+
|
432
|
+
|
433
|
+
—
|
434
|
+
<div class='inline'><p>true if this is an XHR request.</p>
|
435
|
+
</div>
|
436
|
+
|
437
|
+
</li>
|
438
|
+
|
439
|
+
<li>
|
440
|
+
|
441
|
+
<span class='name'>body</span>
|
442
|
+
|
443
|
+
|
444
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
445
|
+
|
446
|
+
|
447
|
+
|
448
|
+
—
|
449
|
+
<div class='inline'><p>the <code>request.body</code> as provided by Rack</p>
|
450
|
+
</div>
|
451
|
+
|
452
|
+
</li>
|
453
|
+
|
454
|
+
<li>
|
455
|
+
|
456
|
+
<span class='name'>host</span>
|
457
|
+
|
458
|
+
|
459
|
+
<span class='type'>(<tt>URI</tt>)</span>
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
—
|
464
|
+
<div class='inline'><p>URI the <code>request.host</code> and <code>request.scheme</code>, and <code>request.port</code> as provided by Rack</p>
|
465
|
+
</div>
|
466
|
+
|
467
|
+
</li>
|
468
|
+
|
469
|
+
</ul>
|
470
|
+
|
471
|
+
|
472
|
+
</div><table class="source_code">
|
473
|
+
<tr>
|
474
|
+
<td>
|
475
|
+
<pre class="lines">
|
476
|
+
|
477
|
+
|
478
|
+
32
|
479
|
+
33
|
480
|
+
34
|
481
|
+
35
|
482
|
+
36
|
483
|
+
37
|
484
|
+
38
|
485
|
+
39
|
486
|
+
40
|
487
|
+
41
|
488
|
+
42
|
489
|
+
43</pre>
|
490
|
+
</td>
|
491
|
+
<td>
|
492
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 32</span>
|
493
|
+
|
494
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>env:</span><span class='comma'>,</span><span class='label'>session:</span><span class='comma'>,</span><span class='label'>flash:</span><span class='comma'>,</span><span class='label'>xhr:</span><span class='comma'>,</span><span class='label'>body:</span><span class='comma'>,</span><span class='label'>host:</span><span class='rparen'>)</span>
|
495
|
+
<span class='ivar'>@hash</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
496
|
+
<span class='label'>env:</span><span class='comma'>,</span>
|
497
|
+
<span class='label'>session:</span><span class='comma'>,</span>
|
498
|
+
<span class='label'>flash:</span><span class='comma'>,</span>
|
499
|
+
<span class='label'>xhr:</span><span class='comma'>,</span>
|
500
|
+
<span class='label'>body:</span><span class='comma'>,</span>
|
501
|
+
<span class='label'>host:</span><span class='comma'>,</span>
|
502
|
+
<span class='label'>csrf_token:</span> <span class='const'>Rack</span><span class='op'>::</span><span class='const'>Protection</span><span class='op'>::</span><span class='const'>AuthenticityToken</span><span class='period'>.</span><span class='id identifier rubyid_token'>token</span><span class='lparen'>(</span><span class='id identifier rubyid_env'>env</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>rack.session</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
|
503
|
+
<span class='label'>clock:</span> <span class='const'><span class='object_link'><a href="../../Clock.html" title="Clock (class)">Clock</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../../Clock.html#initialize-instance_method" title="Clock#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_timezone'>timezone</span><span class='rparen'>)</span><span class='comma'>,</span>
|
504
|
+
<span class='rbrace'>}</span>
|
505
|
+
<span class='kw'>end</span></pre>
|
506
|
+
</td>
|
507
|
+
</tr>
|
508
|
+
</table>
|
509
|
+
</div>
|
510
|
+
|
511
|
+
</div>
|
512
|
+
|
513
|
+
|
514
|
+
<div id="class_method_details" class="method_details_list">
|
515
|
+
<h2>Class Method Details</h2>
|
516
|
+
|
517
|
+
|
518
|
+
<div class="method_details first">
|
519
|
+
<h3 class="signature first" id="current-class_method">
|
520
|
+
|
521
|
+
.<strong>current</strong> ⇒ <tt>Object</tt>
|
522
|
+
|
523
|
+
|
524
|
+
|
525
|
+
|
526
|
+
|
527
|
+
</h3><table class="source_code">
|
528
|
+
<tr>
|
529
|
+
<td>
|
530
|
+
<pre class="lines">
|
531
|
+
|
532
|
+
|
533
|
+
12
|
534
|
+
13
|
535
|
+
14</pre>
|
536
|
+
</td>
|
537
|
+
<td>
|
538
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 12</span>
|
539
|
+
|
540
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
|
541
|
+
<span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_thread_variable_get'>thread_variable_get</span><span class='lparen'>(</span><span class='symbol'>:request_context</span><span class='rparen'>)</span>
|
542
|
+
<span class='kw'>end</span></pre>
|
543
|
+
</td>
|
544
|
+
</tr>
|
545
|
+
</table>
|
546
|
+
</div>
|
547
|
+
|
548
|
+
<div class="method_details ">
|
549
|
+
<h3 class="signature " id="inject-class_method">
|
550
|
+
|
551
|
+
.<strong>inject</strong>(klass, request_params: nil) ⇒ <tt>Object</tt>
|
552
|
+
|
553
|
+
|
554
|
+
|
555
|
+
|
556
|
+
|
557
|
+
</h3><div class="docstring">
|
558
|
+
<div class="discussion">
|
559
|
+
<p>Create an instance of klass injected with the request context.</p>
|
560
|
+
|
561
|
+
|
562
|
+
</div>
|
563
|
+
</div>
|
564
|
+
<div class="tags">
|
565
|
+
|
566
|
+
|
567
|
+
</div><table class="source_code">
|
568
|
+
<tr>
|
569
|
+
<td>
|
570
|
+
<pre class="lines">
|
571
|
+
|
572
|
+
|
573
|
+
17
|
574
|
+
18
|
575
|
+
19
|
576
|
+
20
|
577
|
+
21
|
578
|
+
22
|
579
|
+
23</pre>
|
580
|
+
</td>
|
581
|
+
<td>
|
582
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 17</span>
|
583
|
+
|
584
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_inject'>inject</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='comma'>,</span> <span class='label'>request_params:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
585
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_then'>then</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_request_context'>request_context</span><span class='op'>|</span>
|
586
|
+
<span class='id identifier rubyid_request_context'>request_context</span><span class='period'>.</span><span class='id identifier rubyid_as_constructor_args'>as_constructor_args</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='comma'>,</span><span class='label'>request_params:</span><span class='rparen'>)</span>
|
587
|
+
<span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_then'>then</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_constructor_args'>constructor_args</span><span class='op'>|</span>
|
588
|
+
<span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_constructor_args'>constructor_args</span><span class='rparen'>)</span>
|
589
|
+
<span class='rbrace'>}</span>
|
590
|
+
<span class='kw'>end</span></pre>
|
591
|
+
</td>
|
592
|
+
</tr>
|
593
|
+
</table>
|
594
|
+
</div>
|
595
|
+
|
596
|
+
</div>
|
597
|
+
|
598
|
+
<div id="instance_method_details" class="method_details_list">
|
599
|
+
<h2>Instance Method Details</h2>
|
600
|
+
|
601
|
+
|
602
|
+
<div class="method_details first">
|
603
|
+
<h3 class="signature first" id="[]-instance_method">
|
604
|
+
|
605
|
+
#<strong>[]</strong>(key) ⇒ <tt>Object</tt>
|
606
|
+
|
607
|
+
|
608
|
+
|
609
|
+
|
610
|
+
|
611
|
+
</h3><div class="docstring">
|
612
|
+
<div class="discussion">
|
613
|
+
<p>Access a given value, returning <code>nil</code> if it's not mapped or is <code>nil</code></p>
|
614
|
+
|
615
|
+
|
616
|
+
</div>
|
617
|
+
</div>
|
618
|
+
<div class="tags">
|
619
|
+
<p class="tag_title">Parameters:</p>
|
620
|
+
<ul class="param">
|
621
|
+
|
622
|
+
<li>
|
623
|
+
|
624
|
+
<span class='name'>key</span>
|
625
|
+
|
626
|
+
|
627
|
+
<span class='type'>(<tt>String|Symbol</tt>)</span>
|
628
|
+
|
629
|
+
|
630
|
+
|
631
|
+
—
|
632
|
+
<div class='inline'><p>the value to get</p>
|
633
|
+
</div>
|
634
|
+
|
635
|
+
</li>
|
636
|
+
|
637
|
+
</ul>
|
638
|
+
|
639
|
+
<p class="tag_title">Returns:</p>
|
640
|
+
<ul class="return">
|
641
|
+
|
642
|
+
<li>
|
643
|
+
|
644
|
+
|
645
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
646
|
+
|
647
|
+
|
648
|
+
|
649
|
+
—
|
650
|
+
<div class='inline'><p>the mapped value</p>
|
651
|
+
</div>
|
652
|
+
|
653
|
+
</li>
|
654
|
+
|
655
|
+
</ul>
|
656
|
+
|
657
|
+
</div><table class="source_code">
|
658
|
+
<tr>
|
659
|
+
<td>
|
660
|
+
<pre class="lines">
|
661
|
+
|
662
|
+
|
663
|
+
76
|
664
|
+
77
|
665
|
+
78</pre>
|
666
|
+
</td>
|
667
|
+
<td>
|
668
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 76</span>
|
669
|
+
|
670
|
+
<span class='kw'>def</span> <span class='op'>[]</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
|
671
|
+
<span class='ivar'>@hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rbracket'>]</span>
|
672
|
+
<span class='kw'>end</span></pre>
|
673
|
+
</td>
|
674
|
+
</tr>
|
675
|
+
</table>
|
676
|
+
</div>
|
677
|
+
|
678
|
+
<div class="method_details ">
|
679
|
+
<h3 class="signature " id="[]=-instance_method">
|
680
|
+
|
681
|
+
#<strong>[]=</strong>(key, value) ⇒ <tt>Object</tt>
|
682
|
+
|
683
|
+
|
684
|
+
|
685
|
+
|
686
|
+
|
687
|
+
</h3><div class="docstring">
|
688
|
+
<div class="discussion">
|
689
|
+
<p>Set an arbitrary value that can be injected later</p>
|
690
|
+
|
691
|
+
|
692
|
+
</div>
|
693
|
+
</div>
|
694
|
+
<div class="tags">
|
695
|
+
<p class="tag_title">Parameters:</p>
|
696
|
+
<ul class="param">
|
697
|
+
|
698
|
+
<li>
|
699
|
+
|
700
|
+
<span class='name'>key</span>
|
701
|
+
|
702
|
+
|
703
|
+
<span class='type'>(<tt>String|Symbol</tt>)</span>
|
704
|
+
|
705
|
+
|
706
|
+
|
707
|
+
—
|
708
|
+
<div class='inline'><p>the name of the value. This is converted to a symbol.</p>
|
709
|
+
</div>
|
710
|
+
|
711
|
+
</li>
|
712
|
+
|
713
|
+
<li>
|
714
|
+
|
715
|
+
<span class='name'>value</span>
|
716
|
+
|
717
|
+
|
718
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
719
|
+
|
720
|
+
|
721
|
+
|
722
|
+
—
|
723
|
+
<div class='inline'><p>the value to map. Should not be nil.</p>
|
724
|
+
</div>
|
725
|
+
|
726
|
+
</li>
|
727
|
+
|
728
|
+
</ul>
|
729
|
+
|
730
|
+
|
731
|
+
</div><table class="source_code">
|
732
|
+
<tr>
|
733
|
+
<td>
|
734
|
+
<pre class="lines">
|
735
|
+
|
736
|
+
|
737
|
+
49
|
738
|
+
50
|
739
|
+
51
|
740
|
+
52</pre>
|
741
|
+
</td>
|
742
|
+
<td>
|
743
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 49</span>
|
744
|
+
|
745
|
+
<span class='kw'>def</span> <span class='op'>[]=</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
|
746
|
+
<span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
747
|
+
<span class='ivar'>@hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
|
748
|
+
<span class='kw'>end</span></pre>
|
749
|
+
</td>
|
750
|
+
</tr>
|
751
|
+
</table>
|
752
|
+
</div>
|
753
|
+
|
754
|
+
<div class="method_details ">
|
755
|
+
<h3 class="signature " id="as_constructor_args-instance_method">
|
756
|
+
|
757
|
+
#<strong>as_constructor_args</strong>(klass, request_params:, route: nil, form: nil) ⇒ <tt>Hash</tt>
|
758
|
+
|
759
|
+
|
760
|
+
|
761
|
+
|
762
|
+
|
763
|
+
</h3><div class="docstring">
|
764
|
+
<div class="discussion">
|
765
|
+
<p>Based on <code>klass</code>' constructor, returns a Hash that maps all keywords it requires to the values stored in this
|
766
|
+
<code>RequestContext</code>. It is assumed that <code>request_params:</code> contains the query parameters so they can be injected.
|
767
|
+
The <span class='object_link'><a href="Routing/Route.html" title="Brut::FrontEnd::Routing::Route (class)">Brut::FrontEnd::Routing::Route</a></span> can also be injected to pass in.</p>
|
768
|
+
|
769
|
+
|
770
|
+
</div>
|
771
|
+
</div>
|
772
|
+
<div class="tags">
|
773
|
+
|
774
|
+
<div class="examples">
|
775
|
+
<h4 class="tag_title">Examples:</h4>
|
776
|
+
|
777
|
+
|
778
|
+
<pre class="example code"><code><span class='kw'>class</span> <span class='const'>SomeClass</span>
|
779
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>flash:</span><span class='comma'>,</span><span class='label'>clock:</span><span class='comma'>,</span><span class='label'>date:</span><span class='rparen'>)</span>
|
780
|
+
<span class='comment'># ...
|
781
|
+
</span> <span class='kw'>end</span>
|
782
|
+
<span class='kw'>end</span>
|
783
|
+
|
784
|
+
<span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_request_context'>request_context</span><span class='period'>.</span><span class='id identifier rubyid_as_constructor_args'>as_constructor_args</span><span class='lparen'>(</span>
|
785
|
+
<span class='const'>SomeClass</span><span class='comma'>,</span>
|
786
|
+
<span class='label'>request_params:</span> <span class='lbrace'>{</span> <span class='label'>date:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>2024-11-11</span><span class='tstring_end'>"</span></span> <span class='rbrace'>}</span>
|
787
|
+
<span class='rparen'>)</span>
|
788
|
+
|
789
|
+
<span class='comment'># hash contains:
|
790
|
+
</span><span class='comment'># {
|
791
|
+
</span><span class='comment'># flash: «Flash used to create the RequestContext»,
|
792
|
+
</span><span class='comment'># clock: «Clock used to create the RequestContext»,
|
793
|
+
</span><span class='comment'># date: "2024-11-11",
|
794
|
+
</span><span class='comment'># }
|
795
|
+
</span>
|
796
|
+
<span class='id identifier rubyid_object'>object</span> <span class='op'>=</span> <span class='const'>SomeClass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span></code></pre>
|
797
|
+
|
798
|
+
</div>
|
799
|
+
<p class="tag_title">Parameters:</p>
|
800
|
+
<ul class="param">
|
801
|
+
|
802
|
+
<li>
|
803
|
+
|
804
|
+
<span class='name'>klass</span>
|
805
|
+
|
806
|
+
|
807
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
808
|
+
|
809
|
+
|
810
|
+
|
811
|
+
—
|
812
|
+
<div class='inline'><p>a class that is to be instantiated entirely by the contents of this <code>RequestContext</code>.</p>
|
813
|
+
</div>
|
814
|
+
|
815
|
+
</li>
|
816
|
+
|
817
|
+
<li>
|
818
|
+
|
819
|
+
<span class='name'>request_params</span>
|
820
|
+
|
821
|
+
|
822
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
823
|
+
|
824
|
+
|
825
|
+
|
826
|
+
—
|
827
|
+
<div class='inline'><p>Query string parameters provided by Rack.</p>
|
828
|
+
</div>
|
829
|
+
|
830
|
+
</li>
|
831
|
+
|
832
|
+
<li>
|
833
|
+
|
834
|
+
<span class='name'>route</span>
|
835
|
+
|
836
|
+
|
837
|
+
<span class='type'>(<tt><span class='object_link'><a href="Routing/Route.html" title="Brut::FrontEnd::Routing::Route (class)">Brut::FrontEnd::Routing::Route</a></span></tt>)</span>
|
838
|
+
|
839
|
+
|
840
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
841
|
+
|
842
|
+
|
843
|
+
—
|
844
|
+
<div class='inline'><p>the route that triggered the request.</p>
|
845
|
+
</div>
|
846
|
+
|
847
|
+
</li>
|
848
|
+
|
849
|
+
<li>
|
850
|
+
|
851
|
+
<span class='name'>form</span>
|
852
|
+
|
853
|
+
|
854
|
+
<span class='type'>(<tt><span class='object_link'><a href="Form.html" title="Brut::FrontEnd::Form (class)">Brut::FrontEnd::Form</a></span></tt>)</span>
|
855
|
+
|
856
|
+
|
857
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
858
|
+
|
859
|
+
|
860
|
+
—
|
861
|
+
<div class='inline'><p>the form, if available</p>
|
862
|
+
</div>
|
863
|
+
|
864
|
+
</li>
|
865
|
+
|
866
|
+
</ul>
|
867
|
+
|
868
|
+
<p class="tag_title">Returns:</p>
|
869
|
+
<ul class="return">
|
870
|
+
|
871
|
+
<li>
|
872
|
+
|
873
|
+
|
874
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
875
|
+
|
876
|
+
|
877
|
+
|
878
|
+
—
|
879
|
+
<div class='inline'><p>can be splatted to keyword arguments and passed to the constructor of <code>klass</code></p>
|
880
|
+
</div>
|
881
|
+
|
882
|
+
</li>
|
883
|
+
|
884
|
+
</ul>
|
885
|
+
<p class="tag_title">Raises:</p>
|
886
|
+
<ul class="raise">
|
887
|
+
|
888
|
+
<li>
|
889
|
+
|
890
|
+
|
891
|
+
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
892
|
+
|
893
|
+
|
894
|
+
|
895
|
+
—
|
896
|
+
<div class='inline'><p>if the constructor has any non-keyword arguments, or if any required keyword argument is
|
897
|
+
not present in this <code>RequestContext</code>.</p>
|
898
|
+
</div>
|
899
|
+
|
900
|
+
</li>
|
901
|
+
|
902
|
+
</ul>
|
903
|
+
|
904
|
+
</div><table class="source_code">
|
905
|
+
<tr>
|
906
|
+
<td>
|
907
|
+
<pre class="lines">
|
908
|
+
|
909
|
+
|
910
|
+
120
|
911
|
+
121
|
912
|
+
122</pre>
|
913
|
+
</td>
|
914
|
+
<td>
|
915
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 120</span>
|
916
|
+
|
917
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_as_constructor_args'>as_constructor_args</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='comma'>,</span> <span class='label'>request_params:</span><span class='comma'>,</span> <span class='label'>route:</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>form:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
918
|
+
<span class='id identifier rubyid_args_for_method'>args_for_method</span><span class='lparen'>(</span><span class='label'>method:</span> <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_instance_method'>instance_method</span><span class='lparen'>(</span><span class='symbol'>:initialize</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>request_params:</span><span class='comma'>,</span> <span class='label'>form:</span> <span class='comma'>,</span> <span class='label'>route:</span><span class='rparen'>)</span>
|
919
|
+
<span class='kw'>end</span></pre>
|
920
|
+
</td>
|
921
|
+
</tr>
|
922
|
+
</table>
|
923
|
+
</div>
|
924
|
+
|
925
|
+
<div class="method_details ">
|
926
|
+
<h3 class="signature " id="as_method_args-instance_method">
|
927
|
+
|
928
|
+
#<strong>as_method_args</strong>(object, method_name, request_params:, form:, route: nil) ⇒ <tt>Hash</tt>
|
929
|
+
|
930
|
+
|
931
|
+
|
932
|
+
|
933
|
+
|
934
|
+
</h3><div class="docstring">
|
935
|
+
<div class="discussion">
|
936
|
+
<p>Based on <code>object</code>' method, returns a Hash that maps all keywords it requires to the values stored in this
|
937
|
+
<code>RequestContext</code>. It is assumed that <code>request_params:</code> contains the query parameters so they can be injected.
|
938
|
+
It is also assumed that <code>form:</code> is the <span class='object_link'><a href="Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span> that is provided as part of the request.
|
939
|
+
The <span class='object_link'><a href="Routing/Route.html" title="Brut::FrontEnd::Routing::Route (class)">Brut::FrontEnd::Routing::Route</a></span> can also be injected to pass in.</p>
|
940
|
+
|
941
|
+
|
942
|
+
</div>
|
943
|
+
</div>
|
944
|
+
<div class="tags">
|
945
|
+
|
946
|
+
<div class="examples">
|
947
|
+
<h4 class="tag_title">Examples:</h4>
|
948
|
+
|
949
|
+
|
950
|
+
<pre class="example code"><code><span class='kw'>class</span> <span class='const'>SomeClass</span>
|
951
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_doit'>doit</span><span class='lparen'>(</span><span class='label'>flash:</span><span class='comma'>,</span><span class='label'>clock:</span><span class='comma'>,</span><span class='label'>date:</span><span class='rparen'>)</span>
|
952
|
+
<span class='comment'># ...
|
953
|
+
</span> <span class='kw'>end</span>
|
954
|
+
<span class='kw'>end</span>
|
955
|
+
|
956
|
+
<span class='id identifier rubyid_object'>object</span> <span class='op'>=</span> <span class='const'>SomeClass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
957
|
+
|
958
|
+
<span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_request_context'>request_context</span><span class='period'>.</span><span class='id identifier rubyid_as_method_args'>as_method_args</span><span class='lparen'>(</span>
|
959
|
+
<span class='id identifier rubyid_object'>object</span><span class='comma'>,</span>
|
960
|
+
<span class='symbol'>:doit</span><span class='comma'>,</span>
|
961
|
+
<span class='label'>request_params:</span> <span class='lbrace'>{</span> <span class='label'>date:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>2024-11-11</span><span class='tstring_end'>"</span></span> <span class='rbrace'>}</span>
|
962
|
+
<span class='rparen'>)</span>
|
963
|
+
|
964
|
+
<span class='comment'># hash contains:
|
965
|
+
</span><span class='comment'># {
|
966
|
+
</span><span class='comment'># flash: «Flash used to create the RequestContext»,
|
967
|
+
</span><span class='comment'># clock: «Clock used to create the RequestContext»,
|
968
|
+
</span><span class='comment'># date: "2024-11-11",
|
969
|
+
</span><span class='comment'># }
|
970
|
+
</span>
|
971
|
+
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_doit'>doit</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span></code></pre>
|
972
|
+
|
973
|
+
</div>
|
974
|
+
<p class="tag_title">Parameters:</p>
|
975
|
+
<ul class="param">
|
976
|
+
|
977
|
+
<li>
|
978
|
+
|
979
|
+
<span class='name'>object</span>
|
980
|
+
|
981
|
+
|
982
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
983
|
+
|
984
|
+
|
985
|
+
|
986
|
+
—
|
987
|
+
<div class='inline'><p>an object whose method is to be called that requires some of the contents of this <code>RequestContext</code>.</p>
|
988
|
+
</div>
|
989
|
+
|
990
|
+
</li>
|
991
|
+
|
992
|
+
<li>
|
993
|
+
|
994
|
+
<span class='name'>method_name</span>
|
995
|
+
|
996
|
+
|
997
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
998
|
+
|
999
|
+
|
1000
|
+
|
1001
|
+
—
|
1002
|
+
<div class='inline'><p>name of the method that will be called.</p>
|
1003
|
+
</div>
|
1004
|
+
|
1005
|
+
</li>
|
1006
|
+
|
1007
|
+
<li>
|
1008
|
+
|
1009
|
+
<span class='name'>request_params</span>
|
1010
|
+
|
1011
|
+
|
1012
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
1013
|
+
|
1014
|
+
|
1015
|
+
|
1016
|
+
—
|
1017
|
+
<div class='inline'><p>Query string parameters provided by Rack. Note that any parameter whose value is the empty string will be coerced to <code>nil</code>.</p>
|
1018
|
+
</div>
|
1019
|
+
|
1020
|
+
</li>
|
1021
|
+
|
1022
|
+
<li>
|
1023
|
+
|
1024
|
+
<span class='name'>route</span>
|
1025
|
+
|
1026
|
+
|
1027
|
+
<span class='type'>(<tt><span class='object_link'><a href="Routing/Route.html" title="Brut::FrontEnd::Routing::Route (class)">Brut::FrontEnd::Routing::Route</a></span></tt>)</span>
|
1028
|
+
|
1029
|
+
|
1030
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1031
|
+
|
1032
|
+
|
1033
|
+
—
|
1034
|
+
<div class='inline'><p>the route that triggered the request.</p>
|
1035
|
+
</div>
|
1036
|
+
|
1037
|
+
</li>
|
1038
|
+
|
1039
|
+
<li>
|
1040
|
+
|
1041
|
+
<span class='name'>form</span>
|
1042
|
+
|
1043
|
+
|
1044
|
+
<span class='type'>(<tt><span class='object_link'><a href="Form.html" title="Brut::FrontEnd::Form (class)">Brut::FrontEnd::Form</a></span></tt>)</span>
|
1045
|
+
|
1046
|
+
|
1047
|
+
|
1048
|
+
—
|
1049
|
+
<div class='inline'><p>the form that was submitted with this request. May be <code>nil</code>.</p>
|
1050
|
+
</div>
|
1051
|
+
|
1052
|
+
</li>
|
1053
|
+
|
1054
|
+
</ul>
|
1055
|
+
|
1056
|
+
<p class="tag_title">Returns:</p>
|
1057
|
+
<ul class="return">
|
1058
|
+
|
1059
|
+
<li>
|
1060
|
+
|
1061
|
+
|
1062
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
1063
|
+
|
1064
|
+
|
1065
|
+
|
1066
|
+
—
|
1067
|
+
<div class='inline'><p>can be splatted to keyword arguments and passed to the constructor of <code>klass</code></p>
|
1068
|
+
</div>
|
1069
|
+
|
1070
|
+
</li>
|
1071
|
+
|
1072
|
+
</ul>
|
1073
|
+
<p class="tag_title">Raises:</p>
|
1074
|
+
<ul class="raise">
|
1075
|
+
|
1076
|
+
<li>
|
1077
|
+
|
1078
|
+
|
1079
|
+
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
1080
|
+
|
1081
|
+
|
1082
|
+
|
1083
|
+
—
|
1084
|
+
<div class='inline'><p>if the method has any non-keyword arguments, or if any required keyword argument is
|
1085
|
+
not present in this <code>RequestContext</code>.</p>
|
1086
|
+
</div>
|
1087
|
+
|
1088
|
+
</li>
|
1089
|
+
|
1090
|
+
</ul>
|
1091
|
+
|
1092
|
+
</div><table class="source_code">
|
1093
|
+
<tr>
|
1094
|
+
<td>
|
1095
|
+
<pre class="lines">
|
1096
|
+
|
1097
|
+
|
1098
|
+
162
|
1099
|
+
163
|
1100
|
+
164</pre>
|
1101
|
+
</td>
|
1102
|
+
<td>
|
1103
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 162</span>
|
1104
|
+
|
1105
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_as_method_args'>as_method_args</span><span class='lparen'>(</span><span class='id identifier rubyid_object'>object</span><span class='comma'>,</span> <span class='id identifier rubyid_method_name'>method_name</span><span class='comma'>,</span> <span class='label'>request_params:</span><span class='comma'>,</span><span class='label'>form:</span><span class='comma'>,</span><span class='label'>route:</span><span class='kw'>nil</span><span class='rparen'>)</span>
|
1106
|
+
<span class='id identifier rubyid_args_for_method'>args_for_method</span><span class='lparen'>(</span><span class='label'>method:</span> <span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_method'>method</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>request_params:</span><span class='comma'>,</span> <span class='label'>form:</span><span class='comma'>,</span><span class='label'>route:</span><span class='rparen'>)</span>
|
1107
|
+
<span class='kw'>end</span></pre>
|
1108
|
+
</td>
|
1109
|
+
</tr>
|
1110
|
+
</table>
|
1111
|
+
</div>
|
1112
|
+
|
1113
|
+
<div class="method_details ">
|
1114
|
+
<h3 class="signature " id="fetch-instance_method">
|
1115
|
+
|
1116
|
+
#<strong>fetch</strong>(key) ⇒ <tt>Object</tt>
|
1117
|
+
|
1118
|
+
|
1119
|
+
|
1120
|
+
|
1121
|
+
|
1122
|
+
</h3><div class="docstring">
|
1123
|
+
<div class="discussion">
|
1124
|
+
<p>Access the given value, raising an exception if it has not been set or if it's nil.</p>
|
1125
|
+
|
1126
|
+
|
1127
|
+
</div>
|
1128
|
+
</div>
|
1129
|
+
<div class="tags">
|
1130
|
+
<p class="tag_title">Parameters:</p>
|
1131
|
+
<ul class="param">
|
1132
|
+
|
1133
|
+
<li>
|
1134
|
+
|
1135
|
+
<span class='name'>key</span>
|
1136
|
+
|
1137
|
+
|
1138
|
+
<span class='type'>(<tt>String|Symbol</tt>)</span>
|
1139
|
+
|
1140
|
+
|
1141
|
+
|
1142
|
+
—
|
1143
|
+
<div class='inline'><p>the value to fetch.</p>
|
1144
|
+
</div>
|
1145
|
+
|
1146
|
+
</li>
|
1147
|
+
|
1148
|
+
</ul>
|
1149
|
+
|
1150
|
+
<p class="tag_title">Returns:</p>
|
1151
|
+
<ul class="return">
|
1152
|
+
|
1153
|
+
<li>
|
1154
|
+
|
1155
|
+
|
1156
|
+
<span class='type'>(<tt>Object</tt>)</span>
|
1157
|
+
|
1158
|
+
|
1159
|
+
|
1160
|
+
—
|
1161
|
+
<div class='inline'><p>the mapped value</p>
|
1162
|
+
</div>
|
1163
|
+
|
1164
|
+
</li>
|
1165
|
+
|
1166
|
+
</ul>
|
1167
|
+
<p class="tag_title">Raises:</p>
|
1168
|
+
<ul class="raise">
|
1169
|
+
|
1170
|
+
<li>
|
1171
|
+
|
1172
|
+
|
1173
|
+
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
1174
|
+
|
1175
|
+
|
1176
|
+
|
1177
|
+
—
|
1178
|
+
<div class='inline'><p>if <code>key</code> was never mapped or maps to <code>nil</code>.</p>
|
1179
|
+
</div>
|
1180
|
+
|
1181
|
+
</li>
|
1182
|
+
|
1183
|
+
</ul>
|
1184
|
+
|
1185
|
+
</div><table class="source_code">
|
1186
|
+
<tr>
|
1187
|
+
<td>
|
1188
|
+
<pre class="lines">
|
1189
|
+
|
1190
|
+
|
1191
|
+
60
|
1192
|
+
61
|
1193
|
+
62
|
1194
|
+
63
|
1195
|
+
64
|
1196
|
+
65
|
1197
|
+
66
|
1198
|
+
67
|
1199
|
+
68
|
1200
|
+
69
|
1201
|
+
70
|
1202
|
+
71</pre>
|
1203
|
+
</td>
|
1204
|
+
<td>
|
1205
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 60</span>
|
1206
|
+
|
1207
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
|
1208
|
+
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
|
1209
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>self</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span>
|
1210
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span>
|
1211
|
+
<span class='kw'>return</span> <span class='id identifier rubyid_value'>value</span>
|
1212
|
+
<span class='kw'>else</span>
|
1213
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>No key '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>' in </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
1214
|
+
<span class='kw'>end</span>
|
1215
|
+
<span class='kw'>else</span>
|
1216
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Key '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>' is nil in </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
1217
|
+
<span class='kw'>end</span>
|
1218
|
+
<span class='kw'>end</span></pre>
|
1219
|
+
</td>
|
1220
|
+
</tr>
|
1221
|
+
</table>
|
1222
|
+
</div>
|
1223
|
+
|
1224
|
+
<div class="method_details ">
|
1225
|
+
<h3 class="signature " id="key?-instance_method">
|
1226
|
+
|
1227
|
+
#<strong>key?</strong>(key) ⇒ <tt>true|false</tt>
|
1228
|
+
|
1229
|
+
|
1230
|
+
|
1231
|
+
|
1232
|
+
|
1233
|
+
</h3><div class="docstring">
|
1234
|
+
<div class="discussion">
|
1235
|
+
<p>Check if a given value has been mapped.</p>
|
1236
|
+
|
1237
|
+
|
1238
|
+
</div>
|
1239
|
+
</div>
|
1240
|
+
<div class="tags">
|
1241
|
+
<p class="tag_title">Parameters:</p>
|
1242
|
+
<ul class="param">
|
1243
|
+
|
1244
|
+
<li>
|
1245
|
+
|
1246
|
+
<span class='name'>key</span>
|
1247
|
+
|
1248
|
+
|
1249
|
+
<span class='type'>(<tt>String|Symbol</tt>)</span>
|
1250
|
+
|
1251
|
+
|
1252
|
+
|
1253
|
+
—
|
1254
|
+
<div class='inline'><p>the value to check</p>
|
1255
|
+
</div>
|
1256
|
+
|
1257
|
+
</li>
|
1258
|
+
|
1259
|
+
</ul>
|
1260
|
+
|
1261
|
+
<p class="tag_title">Returns:</p>
|
1262
|
+
<ul class="return">
|
1263
|
+
|
1264
|
+
<li>
|
1265
|
+
|
1266
|
+
|
1267
|
+
<span class='type'>(<tt>true|false</tt>)</span>
|
1268
|
+
|
1269
|
+
|
1270
|
+
|
1271
|
+
—
|
1272
|
+
<div class='inline'><p>if the value is mapped. Note that if <code>nil</code> was injected, this method returns <code>true</code>.</p>
|
1273
|
+
</div>
|
1274
|
+
|
1275
|
+
</li>
|
1276
|
+
|
1277
|
+
</ul>
|
1278
|
+
|
1279
|
+
</div><table class="source_code">
|
1280
|
+
<tr>
|
1281
|
+
<td>
|
1282
|
+
<pre class="lines">
|
1283
|
+
|
1284
|
+
|
1285
|
+
83
|
1286
|
+
84
|
1287
|
+
85</pre>
|
1288
|
+
</td>
|
1289
|
+
<td>
|
1290
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/request_context.rb', line 83</span>
|
1291
|
+
|
1292
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
|
1293
|
+
<span class='ivar'>@hash</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rparen'>)</span>
|
1294
|
+
<span class='kw'>end</span></pre>
|
1295
|
+
</td>
|
1296
|
+
</tr>
|
1297
|
+
</table>
|
1298
|
+
</div>
|
1299
|
+
|
1300
|
+
</div>
|
1301
|
+
|
1302
|
+
</div>
|
1303
|
+
|
1304
|
+
<div id="footer">
|
1305
|
+
Generated on Wed Jun 25 22:57:20 2025 by
|
1306
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1307
|
+
0.9.37 (ruby-3.4.4).
|
1308
|
+
</div>
|
1309
|
+
|
1310
|
+
</div>
|
1311
|
+
</body>
|
1312
|
+
</html>
|