brut 0.0.27 → 0.0.28

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 (359) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/brutrb.com/.vitepress/config.mjs +1 -0
  4. data/brutrb.com/dev-environment.md +6 -5
  5. data/brutrb.com/doc-conventions.md +1 -1
  6. data/brutrb.com/getting-started.md +64 -28
  7. data/brutrb.com/instrumentation.md +12 -0
  8. data/brutrb.com/layouts.md +130 -0
  9. data/docs/404.html +2 -2
  10. data/docs/ai.html +5 -5
  11. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  12. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  13. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  14. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  15. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  16. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  17. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  18. data/docs/api/Brut/BackEnd.html +1 -1
  19. data/docs/api/Brut/CLI/App.html +38 -13
  20. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  21. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  22. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +2 -2
  23. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +2 -2
  24. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +2 -2
  25. data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
  26. data/docs/api/Brut/CLI/Apps/DB/Create.html +2 -2
  27. data/docs/api/Brut/CLI/Apps/DB/Drop.html +2 -2
  28. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +9 -3
  29. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +11 -11
  30. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +2 -2
  31. data/docs/api/Brut/CLI/Apps/DB/Seed.html +2 -2
  32. data/docs/api/Brut/CLI/Apps/DB/Status.html +12 -12
  33. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  34. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +270 -0
  35. data/docs/api/Brut/CLI/Apps/DeployBase.html +257 -0
  36. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +585 -0
  37. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +196 -0
  38. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +2 -2
  40. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +2 -2
  41. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +2 -2
  42. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +2 -2
  43. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +2 -2
  44. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
  46. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +2 -2
  48. data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/Test/Audit.html +12 -10
  50. data/docs/api/Brut/CLI/Apps/Test/E2e.html +8 -8
  51. data/docs/api/Brut/CLI/Apps/Test/JS.html +9 -9
  52. data/docs/api/Brut/CLI/Apps/Test/Run.html +18 -18
  53. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  54. data/docs/api/Brut/CLI/Apps.html +2 -2
  55. data/docs/api/Brut/CLI/Command.html +113 -28
  56. data/docs/api/Brut/CLI/Error.html +1 -1
  57. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  58. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  59. data/docs/api/Brut/CLI/Executor.html +169 -38
  60. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  61. data/docs/api/Brut/CLI/Options.html +68 -19
  62. data/docs/api/Brut/CLI/Output.html +1 -1
  63. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  64. data/docs/api/Brut/CLI.html +1 -1
  65. data/docs/api/Brut/FactoryBot.html +1 -1
  66. data/docs/api/Brut/Framework/App.html +1 -1
  67. data/docs/api/Brut/Framework/Config.html +1 -1
  68. data/docs/api/Brut/Framework/Container.html +110 -29
  69. data/docs/api/Brut/Framework/Error.html +1 -1
  70. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +89 -1
  71. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  72. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  73. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  74. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  75. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  76. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  77. data/docs/api/Brut/Framework/Errors.html +31 -8
  78. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  79. data/docs/api/Brut/Framework/MCP.html +1 -1
  80. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  81. data/docs/api/Brut/Framework.html +1 -1
  82. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  83. data/docs/api/Brut/FrontEnd/Component/Helpers.html +36 -26
  84. data/docs/api/Brut/FrontEnd/Component.html +7 -7
  85. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
  86. data/docs/api/Brut/FrontEnd/Components/FormTag.html +37 -29
  87. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
  88. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  89. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  90. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +20 -117
  91. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +25 -23
  92. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +73 -380
  93. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +22 -138
  94. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  95. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  96. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  97. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  98. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  99. data/docs/api/Brut/FrontEnd/Components.html +23 -2
  100. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  102. data/docs/api/Brut/FrontEnd/Form.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +24 -68
  104. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  105. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +4 -4
  106. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  107. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  111. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +72 -22
  112. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  113. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  114. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  116. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  117. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  122. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  123. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  124. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  125. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +6 -2
  132. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  133. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  135. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  136. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  137. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  138. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  139. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  140. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  141. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  142. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  143. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  144. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  147. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  149. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  150. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  151. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  152. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  153. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  154. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  155. data/docs/api/Brut/FrontEnd.html +1 -1
  156. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  157. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  158. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  159. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  160. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  161. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  162. data/docs/api/Brut/I18n.html +1 -1
  163. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  164. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  165. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  166. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  167. data/docs/api/Brut/Instrumentation.html +1 -1
  168. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  169. data/docs/api/Brut/SinatraHelpers.html +1 -1
  170. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  171. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  172. data/docs/api/Brut/SpecSupport/E2ETestServer.html +20 -20
  173. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  174. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  175. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  176. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  177. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  178. data/docs/api/Brut/SpecSupport/HandlerSupport.html +2 -2
  179. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +142 -0
  180. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +142 -0
  181. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +155 -0
  182. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +55 -25
  183. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +149 -0
  184. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +46 -19
  185. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +149 -0
  186. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +149 -0
  187. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +165 -0
  188. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +158 -0
  189. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +156 -0
  190. data/docs/api/Brut/SpecSupport/Matchers.html +2 -2
  191. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +24 -24
  192. data/docs/api/Brut/SpecSupport/RSpecSetup.html +55 -20
  193. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  194. data/docs/api/Brut/SpecSupport.html +1 -1
  195. data/docs/api/Brut.html +1 -1
  196. data/docs/api/Clock.html +1 -1
  197. data/docs/api/RichString.html +1 -1
  198. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  199. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +5 -1
  200. data/docs/api/Sequel/Extensions/BrutMigrations.html +36 -28
  201. data/docs/api/Sequel/Extensions.html +1 -1
  202. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  203. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  204. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  205. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  206. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  207. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  208. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  209. data/docs/api/Sequel/Plugins.html +1 -1
  210. data/docs/api/Sequel.html +1 -1
  211. data/docs/api/SpecSupport/Matchers/BeABug.html +143 -0
  212. data/docs/api/_index.html +92 -1
  213. data/docs/api/class_list.html +1 -1
  214. data/docs/api/file.README.html +1 -1
  215. data/docs/api/index.html +1 -1
  216. data/docs/api/method_list.html +392 -336
  217. data/docs/api/top-level-namespace.html +1 -1
  218. data/docs/assets/{ai.md.tZrjP9im.js → ai.md._6HCDL6d.js} +1 -1
  219. data/docs/assets/ai.md._6HCDL6d.lean.js +1 -0
  220. data/docs/assets/{app.D_yaTITQ.js → app.BX81XO4N.js} +1 -1
  221. data/docs/assets/chunks/@localSearchIndexroot.CoYzciVi.js +1 -0
  222. data/docs/assets/chunks/{VPLocalSearchBox.B2-ZzyTY.js → VPLocalSearchBox.gABXcTWp.js} +1 -1
  223. data/docs/assets/chunks/{theme.CfGFVRvE.js → theme.DwUXXAL3.js} +2 -2
  224. data/docs/assets/{components.md.eCttGlN-.js → components.md.CRUMdRoN.js} +1 -1
  225. data/docs/assets/{configuration.md.BRriU0cL.js → configuration.md.BGHl8oRC.js} +1 -1
  226. data/docs/assets/{dev-environment.md.BNc8AYiK.js → dev-environment.md.GZv6xvi9.js} +1 -1
  227. data/docs/assets/doc-conventions.md.-kN3Xo5C.js +1 -0
  228. data/docs/assets/{doc-conventions.md.DCfRXXi-.lean.js → doc-conventions.md.-kN3Xo5C.lean.js} +1 -1
  229. data/docs/assets/{forms.md.CBTYQ_Cz.js → forms.md.B-koVgyw.js} +23 -23
  230. data/docs/assets/{forms.md.CBTYQ_Cz.lean.js → forms.md.B-koVgyw.lean.js} +1 -1
  231. data/docs/assets/getting-started.md.Ciz82L0m.js +25 -0
  232. data/docs/assets/getting-started.md.Ciz82L0m.lean.js +1 -0
  233. data/docs/assets/{instrumentation.md.CL6ax7nT.js → instrumentation.md.a9Pjps4P.js} +2 -2
  234. data/docs/assets/{instrumentation.md.CL6ax7nT.lean.js → instrumentation.md.a9Pjps4P.lean.js} +1 -1
  235. data/docs/assets/layouts.md.cPnh3NId.js +51 -0
  236. data/docs/assets/layouts.md.cPnh3NId.lean.js +1 -0
  237. data/docs/assets/lsp.md.Bsu-f6VU.js +1 -0
  238. data/docs/assets/lsp.md.Bsu-f6VU.lean.js +1 -0
  239. data/docs/assets/{overview.md.CDalkuxV.js → overview.md.C5wlBcR5.js} +3 -3
  240. data/docs/assets/recipes_authentication.md.CAsXf7hk.js +1 -0
  241. data/docs/assets/recipes_authentication.md.CAsXf7hk.lean.js +1 -0
  242. data/docs/assets.html +4 -4
  243. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  244. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  245. data/docs/brut-js/api/Autosubmit.html +1 -1
  246. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  247. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  248. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  249. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  250. data/docs/brut-js/api/BufferedLogger.html +1 -1
  251. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  252. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  253. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  254. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  255. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  256. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  257. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  258. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  259. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  260. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  261. data/docs/brut-js/api/Form.html +1 -1
  262. data/docs/brut-js/api/Form.js.html +1 -1
  263. data/docs/brut-js/api/I18nTranslation.html +1 -1
  264. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  265. data/docs/brut-js/api/LocaleDetection.html +1 -1
  266. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  267. data/docs/brut-js/api/Logger.html +1 -1
  268. data/docs/brut-js/api/Logger.js.html +1 -1
  269. data/docs/brut-js/api/Message.html +1 -1
  270. data/docs/brut-js/api/Message.js.html +1 -1
  271. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  272. data/docs/brut-js/api/RichString.html +1 -1
  273. data/docs/brut-js/api/RichString.js.html +1 -1
  274. data/docs/brut-js/api/Tabs.html +1 -1
  275. data/docs/brut-js/api/Tabs.js.html +1 -1
  276. data/docs/brut-js/api/Tracing.html +1 -1
  277. data/docs/brut-js/api/Tracing.js.html +1 -1
  278. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  279. data/docs/brut-js/api/external-Performance.html +1 -1
  280. data/docs/brut-js/api/external-Promise.html +1 -1
  281. data/docs/brut-js/api/external-ValidityState.html +1 -1
  282. data/docs/brut-js/api/external-Window.html +1 -1
  283. data/docs/brut-js/api/external-fetch.html +1 -1
  284. data/docs/brut-js/api/global.html +1 -1
  285. data/docs/brut-js/api/index.html +1 -1
  286. data/docs/brut-js/api/index.js.html +1 -1
  287. data/docs/brut-js/api/module-testing.html +1 -1
  288. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  289. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  290. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  291. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  292. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  293. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  294. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  295. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  296. data/docs/brut-js/api/testing_index.js.html +1 -1
  297. data/docs/brut-js.html +4 -4
  298. data/docs/business-logic.html +4 -4
  299. data/docs/cli.html +4 -4
  300. data/docs/components.html +6 -6
  301. data/docs/configuration.html +5 -5
  302. data/docs/css.html +4 -4
  303. data/docs/custom-element-tests.html +4 -4
  304. data/docs/database-access.html +4 -4
  305. data/docs/database-schema.html +4 -4
  306. data/docs/deployment.html +4 -4
  307. data/docs/dev-environment.html +5 -5
  308. data/docs/doc-conventions.html +5 -5
  309. data/docs/end-to-end-tests.html +4 -4
  310. data/docs/flash-and-session.html +4 -4
  311. data/docs/forms.html +27 -27
  312. data/docs/getting-started.html +29 -6
  313. data/docs/handlers.html +4 -4
  314. data/docs/hashmap.json +1 -1
  315. data/docs/hooks.html +4 -4
  316. data/docs/i18n.html +4 -4
  317. data/docs/index.html +3 -3
  318. data/docs/instrumentation.html +5 -5
  319. data/docs/javascript.html +4 -4
  320. data/docs/jobs.html +4 -4
  321. data/docs/keyword-injection.html +4 -4
  322. data/docs/layouts.html +74 -0
  323. data/docs/lsp.html +24 -0
  324. data/docs/markdown-examples.html +4 -4
  325. data/docs/middleware.html +4 -4
  326. data/docs/not-released.html +4 -4
  327. data/docs/overview.html +8 -8
  328. data/docs/pages.html +5 -5
  329. data/docs/recipes/authentication.html +24 -0
  330. data/docs/routes.html +4 -4
  331. data/docs/security.html +4 -4
  332. data/docs/seed-data.html +4 -4
  333. data/docs/space-time-continuum.html +4 -4
  334. data/docs/tutorial.html +4 -4
  335. data/docs/unit-tests.html +4 -4
  336. data/lib/brut/cli/app.rb +7 -2
  337. data/lib/brut/cli/apps/deploy_base.rb +86 -0
  338. data/lib/brut/cli/apps/heroku_container_based_deploy.rb +194 -0
  339. data/lib/brut/cli/command.rb +7 -13
  340. data/lib/brut/cli/executor.rb +31 -5
  341. data/lib/brut/cli/options.rb +4 -0
  342. data/lib/brut/cli.rb +4 -3
  343. data/lib/brut/framework/container.rb +25 -7
  344. data/lib/brut/framework/errors/abstract_method.rb +7 -0
  345. data/lib/brut/framework/errors.rb +4 -2
  346. data/lib/brut/front_end/middlewares/reload_app.rb +2 -0
  347. data/lib/brut/spec_support/rspec_setup.rb +42 -2
  348. data/lib/brut/version.rb +1 -1
  349. data/lib/sequel/extensions/brut_instrumentation.rb +4 -0
  350. metadata +49 -23
  351. data/docs/assets/ai.md.tZrjP9im.lean.js +0 -1
  352. data/docs/assets/chunks/@localSearchIndexroot.BsN5i0Fi.js +0 -1
  353. data/docs/assets/doc-conventions.md.DCfRXXi-.js +0 -1
  354. data/docs/assets/getting-started.md.Bz2s1Vjb.js +0 -2
  355. data/docs/assets/getting-started.md.Bz2s1Vjb.lean.js +0 -1
  356. /data/docs/assets/{components.md.eCttGlN-.lean.js → components.md.CRUMdRoN.lean.js} +0 -0
  357. /data/docs/assets/{configuration.md.BRriU0cL.lean.js → configuration.md.BGHl8oRC.lean.js} +0 -0
  358. /data/docs/assets/{dev-environment.md.BNc8AYiK.lean.js → dev-environment.md.GZv6xvi9.lean.js} +0 -0
  359. /data/docs/assets/{overview.md.CDalkuxV.lean.js → overview.md.C5wlBcR5.lean.js} +0 -0
