brut 0.0.27 → 0.0.29
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 +6 -0
- data/.projections.json +10 -0
- data/.rspec +3 -0
- data/Dockerfile.dx +32 -14
- data/Gemfile.lock +1 -1
- data/assets/Logo-Square.pxd +0 -0
- data/assets/LogoPylon.pxd +0 -0
- data/assets/LogoStop.pxd +0 -0
- data/assets/LogoTall.pxd +0 -0
- data/bin/docs +24 -2
- data/bin/rspec +27 -0
- data/bin/setup +3 -3
- data/brutrb.com/.vitepress/config.mjs +1 -0
- data/brutrb.com/.vitepress/theme/custom.css +7 -0
- data/brutrb.com/.vitepress/theme/style.css +26 -15
- data/brutrb.com/deployment.md +123 -45
- data/brutrb.com/dev-environment.md +6 -5
- data/brutrb.com/doc-conventions.md +1 -1
- data/brutrb.com/getting-started.md +64 -28
- data/brutrb.com/images/LogoPylon.png +0 -0
- data/brutrb.com/images/LogoSquare.png +0 -0
- data/brutrb.com/images/LogoStop.png +0 -0
- data/brutrb.com/images/LogoTall.png +0 -0
- data/brutrb.com/images/OverviewMetro.graffle +0 -0
- data/brutrb.com/images/OverviewMetro.png +0 -0
- data/brutrb.com/index.md +4 -3
- data/brutrb.com/instrumentation.md +12 -0
- data/brutrb.com/layouts.md +130 -0
- data/brutrb.com/overview.md +6 -6
- data/docker-compose.dx.yml +5 -2
- data/docs/404.html +3 -3
- data/docs/ai.html +6 -6
- data/docs/api/Brut/BackEnd/SeedData.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
- data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
- data/docs/api/Brut/BackEnd/Validators.html +1 -1
- data/docs/api/Brut/BackEnd.html +1 -1
- data/docs/api/Brut/CLI/App.html +38 -13
- data/docs/api/Brut/CLI/AppRunner.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
- data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +2 -2
- data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +2 -2
- data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +2 -2
- data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Create.html +2 -2
- data/docs/api/Brut/CLI/Apps/DB/Drop.html +2 -2
- data/docs/api/Brut/CLI/Apps/DB/Migrate.html +9 -3
- data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +11 -11
- data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +2 -2
- data/docs/api/Brut/CLI/Apps/DB/Seed.html +2 -2
- data/docs/api/Brut/CLI/Apps/DB/Status.html +12 -12
- data/docs/api/Brut/CLI/Apps/DB.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +270 -0
- data/docs/api/Brut/CLI/Apps/DeployBase.html +257 -0
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +585 -0
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +196 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/Audit.html +12 -10
- data/docs/api/Brut/CLI/Apps/Test/E2e.html +8 -8
- data/docs/api/Brut/CLI/Apps/Test/JS.html +9 -9
- data/docs/api/Brut/CLI/Apps/Test/Run.html +18 -18
- data/docs/api/Brut/CLI/Apps/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps.html +2 -2
- data/docs/api/Brut/CLI/Command.html +113 -28
- data/docs/api/Brut/CLI/Error.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
- data/docs/api/Brut/CLI/Executor.html +169 -38
- data/docs/api/Brut/CLI/InvalidOption.html +1 -1
- data/docs/api/Brut/CLI/Options.html +68 -19
- data/docs/api/Brut/CLI/Output.html +1 -1
- data/docs/api/Brut/CLI/SystemExecError.html +1 -1
- data/docs/api/Brut/CLI.html +1 -1
- data/docs/api/Brut/FactoryBot.html +1 -1
- data/docs/api/Brut/Framework/App.html +1 -1
- data/docs/api/Brut/Framework/Config.html +1 -1
- data/docs/api/Brut/Framework/Container.html +110 -29
- data/docs/api/Brut/Framework/Error.html +1 -1
- data/docs/api/Brut/Framework/Errors/AbstractMethod.html +89 -1
- data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
- data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
- data/docs/api/Brut/Framework/Errors.html +31 -8
- data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
- data/docs/api/Brut/Framework/MCP.html +1 -1
- data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
- data/docs/api/Brut/Framework.html +1 -1
- data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
- data/docs/api/Brut/FrontEnd/Component/Helpers.html +36 -26
- data/docs/api/Brut/FrontEnd/Component.html +7 -7
- data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/FormTag.html +37 -29
- data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +20 -117
- data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +25 -23
- data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +73 -380
- data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +22 -138
- data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
- data/docs/api/Brut/FrontEnd/Components.html +23 -2
- data/docs/api/Brut/FrontEnd/Download.html +1 -1
- data/docs/api/Brut/FrontEnd/Flash.html +1 -1
- data/docs/api/Brut/FrontEnd/Form.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +24 -68
- data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +201 -0
- data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +535 -0
- data/docs/api/Brut/FrontEnd/Forms/Input.html +983 -35
- data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +4 -4
- data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +29 -19
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +9 -3
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +9 -3
- data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +72 -22
- data/docs/api/Brut/FrontEnd/Forms.html +1 -1
- data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
- data/docs/api/Brut/FrontEnd/Handler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
- data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
- data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
- data/docs/api/Brut/FrontEnd/Layout.html +1 -1
- data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +6 -2
- data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
- data/docs/api/Brut/FrontEnd/Page.html +1 -1
- data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
- data/docs/api/Brut/FrontEnd/Pages.html +1 -1
- data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing.html +1 -1
- data/docs/api/Brut/FrontEnd/Session.html +1 -1
- data/docs/api/Brut/FrontEnd.html +1 -1
- data/docs/api/Brut/I18n/BaseMethods.html +1 -1
- data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
- data/docs/api/Brut/I18n/ForCLI.html +1 -1
- data/docs/api/Brut/I18n/ForHTML.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
- data/docs/api/Brut/I18n.html +1 -1
- data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
- data/docs/api/Brut/Instrumentation.html +1 -1
- data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
- data/docs/api/Brut/SinatraHelpers.html +1 -1
- data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/E2ETestServer.html +20 -20
- data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
- data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/HandlerSupport.html +2 -2
- data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +142 -0
- data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +142 -0
- data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +155 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +55 -25
- data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +149 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +46 -19
- data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +149 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +149 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +165 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +158 -0
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +156 -0
- data/docs/api/Brut/SpecSupport/Matchers.html +2 -2
- data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +24 -24
- data/docs/api/Brut/SpecSupport/RSpecSetup.html +55 -20
- data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
- data/docs/api/Brut/SpecSupport.html +1 -1
- data/docs/api/Brut.html +1 -1
- data/docs/api/Clock.html +1 -1
- data/docs/api/RichString.html +1 -1
- data/docs/api/SemanticLogger/Appender/Async.html +1 -1
- data/docs/api/Sequel/Extensions/BrutInstrumentation.html +5 -1
- data/docs/api/Sequel/Extensions/BrutMigrations.html +36 -28
- data/docs/api/Sequel/Extensions.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang.html +1 -1
- data/docs/api/Sequel/Plugins.html +1 -1
- data/docs/api/Sequel.html +1 -1
- data/docs/api/SpecSupport/Matchers/BeABug.html +143 -0
- data/docs/api/_index.html +106 -1
- data/docs/api/class_list.html +1 -1
- data/docs/api/css/full_list.css +2 -1
- data/docs/api/css/style.css +14 -13
- data/docs/api/file.README.html +1 -1
- data/docs/api/index.html +1 -1
- data/docs/api/method_list.html +530 -330
- data/docs/api/top-level-namespace.html +1 -1
- data/docs/assets/LogoStop.X8x-4riz.png +0 -0
- data/docs/assets/OverviewMetro.DUS-5fUZ.png +0 -0
- data/docs/assets/{ai.md.tZrjP9im.js → ai.md._6HCDL6d.js} +1 -1
- data/docs/assets/ai.md._6HCDL6d.lean.js +1 -0
- data/docs/assets/{app.D_yaTITQ.js → app.BhrfSt68.js} +1 -1
- data/docs/assets/chunks/@localSearchIndexroot.CeRAdP1K.js +1 -0
- data/docs/assets/chunks/{VPLocalSearchBox.B2-ZzyTY.js → VPLocalSearchBox.Dpot_2H4.js} +1 -1
- data/docs/assets/chunks/{theme.CfGFVRvE.js → theme.N2SNVLgU.js} +2 -2
- data/docs/assets/{components.md.eCttGlN-.js → components.md.CRUMdRoN.js} +1 -1
- data/docs/assets/{configuration.md.BRriU0cL.js → configuration.md.LG-zIBww.js} +1 -1
- data/docs/assets/deployment.md.BLseERGV.js +48 -0
- data/docs/assets/deployment.md.BLseERGV.lean.js +1 -0
- data/docs/assets/{dev-environment.md.BNc8AYiK.js → dev-environment.md.GZv6xvi9.js} +1 -1
- data/docs/assets/doc-conventions.md.-kN3Xo5C.js +1 -0
- data/docs/assets/{doc-conventions.md.DCfRXXi-.lean.js → doc-conventions.md.-kN3Xo5C.lean.js} +1 -1
- data/docs/assets/{forms.md.CBTYQ_Cz.js → forms.md.B-koVgyw.js} +23 -23
- data/docs/assets/{forms.md.CBTYQ_Cz.lean.js → forms.md.B-koVgyw.lean.js} +1 -1
- data/docs/assets/getting-started.md.Dj0qtZI2.js +25 -0
- data/docs/assets/getting-started.md.Dj0qtZI2.lean.js +1 -0
- data/docs/assets/index.md.CuBB-BdM.js +1 -0
- data/docs/assets/index.md.CuBB-BdM.lean.js +1 -0
- data/docs/assets/{instrumentation.md.CL6ax7nT.js → instrumentation.md.a9Pjps4P.js} +2 -2
- data/docs/assets/{instrumentation.md.CL6ax7nT.lean.js → instrumentation.md.a9Pjps4P.lean.js} +1 -1
- data/docs/assets/layouts.md.cPnh3NId.js +51 -0
- data/docs/assets/layouts.md.cPnh3NId.lean.js +1 -0
- data/docs/assets/lsp.md.Bsu-f6VU.js +1 -0
- data/docs/assets/lsp.md.Bsu-f6VU.lean.js +1 -0
- data/docs/assets/{overview.md.CDalkuxV.js → overview.md.DVKRM8zl.js} +4 -4
- data/docs/assets/overview.md.DVKRM8zl.lean.js +1 -0
- data/docs/assets/recipes_authentication.md.CAsXf7hk.js +1 -0
- data/docs/assets/recipes_authentication.md.CAsXf7hk.lean.js +1 -0
- data/docs/assets/{style.D73IYGCX.css → style.B2o1L9eN.css} +1 -1
- data/docs/assets.html +5 -5
- data/docs/brut-js/api/AjaxSubmit.html +1 -1
- data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
- data/docs/brut-js/api/Autosubmit.html +1 -1
- data/docs/brut-js/api/Autosubmit.js.html +1 -1
- data/docs/brut-js/api/BaseCustomElement.html +1 -1
- data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
- data/docs/brut-js/api/BrutCustomElements.html +1 -1
- data/docs/brut-js/api/BufferedLogger.html +1 -1
- data/docs/brut-js/api/ConfirmSubmit.html +1 -1
- data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
- data/docs/brut-js/api/ConfirmationDialog.html +1 -1
- data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
- data/docs/brut-js/api/CopyToClipboard.html +1 -1
- data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
- data/docs/brut-js/api/Form.html +1 -1
- data/docs/brut-js/api/Form.js.html +1 -1
- data/docs/brut-js/api/I18nTranslation.html +1 -1
- data/docs/brut-js/api/I18nTranslation.js.html +1 -1
- data/docs/brut-js/api/LocaleDetection.html +1 -1
- data/docs/brut-js/api/LocaleDetection.js.html +1 -1
- data/docs/brut-js/api/Logger.html +1 -1
- data/docs/brut-js/api/Logger.js.html +1 -1
- data/docs/brut-js/api/Message.html +1 -1
- data/docs/brut-js/api/Message.js.html +1 -1
- data/docs/brut-js/api/PrefixedLogger.html +1 -1
- data/docs/brut-js/api/RichString.html +1 -1
- data/docs/brut-js/api/RichString.js.html +1 -1
- data/docs/brut-js/api/Tabs.html +1 -1
- data/docs/brut-js/api/Tabs.js.html +1 -1
- data/docs/brut-js/api/Tracing.html +1 -1
- data/docs/brut-js/api/Tracing.js.html +1 -1
- data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
- data/docs/brut-js/api/external-Performance.html +1 -1
- data/docs/brut-js/api/external-Promise.html +1 -1
- data/docs/brut-js/api/external-ValidityState.html +1 -1
- data/docs/brut-js/api/external-Window.html +1 -1
- data/docs/brut-js/api/external-fetch.html +1 -1
- data/docs/brut-js/api/global.html +1 -1
- data/docs/brut-js/api/index.html +1 -1
- data/docs/brut-js/api/index.js.html +1 -1
- data/docs/brut-js/api/module-testing.html +1 -1
- data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
- data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
- data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
- data/docs/brut-js/api/testing.DOMCreator.html +1 -1
- data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
- data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
- data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
- data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
- data/docs/brut-js/api/testing_index.js.html +1 -1
- data/docs/brut-js.html +5 -5
- data/docs/business-logic.html +5 -5
- data/docs/cli.html +5 -5
- data/docs/components.html +7 -7
- data/docs/configuration.html +6 -6
- data/docs/css.html +5 -5
- data/docs/custom-element-tests.html +5 -5
- data/docs/database-access.html +5 -5
- data/docs/database-schema.html +5 -5
- data/docs/deployment.html +53 -6
- data/docs/dev-environment.html +6 -6
- data/docs/doc-conventions.html +6 -6
- data/docs/end-to-end-tests.html +5 -5
- data/docs/flash-and-session.html +5 -5
- data/docs/forms.html +28 -28
- data/docs/getting-started.html +30 -7
- data/docs/handlers.html +5 -5
- data/docs/hashmap.json +1 -1
- data/docs/hooks.html +5 -5
- data/docs/i18n.html +5 -5
- data/docs/index.html +6 -6
- data/docs/instrumentation.html +6 -6
- data/docs/javascript.html +5 -5
- data/docs/jobs.html +5 -5
- data/docs/keyword-injection.html +5 -5
- data/docs/layouts.html +74 -0
- data/docs/lsp.html +24 -0
- data/docs/markdown-examples.html +5 -5
- data/docs/middleware.html +5 -5
- data/docs/not-released.html +5 -5
- data/docs/overview.html +9 -9
- data/docs/pages.html +6 -6
- data/docs/recipes/authentication.html +24 -0
- data/docs/routes.html +5 -5
- data/docs/security.html +5 -5
- data/docs/seed-data.html +5 -5
- data/docs/space-time-continuum.html +5 -5
- data/docs/tutorial.html +5 -5
- data/docs/unit-tests.html +5 -5
- data/dx/bash_customizations +7 -0
- data/dx/build +13 -2
- data/dx/docker-compose.env +1 -1
- data/dx/exec +25 -8
- data/lib/brut/cli/app.rb +7 -2
- data/lib/brut/cli/apps/deploy_base.rb +86 -0
- data/lib/brut/cli/apps/heroku_container_based_deploy.rb +194 -0
- data/lib/brut/cli/command.rb +7 -13
- data/lib/brut/cli/executor.rb +31 -5
- data/lib/brut/cli/options.rb +4 -0
- data/lib/brut/cli.rb +4 -3
- data/lib/brut/framework/container.rb +25 -7
- data/lib/brut/framework/errors/abstract_method.rb +7 -0
- data/lib/brut/framework/errors.rb +4 -2
- data/lib/brut/front_end/forms/input.rb +253 -20
- data/lib/brut/front_end/forms/input_definition.rb +15 -12
- data/lib/brut/front_end/middlewares/reload_app.rb +2 -0
- data/lib/brut/front_end.rb +1 -0
- data/lib/brut/spec_support/rspec_setup.rb +42 -2
- data/lib/brut/version.rb +1 -1
- data/lib/sequel/extensions/brut_instrumentation.rb +4 -0
- data/specs/brut/front_end/forms/input.spec.rb +978 -0
- data/specs/spec_helper.rb +27 -0
- data/specs/support/matchers/have_constraint_violation.rb +23 -0
- data/specs/support/matchers.rb +5 -0
- data/specs/support.rb +3 -0
- metadata +77 -29
- data/docs/assets/ai.md.tZrjP9im.lean.js +0 -1
- data/docs/assets/chunks/@localSearchIndexroot.BsN5i0Fi.js +0 -1
- data/docs/assets/deployment.md.Dbka4OTr.js +0 -1
- data/docs/assets/deployment.md.Dbka4OTr.lean.js +0 -1
- data/docs/assets/doc-conventions.md.DCfRXXi-.js +0 -1
- data/docs/assets/getting-started.md.Bz2s1Vjb.js +0 -2
- data/docs/assets/getting-started.md.Bz2s1Vjb.lean.js +0 -1
- data/docs/assets/index.md.B28EwVpq.js +0 -1
- data/docs/assets/index.md.B28EwVpq.lean.js +0 -1
- data/docs/assets/overview.Da81cB9R.png +0 -0
- data/docs/assets/overview.md.CDalkuxV.lean.js +0 -1
- /data/docs/assets/{components.md.eCttGlN-.lean.js → components.md.CRUMdRoN.lean.js} +0 -0
- /data/docs/assets/{configuration.md.BRriU0cL.lean.js → configuration.md.LG-zIBww.lean.js} +0 -0
- /data/docs/assets/{dev-environment.md.BNc8AYiK.lean.js → dev-environment.md.GZv6xvi9.lean.js} +0 -0
@@ -381,7 +381,7 @@ value for their <code>name</code> attribute. Unlike <code>input</code> or <code
|
|
381
381
|
input tags.</p>
|
382
382
|
|
383
383
|
<p>Note that this is not where you would define the possible values for the group. That is done in
|
384
|
-
<span class='object_link'><a href="../Components/Inputs/RadioButton.html
|
384
|
+
<span class='object_link'><a href="../Components/Inputs/RadioButton.html" title="Brut::FrontEnd::Components::Inputs::RadioButton (class)">Components::Inputs::RadioButton</a></span>.</p>
|
385
385
|
|
386
386
|
|
387
387
|
</div>
|
@@ -462,8 +462,8 @@ input tags.</p>
|
|
462
462
|
</h3><div class="docstring">
|
463
463
|
<div class="discussion">
|
464
464
|
<p>Declares a select for this form, to be modeled via an HTML <code><SELECT></code> tag. Note that this will not define the values that appear
|
465
|
-
in the select. That is done when the select is rendered, which you might do with
|
466
|
-
Components::Inputs::Select
|
465
|
+
in the select. That is done when the select is rendered, which you might do with a
|
466
|
+
Components::Inputs::Select</p>
|
467
467
|
|
468
468
|
|
469
469
|
</div>
|
@@ -537,7 +537,7 @@ Components::Inputs::Select.for_form_input</p>
|
|
537
537
|
</div>
|
538
538
|
|
539
539
|
<div id="footer">
|
540
|
-
Generated on
|
540
|
+
Generated on Fri Jul 4 21:27:27 2025 by
|
541
541
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
542
542
|
0.9.37 (ruby-3.4.4).
|
543
543
|
</div>
|
@@ -418,7 +418,7 @@ such as implementing a <span class='object_link'><a href="../../BackEnd/Validato
|
|
418
418
|
<li class="public ">
|
419
419
|
<span class="summary_signature">
|
420
420
|
|
421
|
-
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern:
|
421
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern: :based_on_type, required: :based_on_type, step: nil, type: nil, array: false) ⇒ InputDefinition </a>
|
422
422
|
|
423
423
|
|
424
424
|
|
@@ -483,7 +483,7 @@ such as implementing a <span class='object_link'><a href="../../BackEnd/Validato
|
|
483
483
|
<div class="method_details first">
|
484
484
|
<h3 class="signature first" id="initialize-instance_method">
|
485
485
|
|
486
|
-
#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern:
|
486
|
+
#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern: :based_on_type, required: :based_on_type, step: nil, type: nil, array: false) ⇒ <tt><span class='object_link'><a href="" title="Brut::FrontEnd::Forms::InputDefinition (class)">InputDefinition</a></span></tt>
|
487
487
|
|
488
488
|
|
489
489
|
|
@@ -595,7 +595,7 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
595
595
|
<span class='type'>(<tt>Regexp</tt>)</span>
|
596
596
|
|
597
597
|
|
598
|
-
<em class="default">(defaults to: <tt
|
598
|
+
<em class="default">(defaults to: <tt>:based_on_type</tt>)</em>
|
599
599
|
|
600
600
|
|
601
601
|
—
|
@@ -690,6 +690,8 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
690
690
|
<pre class="lines">
|
691
691
|
|
692
692
|
|
693
|
+
60
|
694
|
+
61
|
693
695
|
62
|
694
696
|
63
|
695
697
|
64
|
@@ -734,10 +736,13 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
734
736
|
103
|
735
737
|
104
|
736
738
|
105
|
737
|
-
106
|
739
|
+
106
|
740
|
+
107
|
741
|
+
108
|
742
|
+
109</pre>
|
738
743
|
</td>
|
739
744
|
<td>
|
740
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line
|
745
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line 60</span>
|
741
746
|
|
742
747
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span>
|
743
748
|
<span class='label'>max:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
@@ -745,7 +750,7 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
745
750
|
<span class='label'>min:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
746
751
|
<span class='label'>minlength:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
747
752
|
<span class='label'>name:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
748
|
-
<span class='label'>pattern:</span> <span class='
|
753
|
+
<span class='label'>pattern:</span> <span class='symbol'>:based_on_type</span><span class='comma'>,</span>
|
749
754
|
<span class='label'>required:</span> <span class='symbol'>:based_on_type</span><span class='comma'>,</span>
|
750
755
|
<span class='label'>step:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
751
756
|
<span class='label'>type:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
@@ -769,20 +774,25 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
769
774
|
<span class='id identifier rubyid_required'>required</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>checkbox</span><span class='tstring_end'>"</span></span>
|
770
775
|
<span class='kw'>end</span>
|
771
776
|
|
772
|
-
<span class='ivar'>@max</span> <span class='op'>=</span> <span class='id identifier
|
777
|
+
<span class='ivar'>@max</span> <span class='op'>=</span> <span class='id identifier rubyid_max'>max</span>
|
773
778
|
<span class='ivar'>@maxlength</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_maxlength'>maxlength</span> <span class='comma'>,</span> <span class='const'>Numeric</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>maxlength</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
774
|
-
<span class='ivar'>@min</span> <span class='op'>=</span> <span class='id identifier
|
779
|
+
<span class='ivar'>@min</span> <span class='op'>=</span> <span class='id identifier rubyid_min'>min</span>
|
775
780
|
<span class='ivar'>@minlength</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_minlength'>minlength</span> <span class='comma'>,</span> <span class='const'>Numeric</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>minlength</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
776
781
|
<span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_name'>name</span> <span class='comma'>,</span> <span class='const'>String</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>name</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
777
|
-
<span class='ivar'>@pattern</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_pattern'>pattern</span> <span class='comma'>,</span> <span class='const'>String</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pattern</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
778
782
|
<span class='ivar'>@required</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_required'>required</span> <span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rbracket'>]</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>required</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
779
783
|
<span class='ivar'>@step</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_step'>step</span> <span class='comma'>,</span> <span class='const'>Numeric</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>step</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
780
784
|
<span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_type'>type</span> <span class='comma'>,</span> <span class='const'>INPUT_TYPES_TO_CLASS</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>type</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
781
785
|
<span class='ivar'>@array</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_array'>array</span> <span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rbracket'>]</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>array</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
782
786
|
|
783
|
-
<span class='
|
784
|
-
|
785
|
-
|
787
|
+
<span class='ivar'>@pattern</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_pattern'>pattern</span> <span class='op'>==</span> <span class='symbol'>:based_on_type</span>
|
788
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>email</span><span class='tstring_end'>"</span></span>
|
789
|
+
<span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^[^@]+@[^@]+\.[^@]+$</span><span class='regexp_end'>/</span></span><span class='period'>.</span><span class='id identifier rubyid_source'>source</span>
|
790
|
+
<span class='kw'>else</span>
|
791
|
+
<span class='kw'>nil</span>
|
792
|
+
<span class='kw'>end</span>
|
793
|
+
<span class='kw'>else</span>
|
794
|
+
<span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='const'>String</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pattern</span><span class='tstring_end'>"</span></span> <span class='rparen'>)</span>
|
795
|
+
<span class='kw'>end</span>
|
786
796
|
<span class='kw'>end</span></pre>
|
787
797
|
</td>
|
788
798
|
</tr>
|
@@ -1217,10 +1227,10 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
1217
1227
|
<pre class="lines">
|
1218
1228
|
|
1219
1229
|
|
1220
|
-
|
1230
|
+
111</pre>
|
1221
1231
|
</td>
|
1222
1232
|
<td>
|
1223
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line
|
1233
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line 111</span>
|
1224
1234
|
|
1225
1235
|
<span class='kw'>def</span> <span class='id identifier rubyid_array?'>array?</span> <span class='op'>=</span> <span class='ivar'>@array</span></pre>
|
1226
1236
|
</td>
|
@@ -1288,12 +1298,12 @@ inputs. <code>nil</code> is allowed only if the input definition is not for an a
|
|
1288
1298
|
<pre class="lines">
|
1289
1299
|
|
1290
1300
|
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1301
|
+
118
|
1302
|
+
119
|
1303
|
+
120</pre>
|
1294
1304
|
</td>
|
1295
1305
|
<td>
|
1296
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line
|
1306
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line 118</span>
|
1297
1307
|
|
1298
1308
|
<span class='kw'>def</span> <span class='id identifier rubyid_make_input'>make_input</span><span class='lparen'>(</span><span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
1299
1309
|
<span class='const'><span class='object_link'><a href="../../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Forms.html" title="Brut::FrontEnd::Forms (module)">Forms</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Input.html" title="Brut::FrontEnd::Forms::Input (class)">Input</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Input.html#initialize-instance_method" title="Brut::FrontEnd::Forms::Input#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='label'>input_definition:</span> <span class='kw'>self</span><span class='comma'>,</span> <span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
@@ -1308,7 +1318,7 @@ inputs. <code>nil</code> is allowed only if the input definition is not for an a
|
|
1308
1318
|
</div>
|
1309
1319
|
|
1310
1320
|
<div id="footer">
|
1311
|
-
Generated on
|
1321
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
1312
1322
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1313
1323
|
0.9.37 (ruby-3.4.4).
|
1314
1324
|
</div>
|
@@ -411,7 +411,10 @@
|
|
411
411
|
|
412
412
|
</h3><div class="docstring">
|
413
413
|
<div class="discussion">
|
414
|
-
<p>Returns the input's value
|
414
|
+
<p>Returns the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
415
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
416
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
417
|
+
input.value</code> and expect that work. See #typed_value instead.</p>
|
415
418
|
|
416
419
|
|
417
420
|
</div>
|
@@ -429,7 +432,10 @@
|
|
429
432
|
|
430
433
|
|
431
434
|
—
|
432
|
-
<div class='inline'><p>the input's value</
|
435
|
+
<div class='inline'><p>the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
436
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
437
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
438
|
+
input.value</code> and expect that work. See #typed_value instead.</p>
|
433
439
|
</div>
|
434
440
|
|
435
441
|
</li>
|
@@ -599,7 +605,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
599
605
|
</div>
|
600
606
|
|
601
607
|
<div id="footer">
|
602
|
-
Generated on
|
608
|
+
Generated on Fri Jul 4 21:27:29 2025 by
|
603
609
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
604
610
|
0.9.37 (ruby-3.4.4).
|
605
611
|
</div>
|
@@ -577,7 +577,7 @@ supported by the browser. Also note that arrays of radio button groups are not
|
|
577
577
|
</div>
|
578
578
|
|
579
579
|
<div id="footer">
|
580
|
-
Generated on
|
580
|
+
Generated on Fri Jul 4 21:27:29 2025 by
|
581
581
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
582
582
|
0.9.37 (ruby-3.4.4).
|
583
583
|
</div>
|
@@ -415,7 +415,10 @@
|
|
415
415
|
|
416
416
|
</h3><div class="docstring">
|
417
417
|
<div class="discussion">
|
418
|
-
<p>Returns the input's value
|
418
|
+
<p>Returns the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
419
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
420
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
421
|
+
input.value</code> and expect that work. See #typed_value instead.</p>
|
419
422
|
|
420
423
|
|
421
424
|
</div>
|
@@ -433,7 +436,10 @@
|
|
433
436
|
|
434
437
|
|
435
438
|
—
|
436
|
-
<div class='inline'><p>the input's value</
|
439
|
+
<div class='inline'><p>the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
440
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
441
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
442
|
+
input.value</code> and expect that work. See #typed_value instead.</p>
|
437
443
|
</div>
|
438
444
|
|
439
445
|
</li>
|
@@ -603,7 +609,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
603
609
|
</div>
|
604
610
|
|
605
611
|
<div id="footer">
|
606
|
-
Generated on
|
612
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
607
613
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
608
614
|
0.9.37 (ruby-3.4.4).
|
609
615
|
</div>
|
@@ -572,7 +572,7 @@ such as implementing a <span class='object_link'><a href="../../BackEnd/Validato
|
|
572
572
|
</div>
|
573
573
|
|
574
574
|
<div id="footer">
|
575
|
-
Generated on
|
575
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
576
576
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
577
577
|
0.9.37 (ruby-3.4.4).
|
578
578
|
</div>
|
@@ -111,6 +111,11 @@ constraint violations to create an entire picture of all constraints violated by
|
|
111
111
|
In a sense, this is a wrapper for one or more <span class='object_link'><a href="ConstraintViolation.html" title="Brut::FrontEnd::Forms::ConstraintViolation (class)">ConstraintViolation</a></span> instances in the
|
112
112
|
context of an input.</p>
|
113
113
|
|
114
|
+
<p>This class also holds the logic related to client- vs. server-side constraint
|
115
|
+
violations. As such, <span class='object_link'><a href="#KEYS-constant" title="Brut::FrontEnd::Forms::ValidityState::KEYS (constant)">KEYS</a></span> is the list of known client-side
|
116
|
+
constraint violation keys, as defined by browser's <code>ValidityState</code> class. These
|
117
|
+
are left as camel-case to make this clear.</p>
|
118
|
+
|
114
119
|
|
115
120
|
</div>
|
116
121
|
</div>
|
@@ -125,6 +130,51 @@ context of an input.</p>
|
|
125
130
|
</ul>
|
126
131
|
|
127
132
|
</div>
|
133
|
+
|
134
|
+
<h2>
|
135
|
+
Constant Summary
|
136
|
+
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
137
|
+
</h2>
|
138
|
+
|
139
|
+
<dl class="constants">
|
140
|
+
|
141
|
+
<dt id="KEYS-constant" class="">KEYS =
|
142
|
+
<div class="docstring">
|
143
|
+
<div class="discussion">
|
144
|
+
<p>These are the attributes of the browser's <code>ValidityState</code>'s properties.
|
145
|
+
They are left as camel-case to clearly indicate they come from the browser.</p>
|
146
|
+
|
147
|
+
|
148
|
+
</div>
|
149
|
+
</div>
|
150
|
+
<div class="tags">
|
151
|
+
|
152
|
+
|
153
|
+
<p class="tag_title">See Also:</p>
|
154
|
+
<ul class="see">
|
155
|
+
|
156
|
+
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/ValidityState" target="_parent" title="https://developer.mozilla.org/en-US/docs/Web/API/ValidityState">https://developer.mozilla.org/en-US/docs/Web/API/ValidityState</a></li>
|
157
|
+
|
158
|
+
</ul>
|
159
|
+
|
160
|
+
</div>
|
161
|
+
</dt>
|
162
|
+
<dd><pre class="code"><span class='lbracket'>[</span>
|
163
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>badInput</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
164
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>customError</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
165
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>patternMismatch</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
166
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>rangeOverflow</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
167
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>rangeUnderflow</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
168
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>stepMismatch</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
169
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>tooLong</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
170
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>tooShort</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
171
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>typeMismatch</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
172
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>valueMissing</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
173
|
+
<span class='rbracket'>]</span></pre></dd>
|
174
|
+
|
175
|
+
</dl>
|
176
|
+
|
177
|
+
|
128
178
|
|
129
179
|
|
130
180
|
|
@@ -311,18 +361,18 @@ context of an input.</p>
|
|
311
361
|
<pre class="lines">
|
312
362
|
|
313
363
|
|
314
|
-
14
|
315
|
-
15
|
316
|
-
16
|
317
|
-
17
|
318
|
-
18
|
319
364
|
19
|
320
365
|
20
|
321
366
|
21
|
322
|
-
22
|
367
|
+
22
|
368
|
+
23
|
369
|
+
24
|
370
|
+
25
|
371
|
+
26
|
372
|
+
27</pre>
|
323
373
|
</td>
|
324
374
|
<td>
|
325
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line
|
375
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line 19</span>
|
326
376
|
|
327
377
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_constraint_violations'>constraint_violations</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
328
378
|
<span class='ivar'>@constraint_violations</span> <span class='op'>=</span> <span class='id identifier rubyid_constraint_violations'>constraint_violations</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_is_violation'>is_violation</span><span class='op'>|</span>
|
@@ -383,10 +433,10 @@ context of an input.</p>
|
|
383
433
|
<pre class="lines">
|
384
434
|
|
385
435
|
|
386
|
-
|
436
|
+
33</pre>
|
387
437
|
</td>
|
388
438
|
<td>
|
389
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line
|
439
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line 33</span>
|
390
440
|
|
391
441
|
<span class='kw'>def</span> <span class='id identifier rubyid_constraint_violations?'>constraint_violations?</span> <span class='op'>=</span> <span class='op'>!</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span></pre>
|
392
442
|
</td>
|
@@ -451,14 +501,14 @@ context of an input.</p>
|
|
451
501
|
<pre class="lines">
|
452
502
|
|
453
503
|
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
504
|
+
48
|
505
|
+
49
|
506
|
+
50
|
507
|
+
51
|
508
|
+
52</pre>
|
459
509
|
</td>
|
460
510
|
<td>
|
461
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line
|
511
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line 48</span>
|
462
512
|
|
463
513
|
<span class='kw'>def</span> <span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
464
514
|
<span class='ivar'>@constraint_violations</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_constraint'>constraint</span><span class='op'>|</span>
|
@@ -530,12 +580,12 @@ on your use-case.</p>
|
|
530
580
|
<pre class="lines">
|
531
581
|
|
532
582
|
|
533
|
-
|
534
|
-
|
535
|
-
|
583
|
+
40
|
584
|
+
41
|
585
|
+
42</pre>
|
536
586
|
</td>
|
537
587
|
<td>
|
538
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line
|
588
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line 40</span>
|
539
589
|
|
540
590
|
<span class='kw'>def</span> <span class='id identifier rubyid_server_side_constraint_violation'>server_side_constraint_violation</span><span class='lparen'>(</span><span class='label'>key:</span><span class='comma'>,</span><span class='label'>context:</span><span class='rparen'>)</span>
|
541
591
|
<span class='ivar'>@constraint_violations</span> <span class='op'><<</span> <span class='const'><span class='object_link'><a href="../../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Forms.html" title="Brut::FrontEnd::Forms (module)">Forms</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="ConstraintViolation.html" title="Brut::FrontEnd::Forms::ConstraintViolation (class)">ConstraintViolation</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ConstraintViolation.html#initialize-instance_method" title="Brut::FrontEnd::Forms::ConstraintViolation#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='label'>key:</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='comma'>,</span> <span class='label'>server_side:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
@@ -583,10 +633,10 @@ on your use-case.</p>
|
|
583
633
|
<pre class="lines">
|
584
634
|
|
585
635
|
|
586
|
-
|
636
|
+
30</pre>
|
587
637
|
</td>
|
588
638
|
<td>
|
589
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line
|
639
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/validity_state.rb', line 30</span>
|
590
640
|
|
591
641
|
<span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@constraint_violations</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span></pre>
|
592
642
|
</td>
|
@@ -599,7 +649,7 @@ on your use-case.</p>
|
|
599
649
|
</div>
|
600
650
|
|
601
651
|
<div id="footer">
|
602
|
-
Generated on
|
652
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
603
653
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
604
654
|
0.9.37 (ruby-3.4.4).
|
605
655
|
</div>
|
@@ -117,7 +117,7 @@
|
|
117
117
|
</div>
|
118
118
|
|
119
119
|
<div id="footer">
|
120
|
-
Generated on
|
120
|
+
Generated on Fri Jul 4 21:27:27 2025 by
|
121
121
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
122
122
|
0.9.37 (ruby-3.4.4).
|
123
123
|
</div>
|
@@ -367,7 +367,7 @@ something that responds to <code>each</code>.</p>
|
|
367
367
|
</div>
|
368
368
|
|
369
369
|
<div id="footer">
|
370
|
-
Generated on
|
370
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
371
371
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
372
372
|
0.9.37 (ruby-3.4.4).
|
373
373
|
</div>
|
@@ -432,7 +432,7 @@ returns is returned here.</p>
|
|
432
432
|
</div>
|
433
433
|
|
434
434
|
<div id="footer">
|
435
|
-
Generated on
|
435
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
436
436
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
437
437
|
0.9.37 (ruby-3.4.4).
|
438
438
|
</div>
|
@@ -308,7 +308,7 @@ configured in <span class='object_link'><a href="../RouteHooks/CSPNoInlineStyles
|
|
308
308
|
</div>
|
309
309
|
|
310
310
|
<div id="footer">
|
311
|
-
Generated on
|
311
|
+
Generated on Fri Jul 4 21:27:29 2025 by
|
312
312
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
313
313
|
0.9.37 (ruby-3.4.4).
|
314
314
|
</div>
|
@@ -326,7 +326,7 @@
|
|
326
326
|
</div>
|
327
327
|
|
328
328
|
<div id="footer">
|
329
|
-
Generated on
|
329
|
+
Generated on Fri Jul 4 21:27:29 2025 by
|
330
330
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
331
331
|
0.9.37 (ruby-3.4.4).
|
332
332
|
</div>
|
@@ -389,7 +389,7 @@
|
|
389
389
|
</div>
|
390
390
|
|
391
391
|
<div id="footer">
|
392
|
-
Generated on
|
392
|
+
Generated on Fri Jul 4 21:27:29 2025 by
|
393
393
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
394
394
|
0.9.37 (ruby-3.4.4).
|
395
395
|
</div>
|
@@ -344,7 +344,7 @@ the app.</p>
|
|
344
344
|
</div>
|
345
345
|
|
346
346
|
<div id="footer">
|
347
|
-
Generated on
|
347
|
+
Generated on Fri Jul 4 21:27:29 2025 by
|
348
348
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
349
349
|
0.9.37 (ruby-3.4.4).
|
350
350
|
</div>
|
@@ -141,7 +141,7 @@
|
|
141
141
|
</div>
|
142
142
|
|
143
143
|
<div id="footer">
|
144
|
-
Generated on
|
144
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
145
145
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
146
146
|
0.9.37 (ruby-3.4.4).
|
147
147
|
</div>
|
@@ -305,7 +305,7 @@
|
|
305
305
|
</div>
|
306
306
|
|
307
307
|
<div id="footer">
|
308
|
-
Generated on
|
308
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
309
309
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
310
310
|
0.9.37 (ruby-3.4.4).
|
311
311
|
</div>
|
@@ -115,7 +115,7 @@
|
|
115
115
|
</div>
|
116
116
|
|
117
117
|
<div id="footer">
|
118
|
-
Generated on
|
118
|
+
Generated on Fri Jul 4 21:27:27 2025 by
|
119
119
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
120
120
|
0.9.37 (ruby-3.4.4).
|
121
121
|
</div>
|
@@ -329,7 +329,7 @@ redirect to a non-GET.</p>
|
|
329
329
|
</div>
|
330
330
|
|
331
331
|
<div id="footer">
|
332
|
-
Generated on
|
332
|
+
Generated on Fri Jul 4 21:27:27 2025 by
|
333
333
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
334
334
|
0.9.37 (ruby-3.4.4).
|
335
335
|
</div>
|
@@ -651,7 +651,7 @@
|
|
651
651
|
</div>
|
652
652
|
|
653
653
|
<div id="footer">
|
654
|
-
Generated on
|
654
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
655
655
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
656
656
|
0.9.37 (ruby-3.4.4).
|
657
657
|
</div>
|
@@ -486,7 +486,7 @@ considered a valid HTTP status code</p>
|
|
486
486
|
</div>
|
487
487
|
|
488
488
|
<div id="footer">
|
489
|
-
Generated on
|
489
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
490
490
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
491
491
|
0.9.37 (ruby-3.4.4).
|
492
492
|
</div>
|
@@ -274,7 +274,7 @@
|
|
274
274
|
</div>
|
275
275
|
|
276
276
|
<div id="footer">
|
277
|
-
Generated on
|
277
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
278
278
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
279
279
|
0.9.37 (ruby-3.4.4).
|
280
280
|
</div>
|
@@ -308,7 +308,7 @@ inserted into the filename.</p>
|
|
308
308
|
</div>
|
309
309
|
|
310
310
|
<div id="footer">
|
311
|
-
Generated on
|
311
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
312
312
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
313
313
|
0.9.37 (ruby-3.4.4).
|
314
314
|
</div>
|
@@ -125,7 +125,7 @@
|
|
125
125
|
</div>
|
126
126
|
|
127
127
|
<div id="footer">
|
128
|
-
Generated on
|
128
|
+
Generated on Fri Jul 4 21:27:28 2025 by
|
129
129
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
130
130
|
0.9.37 (ruby-3.4.4).
|
131
131
|
</div>
|
@@ -278,7 +278,7 @@ represents one that Brut is managing.</p>
|
|
278
278
|
</div>
|
279
279
|
|
280
280
|
<div id="footer">
|
281
|
-
Generated on
|
281
|
+
Generated on Fri Jul 4 21:27:29 2025 by
|
282
282
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
283
283
|
0.9.37 (ruby-3.4.4).
|
284
284
|
</div>
|