brut 0.3.1 → 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.
Files changed (369) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/Gemfile.lock +1 -1
  4. data/brut-js/CHANGELOG.md +5 -0
  5. data/brut-js/package-lock.json +2 -2
  6. data/brut-js/package.json +1 -1
  7. data/brut-js/specs/ConstraintViolationMessage.spec.js +1 -1
  8. data/brut-js/specs/ConstraintViolationMessages.spec.js +2 -2
  9. data/brut-js/specs/Form.spec.js +5 -5
  10. data/brut-js/src/ConstraintViolationMessage.js +3 -3
  11. data/brut-js/src/ConstraintViolationMessages.js +2 -2
  12. data/brutrb.com/database-schema.md +22 -2
  13. data/brutrb.com/dev-environment.md +1 -0
  14. data/brutrb.com/form-constraints.md +2 -2
  15. data/brutrb.com/handlers.md +1 -1
  16. data/brutrb.com/i18n.md +2 -2
  17. data/brutrb.com/layouts.md +1 -1
  18. data/docs/404.html +2 -2
  19. data/docs/adrs.html +3 -3
  20. data/docs/ai.html +3 -3
  21. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  22. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  23. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  24. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  25. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  26. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  27. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  28. data/docs/api/Brut/BackEnd.html +1 -1
  29. data/docs/api/Brut/CLI/App.html +1 -1
  30. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  31. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  32. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +6 -6
  33. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  34. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +6 -6
  35. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  36. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  37. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  38. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +6 -2
  40. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  42. data/docs/api/Brut/CLI/Apps/DB/Status.html +9 -9
  43. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  48. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +8 -12
  50. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +5 -5
  52. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +384 -0
  53. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  54. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +5 -5
  55. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  57. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +36 -36
  58. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  59. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  60. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  61. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  62. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  63. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  64. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  65. data/docs/api/Brut/CLI/Apps.html +1 -1
  66. data/docs/api/Brut/CLI/Command.html +29 -31
  67. data/docs/api/Brut/CLI/Error.html +1 -1
  68. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  69. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  70. data/docs/api/Brut/CLI/Executor.html +1 -1
  71. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  72. data/docs/api/Brut/CLI/Options.html +1 -1
  73. data/docs/api/Brut/CLI/Output.html +1 -1
  74. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  75. data/docs/api/Brut/CLI.html +1 -1
  76. data/docs/api/Brut/FactoryBot.html +1 -1
  77. data/docs/api/Brut/Framework/App.html +1 -1
  78. data/docs/api/Brut/Framework/Config.html +16 -2
  79. data/docs/api/Brut/Framework/Container.html +1 -1
  80. data/docs/api/Brut/Framework/Error.html +1 -1
  81. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  82. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  83. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  84. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  85. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  86. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  87. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  88. data/docs/api/Brut/Framework/Errors.html +1 -1
  89. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  90. data/docs/api/Brut/Framework/MCP.html +1 -1
  91. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  92. data/docs/api/Brut/Framework.html +1 -1
  93. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  94. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  95. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  96. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +3 -3
  97. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  98. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +10 -14
  99. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  100. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
  102. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +3 -3
  104. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
  105. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  106. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  107. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  111. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  112. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  113. data/docs/api/Brut/FrontEnd/Form.html +92 -20
  114. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  116. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  117. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  122. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  123. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  125. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  126. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  132. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  133. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  135. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  136. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  137. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  138. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  140. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  142. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  143. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  144. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  147. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  149. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  150. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  151. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  152. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  153. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  154. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  155. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  156. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  157. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  158. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  159. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  161. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  164. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  167. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  168. data/docs/api/Brut/FrontEnd.html +1 -1
  169. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  170. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  171. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  172. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  173. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  174. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  175. data/docs/api/Brut/I18n.html +1 -1
  176. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  177. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  178. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  179. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  180. data/docs/api/Brut/Instrumentation.html +1 -1
  181. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  182. data/docs/api/Brut/SinatraHelpers.html +1 -1
  183. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  184. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  185. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  186. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  187. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  188. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  189. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  190. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  191. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  192. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  193. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  194. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  195. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  196. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  200. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  201. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  203. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  204. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  205. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  206. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  207. data/docs/api/Brut/SpecSupport.html +1 -1
  208. data/docs/api/Brut.html +1 -1
  209. data/docs/api/Clock.html +1 -1
  210. data/docs/api/ModuleName.html +595 -0
  211. data/docs/api/RichString.html +1 -1
  212. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  213. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  214. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  215. data/docs/api/Sequel/Extensions.html +1 -1
  216. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  217. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  218. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  219. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  220. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  221. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  222. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  223. data/docs/api/Sequel/Plugins.html +1 -1
  224. data/docs/api/Sequel.html +1 -1
  225. data/docs/api/_index.html +24 -12
  226. data/docs/api/class_list.html +1 -1
  227. data/docs/api/file.README.html +1 -1
  228. data/docs/api/index.html +1 -1
  229. data/docs/api/method_list.html +478 -406
  230. data/docs/api/top-level-namespace.html +2 -2
  231. data/docs/assets/{app.C0n_5kBs.js → app.AkS4fHzI.js} +1 -1
  232. data/docs/assets/chunks/@localSearchIndexroot.C9FqcQxD.js +1 -0
  233. data/docs/assets/chunks/{VPLocalSearchBox.yICoU-Ly.js → VPLocalSearchBox.By6un1FD.js} +1 -1
  234. data/docs/assets/chunks/{theme.gMVDgzXI.js → theme.DwiUPdci.js} +2 -2
  235. data/docs/assets/{components.md.DGVPNB9a.js → components.md.BfeWD9sX.js} +3 -3
  236. data/docs/assets/{configuration.md.DK3YrtYn.js → configuration.md.DoSBNc0H.js} +1 -1
  237. data/docs/assets/{database-schema.md.CSYk6E6v.js → database-schema.md.C5gXexJi.js} +10 -3
  238. data/docs/assets/{database-schema.md.CSYk6E6v.lean.js → database-schema.md.C5gXexJi.lean.js} +1 -1
  239. data/docs/assets/{dev-environment.md.Dy6EldaM.js → dev-environment.md.DRH2D2-O.js} +3 -3
  240. data/docs/assets/dev-environment.md.DRH2D2-O.lean.js +1 -0
  241. data/docs/assets/{form-constraints.md.x5tNpTTI.js → form-constraints.md.DK5adCgM.js} +2 -2
  242. data/docs/assets/{forms.md.DwdQGwOK.js → forms.md.DFveP5g_.js} +1 -1
  243. data/docs/assets/{getting-started.md.DuiTvmpG.js → getting-started.md.DZWjCVC0.js} +3 -3
  244. data/docs/assets/{getting-started.md.DuiTvmpG.lean.js → getting-started.md.DZWjCVC0.lean.js} +1 -1
  245. data/docs/assets/{handlers.md.Chyri6KA.js → handlers.md.h84MMB1R.js} +1 -1
  246. data/docs/assets/{i18n.md.xQhiGo1G.js → i18n.md.BAm9t9JJ.js} +1 -1
  247. data/docs/assets/{layouts.md.CJGDFY-m.js → layouts.md.CVGl9xIO.js} +1 -1
  248. data/docs/assets.html +3 -3
  249. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  250. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  251. data/docs/brut-js/api/Autosubmit.html +1 -1
  252. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  253. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  254. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  255. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  256. data/docs/brut-js/api/BufferedLogger.html +1 -1
  257. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  258. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  259. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  260. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  261. data/docs/brut-js/api/ConstraintViolationMessage.html +2 -2
  262. data/docs/brut-js/api/ConstraintViolationMessage.js.html +4 -4
  263. data/docs/brut-js/api/ConstraintViolationMessages.html +3 -3
  264. data/docs/brut-js/api/ConstraintViolationMessages.js.html +3 -3
  265. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  266. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  267. data/docs/brut-js/api/Form.html +1 -1
  268. data/docs/brut-js/api/Form.js.html +1 -1
  269. data/docs/brut-js/api/I18nTranslation.html +1 -1
  270. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  271. data/docs/brut-js/api/LocaleDetection.html +1 -1
  272. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  273. data/docs/brut-js/api/Logger.html +1 -1
  274. data/docs/brut-js/api/Logger.js.html +1 -1
  275. data/docs/brut-js/api/Message.html +1 -1
  276. data/docs/brut-js/api/Message.js.html +1 -1
  277. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  278. data/docs/brut-js/api/RichString.html +1 -1
  279. data/docs/brut-js/api/RichString.js.html +1 -1
  280. data/docs/brut-js/api/Tabs.html +1 -1
  281. data/docs/brut-js/api/Tabs.js.html +1 -1
  282. data/docs/brut-js/api/Tracing.html +1 -1
  283. data/docs/brut-js/api/Tracing.js.html +1 -1
  284. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  285. data/docs/brut-js/api/external-Performance.html +1 -1
  286. data/docs/brut-js/api/external-Promise.html +1 -1
  287. data/docs/brut-js/api/external-ValidityState.html +1 -1
  288. data/docs/brut-js/api/external-Window.html +1 -1
  289. data/docs/brut-js/api/external-fetch.html +1 -1
  290. data/docs/brut-js/api/global.html +1 -1
  291. data/docs/brut-js/api/index.html +1 -1
  292. data/docs/brut-js/api/index.js.html +1 -1
  293. data/docs/brut-js/api/module-testing.html +1 -1
  294. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  295. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  296. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  297. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  298. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  299. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  300. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  301. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  302. data/docs/brut-js/api/testing_index.js.html +1 -1
  303. data/docs/brut-js.html +3 -3
  304. data/docs/business-logic.html +3 -3
  305. data/docs/cli.html +3 -3
  306. data/docs/components.html +7 -7
  307. data/docs/configuration.html +5 -5
  308. data/docs/css.html +3 -3
  309. data/docs/custom-element-tests.html +3 -3
  310. data/docs/database-access.html +3 -3
  311. data/docs/database-schema.html +12 -5
  312. data/docs/deployment.html +3 -3
  313. data/docs/dev-environment.html +5 -5
  314. data/docs/dir-structure.html +3 -3
  315. data/docs/doc-conventions.html +3 -3
  316. data/docs/end-to-end-tests.html +3 -3
  317. data/docs/features.html +3 -3
  318. data/docs/flash-and-session.html +3 -3
  319. data/docs/form-constraints.html +6 -6
  320. data/docs/forms.html +5 -5
  321. data/docs/getting-started.html +6 -6
  322. data/docs/handlers.html +5 -5
  323. data/docs/hashmap.json +1 -1
  324. data/docs/hooks.html +3 -3
  325. data/docs/i18n.html +5 -5
  326. data/docs/index.html +3 -3
  327. data/docs/instrumentation.html +3 -3
  328. data/docs/javascript.html +3 -3
  329. data/docs/jobs.html +3 -3
  330. data/docs/keyword-injection.html +3 -3
  331. data/docs/layouts.html +5 -5
  332. data/docs/lsp.html +3 -3
  333. data/docs/markdown-examples.html +3 -3
  334. data/docs/middleware.html +3 -3
  335. data/docs/overview.html +3 -3
  336. data/docs/pages.html +3 -3
  337. data/docs/recipes/alternate-layouts.html +3 -3
  338. data/docs/recipes/authentication.html +3 -3
  339. data/docs/recipes/blank-layouts.html +3 -3
  340. data/docs/recipes/custom-flash.html +3 -3
  341. data/docs/recipes/indexed-forms.html +3 -3
  342. data/docs/recipes/migrations.html +3 -3
  343. data/docs/recipes/text-field-component.html +3 -3
  344. data/docs/roadmap.html +3 -3
  345. data/docs/routes.html +3 -3
  346. data/docs/security.html +3 -3
  347. data/docs/seed-data.html +3 -3
  348. data/docs/space-time-continuum.html +3 -3
  349. data/docs/tutorial.html +3 -3
  350. data/docs/unit-tests.html +3 -3
  351. data/docs/why.html +3 -3
  352. data/lib/brut/cli/apps/scaffold.rb +77 -0
  353. data/lib/brut/cli/command.rb +1 -2
  354. data/lib/brut/framework/config.rb +7 -0
  355. data/lib/brut/front_end/components/constraint_violations.rb +2 -2
  356. data/lib/brut/front_end/components/i18n_translations.rb +6 -10
  357. data/lib/brut/front_end/form.rb +5 -2
  358. data/lib/brut/junk_drawer.rb +53 -0
  359. data/lib/brut/version.rb +1 -1
  360. metadata +28 -25
  361. data/docs/assets/chunks/@localSearchIndexroot.BF2caq1f.js +0 -1
  362. data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +0 -1
  363. /data/docs/assets/{components.md.DGVPNB9a.lean.js → components.md.BfeWD9sX.lean.js} +0 -0
  364. /data/docs/assets/{configuration.md.DK3YrtYn.lean.js → configuration.md.DoSBNc0H.lean.js} +0 -0
  365. /data/docs/assets/{form-constraints.md.x5tNpTTI.lean.js → form-constraints.md.DK5adCgM.lean.js} +0 -0
  366. /data/docs/assets/{forms.md.DwdQGwOK.lean.js → forms.md.DFveP5g_.lean.js} +0 -0
  367. /data/docs/assets/{handlers.md.Chyri6KA.lean.js → handlers.md.h84MMB1R.lean.js} +0 -0
  368. /data/docs/assets/{i18n.md.xQhiGo1G.lean.js → i18n.md.BAm9t9JJ.lean.js} +0 -0
  369. /data/docs/assets/{layouts.md.CJGDFY-m.lean.js → layouts.md.CVGl9xIO.lean.js} +0 -0
