brut 0.0.29 → 0.2.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/Gemfile.lock +1 -1
- data/README.md +23 -2
- data/assets/LogoStop.pxd +0 -0
- data/assets/MetroLogo.graffle +0 -0
- data/assets/SocialImage.png +0 -0
- data/assets/SocialImage.pxd +0 -0
- data/brutrb.com/.vitepress/config.mjs +48 -9
- data/brutrb.com/.vitepress/theme/style.css +14 -35
- data/brutrb.com/adrs.md +15 -0
- data/brutrb.com/ai.md +10 -15
- data/brutrb.com/assets.md +2 -9
- data/brutrb.com/brut-js.md +12 -2
- data/brutrb.com/cli.md +9 -13
- data/brutrb.com/components.md +118 -96
- data/brutrb.com/configuration.md +3 -4
- data/brutrb.com/css.md +2 -2
- data/brutrb.com/custom-element-tests.md +3 -4
- data/brutrb.com/database-access.md +1 -1
- data/brutrb.com/database-schema.md +29 -41
- data/brutrb.com/dev-environment.md +13 -8
- data/brutrb.com/dir-structure.md +120 -0
- data/brutrb.com/doc-conventions.md +17 -15
- data/brutrb.com/dx +1 -0
- data/brutrb.com/end-to-end-tests.md +12 -10
- data/brutrb.com/features.md +373 -0
- data/brutrb.com/flash-and-session.md +115 -131
- data/brutrb.com/form-constraints.md +266 -0
- data/brutrb.com/forms.md +140 -765
- data/brutrb.com/getting-started.md +10 -11
- data/brutrb.com/handlers.md +119 -95
- data/brutrb.com/hooks.md +18 -20
- data/brutrb.com/i18n.md +6 -4
- data/brutrb.com/images/DevEnvironment.graffle +0 -0
- data/brutrb.com/images/DevEnvironment.png +0 -0
- data/brutrb.com/images/LogoStop.png +0 -0
- data/brutrb.com/index.md +0 -3
- data/brutrb.com/instrumentation.md +7 -10
- data/brutrb.com/javascript.md +14 -14
- data/brutrb.com/keyword-injection.md +72 -114
- data/brutrb.com/layouts.md +20 -52
- data/brutrb.com/lsp.md +1 -1
- data/brutrb.com/overview.md +30 -372
- data/brutrb.com/pages.md +119 -207
- data/brutrb.com/public/SocialImage.png +0 -0
- data/brutrb.com/public/favicon.ico +0 -0
- data/brutrb.com/recipes/alternate-layouts.md +32 -0
- data/brutrb.com/recipes/authentication.md +315 -6
- data/brutrb.com/recipes/blank-layouts.md +22 -0
- data/brutrb.com/recipes/custom-flash.md +51 -0
- data/brutrb.com/recipes/indexed-forms.md +149 -0
- data/brutrb.com/recipes/text-field-component.md +182 -0
- data/brutrb.com/roadmap.md +57 -0
- data/brutrb.com/routes.md +56 -82
- data/brutrb.com/security.md +0 -3
- data/brutrb.com/space-time-continuum.md +8 -12
- data/brutrb.com/tutorial.md +5 -1
- data/brutrb.com/why.md +19 -0
- data/docs/404.html +8 -3
- data/docs/SocialImage.png +0 -0
- data/docs/adrs.html +29 -0
- data/docs/ai.html +11 -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 +1 -1
- data/docs/api/Brut/CLI/AppRunner.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +3 -3
- data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
- 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 +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
- 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 +6 -6
- data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test.html +2 -2
- data/docs/api/Brut/CLI/Apps.html +1 -1
- data/docs/api/Brut/CLI/Command.html +3 -3
- 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 +1 -1
- 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 +1 -1
- data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
- 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 +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 +9 -11
- 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 +135 -20
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +135 -20
- 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 +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 +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 +2 -2
- 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/RichString.html +150 -343
- 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 +5 -5
- data/docs/api/class_list.html +1 -1
- data/docs/api/file.README.html +22 -3
- data/docs/api/index.html +22 -3
- data/docs/api/method_list.html +290 -306
- data/docs/api/top-level-namespace.html +1 -1
- data/docs/assets/DevEnvironment.DaFcVfwP.png +0 -0
- data/docs/assets/LogoStop.Gb3tDhL1.png +0 -0
- data/docs/assets/adrs.md.JRxZ5uYE.js +1 -0
- data/docs/assets/adrs.md.JRxZ5uYE.lean.js +1 -0
- data/docs/assets/{ai.md._6HCDL6d.js → ai.md.Cy9GWnER.js} +1 -1
- data/docs/assets/ai.md.Cy9GWnER.lean.js +1 -0
- data/docs/assets/{app.BhrfSt68.js → app.Dm3x-DQc.js} +1 -1
- data/docs/assets/{assets.md.D3wunzLx.js → assets.md.7C3HWkga.js} +3 -3
- data/docs/assets/{assets.md.D3wunzLx.lean.js → assets.md.7C3HWkga.lean.js} +1 -1
- data/docs/assets/{brut-js.md.o2DAO2s2.js → brut-js.md.B4GYxQVw.js} +1 -1
- data/docs/assets/{brut-js.md.o2DAO2s2.lean.js → brut-js.md.B4GYxQVw.lean.js} +1 -1
- data/docs/assets/chunks/@localSearchIndexroot.BqRrkR00.js +1 -0
- data/docs/assets/chunks/{VPLocalSearchBox.Dpot_2H4.js → VPLocalSearchBox.DL6bnqee.js} +1 -1
- data/docs/assets/chunks/{theme.N2SNVLgU.js → theme.BXdlf6e8.js} +2 -2
- data/docs/assets/{cli.md.RmeA2b0i.js → cli.md.CjsktgFz.js} +15 -20
- data/docs/assets/components.md.Pg_Lo35G.js +96 -0
- data/docs/assets/{components.md.CRUMdRoN.lean.js → components.md.Pg_Lo35G.lean.js} +1 -1
- data/docs/assets/{configuration.md.LG-zIBww.js → configuration.md.BfeGnEci.js} +3 -3
- data/docs/assets/{css.md.DJgj2clw.js → css.md.CltvJqAa.js} +3 -3
- data/docs/assets/{custom-element-tests.md.BrYJQEl3.js → custom-element-tests.md.B_rbta32.js} +3 -3
- data/docs/assets/{database-access.md.C7l-Vuvb.js → database-access.md.gnluu54N.js} +1 -1
- data/docs/assets/{database-schema.md.BUjR0VS1.js → database-schema.md.CSYk6E6v.js} +6 -6
- data/docs/assets/{database-schema.md.BUjR0VS1.lean.js → database-schema.md.CSYk6E6v.lean.js} +1 -1
- data/docs/assets/dev-environment.md.Dy6EldaM.js +16 -0
- data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +1 -0
- data/docs/assets/dir-structure.md.CWir1pic.js +46 -0
- data/docs/assets/dir-structure.md.CWir1pic.lean.js +1 -0
- data/docs/assets/doc-conventions.md.DOkAuXlt.js +1 -0
- data/docs/assets/doc-conventions.md.DOkAuXlt.lean.js +1 -0
- data/docs/assets/{end-to-end-tests.md.yfQHC0b5.js → end-to-end-tests.md.DzqRpZ43.js} +5 -3
- data/docs/assets/end-to-end-tests.md.DzqRpZ43.lean.js +1 -0
- data/docs/assets/features.md.DPFXsy0z.js +154 -0
- data/docs/assets/features.md.DPFXsy0z.lean.js +1 -0
- data/docs/assets/flash-and-session.md.nPvUpnUx.js +79 -0
- data/docs/assets/{flash-and-session.md.BXY8RvT0.lean.js → flash-and-session.md.nPvUpnUx.lean.js} +1 -1
- data/docs/assets/form-constraints.md.x5tNpTTI.js +90 -0
- data/docs/assets/form-constraints.md.x5tNpTTI.lean.js +1 -0
- data/docs/assets/forms.md.BQZlCwvi.js +64 -0
- data/docs/assets/forms.md.BQZlCwvi.lean.js +1 -0
- data/docs/assets/{getting-started.md.Dj0qtZI2.js → getting-started.md.BcXnNuD6.js} +5 -5
- data/docs/assets/{getting-started.md.Dj0qtZI2.lean.js → getting-started.md.BcXnNuD6.lean.js} +1 -1
- data/docs/assets/handlers.md.Chyri6KA.js +54 -0
- data/docs/assets/handlers.md.Chyri6KA.lean.js +1 -0
- data/docs/assets/{hooks.md.C4-moMny.js → hooks.md.Jmb5VOLA.js} +4 -4
- data/docs/assets/{hooks.md.C4-moMny.lean.js → hooks.md.Jmb5VOLA.lean.js} +1 -1
- data/docs/assets/{i18n.md.Do9i1qWl.js → i18n.md.xQhiGo1G.js} +2 -2
- data/docs/assets/{i18n.md.Do9i1qWl.lean.js → i18n.md.xQhiGo1G.lean.js} +1 -1
- data/docs/assets/index.md.Bn9e0sRJ.js +1 -0
- data/docs/assets/index.md.Bn9e0sRJ.lean.js +1 -0
- data/docs/assets/{instrumentation.md.a9Pjps4P.js → instrumentation.md.BgcaGVYH.js} +2 -2
- data/docs/assets/{instrumentation.md.a9Pjps4P.lean.js → instrumentation.md.BgcaGVYH.lean.js} +1 -1
- data/docs/assets/{javascript.md.GWbhRS51.js → javascript.md.DzrMxUmI.js} +7 -7
- data/docs/assets/{javascript.md.GWbhRS51.lean.js → javascript.md.DzrMxUmI.lean.js} +1 -1
- data/docs/assets/keyword-injection.md.95Zgh2eN.js +21 -0
- data/docs/assets/{keyword-injection.md.Dt2tKREs.lean.js → keyword-injection.md.95Zgh2eN.lean.js} +1 -1
- data/docs/assets/{layouts.md.cPnh3NId.js → layouts.md.CJGDFY-m.js} +2 -15
- data/docs/assets/layouts.md.CJGDFY-m.lean.js +1 -0
- data/docs/assets/{lsp.md.Bsu-f6VU.js → lsp.md.Dn1rIiW0.js} +1 -1
- data/docs/assets/{lsp.md.Bsu-f6VU.lean.js → lsp.md.Dn1rIiW0.lean.js} +1 -1
- data/docs/assets/overview.md.iMnwLO4x.js +1 -0
- data/docs/assets/overview.md.iMnwLO4x.lean.js +1 -0
- data/docs/assets/pages.md.B7Hc-i6H.js +45 -0
- data/docs/assets/pages.md.B7Hc-i6H.lean.js +1 -0
- data/docs/assets/recipes_alternate-layouts.md.BwEytl59.js +22 -0
- data/docs/assets/recipes_alternate-layouts.md.BwEytl59.lean.js +1 -0
- data/docs/assets/recipes_authentication.md.Dzvi_g69.js +156 -0
- data/docs/assets/recipes_authentication.md.Dzvi_g69.lean.js +1 -0
- data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.js +15 -0
- data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.lean.js +1 -0
- data/docs/assets/recipes_custom-flash.md.CrQbI5eH.js +26 -0
- data/docs/assets/recipes_custom-flash.md.CrQbI5eH.lean.js +1 -0
- data/docs/assets/recipes_indexed-forms.md.CstYyOSo.js +74 -0
- data/docs/assets/recipes_indexed-forms.md.CstYyOSo.lean.js +1 -0
- data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.js +101 -0
- data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.lean.js +1 -0
- data/docs/assets/roadmap.md.C6PRi0DX.js +1 -0
- data/docs/assets/roadmap.md.C6PRi0DX.lean.js +1 -0
- data/docs/assets/routes.md.B8kfUPHU.js +21 -0
- data/docs/assets/{routes.md.BMM7peut.lean.js → routes.md.B8kfUPHU.lean.js} +1 -1
- data/docs/assets/{security.md.C668yXCi.js → security.md.C0G_AZR-.js} +1 -1
- data/docs/assets/{security.md.C668yXCi.lean.js → security.md.C0G_AZR-.lean.js} +1 -1
- data/docs/assets/space-time-continuum.md.xl44xDos.js +1 -0
- data/docs/assets/{space-time-continuum.md.KPUIKysQ.lean.js → space-time-continuum.md.xl44xDos.lean.js} +1 -1
- data/docs/assets/{style.B2o1L9eN.css → style.B1z60PPQ.css} +1 -1
- data/docs/assets/tutorial.md.BYXj4cOu.js +1 -0
- data/docs/assets/tutorial.md.BYXj4cOu.lean.js +1 -0
- data/docs/assets/why.md.C-hk5xgJ.js +1 -0
- data/docs/assets/why.md.C-hk5xgJ.lean.js +1 -0
- data/docs/assets.html +12 -7
- 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 +12 -7
- data/docs/business-logic.html +10 -5
- data/docs/cli.html +26 -26
- data/docs/components.html +61 -64
- data/docs/configuration.html +13 -8
- data/docs/css.html +14 -9
- data/docs/custom-element-tests.html +14 -9
- data/docs/database-access.html +12 -7
- data/docs/database-schema.html +15 -10
- data/docs/deployment.html +10 -5
- data/docs/dev-environment.html +17 -7
- data/docs/dir-structure.html +74 -0
- data/docs/doc-conventions.html +11 -6
- data/docs/end-to-end-tests.html +15 -8
- data/docs/favicon.ico +0 -0
- data/docs/features.html +182 -0
- data/docs/flash-and-session.html +73 -82
- data/docs/form-constraints.html +118 -0
- data/docs/forms.html +57 -367
- data/docs/getting-started.html +15 -10
- data/docs/handlers.html +51 -61
- data/docs/hashmap.json +1 -1
- data/docs/hooks.html +14 -9
- data/docs/i18n.html +12 -7
- data/docs/index.html +11 -6
- data/docs/instrumentation.html +12 -7
- data/docs/javascript.html +17 -12
- data/docs/jobs.html +10 -5
- data/docs/keyword-injection.html +22 -21
- data/docs/layouts.html +12 -20
- data/docs/lsp.html +11 -6
- data/docs/markdown-examples.html +10 -5
- data/docs/middleware.html +10 -5
- data/docs/overview.html +11 -138
- data/docs/pages.html +49 -121
- data/docs/recipes/alternate-layouts.html +50 -0
- data/docs/recipes/authentication.html +166 -6
- data/docs/recipes/blank-layouts.html +43 -0
- data/docs/recipes/custom-flash.html +54 -0
- data/docs/recipes/indexed-forms.html +102 -0
- data/docs/recipes/text-field-component.html +129 -0
- data/docs/roadmap.html +29 -0
- data/docs/routes.html +16 -19
- data/docs/security.html +11 -6
- data/docs/seed-data.html +10 -5
- data/docs/space-time-continuum.html +11 -6
- data/docs/tutorial.html +11 -6
- data/docs/unit-tests.html +10 -5
- data/docs/why.html +29 -0
- data/lib/brut/cli/apps/test.rb +1 -1
- data/lib/brut/front_end/components/inputs/select_tag_with_options.rb +2 -2
- data/lib/brut/front_end/form.rb +8 -8
- data/lib/brut/front_end/forms/radio_button_group_input.rb +8 -1
- data/lib/brut/front_end/forms/select_input.rb +8 -1
- data/lib/brut/junk_drawer.rb +48 -9
- data/lib/brut/version.rb +1 -1
- data/specs/brut/front_end/forms/radio_button_group_input.spec.rb +54 -0
- data/specs/brut/front_end/forms/select_input.spec.rb +54 -0
- data/specs/brut/junk_drawer.spec.rb +75 -0
- metadata +129 -82
- data/brutrb.com/images/logo-300.png +0 -0
- data/brutrb.com/images/logo.png +0 -0
- data/brutrb.com/not-released.md +0 -5
- data/brutrb.com/public/images/logo-300.png +0 -0
- data/brutrb.com/public/images/logo.png +0 -0
- data/docs/assets/LogoStop.X8x-4riz.png +0 -0
- data/docs/assets/ai.md._6HCDL6d.lean.js +0 -1
- data/docs/assets/chunks/@localSearchIndexroot.CeRAdP1K.js +0 -1
- data/docs/assets/components.md.CRUMdRoN.js +0 -104
- data/docs/assets/dev-env-overview.Gj7NWM8-.png +0 -0
- data/docs/assets/dev-environment.md.GZv6xvi9.js +0 -11
- data/docs/assets/dev-environment.md.GZv6xvi9.lean.js +0 -1
- data/docs/assets/doc-conventions.md.-kN3Xo5C.js +0 -1
- data/docs/assets/doc-conventions.md.-kN3Xo5C.lean.js +0 -1
- data/docs/assets/end-to-end-tests.md.yfQHC0b5.lean.js +0 -1
- data/docs/assets/flash-and-session.md.BXY8RvT0.js +0 -93
- data/docs/assets/forms.md.B-koVgyw.js +0 -379
- data/docs/assets/forms.md.B-koVgyw.lean.js +0 -1
- data/docs/assets/handlers.md.089DVD3v.js +0 -69
- data/docs/assets/handlers.md.089DVD3v.lean.js +0 -1
- data/docs/assets/index.md.CuBB-BdM.js +0 -1
- data/docs/assets/index.md.CuBB-BdM.lean.js +0 -1
- data/docs/assets/keyword-injection.md.Dt2tKREs.js +0 -25
- data/docs/assets/layouts.md.cPnh3NId.lean.js +0 -1
- data/docs/assets/not-released.md.BBy28McC.js +0 -1
- data/docs/assets/not-released.md.BBy28McC.lean.js +0 -1
- data/docs/assets/overview.md.DVKRM8zl.js +0 -133
- data/docs/assets/overview.md.DVKRM8zl.lean.js +0 -1
- data/docs/assets/pages.md.BE3kfOc5.js +0 -122
- data/docs/assets/pages.md.BE3kfOc5.lean.js +0 -1
- data/docs/assets/recipes_authentication.md.CAsXf7hk.js +0 -1
- data/docs/assets/recipes_authentication.md.CAsXf7hk.lean.js +0 -1
- data/docs/assets/routes.md.BMM7peut.js +0 -29
- data/docs/assets/space-time-continuum.md.KPUIKysQ.js +0 -1
- data/docs/assets/tutorial.md.BnoGjrdK.js +0 -1
- data/docs/assets/tutorial.md.BnoGjrdK.lean.js +0 -1
- data/docs/images/logo-300.png +0 -0
- data/docs/images/logo.png +0 -0
- data/docs/not-released.html +0 -24
- /data/docs/assets/{cli.md.RmeA2b0i.lean.js → cli.md.CjsktgFz.lean.js} +0 -0
- /data/docs/assets/{configuration.md.LG-zIBww.lean.js → configuration.md.BfeGnEci.lean.js} +0 -0
- /data/docs/assets/{css.md.DJgj2clw.lean.js → css.md.CltvJqAa.lean.js} +0 -0
- /data/docs/assets/{custom-element-tests.md.BrYJQEl3.lean.js → custom-element-tests.md.B_rbta32.lean.js} +0 -0
- /data/docs/assets/{database-access.md.C7l-Vuvb.lean.js → database-access.md.gnluu54N.lean.js} +0 -0
@@ -111,6 +111,34 @@
|
|
111
111
|
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
112
112
|
<ul class="summary">
|
113
113
|
|
114
|
+
<li class="public ">
|
115
|
+
<span class="summary_signature">
|
116
|
+
|
117
|
+
<a href="#typed_value-instance_method" title="#typed_value (instance method)">#<strong>typed_value</strong> ⇒ Date|Time|BigDecimal|String|true|false|nil </a>
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
</span>
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
<span class="note title readonly">readonly</span>
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
<span class="summary_desc"><div class='inline'><p>The value of the input, as coerced to the type used to evaluate constraints.</p>
|
137
|
+
</div></span>
|
138
|
+
|
139
|
+
</li>
|
140
|
+
|
141
|
+
|
114
142
|
<li class="public ">
|
115
143
|
<span class="summary_signature">
|
116
144
|
|
@@ -307,18 +335,18 @@
|
|
307
335
|
<pre class="lines">
|
308
336
|
|
309
337
|
|
310
|
-
11
|
311
|
-
12
|
312
|
-
13
|
313
|
-
14
|
314
338
|
15
|
315
339
|
16
|
316
340
|
17
|
317
341
|
18
|
318
|
-
19
|
342
|
+
19
|
343
|
+
20
|
344
|
+
21
|
345
|
+
22
|
346
|
+
23</pre>
|
319
347
|
</td>
|
320
348
|
<td>
|
321
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
349
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 15</span>
|
322
350
|
|
323
351
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>input_definition:</span><span class='comma'>,</span> <span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
324
352
|
<span class='ivar'>@input_definition</span> <span class='op'>=</span> <span class='id identifier rubyid_input_definition'>input_definition</span>
|
@@ -342,7 +370,94 @@
|
|
342
370
|
|
343
371
|
<span id=""></span>
|
344
372
|
<div class="method_details first">
|
345
|
-
<h3 class="signature first" id="
|
373
|
+
<h3 class="signature first" id="typed_value-instance_method">
|
374
|
+
|
375
|
+
#<strong>typed_value</strong> ⇒ <tt>Date|Time|BigDecimal|String|true|false|nil</tt> <span class="extras">(readonly)</span>
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
</h3><div class="docstring">
|
382
|
+
<div class="discussion">
|
383
|
+
<p>The value of the input,
|
384
|
+
as coerced to the type used to evaluate constraints.
|
385
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
386
|
+
there is or will be a constraint violation), <strong>or</strong>
|
387
|
+
if it is a blank String.</p>
|
388
|
+
|
389
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
390
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
391
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
392
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
393
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
394
|
+
though the control allows the visitor to choose an invalid time.
|
395
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
396
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
397
|
+
the browser, even if it's not a real timestamp.</p>
|
398
|
+
|
399
|
+
|
400
|
+
</div>
|
401
|
+
</div>
|
402
|
+
<div class="tags">
|
403
|
+
|
404
|
+
<p class="tag_title">Returns:</p>
|
405
|
+
<ul class="return">
|
406
|
+
|
407
|
+
<li>
|
408
|
+
|
409
|
+
|
410
|
+
<span class='type'>(<tt>Date|Time|BigDecimal|String|true|false|nil</tt>)</span>
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
—
|
415
|
+
<div class='inline'><p>the value of the input,
|
416
|
+
as coerced to the type used to evaluate constraints.
|
417
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
418
|
+
there is or will be a constraint violation), <strong>or</strong>
|
419
|
+
if it is a blank String.</p>
|
420
|
+
|
421
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
422
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
423
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
424
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
425
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
426
|
+
though the control allows the visitor to choose an invalid time.
|
427
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
428
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
429
|
+
the browser, even if it's not a real timestamp.</p>
|
430
|
+
</div>
|
431
|
+
|
432
|
+
</li>
|
433
|
+
|
434
|
+
</ul>
|
435
|
+
|
436
|
+
</div><table class="source_code">
|
437
|
+
<tr>
|
438
|
+
<td>
|
439
|
+
<pre class="lines">
|
440
|
+
|
441
|
+
|
442
|
+
9
|
443
|
+
10
|
444
|
+
11</pre>
|
445
|
+
</td>
|
446
|
+
<td>
|
447
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 9</span>
|
448
|
+
|
449
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_typed_value'>typed_value</span>
|
450
|
+
<span class='ivar'>@typed_value</span>
|
451
|
+
<span class='kw'>end</span></pre>
|
452
|
+
</td>
|
453
|
+
</tr>
|
454
|
+
</table>
|
455
|
+
</div>
|
456
|
+
|
457
|
+
|
458
|
+
<span id=""></span>
|
459
|
+
<div class="method_details ">
|
460
|
+
<h3 class="signature " id="validity_state-instance_method">
|
346
461
|
|
347
462
|
#<strong>validity_state</strong> ⇒ <tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt> <span class="extras">(readonly)</span>
|
348
463
|
|
@@ -383,12 +498,12 @@
|
|
383
498
|
<pre class="lines">
|
384
499
|
|
385
500
|
|
386
|
-
|
387
|
-
|
388
|
-
|
501
|
+
12
|
502
|
+
13
|
503
|
+
14</pre>
|
389
504
|
</td>
|
390
505
|
<td>
|
391
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
506
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 12</span>
|
392
507
|
|
393
508
|
<span class='kw'>def</span> <span class='id identifier rubyid_validity_state'>validity_state</span>
|
394
509
|
<span class='ivar'>@validity_state</span>
|
@@ -414,7 +529,7 @@
|
|
414
529
|
<p>Returns the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
415
530
|
because HTML stores these values as Strings. When using a checkbox, in
|
416
531
|
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>
|
532
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
418
533
|
|
419
534
|
|
420
535
|
</div>
|
@@ -435,7 +550,7 @@ input.value</code> and expect that work. See #typed_value instead.</p>
|
|
435
550
|
<div class='inline'><p>the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
436
551
|
because HTML stores these values as Strings. When using a checkbox, in
|
437
552
|
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>
|
553
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
439
554
|
</div>
|
440
555
|
|
441
556
|
</li>
|
@@ -532,12 +647,12 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
532
647
|
<pre class="lines">
|
533
648
|
|
534
649
|
|
535
|
-
|
536
|
-
|
537
|
-
|
650
|
+
48
|
651
|
+
49
|
652
|
+
50</pre>
|
538
653
|
</td>
|
539
654
|
<td>
|
540
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
655
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 48</span>
|
541
656
|
|
542
657
|
<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='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_context'>context</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
|
543
658
|
<span class='ivar'>@validity_state</span><span class='period'>.</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='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='rparen'>)</span>
|
@@ -589,10 +704,10 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
589
704
|
<pre class="lines">
|
590
705
|
|
591
706
|
|
592
|
-
|
707
|
+
53</pre>
|
593
708
|
</td>
|
594
709
|
<td>
|
595
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
710
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 53</span>
|
596
711
|
|
597
712
|
<span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span></pre>
|
598
713
|
</td>
|
@@ -605,7 +720,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
605
720
|
</div>
|
606
721
|
|
607
722
|
<div id="footer">
|
608
|
-
Generated on
|
723
|
+
Generated on Thu Jul 10 13:41:05 2025 by
|
609
724
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
610
725
|
0.9.37 (ruby-3.4.4).
|
611
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 Thu Jul 10 13:41:05 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>
|
@@ -121,6 +121,34 @@
|
|
121
121
|
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
122
122
|
<ul class="summary">
|
123
123
|
|
124
|
+
<li class="public ">
|
125
|
+
<span class="summary_signature">
|
126
|
+
|
127
|
+
<a href="#typed_value-instance_method" title="#typed_value (instance method)">#<strong>typed_value</strong> ⇒ Date|Time|BigDecimal|String|true|false|nil </a>
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
</span>
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
<span class="note title readonly">readonly</span>
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
<span class="summary_desc"><div class='inline'><p>The value of the input, as coerced to the type used to evaluate constraints.</p>
|
147
|
+
</div></span>
|
148
|
+
|
149
|
+
</li>
|
150
|
+
|
151
|
+
|
124
152
|
<li class="public ">
|
125
153
|
<span class="summary_signature">
|
126
154
|
|
@@ -317,15 +345,15 @@
|
|
317
345
|
<pre class="lines">
|
318
346
|
|
319
347
|
|
320
|
-
12
|
321
|
-
13
|
322
|
-
14
|
323
|
-
15
|
324
348
|
16
|
325
|
-
17
|
349
|
+
17
|
350
|
+
18
|
351
|
+
19
|
352
|
+
20
|
353
|
+
21</pre>
|
326
354
|
</td>
|
327
355
|
<td>
|
328
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
356
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 16</span>
|
329
357
|
|
330
358
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>input_definition:</span><span class='comma'>,</span> <span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
331
359
|
<span class='ivar'>@input_definition</span> <span class='op'>=</span> <span class='id identifier rubyid_input_definition'>input_definition</span>
|
@@ -346,7 +374,94 @@
|
|
346
374
|
|
347
375
|
<span id=""></span>
|
348
376
|
<div class="method_details first">
|
349
|
-
<h3 class="signature first" id="
|
377
|
+
<h3 class="signature first" id="typed_value-instance_method">
|
378
|
+
|
379
|
+
#<strong>typed_value</strong> ⇒ <tt>Date|Time|BigDecimal|String|true|false|nil</tt> <span class="extras">(readonly)</span>
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
</h3><div class="docstring">
|
386
|
+
<div class="discussion">
|
387
|
+
<p>The value of the input,
|
388
|
+
as coerced to the type used to evaluate constraints.
|
389
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
390
|
+
there is or will be a constraint violation), <strong>or</strong>
|
391
|
+
if it is a blank String.</p>
|
392
|
+
|
393
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
394
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
395
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
396
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
397
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
398
|
+
though the control allows the visitor to choose an invalid time.
|
399
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
400
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
401
|
+
the browser, even if it's not a real timestamp.</p>
|
402
|
+
|
403
|
+
|
404
|
+
</div>
|
405
|
+
</div>
|
406
|
+
<div class="tags">
|
407
|
+
|
408
|
+
<p class="tag_title">Returns:</p>
|
409
|
+
<ul class="return">
|
410
|
+
|
411
|
+
<li>
|
412
|
+
|
413
|
+
|
414
|
+
<span class='type'>(<tt>Date|Time|BigDecimal|String|true|false|nil</tt>)</span>
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
—
|
419
|
+
<div class='inline'><p>the value of the input,
|
420
|
+
as coerced to the type used to evaluate constraints.
|
421
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
422
|
+
there is or will be a constraint violation), <strong>or</strong>
|
423
|
+
if it is a blank String.</p>
|
424
|
+
|
425
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
426
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
427
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
428
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
429
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
430
|
+
though the control allows the visitor to choose an invalid time.
|
431
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
432
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
433
|
+
the browser, even if it's not a real timestamp.</p>
|
434
|
+
</div>
|
435
|
+
|
436
|
+
</li>
|
437
|
+
|
438
|
+
</ul>
|
439
|
+
|
440
|
+
</div><table class="source_code">
|
441
|
+
<tr>
|
442
|
+
<td>
|
443
|
+
<pre class="lines">
|
444
|
+
|
445
|
+
|
446
|
+
10
|
447
|
+
11
|
448
|
+
12</pre>
|
449
|
+
</td>
|
450
|
+
<td>
|
451
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 10</span>
|
452
|
+
|
453
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_typed_value'>typed_value</span>
|
454
|
+
<span class='ivar'>@typed_value</span>
|
455
|
+
<span class='kw'>end</span></pre>
|
456
|
+
</td>
|
457
|
+
</tr>
|
458
|
+
</table>
|
459
|
+
</div>
|
460
|
+
|
461
|
+
|
462
|
+
<span id=""></span>
|
463
|
+
<div class="method_details ">
|
464
|
+
<h3 class="signature " id="validity_state-instance_method">
|
350
465
|
|
351
466
|
#<strong>validity_state</strong> ⇒ <tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt> <span class="extras">(readonly)</span>
|
352
467
|
|
@@ -387,12 +502,12 @@
|
|
387
502
|
<pre class="lines">
|
388
503
|
|
389
504
|
|
390
|
-
|
391
|
-
|
392
|
-
|
505
|
+
13
|
506
|
+
14
|
507
|
+
15</pre>
|
393
508
|
</td>
|
394
509
|
<td>
|
395
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
510
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 13</span>
|
396
511
|
|
397
512
|
<span class='kw'>def</span> <span class='id identifier rubyid_validity_state'>validity_state</span>
|
398
513
|
<span class='ivar'>@validity_state</span>
|
@@ -418,7 +533,7 @@
|
|
418
533
|
<p>Returns the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
419
534
|
because HTML stores these values as Strings. When using a checkbox, in
|
420
535
|
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>
|
536
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
422
537
|
|
423
538
|
|
424
539
|
</div>
|
@@ -439,7 +554,7 @@ input.value</code> and expect that work. See #typed_value instead.</p>
|
|
439
554
|
<div class='inline'><p>the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
440
555
|
because HTML stores these values as Strings. When using a checkbox, in
|
441
556
|
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>
|
557
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
443
558
|
</div>
|
444
559
|
|
445
560
|
</li>
|
@@ -536,12 +651,12 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
536
651
|
<pre class="lines">
|
537
652
|
|
538
653
|
|
539
|
-
|
540
|
-
|
541
|
-
|
654
|
+
46
|
655
|
+
47
|
656
|
+
48</pre>
|
542
657
|
</td>
|
543
658
|
<td>
|
544
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
659
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 46</span>
|
545
660
|
|
546
661
|
<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='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_context'>context</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
|
547
662
|
<span class='ivar'>@validity_state</span><span class='period'>.</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='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='rparen'>)</span>
|
@@ -593,10 +708,10 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
593
708
|
<pre class="lines">
|
594
709
|
|
595
710
|
|
596
|
-
|
711
|
+
51</pre>
|
597
712
|
</td>
|
598
713
|
<td>
|
599
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
714
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 51</span>
|
600
715
|
|
601
716
|
<span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span></pre>
|
602
717
|
</td>
|
@@ -609,7 +724,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
609
724
|
</div>
|
610
725
|
|
611
726
|
<div id="footer">
|
612
|
-
Generated on
|
727
|
+
Generated on Thu Jul 10 13:41:04 2025 by
|
613
728
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
614
729
|
0.9.37 (ruby-3.4.4).
|
615
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 Thu Jul 10 13:41:05 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 Thu Jul 10 13:41:04 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 Thu Jul 10 13:41:03 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 Thu Jul 10 13:41:04 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 Thu Jul 10 13:41:04 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 Thu Jul 10 13:41:05 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 Thu Jul 10 13:41:05 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 Thu Jul 10 13:41:05 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 Thu Jul 10 13:41:05 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 Thu Jul 10 13:41:05 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 Thu Jul 10 13:41:05 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 Thu Jul 10 13:41:03 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 Thu Jul 10 13:41:03 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 Thu Jul 10 13:41:04 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 Thu Jul 10 13:41:04 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 Thu Jul 10 13:41:04 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 Thu Jul 10 13:41:04 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 Thu Jul 10 13:41:04 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>
|