brut 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/Gemfile.lock +1 -1
- data/brut-js/CHANGELOG.md +5 -0
- data/brut-js/package-lock.json +2 -2
- data/brut-js/package.json +1 -1
- data/brut-js/specs/ConstraintViolationMessage.spec.js +1 -1
- data/brut-js/specs/ConstraintViolationMessages.spec.js +2 -2
- data/brut-js/specs/Form.spec.js +5 -5
- data/brut-js/src/ConstraintViolationMessage.js +3 -3
- data/brut-js/src/ConstraintViolationMessages.js +2 -2
- data/brutrb.com/.vitepress/config.mjs +1 -0
- data/brutrb.com/database-schema.md +22 -2
- data/brutrb.com/dev-environment.md +1 -0
- data/brutrb.com/form-constraints.md +2 -2
- data/brutrb.com/handlers.md +1 -1
- data/brutrb.com/i18n.md +2 -2
- data/brutrb.com/layouts.md +1 -1
- data/brutrb.com/recipes/migrations.md +210 -0
- data/docs/404.html +2 -2
- data/docs/adrs.html +4 -4
- data/docs/ai.html +4 -4
- 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 +1 -1
- 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 +6 -6
- data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +6 -6
- data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
- data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +6 -2
- data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Status.html +9 -9
- data/docs/api/Brut/CLI/Apps/DB.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +8 -12
- data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +5 -5
- data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +384 -0
- data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +5 -5
- data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +36 -36
- data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
- data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps.html +1 -1
- data/docs/api/Brut/CLI/Command.html +29 -31
- 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 +1 -1
- data/docs/api/Brut/CLI/InvalidOption.html +1 -1
- data/docs/api/Brut/CLI/Options.html +1 -1
- 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 +16 -2
- data/docs/api/Brut/Framework/Container.html +1 -1
- data/docs/api/Brut/Framework/Error.html +1 -1
- data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -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 +1 -1
- 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 +1 -1
- data/docs/api/Brut/FrontEnd/Component.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +3 -3
- data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +10 -14
- 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 +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +3 -3
- data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
- 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 +1 -1
- 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 +92 -20
- data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
- 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 +2 -2
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
- 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/ModuleName.html +595 -0
- data/docs/api/RichString.html +1 -1
- data/docs/api/SemanticLogger/Appender/Async.html +1 -1
- data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
- data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
- 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/_index.html +24 -12
- data/docs/api/class_list.html +1 -1
- data/docs/api/file.README.html +1 -1
- data/docs/api/index.html +1 -1
- data/docs/api/method_list.html +478 -406
- data/docs/api/top-level-namespace.html +2 -2
- data/docs/assets/{app._UukLsdv.js → app.AkS4fHzI.js} +1 -1
- data/docs/assets/chunks/@localSearchIndexroot.C9FqcQxD.js +1 -0
- data/docs/assets/chunks/{VPLocalSearchBox.DhYUVvsa.js → VPLocalSearchBox.By6un1FD.js} +1 -1
- data/docs/assets/chunks/{theme.DHNq8t6D.js → theme.DwiUPdci.js} +2 -2
- data/docs/assets/{components.md.DP8maNoF.js → components.md.BfeWD9sX.js} +3 -3
- data/docs/assets/{configuration.md.BDXwuZHU.js → configuration.md.DoSBNc0H.js} +1 -1
- data/docs/assets/{database-schema.md.CSYk6E6v.js → database-schema.md.C5gXexJi.js} +10 -3
- data/docs/assets/{database-schema.md.CSYk6E6v.lean.js → database-schema.md.C5gXexJi.lean.js} +1 -1
- data/docs/assets/{dev-environment.md.Dy6EldaM.js → dev-environment.md.DRH2D2-O.js} +3 -3
- data/docs/assets/dev-environment.md.DRH2D2-O.lean.js +1 -0
- data/docs/assets/{form-constraints.md.x5tNpTTI.js → form-constraints.md.DK5adCgM.js} +2 -2
- data/docs/assets/{forms.md.BwBNYrrL.js → forms.md.DFveP5g_.js} +1 -1
- data/docs/assets/{getting-started.md.B4LlHfav.js → getting-started.md.DZWjCVC0.js} +2 -2
- data/docs/assets/{handlers.md.Chyri6KA.js → handlers.md.h84MMB1R.js} +1 -1
- data/docs/assets/{i18n.md.xQhiGo1G.js → i18n.md.BAm9t9JJ.js} +1 -1
- data/docs/assets/{layouts.md.CJGDFY-m.js → layouts.md.CVGl9xIO.js} +1 -1
- data/docs/assets/recipes_migrations.md.DPN3gQE3.js +97 -0
- data/docs/assets/recipes_migrations.md.DPN3gQE3.lean.js +1 -0
- data/docs/assets.html +4 -4
- 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 +2 -2
- data/docs/brut-js/api/ConstraintViolationMessage.js.html +4 -4
- data/docs/brut-js/api/ConstraintViolationMessages.html +3 -3
- data/docs/brut-js/api/ConstraintViolationMessages.js.html +3 -3
- 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 +4 -4
- data/docs/business-logic.html +4 -4
- data/docs/cli.html +4 -4
- data/docs/components.html +8 -8
- data/docs/configuration.html +5 -5
- data/docs/css.html +4 -4
- data/docs/custom-element-tests.html +4 -4
- data/docs/database-access.html +4 -4
- data/docs/database-schema.html +13 -6
- data/docs/deployment.html +4 -4
- data/docs/dev-environment.html +6 -6
- data/docs/dir-structure.html +4 -4
- data/docs/doc-conventions.html +4 -4
- data/docs/end-to-end-tests.html +4 -4
- data/docs/features.html +4 -4
- data/docs/flash-and-session.html +4 -4
- data/docs/form-constraints.html +7 -7
- data/docs/forms.html +6 -6
- data/docs/getting-started.html +7 -7
- data/docs/handlers.html +6 -6
- data/docs/hashmap.json +1 -1
- data/docs/hooks.html +4 -4
- data/docs/i18n.html +6 -6
- data/docs/index.html +3 -3
- data/docs/instrumentation.html +4 -4
- data/docs/javascript.html +4 -4
- data/docs/jobs.html +4 -4
- data/docs/keyword-injection.html +4 -4
- data/docs/layouts.html +6 -6
- data/docs/lsp.html +4 -4
- data/docs/markdown-examples.html +4 -4
- data/docs/middleware.html +4 -4
- data/docs/overview.html +4 -4
- data/docs/pages.html +4 -4
- data/docs/recipes/alternate-layouts.html +4 -4
- data/docs/recipes/authentication.html +5 -5
- data/docs/recipes/blank-layouts.html +4 -4
- data/docs/recipes/custom-flash.html +4 -4
- data/docs/recipes/indexed-forms.html +4 -4
- data/docs/recipes/migrations.html +125 -0
- data/docs/recipes/text-field-component.html +4 -4
- data/docs/roadmap.html +4 -4
- data/docs/routes.html +4 -4
- data/docs/security.html +4 -4
- data/docs/seed-data.html +4 -4
- data/docs/space-time-continuum.html +4 -4
- data/docs/tutorial.html +4 -4
- data/docs/unit-tests.html +4 -4
- data/docs/why.html +4 -4
- data/lib/brut/cli/apps/db.rb +2 -0
- data/lib/brut/cli/apps/scaffold.rb +77 -0
- data/lib/brut/cli/command.rb +1 -2
- data/lib/brut/framework/config.rb +7 -0
- data/lib/brut/front_end/components/constraint_violations.rb +2 -2
- data/lib/brut/front_end/components/i18n_translations.rb +6 -10
- data/lib/brut/front_end/form.rb +5 -2
- data/lib/brut/junk_drawer.rb +53 -0
- data/lib/brut/version.rb +1 -1
- metadata +32 -25
- data/docs/assets/chunks/@localSearchIndexroot.DkpwyjLd.js +0 -1
- data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +0 -1
- /data/docs/assets/{components.md.DP8maNoF.lean.js → components.md.BfeWD9sX.lean.js} +0 -0
- /data/docs/assets/{configuration.md.BDXwuZHU.lean.js → configuration.md.DoSBNc0H.lean.js} +0 -0
- /data/docs/assets/{form-constraints.md.x5tNpTTI.lean.js → form-constraints.md.DK5adCgM.lean.js} +0 -0
- /data/docs/assets/{forms.md.BwBNYrrL.lean.js → forms.md.DFveP5g_.lean.js} +0 -0
- /data/docs/assets/{getting-started.md.B4LlHfav.lean.js → getting-started.md.DZWjCVC0.lean.js} +0 -0
- /data/docs/assets/{handlers.md.Chyri6KA.lean.js → handlers.md.h84MMB1R.lean.js} +0 -0
- /data/docs/assets/{i18n.md.xQhiGo1G.lean.js → i18n.md.BAm9t9JJ.lean.js} +0 -0
- /data/docs/assets/{layouts.md.CJGDFY-m.lean.js → layouts.md.CVGl9xIO.lean.js} +0 -0
@@ -105,7 +105,7 @@
|
|
105
105
|
|
106
106
|
<h2>Overview</h2><div class="docstring">
|
107
107
|
<div class="discussion">
|
108
|
-
<p>Renders the custom elements used to manage both client- and server-side constraint violations via the <code><brut-cv-messages></code> and <code><brut-cv></code> tags. Each constraint violation on the input's <span class='object_link'><a href="../Forms/ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Forms::ValidityState</a></span> will generate a <code><brut-cv server-side></code> tag that will contain the I18n translation of the violation's <span class='object_link'><a href="../Forms/ConstraintViolation.html#key-instance_method" title="Brut::FrontEnd::Forms::ConstraintViolation#key (method)">Forms::ConstraintViolation#key</a></span> prefixed with <code>"cv.
|
108
|
+
<p>Renders the custom elements used to manage both client- and server-side constraint violations via the <code><brut-cv-messages></code> and <code><brut-cv></code> tags. Each constraint violation on the input's <span class='object_link'><a href="../Forms/ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Forms::ValidityState</a></span> will generate a <code><brut-cv server-side></code> tag that will contain the I18n translation of the violation's <span class='object_link'><a href="../Forms/ConstraintViolation.html#key-instance_method" title="Brut::FrontEnd::Forms::ConstraintViolation#key (method)">Forms::ConstraintViolation#key</a></span> prefixed with <code>"cv.ss"</code>.</p>
|
109
109
|
|
110
110
|
<p>The general form of this component will be:</p>
|
111
111
|
|
@@ -445,7 +445,7 @@
|
|
445
445
|
<span class='op'>!</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_client_side?'>client_side?</span>
|
446
446
|
<span class='rbrace'>}</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>
|
447
447
|
<span class='id identifier rubyid_brut_cv'>brut_cv</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_message_html_attributes'>message_html_attributes</span><span class='rparen'>)</span> <span class='kw'>do</span>
|
448
|
-
<span class='id identifier rubyid_t'>t</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cv.
|
448
|
+
<span class='id identifier rubyid_t'>t</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cv.ss.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
|
449
449
|
<span class='kw'>end</span>
|
450
450
|
<span class='kw'>end</span>
|
451
451
|
<span class='kw'>end</span>
|
@@ -460,7 +460,7 @@
|
|
460
460
|
</div>
|
461
461
|
|
462
462
|
<div id="footer">
|
463
|
-
Generated on
|
463
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
464
464
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
465
465
|
0.9.37 (ruby-3.4.4).
|
466
466
|
</div>
|
@@ -516,7 +516,7 @@ If the form's action is GET, it will not.</p>
|
|
516
516
|
</div>
|
517
517
|
|
518
518
|
<div id="footer">
|
519
|
-
Generated on
|
519
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
520
520
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
521
521
|
0.9.37 (ruby-3.4.4).
|
522
522
|
</div>
|
@@ -110,21 +110,17 @@ JavaScript. The <code><brut-constraint-violation-message></code> tag uses
|
|
110
110
|
|
111
111
|
<p>The default layout included in new Brut apps includes this:</p>
|
112
112
|
|
113
|
-
<pre class="code
|
114
|
-
Brut::FrontEnd::Components::I18nTranslations.new(
|
115
|
-
"general.cv.fe"
|
116
|
-
)
|
117
|
-
) %>
|
113
|
+
<pre class="code ruby"><code class="ruby"><span class='const'>I18nTranslations</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Brut::FrontEnd::Components::I18nTranslations#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cv.cs</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
118
114
|
</code></pre>
|
119
115
|
|
120
116
|
<p>At runtime, this will produce this:</p>
|
121
117
|
|
122
118
|
<pre class="code html"><code class="html"><brut-i18n-translation
|
123
|
-
key="
|
119
|
+
key="cv.cs.badInput"
|
124
120
|
value="%{field} is the wrong type of data">
|
125
121
|
</brut-i18n-translation>
|
126
122
|
<brut-i18n-translation
|
127
|
-
key="
|
123
|
+
key="cv.cs.patternMismatch"
|
128
124
|
value="%{field} isn't in the right format">
|
129
125
|
</brut-i18n-translation>
|
130
126
|
<!-- etc -->
|
@@ -132,7 +128,7 @@ JavaScript. The <code><brut-constraint-violation-message></code> tag uses
|
|
132
128
|
|
133
129
|
<p>Thus, it will render the translations for all client side errors supported by the browser. This means that if a
|
134
130
|
client side <code>ValidityState</code> returns true for, say, <code>badInput</code>, JavaScript can look up by the <code>key</code>
|
135
|
-
<code>
|
131
|
+
<code>cv.cs.badInput</code> and find the <code>value</code> to produce the string "This field is the wrong type of data".</p>
|
136
132
|
|
137
133
|
|
138
134
|
</div>
|
@@ -272,7 +268,7 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
|
|
272
268
|
|
273
269
|
|
274
270
|
—
|
275
|
-
<div class='inline'><p>A prefix or full key for the i18n messages to render. For example, if you have <code>
|
271
|
+
<div class='inline'><p>A prefix or full key for the i18n messages to render. For example, if you have <code>cv.cs.valueMissing</code> and <code>cv.cs.badInput</code>, an <code>i18n_key_root</code> value of <code>"cv.cs"</code> will result in both of those keys being rendered.</p>
|
276
272
|
</div>
|
277
273
|
|
278
274
|
</li>
|
@@ -286,12 +282,12 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
|
|
286
282
|
<pre class="lines">
|
287
283
|
|
288
284
|
|
289
|
-
|
290
|
-
|
291
|
-
|
285
|
+
31
|
286
|
+
32
|
287
|
+
33</pre>
|
292
288
|
</td>
|
293
289
|
<td>
|
294
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/components/i18n_translations.rb', line
|
290
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/components/i18n_translations.rb', line 31</span>
|
295
291
|
|
296
292
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_i18n_key_root'>i18n_key_root</span><span class='rparen'>)</span>
|
297
293
|
<span class='ivar'>@i18n_key_root</span> <span class='op'>=</span> <span class='id identifier rubyid_i18n_key_root'>i18n_key_root</span>
|
@@ -307,7 +303,7 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
|
|
307
303
|
</div>
|
308
304
|
|
309
305
|
<div id="footer">
|
310
|
-
Generated on
|
306
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
311
307
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
312
308
|
0.9.37 (ruby-3.4.4).
|
313
309
|
</div>
|
@@ -185,7 +185,7 @@
|
|
185
185
|
</div>
|
186
186
|
|
187
187
|
<div id="footer">
|
188
|
-
Generated on
|
188
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
189
189
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
190
190
|
0.9.37 (ruby-3.4.4).
|
191
191
|
</div>
|
@@ -329,7 +329,7 @@ to use this directly if you are building a form without <span class='object_link
|
|
329
329
|
</div>
|
330
330
|
|
331
331
|
<div id="footer">
|
332
|
-
Generated on
|
332
|
+
Generated on Sat Jul 12 21:25:22 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>
|
@@ -553,7 +553,7 @@ Generally, you want to use this method over the initializer.</p>
|
|
553
553
|
</div>
|
554
554
|
|
555
555
|
<div id="footer">
|
556
|
-
Generated on
|
556
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
557
557
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
558
558
|
0.9.37 (ruby-3.4.4).
|
559
559
|
</div>
|
@@ -409,7 +409,7 @@ method once for each radio button in the group.</p>
|
|
409
409
|
</div>
|
410
410
|
|
411
411
|
<div id="footer">
|
412
|
-
Generated on
|
412
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
413
413
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
414
414
|
0.9.37 (ruby-3.4.4).
|
415
415
|
</div>
|
@@ -507,7 +507,7 @@ to be used as the <code>value</code> attribute and option text content, respecti
|
|
507
507
|
<span class='ivar'>@html_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_default_html_attributes'>default_html_attributes</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_html_attributes'>html_attributes</span><span class='rparen'>)</span>
|
508
508
|
<span class='ivar'>@html_attributes</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
|
509
509
|
|
510
|
-
<span class='kw'>if</span> <span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
510
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_end'>"</span></span>
|
511
511
|
<span class='ivar'>@selected_value</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='comment'># explicitly nothing is selected
|
512
512
|
</span> <span class='kw'>else</span>
|
513
513
|
<span class='kw'>if</span> <span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span>
|
@@ -516,7 +516,7 @@ to be used as the <code>value</code> attribute and option text content, respecti
|
|
516
516
|
<span class='id identifier rubyid_option'>option</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_detect'>detect</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_option'>option</span><span class='op'>|</span>
|
517
517
|
<span class='id identifier rubyid_input_value'>input_value</span> <span class='op'>==</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='ivar'>@value_attribute</span><span class='rparen'>)</span>
|
518
518
|
<span class='rbrace'>}</span>
|
519
|
-
<span class='kw'>if</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
519
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
520
520
|
<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'>selected_value </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_input_value'>input_value</span><span class='embexpr_end'>}</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> was not the value for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value_attribute'>value_attribute</span><span class='embexpr_end'>}</span><span class='tstring_content'> on any of the options: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_options'>options</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_option'>option</span><span class='op'>|</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_value_attribute'>value_attribute</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>, </span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
521
521
|
<span class='kw'>end</span>
|
522
522
|
<span class='ivar'>@selected_value</span> <span class='op'>=</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='ivar'>@value_attribute</span><span class='rparen'>)</span>
|
@@ -601,7 +601,7 @@ to be used as the <code>value</code> attribute and option text content, respecti
|
|
601
601
|
</div>
|
602
602
|
|
603
603
|
<div id="footer">
|
604
|
-
Generated on
|
604
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
605
605
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
606
606
|
0.9.37 (ruby-3.4.4).
|
607
607
|
</div>
|
@@ -525,7 +525,7 @@ Generally, you want to use this method over the initializer.</p>
|
|
525
525
|
</div>
|
526
526
|
|
527
527
|
<div id="footer">
|
528
|
-
Generated on
|
528
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
529
529
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
530
530
|
0.9.37 (ruby-3.4.4).
|
531
531
|
</div>
|
@@ -115,7 +115,7 @@
|
|
115
115
|
</div>
|
116
116
|
|
117
117
|
<div id="footer">
|
118
|
-
Generated on
|
118
|
+
Generated on Sat Jul 12 21:25:20 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>
|
@@ -357,7 +357,7 @@ ask the browser to send it, or not.</p>
|
|
357
357
|
</div>
|
358
358
|
|
359
359
|
<div id="footer">
|
360
|
-
Generated on
|
360
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
361
361
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
362
362
|
0.9.37 (ruby-3.4.4).
|
363
363
|
</div>
|
@@ -326,7 +326,7 @@
|
|
326
326
|
</div>
|
327
327
|
|
328
328
|
<div id="footer">
|
329
|
-
Generated on
|
329
|
+
Generated on Sat Jul 12 21:25:22 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>
|
@@ -645,7 +645,7 @@ you would like to be accessible. If omitted, the tag's contents will be the for
|
|
645
645
|
</div>
|
646
646
|
|
647
647
|
<div id="footer">
|
648
|
-
Generated on
|
648
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
649
649
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
650
650
|
0.9.37 (ruby-3.4.4).
|
651
651
|
</div>
|
@@ -342,7 +342,7 @@
|
|
342
342
|
</div>
|
343
343
|
|
344
344
|
<div id="footer">
|
345
|
-
Generated on
|
345
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
346
346
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
347
347
|
0.9.37 (ruby-3.4.4).
|
348
348
|
</div>
|
@@ -146,7 +146,7 @@ end</code></pre>
|
|
146
146
|
</div>
|
147
147
|
|
148
148
|
<div id="footer">
|
149
|
-
Generated on
|
149
|
+
Generated on Sat Jul 12 21:25:20 2025 by
|
150
150
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
151
151
|
0.9.37 (ruby-3.4.4).
|
152
152
|
</div>
|
@@ -457,7 +457,7 @@ download the same file mulitple times but you want to make each name different a
|
|
457
457
|
</div>
|
458
458
|
|
459
459
|
<div id="footer">
|
460
|
-
Generated on
|
460
|
+
Generated on Sat Jul 12 21:25:21 2025 by
|
461
461
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
462
462
|
0.9.37 (ruby-3.4.4).
|
463
463
|
</div>
|
@@ -1140,7 +1140,7 @@ flash from being more than 1 request old. This is usually sufficient for a hand
|
|
1140
1140
|
</div>
|
1141
1141
|
|
1142
1142
|
<div id="footer">
|
1143
|
-
Generated on
|
1143
|
+
Generated on Sat Jul 12 21:25:21 2025 by
|
1144
1144
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1145
1145
|
0.9.37 (ruby-3.4.4).
|
1146
1146
|
</div>
|
@@ -341,6 +341,29 @@ for processing them or for testing.</p>
|
|
341
341
|
<span class="summary_desc"><div class='inline'><p>Return this form as a hash, which is a map of its parameters' current values.</p>
|
342
342
|
</div></span>
|
343
343
|
|
344
|
+
</li>
|
345
|
+
|
346
|
+
|
347
|
+
<li class="public ">
|
348
|
+
<span class="summary_signature">
|
349
|
+
|
350
|
+
<a href="#valid%3F-instance_method" title="#valid? (instance method)">#<strong>valid?</strong> ⇒ Boolean </a>
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
</span>
|
355
|
+
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
|
364
|
+
<span class="summary_desc"><div class='inline'><p>Returns true if this form has no constraint violations.</p>
|
365
|
+
</div></span>
|
366
|
+
|
344
367
|
</li>
|
345
368
|
|
346
369
|
|
@@ -591,9 +614,6 @@ name.</p>
|
|
591
614
|
<pre class="lines">
|
592
615
|
|
593
616
|
|
594
|
-
148
|
595
|
-
149
|
596
|
-
150
|
597
617
|
151
|
598
618
|
152
|
599
619
|
153
|
@@ -613,10 +633,13 @@ name.</p>
|
|
613
633
|
167
|
614
634
|
168
|
615
635
|
169
|
616
|
-
170
|
636
|
+
170
|
637
|
+
171
|
638
|
+
172
|
639
|
+
173</pre>
|
617
640
|
</td>
|
618
641
|
<td>
|
619
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line
|
642
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 151</span>
|
620
643
|
|
621
644
|
<span class='kw'>def</span> <span class='id identifier rubyid_constraint_violations'>constraint_violations</span><span class='lparen'>(</span><span class='label'>server_side_only:</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
622
645
|
<span class='ivar'>@inputs</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_input_name'>input_name</span><span class='comma'>,</span> <span class='id identifier rubyid_inputs'>inputs</span><span class='op'>|</span>
|
@@ -689,7 +712,7 @@ name.</p>
|
|
689
712
|
<td>
|
690
713
|
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 117</span>
|
691
714
|
|
692
|
-
<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='
|
715
|
+
<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>
|
693
716
|
</td>
|
694
717
|
</tr>
|
695
718
|
</table>
|
@@ -969,10 +992,10 @@ values provided by the user. This can allow a form with values in it to be cons
|
|
969
992
|
<pre class="lines">
|
970
993
|
|
971
994
|
|
972
|
-
|
995
|
+
179</pre>
|
973
996
|
</td>
|
974
997
|
<td>
|
975
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line
|
998
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 179</span>
|
976
999
|
|
977
1000
|
<span class='kw'>def</span> <span class='id identifier rubyid_params_empty?'>params_empty?</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span></pre>
|
978
1001
|
</td>
|
@@ -1027,7 +1050,7 @@ values provided by the user. This can allow a form with values in it to be cons
|
|
1027
1050
|
|
1028
1051
|
|
1029
1052
|
—
|
1030
|
-
<div class='inline'><p>the i18n key fragment representing the constraint. Assume this will be appended to <code>cv.
|
1053
|
+
<div class='inline'><p>the i18n key fragment representing the constraint. Assume this will be appended to <code>cv.ss.</code> in order</p>
|
1031
1054
|
</div>
|
1032
1055
|
|
1033
1056
|
</li>
|
@@ -1058,13 +1081,13 @@ values provided by the user. This can allow a form with values in it to be cons
|
|
1058
1081
|
<pre class="lines">
|
1059
1082
|
|
1060
1083
|
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1084
|
+
128
|
1085
|
+
129
|
1086
|
+
130
|
1087
|
+
131</pre>
|
1065
1088
|
</td>
|
1066
1089
|
<td>
|
1067
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line
|
1090
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 128</span>
|
1068
1091
|
|
1069
1092
|
<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'>input_name:</span><span class='comma'>,</span> <span class='label'>key:</span><span class='comma'>,</span> <span class='label'>index:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>context:</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
1070
1093
|
<span class='id identifier rubyid_index'>index</span> <span class='op'>||=</span> <span class='int'>0</span>
|
@@ -1121,14 +1144,14 @@ will be represented as a key in the resulting hash—only those keys that were p
|
|
1121
1144
|
<pre class="lines">
|
1122
1145
|
|
1123
1146
|
|
1124
|
-
184
|
1125
|
-
185
|
1126
|
-
186
|
1127
1147
|
187
|
1128
|
-
188
|
1148
|
+
188
|
1149
|
+
189
|
1150
|
+
190
|
1151
|
+
191</pre>
|
1129
1152
|
</td>
|
1130
1153
|
<td>
|
1131
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line
|
1154
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 187</span>
|
1132
1155
|
|
1133
1156
|
<span class='kw'>def</span> <span class='id identifier rubyid_to_h'>to_h</span>
|
1134
1157
|
<span class='ivar'>@params</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_value'>value</span><span class='op'>|</span>
|
@@ -1138,6 +1161,55 @@ will be represented as a key in the resulting hash—only those keys that were p
|
|
1138
1161
|
</td>
|
1139
1162
|
</tr>
|
1140
1163
|
</table>
|
1164
|
+
</div>
|
1165
|
+
|
1166
|
+
<div class="method_details ">
|
1167
|
+
<h3 class="signature " id="valid?-instance_method">
|
1168
|
+
|
1169
|
+
#<strong>valid?</strong> ⇒ <tt>Boolean</tt>
|
1170
|
+
|
1171
|
+
|
1172
|
+
|
1173
|
+
|
1174
|
+
|
1175
|
+
</h3><div class="docstring">
|
1176
|
+
<div class="discussion">
|
1177
|
+
<p>Returns true if this form has no constraint violations.</p>
|
1178
|
+
|
1179
|
+
|
1180
|
+
</div>
|
1181
|
+
</div>
|
1182
|
+
<div class="tags">
|
1183
|
+
|
1184
|
+
<p class="tag_title">Returns:</p>
|
1185
|
+
<ul class="return">
|
1186
|
+
|
1187
|
+
<li>
|
1188
|
+
|
1189
|
+
|
1190
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
1191
|
+
|
1192
|
+
|
1193
|
+
|
1194
|
+
</li>
|
1195
|
+
|
1196
|
+
</ul>
|
1197
|
+
|
1198
|
+
</div><table class="source_code">
|
1199
|
+
<tr>
|
1200
|
+
<td>
|
1201
|
+
<pre class="lines">
|
1202
|
+
|
1203
|
+
|
1204
|
+
120</pre>
|
1205
|
+
</td>
|
1206
|
+
<td>
|
1207
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 120</span>
|
1208
|
+
|
1209
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@inputs</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:valid?</span><span class='rparen'>)</span></pre>
|
1210
|
+
</td>
|
1211
|
+
</tr>
|
1212
|
+
</table>
|
1141
1213
|
</div>
|
1142
1214
|
|
1143
1215
|
</div>
|
@@ -1145,7 +1217,7 @@ will be represented as a key in the resulting hash—only those keys that were p
|
|
1145
1217
|
</div>
|
1146
1218
|
|
1147
1219
|
<div id="footer">
|
1148
|
-
Generated on
|
1220
|
+
Generated on Sat Jul 12 21:25:21 2025 by
|
1149
1221
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1150
1222
|
0.9.37 (ruby-3.4.4).
|
1151
1223
|
</div>
|
@@ -580,7 +580,7 @@ form-related classes.</p>
|
|
580
580
|
</div>
|
581
581
|
|
582
582
|
<div id="footer">
|
583
|
-
Generated on
|
583
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
584
584
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
585
585
|
0.9.37 (ruby-3.4.4).
|
586
586
|
</div>
|
@@ -191,7 +191,7 @@
|
|
191
191
|
</div>
|
192
192
|
|
193
193
|
<div id="footer">
|
194
|
-
Generated on
|
194
|
+
Generated on Sat Jul 12 21:25:21 2025 by
|
195
195
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
196
196
|
0.9.37 (ruby-3.4.4).
|
197
197
|
</div>
|
@@ -525,7 +525,7 @@
|
|
525
525
|
</div>
|
526
526
|
|
527
527
|
<div id="footer">
|
528
|
-
Generated on
|
528
|
+
Generated on Sat Jul 12 21:25:21 2025 by
|
529
529
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
530
530
|
0.9.37 (ruby-3.4.4).
|
531
531
|
</div>
|
@@ -1553,7 +1553,7 @@ initializer</p>
|
|
1553
1553
|
</div>
|
1554
1554
|
|
1555
1555
|
<div id="footer">
|
1556
|
-
Generated on
|
1556
|
+
Generated on Sat Jul 12 21:25:21 2025 by
|
1557
1557
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1558
1558
|
0.9.37 (ruby-3.4.4).
|
1559
1559
|
</div>
|
@@ -537,7 +537,7 @@ Components::Inputs::Select</p>
|
|
537
537
|
</div>
|
538
538
|
|
539
539
|
<div id="footer">
|
540
|
-
Generated on
|
540
|
+
Generated on Sat Jul 12 21:25:21 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>
|
@@ -1318,7 +1318,7 @@ inputs. <code>nil</code> is allowed only if the input definition is not for an a
|
|
1318
1318
|
</div>
|
1319
1319
|
|
1320
1320
|
<div id="footer">
|
1321
|
-
Generated on
|
1321
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
1322
1322
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1323
1323
|
0.9.37 (ruby-3.4.4).
|
1324
1324
|
</div>
|
@@ -720,7 +720,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
720
720
|
</div>
|
721
721
|
|
722
722
|
<div id="footer">
|
723
|
-
Generated on
|
723
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
724
724
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
725
725
|
0.9.37 (ruby-3.4.4).
|
726
726
|
</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 Sat Jul 12 21:25:22 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>
|
@@ -724,7 +724,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
724
724
|
</div>
|
725
725
|
|
726
726
|
<div id="footer">
|
727
|
-
Generated on
|
727
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
728
728
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
729
729
|
0.9.37 (ruby-3.4.4).
|
730
730
|
</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 Sat Jul 12 21:25:22 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>
|
@@ -649,7 +649,7 @@ on your use-case.</p>
|
|
649
649
|
</div>
|
650
650
|
|
651
651
|
<div id="footer">
|
652
|
-
Generated on
|
652
|
+
Generated on Sat Jul 12 21:25:22 2025 by
|
653
653
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
654
654
|
0.9.37 (ruby-3.4.4).
|
655
655
|
</div>
|
@@ -117,7 +117,7 @@
|
|
117
117
|
</div>
|
118
118
|
|
119
119
|
<div id="footer">
|
120
|
-
Generated on
|
120
|
+
Generated on Sat Jul 12 21:25:20 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 Sat Jul 12 21:25:22 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>
|