@@ -123,38 +123,6 @@
123
123
 
124
124
 
125
125
 
126
- <h2>
127
- Class Method Summary
128
- <small><a href="#" class="summary_toggle">collapse</a></small>
129
- </h2>
130
-
131
- <ul class="summary">
132
-
133
- <li class="public ">
134
- <span class="summary_signature">
135
-
136
- <a href="#for_form_input-class_method" title="for_form_input (class method)">.<strong>for_form_input</strong>(form:, input_name:, options:, include_blank: false, value_attribute:, option_text_attribute:, index: nil, html_attributes: {}) &#x21d2; Brut::FrontEnd::Components::Inputs::SelectTagWithOptions </a>
137
-
138
-
139
-
140
- </span>
141
-
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
- <span class="summary_desc"><div class='inline'><p>Creates the appropriate select input for the given <span class='object_link'><a href="../../Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span> and input name.</p>
151
- </div></span>
152
-
153
- </li>
154
-
155
-
156
- </ul>
157
-
158
126
  <h2>
159
127
  Instance Method Summary
160
128
  <small><a href="#" class="summary_toggle">collapse</a></small>
@@ -165,7 +133,7 @@
165
133
  <li class="public ">
166
134
  <span class="summary_signature">
167
135
 
168
- <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(name:, options:, value_attribute:, selected_value: nil, selected_option: nil, option_text_attribute:, include_blank: false, html_attributes:) &#x21d2; SelectTagWithOptions </a>
136
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(form:, input_name:, options:, include_blank: false, value_attribute:, option_text_attribute:, index: nil, html_attributes: {}) &#x21d2; Brut::FrontEnd::Components::Inputs::SelectTagWithOptions </a>
169
137
 