@@ -222,7 +222,7 @@ makes sense.</p>
222
222
  </div>
223
223
 
224
224
  <div id="footer">
225
- Generated on Thu Jul 10 13:41:04 2025 by
225
+ Generated on Sat Jul 12 21:25:22 2025 by
226
226
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
227
227
  0.9.37 (ruby-3.4.4).
228
228
  </div>
@@ -224,7 +224,7 @@ prevented</p>
224
224
  </div>
225
225
 
226
226
  <div id="footer">
227
- Generated on Thu Jul 10 13:41:04 2025 by
227
+ Generated on Sat Jul 12 21:25:21 2025 by
228
228
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
229
229
  0.9.37 (ruby-3.4.4).
230
230
  </div>
@@ -247,7 +247,7 @@ have not been set.</p>
247
247
  </div>
248
248
 
249
249
  <div id="footer">
250
- Generated on Thu Jul 10 13:41:05 2025 by
250
+ Generated on Sat Jul 12 21:25:22 2025 by
251
251
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
252
252
  0.9.37 (ruby-3.4.4).
253
253
  </div>
@@ -263,7 +263,7 @@ the one provided by standard library exceptions like <code>KeyError</code></p>
263
263
  </div>
264
264
 
265
265
  <div id="footer">
266
- Generated on Thu Jul 10 13:41:05 2025 by
266
+ Generated on Sat Jul 12 21:25:22 2025 by
267
267
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
268
268
  0.9.37 (ruby-3.4.4).