170
138
 
171
139
 
@@ -181,7 +149,7 @@
181
149
 
182
150
 
183
151
 
184
- <span class="summary_desc"><div class='inline'><p>Create the element.</p>
152
+ <span class="summary_desc"><div class='inline'><p>Creates the appropriate select input for the given <span class='object_link'><a href="../../Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span> and input name.</p>
185
153
  </div></span>
186
154
 
187
155
  </li>
@@ -281,294 +249,7 @@
281
249
  <div class="method_details first">
282
250
  <h3 class="signature first" id="initialize-instance_method">
283
251
 
284
- #<strong>initialize</strong>(name:, options:, value_attribute:, selected_value: nil, selected_option: nil, option_text_attribute:, include_blank: false, html_attributes:) &#x21d2; <tt><span class='object_link'><a href="" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions (class)">SelectTagWithOptions</a></span></tt>
285
-
286
-
287
-
288
-
289
-
290
- </h3><div class="docstring">
291
- <div class="discussion">
292
- <p>Create the element.</p>
293
-
294
- <p>XXX: Why does this not ask the form for the selected_value?
295
- XXX: This doesn't do well when values are strings</p>
296
-
297
-
298
- </div>
299
- </div>
300
- <div class="tags">
301
- <p class="tag_title">Parameters:</p>
302
- <ul class="param">
303
-
304
- <li>
305
-
306
- <span class='name'>name</span>
307
-
308
-
309
- <span class='type'>(<tt>String</tt>)</span>
310
-
311
-
312
-
313
- &mdash;
314
- <div class='inline'><p>the name of the input</p>
315
- </div>
316
-
317
- </li>
318
-
319
- <li>
320
-
321
- <span class='name'>options</span>
322
-
323
-
324
- <span class='type'>(<tt>Array&lt;Object&gt;</tt>)</span>
325
-
326
-
327
-
328
- &mdash;
329
- <div class='inline'><p>An array of objects represented what is being selected.
330
- These can be any object and are ideally whatever domain object or
331
- data type you want on the backend to represent this selection.</p>
332
- </div>
333
-
334
- </li>
335
-
336
- <li>
337
-
338
- <span class='name'>value_attribute</span>
339
-
340
-
341
- <span class='type'>(<tt>Symbol|String</tt>)</span>
342
-
343
-
344
-
345
- &mdash;
346
- <div class='inline'><p>the name of an attribute to determine an option's value.
347
- This will be called on each element of <code>options</code> to get the value used for the <code>&lt;option&gt;</code>'s
348
- <code>value</code> attribute. The value returned by <code>value_attribute</code> should be unique amongst the
349
- <code>options</code> provided <em>and</em> be distinct from whatever <code>value</code> is used for <code>include_blank</code>.</p>
350
- </div>
351
-
352
- </li>
353
-
354
- <li>
355
-
356
- <span class='name'>selected_value</span>
357
-
358
-
359
- <span class='type'>(<tt>String</tt>)</span>
360
-
361
-
362
- <em class="default">(defaults to: <tt>nil</tt>)</em>
363
-
364
-
365
- &mdash;
366
- <div class='inline'><p>the value of the selected option. Note that this is the <em>value</em>
367
- of the selected option, not the selected option itself. To set the selected value
368
- based on a selected option, omit this and use <code>selected_option</code></p>
369
- </div>
370
-
371
- </li>
372
-
373
- <li>
374
-
375
- <span class='name'>selected_option</span>
376
-
377
-
378
- <span class='type'>(<tt>String</tt>)</span>
379
-
380
-
381
- <em class="default">(defaults to: <tt>nil</tt>)</em>
382
-
383
-
384
- &mdash;
385
- <div class='inline'><p>the selected option. Note that <code>value_attribute</code> will be called
386
- on this to determine the selected value to use when generating HTML. Also note that
387
- this object must be in <code>options</code> or an exeception is raised.</p>
388
- </div>
389
-
390
- </li>
391
-
392
- <li>
393
-
394
- <span class='name'>option_text_attribute</span>
395
-
396
-
397
- <span class='type'>(<tt>Symbol|String</tt>)</span>
398
-
399
-
400
-
401
- &mdash;
402
- <div class='inline'><p>the name of an attribute to determine the text for an option.
403
- This will be called on each element of <code>options</code> to get the value used for the <code>&lt;option&gt;</code>'s
404
- text content. The value returned by <code>option_text_attribute</code> need not be unique, though if it
405
- is not unique, it will certainly be confusing.</p>
406
- </div>
407
-
408
- </li>
409
-
410
- <li>
411
-
412
- <span class='name'>html_attributes</span>
413
-
414
-
415
- <span class='type'>(<tt>Hash</tt>)</span>
416
-
417
-
418
-
419
- &mdash;
420
- <div class='inline'><p>any additional HTML attributes to include on the <code>&lt;select&gt;</code> element.</p>
421
- </div>
422
-
423
- </li>
424
-
425
- <li>
426
-
427
- <span class='name'>include_blank</span>
428
-
429
-
430
- <span class='type'>(<tt>false|true|Hash</tt>)</span>
431
-
432
-
433
- <em class="default">(defaults to: <tt>false</tt>)</em>
434
-
435
-
436
- &mdash;
437
- <div class='inline'><p>configure how and if to include a blank element in the select.
438
- If this is false, there will be no blank element. If it's <code>true</code>, there will be one with
439
- no value or text. If this is a <code>Hash</code> it must contain a <code>value:</code> key and a <code>text_content:</code> key
440
- to be used as the <code>value</code> attribute and option text content, respectively.</p>
441
- </div>
442
-
443
- </li>
444
-
445
- </ul>
446
-
447
- <p class="tag_title">Raises:</p>
448
- <ul class="raise">
449
-
450
- <li>
451
-
452
-
453
- <span class='type'></span>
454
-
455
-
456
-
457
-
458
- <div class='inline'><p>ArgumentError if <code>selected_option</code> is present, but not in <code>options</code> or if <code>selected_value</code> is
459
- present, but no option's value for <code>value_attribute</code> is that value.</p>
460
- </div>
461
-
462
- </li>
463
-
464
- </ul>
465
-
466
- </div><table class="source_code">
467
- <tr>
468
- <td>
469
- <pre class="lines">
470
-
471
-
472
- 99
473
- 100
474
- 101
475
- 102
476
- 103
477
- 104
478
- 105
479
- 106
480
- 107
481
- 108
482
- 109
483
- 110
484
- 111
485
- 112
486
- 113
487
- 114
488
- 115
489
- 116
490
- 117
491
- 118
492
- 119
493
- 120
494
- 121
495
- 122
496
- 123
497
- 124
498
- 125
499
- 126
500
- 127
501
- 128
502
- 129
503
- 130
504
- 131
505
- 132
506
- 133
507
- 134
508
- 135
509
- 136
510
- 137
511
- 138</pre>
512
- </td>
513
- <td>
514
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/select_tag_with_options.rb', line 99</span>
515
-
516
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>name:</span><span class='comma'>,</span>
517
- <span class='label'>options:</span><span class='comma'>,</span>
518
- <span class='label'>value_attribute:</span><span class='comma'>,</span>
519
- <span class='label'>selected_value:</span> <span class='kw'>nil</span><span class='comma'>,</span>
520
- <span class='label'>selected_option:</span> <span class='kw'>nil</span><span class='comma'>,</span>
521
- <span class='label'>option_text_attribute:</span><span class='comma'>,</span>
522
- <span class='label'>include_blank:</span> <span class='kw'>false</span><span class='comma'>,</span>
523
- <span class='label'>html_attributes:</span><span class='rparen'>)</span>
524
- <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
525
- <span class='ivar'>@include_blank</span> <span class='op'>=</span> <span class='const'>IncludeBlank</span><span class='period'>.</span><span class='id identifier rubyid_from_param'>from_param</span><span class='lparen'>(</span><span class='id identifier rubyid_include_blank'>include_blank</span><span class='rparen'>)</span>
526
- <span class='ivar'>@value_attribute</span> <span class='op'>=</span> <span class='id identifier rubyid_value_attribute'>value_attribute</span>
527
- <span class='ivar'>@option_text_attribute</span> <span class='op'>=</span> <span class='id identifier rubyid_option_text_attribute'>option_text_attribute</span>
528
- <span class='ivar'>@html_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_html_attributes'>html_attributes</span>
529
- <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>
530
-
531
- <span class='kw'>if</span> <span class='id identifier rubyid_selected_value'>selected_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
532
- <span class='kw'>if</span> <span class='id identifier rubyid_selected_option'>selected_option</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
533
- <span class='ivar'>@selected_value</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='comment'># explicitly nothing is selected
534
- </span> <span class='kw'>else</span>
535
- <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>
536
- <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> <span class='op'>==</span> <span class='id identifier rubyid_selected_option'>selected_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>
537
- <span class='rbrace'>}</span>
538
- <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>
539
- <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_option </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_selected_option'>selected_option</span><span class='embexpr_end'>}</span><span class='tstring_content'> (with </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'> &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_selected_option'>selected_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='embexpr_end'>}</span><span class='tstring_content'>&#39;) was not found in options</span><span class='tstring_end'>&quot;</span></span>
540
- <span class='kw'>end</span>
541
- <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>
542
- <span class='kw'>end</span>
543
- <span class='kw'>else</span>
544
- <span class='kw'>if</span> <span class='id identifier rubyid_selected_value'>selected_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>
545
- <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>WTF: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
546
- <span class='kw'>end</span>
547
- <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>
548
- <span class='id identifier rubyid_selected_value'>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>
549
- <span class='rbrace'>}</span>
550
- <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>
551
- <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_selected_value'>selected_value</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>
552
- <span class='kw'>end</span>
553
- <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>
554
- <span class='kw'>end</span>
555
- <span class='kw'>end</span></pre>
556
- </td>
557
- </tr>
558
- </table>
559
- </div>
560
-
561
- </div>
562
-
563
-
564
- <div id="class_method_details" class="method_details_list">
565
- <h2>Class Method Details</h2>
566
-
567
-
568
- <div class="method_details first">
569
- <h3 class="signature first" id="for_form_input-class_method">
570
-
571
- .<strong>for_form_input</strong>(form:, input_name:, options:, include_blank: false, value_attribute:, option_text_attribute:, index: nil, html_attributes: {}) &#x21d2; <tt><span class='object_link'><a href="" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions (class)">Brut::FrontEnd::Components::Inputs::SelectTagWithOptions</a></span></tt>
252
+ #<strong>initialize</strong>(form:, input_name:, options:, include_blank: false, value_attribute:, option_text_attribute:, index: nil, html_attributes: {}) &#x21d2; <tt><span class='object_link'><a href="" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions (class)">Brut::FrontEnd::Components::Inputs::SelectTagWithOptions</a></span></tt>
572
253
 