269
269
  </div>
@@ -461,7 +461,7 @@
461
461
  </div>
462
462
 
463
463
  <div id="footer">
464
- Generated on Thu Jul 10 13:41:05 2025 by
464
+ Generated on Sat Jul 12 21:25:22 2025 by
465
465
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
466
466
  0.9.37 (ruby-3.4.4).
467
467
  </div>
@@ -298,7 +298,7 @@
298
298
  </div>
299
299
 
300
300
  <div id="footer">
301
- Generated on Thu Jul 10 13:41:04 2025 by
301
+ Generated on Sat Jul 12 21:25:22 2025 by
302
302
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
303
303
  0.9.37 (ruby-3.4.4).
304
304
  </div>
@@ -224,7 +224,7 @@ support the same features, but for technical reasons one of the APIs does not.</
224
224
  </div>
225
225
 
226
226
  <div id="footer">
227
- Generated on Thu Jul 10 13:41:04 2025 by
227
+ Generated on Sat Jul 12 21:25:22 2025 by
228
228
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
229
229
  0.9.37 (ruby-3.4.4).
230
230
  </div>
@@ -341,7 +341,7 @@ state of the system is such that it would never be misused.</p>
341
341
  </div>
342
342
 
343
343
  <div id="footer">
344
- Generated on Thu Jul 10 13:41:03 2025 by
344
+ Generated on Sat Jul 12 21:25:20 2025 by
345
345
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
346
346
  0.9.37 (ruby-3.4.4).
347
347
  </div>
@@ -382,7 +382,7 @@ For example, if you accept a string but know it should be a number, pass in <cod
382
382
  </div>
383
383
 
384
384
  <div id="footer">
385
- Generated on Thu Jul 10 13:41:03 2025 by
385
+ Generated on Sat Jul 12 21:25:21 2025 by
386
386
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
387
387
  0.9.37 (ruby-3.4.4).
388
388
  </div>
@@ -851,7 +851,7 @@ to external resources.</p>
851
851
  </div>
852
852
 
853
853
  <div id="footer">
854
- Generated on Thu Jul 10 13:41:04 2025 by
854
+ Generated on Sat Jul 12 21:25:21 2025 by
855
855
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
856
856
  0.9.37 (ruby-3.4.4).
857
857
  </div>
@@ -638,7 +638,7 @@ to the configuration values. But, you do you.</p>
638
638
  </div>
639
639
 
640
640
  <div id="footer">
641
- Generated on Thu Jul 10 13:41:04 2025 by
641
+ Generated on Sat Jul 12 21:25:22 2025 by
642
642
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
643
643
  0.9.37 (ruby-3.4.4).
644
644
  </div>
@@ -119,7 +119,7 @@
119
119
  </div>
120
120
 
121
121
  <div id="footer">