573
254
 
574
255
 
@@ -728,23 +409,6 @@ to be used as the <code>value</code> attribute and option text content, respecti
728
409
 
729
410
  </ul>
730
411
 
731
- <p class="tag_title">Returns:</p>
732
- <ul class="return">
733
-
734
- <li>
735
-
736
-
737
- <span class='type'>(<tt><span class='object_link'><a href="" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions (class)">Brut::FrontEnd::Components::Inputs::SelectTagWithOptions</a></span></tt>)</span>
738
-
739
-
740
-
741
- &mdash;
742
- <div class='inline'><p>the select input ready to be placed into a view.</p>
743
- </div>
744
-
745
- </li>
746
-
747
- </ul>
748
412
 
749
413
  </div><table class="source_code">
750
414
  <tr>
@@ -788,19 +452,33 @@ to be used as the <code>value</code> attribute and option text content, respecti
788
452
  63
789
453
  64
790
454
  65
791
- 66</pre>
455
+ 66
456
+ 67
457
+ 68
458
+ 69
459
+ 70
460
+ 71
461
+ 72
462
+ 73
463
+ 74
464
+ 75
465
+ 76
466
+ 77
467
+ 78
468
+ 79
469
+ 80</pre>
792
470
  </td>
793
471
  <td>
794
472
  <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/select_tag_with_options.rb', line 30</span>
795
473
 
796
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_for_form_input'>for_form_input</span><span class='lparen'>(</span><span class='label'>form:</span><span class='comma'>,</span>
797
- <span class='label'>input_name:</span><span class='comma'>,</span>
798
- <span class='label'>options:</span><span class='comma'>,</span>
799
- <span class='label'>include_blank:</span> <span class='kw'>false</span><span class='comma'>,</span>
800
- <span class='label'>value_attribute:</span><span class='comma'>,</span>
801
- <span class='label'>option_text_attribute:</span><span class='comma'>,</span>
802
- <span class='label'>index:</span> <span class='kw'>nil</span><span class='comma'>,</span>
803
- <span class='label'>html_attributes:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
474
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>form:</span><span class='comma'>,</span>
475
+ <span class='label'>input_name:</span><span class='comma'>,</span>
476
+ <span class='label'>options:</span><span class='comma'>,</span>
477
+ <span class='label'>include_blank:</span> <span class='kw'>false</span><span class='comma'>,</span>
478
+ <span class='label'>value_attribute:</span><span class='comma'>,</span>
479
+ <span class='label'>option_text_attribute:</span><span class='comma'>,</span>
480
+ <span class='label'>index:</span> <span class='kw'>nil</span><span class='comma'>,</span>
481
+ <span class='label'>html_attributes:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
804
482
  <span class='id identifier rubyid_html_attributes'>html_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_html_attributes'>html_attributes</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
805
483
  <span class='id identifier rubyid_default_html_attributes'>default_html_attributes</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
806
484
  <span class='id identifier rubyid_index'>index</span> <span class='op'>||=</span> <span class='int'>0</span>
@@ -820,22 +498,37 @@ to be used as the <code>value</code> attribute and option text content, respecti
820
498
  <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
821
499
  <span class='kw'>end</span>
822
500
 
823
- <span class='const'><span class='object_link'><a href="../../../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Components.html" title="Brut::FrontEnd::Components (module)">Components</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Inputs.html" title="Brut::FrontEnd::Components::Inputs (module)">Inputs</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions (class)">SelectTagWithOptions</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions#initialize (method)">new</a></span></span><span class='lparen'>(</span>
824
- <span class='label'>name:</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span>
825
- <span class='label'>options:</span><span class='comma'>,</span>
826
- <span class='label'>selected_value:</span> <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span>
827
- <span class='label'>value_attribute:</span><span class='comma'>,</span>
828
- <span class='label'>option_text_attribute:</span><span class='comma'>,</span>
829
- <span class='label'>include_blank:</span><span class='comma'>,</span>
830
- <span class='label'>html_attributes:</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>
831
- <span class='rparen'>)</span>
501
+ <span class='id identifier rubyid_input_value'>input_value</span> <span class='op'>=</span> <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
502
+
503
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
504
+ <span class='ivar'>@include_blank</span> <span class='op'>=</span> <span class='const'>IncludeBlank</span><span class='period'>.</span><span class='id identifier rubyid_from_param'>from_param</span><span class='lparen'>(</span><span class='id identifier rubyid_include_blank'>include_blank</span><span class='rparen'>)</span>
505
+ <span class='ivar'>@value_attribute</span> <span class='op'>=</span> <span class='id identifier rubyid_value_attribute'>value_attribute</span>
506
+ <span class='ivar'>@option_text_attribute</span> <span class='op'>=</span> <span class='id identifier rubyid_option_text_attribute'>option_text_attribute</span>
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
+ <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
+
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>
511
+ <span class='ivar'>@selected_value</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='comment'># explicitly nothing is selected
512
+ </span> <span class='kw'>else</span>
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>
514
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>WTF: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='comment'># XXX?
515
+ </span> <span class='kw'>end</span>
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
+ <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
+ <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>
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'> 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
+ <span class='kw'>end</span>
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>
523
+ <span class='kw'>end</span>
832
524
  <span class='kw'>end</span></pre>
833
525
  </td>
834
526
  </tr>
835
527
  </table>
836
528
  </div>
837
-
838
- </div>
529
+
530
+ </div>
531
+
839
532
 
840
533
  <div id="instance_method_details" class="method_details_list">
841
534
  <h2>Instance Method Details</h2>
@@ -856,28 +549,28 @@ to be used as the <code>value</code> attribute and option text content, respecti
856
549
  <pre class="lines">
857
550
 
858
551
 
859
- 140
860
- 141
861
- 142
862
- 143
863
- 144
864
- 145
865
- 146
866
- 147
867
- 148
868
- 149
869
- 150
870
- 151
871
- 152
872
- 153
873
- 154
874
- 155
875
- 156
876
- 157
877
- 158</pre>
552
+ 82
553
+ 83
554
+ 84
555
+ 85
556
+ 86
557
+ 87
558
+ 88
559
+ 89
560
+ 90
561
+ 91
562
+ 92
563
+ 93
564
+ 94
565
+ 95
566
+ 96
567
+ 97
568
+ 98
569
+ 99
570
+ 100</pre>
878
571
  </td>
879
572
  <td>
880
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/select_tag_with_options.rb', line 140</span>
573
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/select_tag_with_options.rb', line 82</span>
881
574
 
882
575
  <span class='kw'>def</span> <span class='id identifier rubyid_view_template'>view_template</span>
883
576
  <span class='id identifier rubyid_select'>select</span><span class='lparen'>(</span><span class='op'>**</span><span class='ivar'>@html_attributes</span><span class='rparen'>)</span> <span class='lbrace'>{</span>
@@ -908,7 +601,7 @@ to be used as the <code>value</code> attribute and option text content, respecti
908
601
  </div>
909
602
 
910
603
  <div id="footer">
911
- Generated on Wed Jun 25 22:57:21 2025 by
604
+ Generated on Wed Jul 2 21:45:28 2025 by
912
605
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
913
606
  0.9.37 (ruby-3.4.4).
914
607
  </div>