122
- Generated on Thu Jul 10 13:41:03 2025 by
122
+ Generated on Sat Jul 12 21:25:20 2025 by
123
123
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
124
124
  0.9.37 (ruby-3.4.4).
125
125
  </div>
@@ -307,7 +307,7 @@
307
307
  </div>
308
308
 
309
309
  <div id="footer">
310
- Generated on Thu Jul 10 13:41:04 2025 by
310
+ Generated on Sat Jul 12 21:25:22 2025 by
311
311
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
312
312
  0.9.37 (ruby-3.4.4).
313
313
  </div>
@@ -326,7 +326,7 @@ looking</p>
326
326
  </div>
327
327
 
328
328
  <div id="footer">
329
- Generated on Thu Jul 10 13:41:03 2025 by
329
+ Generated on Sat Jul 12 21:25:20 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>
@@ -355,7 +355,7 @@ method <span class='object_link'><a href="#component_name-class_method" title="B
355
355
  </div>
356
356
 
357
357
  <div id="footer">
358
- Generated on Thu Jul 10 13:41:04 2025 by
358
+ Generated on Sat Jul 12 21:25:21 2025 by
359
359
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
360
360
  0.9.37 (ruby-3.4.4).
361
361
  </div>
@@ -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>&lt;brut-cv-messages&gt;</code> and <code>&lt;brut-cv&gt;</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>&lt;brut-cv server-side&gt;</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.be"</code>.</p>
108
+ <p>Renders the custom elements used to manage both client- and server-side constraint violations via the <code>&lt;brut-cv-messages&gt;</code> and <code>&lt;brut-cv&gt;</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>&lt;brut-cv server-side&gt;</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'>&quot;</span><span class='tstring_content'>cv.be.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</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>
448
+ <span class='id identifier rubyid_t'>t</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</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'>&quot;</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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:04 2025 by
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>&lt;brut-constraint-violation-message&gt;</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 html"><code class="html">&lt;%= component(
114
- Brut::FrontEnd::Components::I18nTranslations.new(
115
- &quot;general.cv.fe&quot;
116
- )
117
- ) %&gt;
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'>&quot;</span><span class='tstring_content'>cv.cs</span><span class='tstring_end'>&quot;</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">&lt;brut-i18n-translation
123
- key=&quot;general.cv.fe.badInput&quot;
119
+ key=&quot;cv.cs.badInput&quot;
124
120
  value=&quot;%{field} is the wrong type of data&quot;&gt;
125
121
  &lt;/brut-i18n-translation&gt;
126
122
  &lt;brut-i18n-translation
127
- key=&quot;general.cv.fe.patternMismatch&quot;
123
+ key=&quot;cv.cs.patternMismatch&quot;
128
124
  value=&quot;%{field} isn&#39;t in the right format&quot;&gt;
129
125
  &lt;/brut-i18n-translation&gt;
130
126
  &lt;!-- etc --&gt;
@@ -132,7 +128,7 @@ JavaScript. The <code>&lt;brut-constraint-violation-message&gt;</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>general.cv.fe.badInput</code> and find the <code>value</code> to produce the string "This field is the wrong type of data".</p>
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
  &mdash;
275
- <div class='inline'><p>A prefix or full key for the i18n messages to render. For example, if you have <code>en.cv.fe.valueMissing</code> and <code>en.cv.fe.badInput</code>, an <code>i18n_key_root</code> value of <code>"en.cv.fe"</code> will result in both of those keys being rendered.</p>
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
- 35
290
- 36
291
- 37</pre>
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 35</span>
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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:04 2025 by
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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:05 2025 by
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'>&quot;</span><span class='tstring_end'>&quot;</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> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_option'>option</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'>&quot;</span><span class='tstring_end'>&quot;</span></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'>&quot;</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'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:03 2025 by
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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:04 2025 by
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 Thu Jul 10 13:41:05 2025 by
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 Thu Jul 10 13:41:03 2025 by
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 Thu Jul 10 13:41:04 2025 by
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 Thu Jul 10 13:41:04 2025 by
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>