brut 0.0.28 → 0.1.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 (532) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -0
  3. data/.projections.json +10 -0
  4. data/.rspec +3 -0
  5. data/Dockerfile.dx +32 -14
  6. data/Gemfile.lock +1 -1
  7. data/README.md +23 -2
  8. data/assets/Logo-Square.pxd +0 -0
  9. data/assets/LogoPylon.pxd +0 -0
  10. data/assets/LogoStop.pxd +0 -0
  11. data/assets/LogoTall.pxd +0 -0
  12. data/assets/MetroLogo.graffle +0 -0
  13. data/assets/SocialImage.png +0 -0
  14. data/assets/SocialImage.pxd +0 -0
  15. data/bin/docs +24 -2
  16. data/bin/rspec +27 -0
  17. data/bin/setup +3 -3
  18. data/brutrb.com/.vitepress/config.mjs +45 -8
  19. data/brutrb.com/.vitepress/theme/custom.css +7 -0
  20. data/brutrb.com/.vitepress/theme/style.css +29 -17
  21. data/brutrb.com/ai.md +10 -15
  22. data/brutrb.com/assets.md +2 -9
  23. data/brutrb.com/brut-js.md +12 -2
  24. data/brutrb.com/cli.md +9 -13
  25. data/brutrb.com/components.md +118 -96
  26. data/brutrb.com/configuration.md +3 -4
  27. data/brutrb.com/css.md +2 -2
  28. data/brutrb.com/custom-element-tests.md +3 -4
  29. data/brutrb.com/database-access.md +1 -1
  30. data/brutrb.com/database-schema.md +29 -41
  31. data/brutrb.com/deployment.md +123 -45
  32. data/brutrb.com/dev-environment.md +7 -7
  33. data/brutrb.com/dir-structure.md +120 -0
  34. data/brutrb.com/doc-conventions.md +18 -15
  35. data/brutrb.com/dx +1 -0
  36. data/brutrb.com/end-to-end-tests.md +12 -10
  37. data/brutrb.com/features.md +373 -0
  38. data/brutrb.com/flash-and-session.md +115 -131
  39. data/brutrb.com/form-constraints.md +266 -0
  40. data/brutrb.com/forms.md +140 -765
  41. data/brutrb.com/getting-started.md +10 -11
  42. data/brutrb.com/handlers.md +119 -95
  43. data/brutrb.com/hooks.md +18 -20
  44. data/brutrb.com/i18n.md +6 -4
  45. data/brutrb.com/images/LogoPylon.png +0 -0
  46. data/brutrb.com/images/LogoSquare.png +0 -0
  47. data/brutrb.com/images/LogoStop.png +0 -0
  48. data/brutrb.com/images/LogoTall.png +0 -0
  49. data/brutrb.com/images/OverviewMetro.graffle +0 -0
  50. data/brutrb.com/images/OverviewMetro.png +0 -0
  51. data/brutrb.com/index.md +4 -3
  52. data/brutrb.com/instrumentation.md +7 -10
  53. data/brutrb.com/javascript.md +14 -14
  54. data/brutrb.com/keyword-injection.md +72 -114
  55. data/brutrb.com/layouts.md +20 -52
  56. data/brutrb.com/lsp.md +1 -1
  57. data/brutrb.com/overview.md +35 -377
  58. data/brutrb.com/pages.md +119 -207
  59. data/brutrb.com/public/SocialImage.png +0 -0
  60. data/brutrb.com/public/favicon.ico +0 -0
  61. data/brutrb.com/recipes/alternate-layouts.md +32 -0
  62. data/brutrb.com/recipes/authentication.md +315 -6
  63. data/brutrb.com/recipes/blank-layouts.md +22 -0
  64. data/brutrb.com/recipes/custom-flash.md +51 -0
  65. data/brutrb.com/recipes/indexed-forms.md +149 -0
  66. data/brutrb.com/recipes/text-field-component.md +182 -0
  67. data/brutrb.com/routes.md +56 -82
  68. data/brutrb.com/security.md +0 -3
  69. data/brutrb.com/space-time-continuum.md +8 -12
  70. data/brutrb.com/tutorial.md +1 -1
  71. data/brutrb.com/why.md +19 -0
  72. data/docker-compose.dx.yml +5 -2
  73. data/docs/404.html +8 -3
  74. data/docs/SocialImage.png +0 -0
  75. data/docs/ai.html +11 -6
  76. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  77. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  78. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  79. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  80. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  81. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  82. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  83. data/docs/api/Brut/BackEnd.html +1 -1
  84. data/docs/api/Brut/CLI/App.html +1 -1
  85. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  86. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
  87. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
  88. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  89. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
  90. data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
  91. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  92. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  93. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  94. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
  95. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  96. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  97. data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
  98. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  99. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  100. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  101. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  102. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  103. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  104. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
  105. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  106. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
  107. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  108. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
  109. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  110. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  111. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
  112. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  113. data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
  114. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  115. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  116. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  117. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  118. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  119. data/docs/api/Brut/CLI/Apps.html +1 -1
  120. data/docs/api/Brut/CLI/Command.html +1 -1
  121. data/docs/api/Brut/CLI/Error.html +1 -1
  122. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  123. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  124. data/docs/api/Brut/CLI/Executor.html +1 -1
  125. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  126. data/docs/api/Brut/CLI/Options.html +1 -1
  127. data/docs/api/Brut/CLI/Output.html +1 -1
  128. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  129. data/docs/api/Brut/CLI.html +1 -1
  130. data/docs/api/Brut/FactoryBot.html +1 -1
  131. data/docs/api/Brut/Framework/App.html +1 -1
  132. data/docs/api/Brut/Framework/Config.html +1 -1
  133. data/docs/api/Brut/Framework/Container.html +1 -1
  134. data/docs/api/Brut/Framework/Error.html +1 -1
  135. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  136. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  137. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  138. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  139. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  140. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  141. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  142. data/docs/api/Brut/Framework/Errors.html +1 -1
  143. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  144. data/docs/api/Brut/Framework/MCP.html +1 -1
  145. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  146. data/docs/api/Brut/Framework.html +1 -1
  147. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  149. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  150. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
  151. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  152. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
  153. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  154. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  155. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
  156. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  157. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +1 -1
  158. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
  159. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  161. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  164. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  167. data/docs/api/Brut/FrontEnd/Form.html +9 -11
  168. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  169. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +201 -0
  170. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +535 -0
  171. data/docs/api/Brut/FrontEnd/Forms/Input.html +983 -35
  172. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  173. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +29 -19
  174. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +141 -20
  175. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  176. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +141 -20
  177. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  178. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  179. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  180. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  181. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  182. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  183. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  184. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  185. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  186. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
  187. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  188. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  189. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  190. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  191. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  192. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  193. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  194. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  195. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  196. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  197. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  198. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  199. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  200. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  201. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  202. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  203. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  204. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  205. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  206. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  207. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  208. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  209. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  210. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  211. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  212. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  213. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  214. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  215. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  216. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  217. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  218. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  219. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  220. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  221. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  222. data/docs/api/Brut/FrontEnd.html +1 -1
  223. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  224. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  225. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  226. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  227. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  228. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  229. data/docs/api/Brut/I18n.html +1 -1
  230. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  231. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  232. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  233. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  234. data/docs/api/Brut/Instrumentation.html +1 -1
  235. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  236. data/docs/api/Brut/SinatraHelpers.html +1 -1
  237. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  238. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  239. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  240. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  241. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  242. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  243. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  244. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  245. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  246. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  247. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  248. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  249. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  250. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  251. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  252. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  253. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  254. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  255. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  256. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  257. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  258. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  259. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  260. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  261. data/docs/api/Brut/SpecSupport.html +1 -1
  262. data/docs/api/Brut.html +1 -1
  263. data/docs/api/Clock.html +1 -1
  264. data/docs/api/RichString.html +1 -1
  265. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  266. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  267. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  268. data/docs/api/Sequel/Extensions.html +1 -1
  269. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  270. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  271. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  272. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  273. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  274. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  275. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  276. data/docs/api/Sequel/Plugins.html +1 -1
  277. data/docs/api/Sequel.html +1 -1
  278. data/docs/api/_index.html +15 -1
  279. data/docs/api/class_list.html +1 -1
  280. data/docs/api/css/full_list.css +2 -1
  281. data/docs/api/css/style.css +14 -13
  282. data/docs/api/file.README.html +22 -3
  283. data/docs/api/index.html +22 -3
  284. data/docs/api/method_list.html +435 -275
  285. data/docs/api/top-level-namespace.html +1 -1
  286. data/docs/assets/LogoStop.Gb3tDhL1.png +0 -0
  287. data/docs/assets/OverviewMetro.DUS-5fUZ.png +0 -0
  288. data/docs/assets/{ai.md._6HCDL6d.js → ai.md.Cy9GWnER.js} +1 -1
  289. data/docs/assets/ai.md.Cy9GWnER.lean.js +1 -0
  290. data/docs/assets/{app.BX81XO4N.js → app.ClaS47Ru.js} +1 -1
  291. data/docs/assets/{assets.md.D3wunzLx.js → assets.md.7C3HWkga.js} +3 -3
  292. data/docs/assets/{assets.md.D3wunzLx.lean.js → assets.md.7C3HWkga.lean.js} +1 -1
  293. data/docs/assets/{brut-js.md.o2DAO2s2.js → brut-js.md.B4GYxQVw.js} +1 -1
  294. data/docs/assets/{brut-js.md.o2DAO2s2.lean.js → brut-js.md.B4GYxQVw.lean.js} +1 -1
  295. data/docs/assets/chunks/@localSearchIndexroot.Biqy1A4t.js +1 -0
  296. data/docs/assets/chunks/{VPLocalSearchBox.gABXcTWp.js → VPLocalSearchBox.DtgDfde2.js} +1 -1
  297. data/docs/assets/chunks/{theme.DwUXXAL3.js → theme.B45bvibT.js} +2 -2
  298. data/docs/assets/{cli.md.RmeA2b0i.js → cli.md.CjsktgFz.js} +15 -20
  299. data/docs/assets/components.md.DatoNgFo.js +96 -0
  300. data/docs/assets/{components.md.CRUMdRoN.lean.js → components.md.DatoNgFo.lean.js} +1 -1
  301. data/docs/assets/{configuration.md.BGHl8oRC.js → configuration.md.DeyhpqEx.js} +3 -3
  302. data/docs/assets/{css.md.DJgj2clw.js → css.md.CltvJqAa.js} +3 -3
  303. data/docs/assets/{custom-element-tests.md.BrYJQEl3.js → custom-element-tests.md.B_rbta32.js} +3 -3
  304. data/docs/assets/{database-access.md.C7l-Vuvb.js → database-access.md.gnluu54N.js} +1 -1
  305. data/docs/assets/{database-schema.md.BUjR0VS1.js → database-schema.md.CSYk6E6v.js} +6 -6
  306. data/docs/assets/{database-schema.md.BUjR0VS1.lean.js → database-schema.md.CSYk6E6v.lean.js} +1 -1
  307. data/docs/assets/deployment.md.BLseERGV.js +48 -0
  308. data/docs/assets/deployment.md.BLseERGV.lean.js +1 -0
  309. data/docs/assets/dev-environment.md.BroAOLhF.js +11 -0
  310. data/docs/assets/dir-structure.md.CWir1pic.js +46 -0
  311. data/docs/assets/dir-structure.md.CWir1pic.lean.js +1 -0
  312. data/docs/assets/doc-conventions.md.BzmSrTEW.js +1 -0
  313. data/docs/assets/doc-conventions.md.BzmSrTEW.lean.js +1 -0
  314. data/docs/assets/{end-to-end-tests.md.yfQHC0b5.js → end-to-end-tests.md.DzqRpZ43.js} +5 -3
  315. data/docs/assets/end-to-end-tests.md.DzqRpZ43.lean.js +1 -0
  316. data/docs/assets/features.md.DPFXsy0z.js +154 -0
  317. data/docs/assets/features.md.DPFXsy0z.lean.js +1 -0
  318. data/docs/assets/flash-and-session.md.nPvUpnUx.js +79 -0
  319. data/docs/assets/{flash-and-session.md.BXY8RvT0.lean.js → flash-and-session.md.nPvUpnUx.lean.js} +1 -1
  320. data/docs/assets/form-constraints.md.x5tNpTTI.js +90 -0
  321. data/docs/assets/form-constraints.md.x5tNpTTI.lean.js +1 -0
  322. data/docs/assets/forms.md.C2Dizvzq.js +64 -0
  323. data/docs/assets/forms.md.C2Dizvzq.lean.js +1 -0
  324. data/docs/assets/{getting-started.md.Ciz82L0m.js → getting-started.md.C93e0odB.js} +5 -5
  325. data/docs/assets/{getting-started.md.Ciz82L0m.lean.js → getting-started.md.C93e0odB.lean.js} +1 -1
  326. data/docs/assets/handlers.md.Chyri6KA.js +54 -0
  327. data/docs/assets/handlers.md.Chyri6KA.lean.js +1 -0
  328. data/docs/assets/{hooks.md.C4-moMny.js → hooks.md.Jmb5VOLA.js} +4 -4
  329. data/docs/assets/{hooks.md.C4-moMny.lean.js → hooks.md.Jmb5VOLA.lean.js} +1 -1
  330. data/docs/assets/{i18n.md.Do9i1qWl.js → i18n.md.xQhiGo1G.js} +2 -2
  331. data/docs/assets/{i18n.md.Do9i1qWl.lean.js → i18n.md.xQhiGo1G.lean.js} +1 -1
  332. data/docs/assets/index.md.CAMqGBJE.js +1 -0
  333. data/docs/assets/index.md.CAMqGBJE.lean.js +1 -0
  334. data/docs/assets/{instrumentation.md.a9Pjps4P.js → instrumentation.md.BgcaGVYH.js} +2 -2
  335. data/docs/assets/{instrumentation.md.a9Pjps4P.lean.js → instrumentation.md.BgcaGVYH.lean.js} +1 -1
  336. data/docs/assets/{javascript.md.GWbhRS51.js → javascript.md.DzrMxUmI.js} +7 -7
  337. data/docs/assets/{javascript.md.GWbhRS51.lean.js → javascript.md.DzrMxUmI.lean.js} +1 -1
  338. data/docs/assets/keyword-injection.md.95Zgh2eN.js +21 -0
  339. data/docs/assets/{keyword-injection.md.Dt2tKREs.lean.js → keyword-injection.md.95Zgh2eN.lean.js} +1 -1
  340. data/docs/assets/{layouts.md.cPnh3NId.js → layouts.md.CJGDFY-m.js} +2 -15
  341. data/docs/assets/layouts.md.CJGDFY-m.lean.js +1 -0
  342. data/docs/assets/{lsp.md.Bsu-f6VU.js → lsp.md.Dn1rIiW0.js} +1 -1
  343. data/docs/assets/{lsp.md.Bsu-f6VU.lean.js → lsp.md.Dn1rIiW0.lean.js} +1 -1
  344. data/docs/assets/overview.md.Bdq4qt3L.js +1 -0
  345. data/docs/assets/overview.md.Bdq4qt3L.lean.js +1 -0
  346. data/docs/assets/pages.md.B7Hc-i6H.js +45 -0
  347. data/docs/assets/pages.md.B7Hc-i6H.lean.js +1 -0
  348. data/docs/assets/recipes_alternate-layouts.md.BwEytl59.js +22 -0
  349. data/docs/assets/recipes_alternate-layouts.md.BwEytl59.lean.js +1 -0
  350. data/docs/assets/recipes_authentication.md.Dzvi_g69.js +156 -0
  351. data/docs/assets/recipes_authentication.md.Dzvi_g69.lean.js +1 -0
  352. data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.js +15 -0
  353. data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.lean.js +1 -0
  354. data/docs/assets/recipes_custom-flash.md.CrQbI5eH.js +26 -0
  355. data/docs/assets/recipes_custom-flash.md.CrQbI5eH.lean.js +1 -0
  356. data/docs/assets/recipes_indexed-forms.md.CstYyOSo.js +74 -0
  357. data/docs/assets/recipes_indexed-forms.md.CstYyOSo.lean.js +1 -0
  358. data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.js +101 -0
  359. data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.lean.js +1 -0
  360. data/docs/assets/routes.md.B8kfUPHU.js +21 -0
  361. data/docs/assets/{routes.md.BMM7peut.lean.js → routes.md.B8kfUPHU.lean.js} +1 -1
  362. data/docs/assets/{security.md.C668yXCi.js → security.md.C0G_AZR-.js} +1 -1
  363. data/docs/assets/{security.md.C668yXCi.lean.js → security.md.C0G_AZR-.lean.js} +1 -1
  364. data/docs/assets/space-time-continuum.md.xl44xDos.js +1 -0
  365. data/docs/assets/{space-time-continuum.md.KPUIKysQ.lean.js → space-time-continuum.md.xl44xDos.lean.js} +1 -1
  366. data/docs/assets/{style.D73IYGCX.css → style.prAgp4yQ.css} +1 -1
  367. data/docs/assets/tutorial.md.a4a0eVOy.js +1 -0
  368. data/docs/assets/tutorial.md.a4a0eVOy.lean.js +1 -0
  369. data/docs/assets/why.md.C-hk5xgJ.js +1 -0
  370. data/docs/assets/why.md.C-hk5xgJ.lean.js +1 -0
  371. data/docs/assets.html +12 -7
  372. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  373. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  374. data/docs/brut-js/api/Autosubmit.html +1 -1
  375. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  376. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  377. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  378. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  379. data/docs/brut-js/api/BufferedLogger.html +1 -1
  380. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  381. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  382. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  383. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  384. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  385. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  386. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  387. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  388. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  389. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  390. data/docs/brut-js/api/Form.html +1 -1
  391. data/docs/brut-js/api/Form.js.html +1 -1
  392. data/docs/brut-js/api/I18nTranslation.html +1 -1
  393. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  394. data/docs/brut-js/api/LocaleDetection.html +1 -1
  395. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  396. data/docs/brut-js/api/Logger.html +1 -1
  397. data/docs/brut-js/api/Logger.js.html +1 -1
  398. data/docs/brut-js/api/Message.html +1 -1
  399. data/docs/brut-js/api/Message.js.html +1 -1
  400. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  401. data/docs/brut-js/api/RichString.html +1 -1
  402. data/docs/brut-js/api/RichString.js.html +1 -1
  403. data/docs/brut-js/api/Tabs.html +1 -1
  404. data/docs/brut-js/api/Tabs.js.html +1 -1
  405. data/docs/brut-js/api/Tracing.html +1 -1
  406. data/docs/brut-js/api/Tracing.js.html +1 -1
  407. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  408. data/docs/brut-js/api/external-Performance.html +1 -1
  409. data/docs/brut-js/api/external-Promise.html +1 -1
  410. data/docs/brut-js/api/external-ValidityState.html +1 -1
  411. data/docs/brut-js/api/external-Window.html +1 -1
  412. data/docs/brut-js/api/external-fetch.html +1 -1
  413. data/docs/brut-js/api/global.html +1 -1
  414. data/docs/brut-js/api/index.html +1 -1
  415. data/docs/brut-js/api/index.js.html +1 -1
  416. data/docs/brut-js/api/module-testing.html +1 -1
  417. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  418. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  419. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  420. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  421. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  422. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  423. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  424. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  425. data/docs/brut-js/api/testing_index.js.html +1 -1
  426. data/docs/brut-js.html +12 -7
  427. data/docs/business-logic.html +10 -5
  428. data/docs/cli.html +26 -26
  429. data/docs/components.html +61 -64
  430. data/docs/configuration.html +13 -8
  431. data/docs/css.html +14 -9
  432. data/docs/custom-element-tests.html +14 -9
  433. data/docs/database-access.html +12 -7
  434. data/docs/database-schema.html +15 -10
  435. data/docs/deployment.html +58 -6
  436. data/docs/dev-environment.html +12 -7
  437. data/docs/dir-structure.html +74 -0
  438. data/docs/doc-conventions.html +11 -6
  439. data/docs/end-to-end-tests.html +15 -8
  440. data/docs/favicon.ico +0 -0
  441. data/docs/features.html +182 -0
  442. data/docs/flash-and-session.html +73 -82
  443. data/docs/form-constraints.html +118 -0
  444. data/docs/forms.html +57 -367
  445. data/docs/getting-started.html +15 -10
  446. data/docs/handlers.html +51 -61
  447. data/docs/hashmap.json +1 -1
  448. data/docs/hooks.html +14 -9
  449. data/docs/i18n.html +12 -7
  450. data/docs/index.html +11 -6
  451. data/docs/instrumentation.html +12 -7
  452. data/docs/javascript.html +17 -12
  453. data/docs/jobs.html +10 -5
  454. data/docs/keyword-injection.html +22 -21
  455. data/docs/layouts.html +12 -20
  456. data/docs/lsp.html +11 -6
  457. data/docs/markdown-examples.html +10 -5
  458. data/docs/middleware.html +10 -5
  459. data/docs/not-released.html +10 -5
  460. data/docs/overview.html +11 -138
  461. data/docs/pages.html +49 -121
  462. data/docs/recipes/alternate-layouts.html +50 -0
  463. data/docs/recipes/authentication.html +166 -6
  464. data/docs/recipes/blank-layouts.html +43 -0
  465. data/docs/recipes/custom-flash.html +54 -0
  466. data/docs/recipes/indexed-forms.html +102 -0
  467. data/docs/recipes/text-field-component.html +129 -0
  468. data/docs/routes.html +16 -19
  469. data/docs/security.html +11 -6
  470. data/docs/seed-data.html +10 -5
  471. data/docs/space-time-continuum.html +11 -6
  472. data/docs/tutorial.html +11 -6
  473. data/docs/unit-tests.html +10 -5
  474. data/docs/why.html +29 -0
  475. data/dx/bash_customizations +7 -0
  476. data/dx/build +13 -2
  477. data/dx/docker-compose.env +1 -1
  478. data/dx/exec +25 -8
  479. data/lib/brut/front_end/form.rb +8 -8
  480. data/lib/brut/front_end/forms/input.rb +253 -20
  481. data/lib/brut/front_end/forms/input_definition.rb +15 -12
  482. data/lib/brut/front_end/forms/radio_button_group_input.rb +8 -1
  483. data/lib/brut/front_end/forms/select_input.rb +8 -1
  484. data/lib/brut/front_end.rb +1 -0
  485. data/lib/brut/version.rb +1 -1
  486. data/specs/brut/front_end/forms/input.spec.rb +978 -0
  487. data/specs/brut/front_end/forms/radio_button_group_input.spec.rb +54 -0
  488. data/specs/brut/front_end/forms/select_input.spec.rb +54 -0
  489. data/specs/spec_helper.rb +27 -0
  490. data/specs/support/matchers/have_constraint_violation.rb +23 -0
  491. data/specs/support/matchers.rb +5 -0
  492. data/specs/support.rb +3 -0
  493. metadata +141 -77
  494. data/brutrb.com/public/images/logo-300.png +0 -0
  495. data/brutrb.com/public/images/logo.png +0 -0
  496. data/docs/assets/ai.md._6HCDL6d.lean.js +0 -1
  497. data/docs/assets/chunks/@localSearchIndexroot.CoYzciVi.js +0 -1
  498. data/docs/assets/components.md.CRUMdRoN.js +0 -104
  499. data/docs/assets/deployment.md.Dbka4OTr.js +0 -1
  500. data/docs/assets/deployment.md.Dbka4OTr.lean.js +0 -1
  501. data/docs/assets/dev-environment.md.GZv6xvi9.js +0 -11
  502. data/docs/assets/doc-conventions.md.-kN3Xo5C.js +0 -1
  503. data/docs/assets/doc-conventions.md.-kN3Xo5C.lean.js +0 -1
  504. data/docs/assets/end-to-end-tests.md.yfQHC0b5.lean.js +0 -1
  505. data/docs/assets/flash-and-session.md.BXY8RvT0.js +0 -93
  506. data/docs/assets/forms.md.B-koVgyw.js +0 -379
  507. data/docs/assets/forms.md.B-koVgyw.lean.js +0 -1
  508. data/docs/assets/handlers.md.089DVD3v.js +0 -69
  509. data/docs/assets/handlers.md.089DVD3v.lean.js +0 -1
  510. data/docs/assets/index.md.B28EwVpq.js +0 -1
  511. data/docs/assets/index.md.B28EwVpq.lean.js +0 -1
  512. data/docs/assets/keyword-injection.md.Dt2tKREs.js +0 -25
  513. data/docs/assets/layouts.md.cPnh3NId.lean.js +0 -1
  514. data/docs/assets/overview.Da81cB9R.png +0 -0
  515. data/docs/assets/overview.md.C5wlBcR5.js +0 -133
  516. data/docs/assets/overview.md.C5wlBcR5.lean.js +0 -1
  517. data/docs/assets/pages.md.BE3kfOc5.js +0 -122
  518. data/docs/assets/pages.md.BE3kfOc5.lean.js +0 -1
  519. data/docs/assets/recipes_authentication.md.CAsXf7hk.js +0 -1
  520. data/docs/assets/recipes_authentication.md.CAsXf7hk.lean.js +0 -1
  521. data/docs/assets/routes.md.BMM7peut.js +0 -29
  522. data/docs/assets/space-time-continuum.md.KPUIKysQ.js +0 -1
  523. data/docs/assets/tutorial.md.BnoGjrdK.js +0 -1
  524. data/docs/assets/tutorial.md.BnoGjrdK.lean.js +0 -1
  525. data/docs/images/logo-300.png +0 -0
  526. data/docs/images/logo.png +0 -0
  527. /data/docs/assets/{cli.md.RmeA2b0i.lean.js → cli.md.CjsktgFz.lean.js} +0 -0
  528. /data/docs/assets/{configuration.md.BGHl8oRC.lean.js → configuration.md.DeyhpqEx.lean.js} +0 -0
  529. /data/docs/assets/{css.md.DJgj2clw.lean.js → css.md.CltvJqAa.lean.js} +0 -0
  530. /data/docs/assets/{custom-element-tests.md.BrYJQEl3.lean.js → custom-element-tests.md.B_rbta32.lean.js} +0 -0
  531. /data/docs/assets/{database-access.md.C7l-Vuvb.lean.js → database-access.md.gnluu54N.lean.js} +0 -0
  532. /data/docs/assets/{dev-environment.md.GZv6xvi9.lean.js → dev-environment.md.BroAOLhF.lean.js} +0 -0
@@ -108,7 +108,26 @@
108
108
  <div class="discussion">
109
109
  <p>An Input is a stateful object representing a specific input and its value
110
110
  during the course of a form submission process. In particular, it wraps a value
111
- and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">ValidityState</a></span>. These are mutable, whereas the wrapped <span class='object_link'><a href="InputDefinition.html" title="Brut::FrontEnd::Forms::InputDefinition (class)">InputDefinition</a></span> is not.</p>
111
+ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">ValidityState</a></span>. These are mutable, whereas
112
+ the wrapped <span class='object_link'><a href="InputDefinition.html" title="Brut::FrontEnd::Forms::InputDefinition (class)">InputDefinition</a></span> is not.</p>
113
+
114
+ <p>Of note, this class also initiates the server-execution of the
115
+ client-side validations. When a form is posted, and you ask the form
116
+ to validate itself, this class examines the value for the inputs
117
+ and determines if a client-side violation should've happened in the browser.</p>
118
+
119
+ <p>It does its best to mimic the browser's behavior, however there will be
120
+ some subtle differences.</p>
121
+
122
+ <p>An important considering is that everything is a string. The browser wants
123
+ strings and its internal API is string-based. So is this. That said,
124
+ this will convert strings into richer types in order to perform constraint
125
+ analysis.</p>
126
+
127
+ <p>Where possible, standard library classes are used, but in some cases -
128
+ colors and times - there is no standard library class.</p>
129
+
130
+ <p>See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::Input#typed_value (method)">#typed_value</a></span>.</p>
112
131
 
113
132
 
114
133
  </div>
@@ -116,13 +135,51 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
116
135
  <div class="tags">
117
136
 
118
137
 
119
- </div>
138
+ </div><h2>Defined Under Namespace</h2>
139
+ <p class="children">
140
+
141
+
142
+
143
+
144
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Input/Color.html" title="Brut::FrontEnd::Forms::Input::Color (class)">Color</a></span>, <span class='object_link'><a href="Input/TimeOfDay.html" title="Brut::FrontEnd::Forms::Input::TimeOfDay (class)">TimeOfDay</a></span>
145
+
146
+
147
+ </p>
148
+
120
149
 
121
150
 
122
151
 
123
152
  <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
124
153
  <ul class="summary">
125
154
 
155
+ <li class="public ">
156
+ <span class="summary_signature">
157
+
158
+ <a href="#typed_value-instance_method" title="#typed_value (instance method)">#<strong>typed_value</strong> &#x21d2; Date|Time|BigDecimal|String|true|false|nil </a>
159
+
160
+
161
+
162
+ </span>
163
+
164
+
165
+
166
+
167
+ <span class="note title readonly">readonly</span>
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+ <span class="summary_desc"><div class='inline'><p>The value of the input, as coerced to the type used to evaluate constraints.</p>
178
+ </div></span>
179
+
180
+ </li>
181
+
182
+
126
183
  <li class="public ">
127
184
  <span class="summary_signature">
128
185
 
@@ -193,6 +250,29 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
193
250
  <li class="public ">
194
251
  <span class="summary_signature">
195
252
 
253
+ <a href="#array%3F-instance_method" title="#array? (instance method)">#<strong>array?</strong> &#x21d2; String|nil </a>
254
+
255
+
256
+
257
+ </span>
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
268
+ </div></span>
269
+
270
+ </li>
271
+
272
+
273
+ <li class="public ">
274
+ <span class="summary_signature">
275
+
196
276
  <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(input_definition:, value:, index:) &#x21d2; Input </a>
197
277
 
198
278
 
@@ -212,6 +292,167 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
212
292
  <span class="summary_desc"><div class='inline'><p>Create the input with the given definition and value.</p>
213
293
  </div></span>
214
294
 
295
+ </li>
296
+
297
+
298
+ <li class="public ">
299
+ <span class="summary_signature">
300
+
301
+ <a href="#max-instance_method" title="#max (instance method)">#<strong>max</strong> &#x21d2; String|nil </a>
302
+
303
+
304
+
305
+ </span>
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
316
+ </div></span>
317
+
318
+ </li>
319
+
320
+
321
+ <li class="public ">
322
+ <span class="summary_signature">
323
+
324
+ <a href="#maxlength-instance_method" title="#maxlength (instance method)">#<strong>maxlength</strong> &#x21d2; String|nil </a>
325
+
326
+
327
+
328
+ </span>
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
339
+ </div></span>
340
+
341
+ </li>
342
+
343
+
344
+ <li class="public ">
345
+ <span class="summary_signature">
346
+
347
+ <a href="#min-instance_method" title="#min (instance method)">#<strong>min</strong> &#x21d2; String|nil </a>
348
+
349
+
350
+
351
+ </span>
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
362
+ </div></span>
363
+
364
+ </li>
365
+
366
+
367
+ <li class="public ">
368
+ <span class="summary_signature">
369
+
370
+ <a href="#minlength-instance_method" title="#minlength (instance method)">#<strong>minlength</strong> &#x21d2; String|nil </a>
371
+
372
+
373
+
374
+ </span>
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
385
+ </div></span>
386
+
387
+ </li>
388
+
389
+
390
+ <li class="public ">
391
+ <span class="summary_signature">
392
+
393
+ <a href="#name-instance_method" title="#name (instance method)">#<strong>name</strong> &#x21d2; String|nil </a>
394
+
395
+
396
+
397
+ </span>
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
408
+ </div></span>
409
+
410
+ </li>
411
+
412
+
413
+ <li class="public ">
414
+ <span class="summary_signature">
415
+
416
+ <a href="#pattern-instance_method" title="#pattern (instance method)">#<strong>pattern</strong> &#x21d2; String|nil </a>
417
+
418
+
419
+
420
+ </span>
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
431
+ </div></span>
432
+
433
+ </li>
434
+
435
+
436
+ <li class="public ">
437
+ <span class="summary_signature">
438
+
439
+ <a href="#required-instance_method" title="#required (instance method)">#<strong>required</strong> &#x21d2; String|nil </a>
440
+
441
+
442
+
443
+ </span>
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
454
+ </div></span>
455
+
215
456
  </li>
216
457
 
217
458
 
@@ -235,6 +476,52 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
235
476
  <span class="summary_desc"><div class='inline'><p>Set a server-side constraint violation on this input.</p>
236
477
  </div></span>
237
478
 
479
+ </li>
480
+
481
+
482
+ <li class="public ">
483
+ <span class="summary_signature">
484
+
485
+ <a href="#step-instance_method" title="#step (instance method)">#<strong>step</strong> &#x21d2; String|nil </a>
486
+
487
+
488
+
489
+ </span>
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
500
+ </div></span>
501
+
502
+ </li>
503
+
504
+
505
+ <li class="public ">
506
+ <span class="summary_signature">
507
+
508
+ <a href="#type-instance_method" title="#type (instance method)">#<strong>type</strong> &#x21d2; String|nil </a>
509
+
510
+
511
+
512
+ </span>
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+ <span class="summary_desc"><div class='inline'><p>The value from the <code>input_definition</code> given to the initializer.</p>
523
+ </div></span>
524
+
238
525
  </li>
239
526
 
240
527
 
@@ -319,15 +606,15 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
319
606
  <pre class="lines">
320
607
 
321
608
 
322
- 16
323
- 17
324
- 18
325
- 19
326
- 20
327
- 21</pre>
609
+ 58
610
+ 59
611
+ 60
612
+ 61
613
+ 62
614
+ 63</pre>
328
615
  </td>
329
616
  <td>
330
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 16</span>
617
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 58</span>
331
618
 
332
619
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>input_definition:</span><span class='comma'>,</span> <span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
333
620
  <span class='ivar'>@input_definition</span> <span class='op'>=</span> <span class='id identifier rubyid_input_definition'>input_definition</span>
@@ -348,9 +635,9 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
348
635
 
349
636
  <span id=""></span>
350
637
  <div class="method_details first">
351
- <h3 class="signature first" id="validity_state-instance_method">
638
+ <h3 class="signature first" id="typed_value-instance_method">
352
639
 
353
- #<strong>validity_state</strong> &#x21d2; <tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt> <span class="extras">(readonly)</span>
640
+ #<strong>typed_value</strong> &#x21d2; <tt>Date|Time|BigDecimal|String|true|false|nil</tt> <span class="extras">(readonly)</span>
354
641
 
355
642
 
356
643
 
@@ -358,7 +645,21 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
358
645
 
359
646
  </h3><div class="docstring">
360
647
  <div class="discussion">
361
- <p>Returns Validity state that captures the current constraint violations, if any.</p>
648
+ <p>The value of the input,
649
+ as coerced to the type used to evaluate constraints.
650
+ Returns <code>nil</code> if the value could not be coerced (which likely means
651
+ there is or will be a constraint violation), <strong>or</strong>
652
+ if it is a blank String.</p>
653
+
654
+ <p>Of note, <code>type=color</code> will return a String here, but that String
655
+ should be parseable into a hex code, i.e. #XXXXXX, where each "X"
656
+ is 0-9 or a-f. Further, <code>type=time</code> will also return a string
657
+ in the format HH:MM or HH:MM:SS, where the time is in 24 hour
658
+ time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
659
+ though the control allows the visitor to choose an invalid time.
660
+ If there is no <code>valueMissing</code> constraint violation, but this
661
+ attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::Input#value (method)">#value</a></span> <em>will</em> return the string sent by
662
+ the browser, even if it's not a real timestamp.</p>
362
663
 
363
664
 
364
665
  </div>
@@ -371,12 +672,26 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
371
672
  <li>
372
673
 
373
674
 
374
- <span class='type'>(<tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt>)</span>
675
+ <span class='type'>(<tt>Date|Time|BigDecimal|String|true|false|nil</tt>)</span>
375
676
 
376
677
 
377
678
 
378
679
  &mdash;
379
- <div class='inline'><p>Validity state that captures the current constraint violations, if any</p>
680
+ <div class='inline'><p>the value of the input,
681
+ as coerced to the type used to evaluate constraints.
682
+ Returns <code>nil</code> if the value could not be coerced (which likely means
683
+ there is or will be a constraint violation), <strong>or</strong>
684
+ if it is a blank String.</p>
685
+
686
+ <p>Of note, <code>type=color</code> will return a String here, but that String
687
+ should be parseable into a hex code, i.e. #XXXXXX, where each "X"
688
+ is 0-9 or a-f. Further, <code>type=time</code> will also return a string
689
+ in the format HH:MM or HH:MM:SS, where the time is in 24 hour
690
+ time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
691
+ though the control allows the visitor to choose an invalid time.
692
+ If there is no <code>valueMissing</code> constraint violation, but this
693
+ attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::Input#value (method)">#value</a></span> <em>will</em> return the string sent by
694
+ the browser, even if it's not a real timestamp.</p>
380
695
  </div>
381
696
 
382
697
  </li>
@@ -389,15 +704,15 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
389
704
  <pre class="lines">
390
705
 
391
706
 
392
- 11
393
- 12
394
- 13</pre>
707
+ 50
708
+ 51
709
+ 52</pre>
395
710
  </td>
396
711
  <td>
397
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 11</span>
712
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 50</span>
398
713
 
399
- <span class='kw'>def</span> <span class='id identifier rubyid_validity_state'>validity_state</span>
400
- <span class='ivar'>@validity_state</span>
714
+ <span class='kw'>def</span> <span class='id identifier rubyid_typed_value'>typed_value</span>
715
+ <span class='ivar'>@typed_value</span>
401
716
  <span class='kw'>end</span></pre>
402
717
  </td>
403
718
  </tr>
@@ -405,7 +720,66 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
405
720
  </div>
406
721
 
407
722
 
408
- <span id="value=-instance_method"></span>
723
+ <span id=""></span>
724
+ <div class="method_details ">
725
+ <h3 class="signature " id="validity_state-instance_method">
726
+
727
+ #<strong>validity_state</strong> &#x21d2; <tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt> <span class="extras">(readonly)</span>
728
+
729
+
730
+
731
+
732
+
733
+ </h3><div class="docstring">
734
+ <div class="discussion">
735
+ <p>Returns Validity state that captures the current constraint violations, if any.</p>
736
+
737
+
738
+ </div>
739
+ </div>
740
+ <div class="tags">
741
+
742
+ <p class="tag_title">Returns:</p>
743
+ <ul class="return">
744
+
745
+ <li>
746
+
747
+
748
+ <span class='type'>(<tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt>)</span>
749
+
750
+
751
+
752
+ &mdash;
753
+ <div class='inline'><p>Validity state that captures the current constraint violations, if any</p>
754
+ </div>
755
+
756
+ </li>
757
+
758
+ </ul>
759
+
760
+ </div><table class="source_code">
761
+ <tr>
762
+ <td>
763
+ <pre class="lines">
764
+
765
+
766
+ 53
767
+ 54
768
+ 55</pre>
769
+ </td>
770
+ <td>
771
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 53</span>
772
+
773
+ <span class='kw'>def</span> <span class='id identifier rubyid_validity_state'>validity_state</span>
774
+ <span class='ivar'>@validity_state</span>
775
+ <span class='kw'>end</span></pre>
776
+ </td>
777
+ </tr>
778
+ </table>
779
+ </div>
780
+
781
+
782
+ <span id="value=-instance_method"></span>
409
783
  <div class="method_details ">
410
784
  <h3 class="signature " id="value-instance_method">
411
785
 
@@ -417,7 +791,10 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
417
791
 
418
792
  </h3><div class="docstring">
419
793
  <div class="discussion">
420
- <p>Returns the input's value.</p>
794
+ <p>Returns the input's value. <strong>DO NOTE</strong> this returns a string. This is
795
+ because HTML stores these values as Strings. When using a checkbox, in
796
+ particular, the value will <em>not</em> be a boolean. You cannot do <code>if
797
+ input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::Input#typed_value (method)">#typed_value</a></span> instead.</p>
421
798
 
422
799
 
423
800
  </div>
@@ -435,7 +812,10 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
435
812
 
436
813
 
437
814
  &mdash;
438
- <div class='inline'><p>the input's value</p>
815
+ <div class='inline'><p>the input's value. <strong>DO NOTE</strong> this returns a string. This is
816
+ because HTML stores these values as Strings. When using a checkbox, in
817
+ particular, the value will <em>not</em> be a boolean. You cannot do <code>if
818
+ input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::Input#typed_value (method)">#typed_value</a></span> instead.</p>
439
819
  </div>
440
820
 
441
821
  </li>
@@ -448,12 +828,12 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
448
828
  <pre class="lines">
449
829
 
450
830
 
451
- 9
452
- 10
453
- 11</pre>
831
+ 33
832
+ 34
833
+ 35</pre>
454
834
  </td>
455
835
  <td>
456
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 9</span>
836
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 33</span>
457
837
 
458
838
  <span class='kw'>def</span> <span class='id identifier rubyid_value'>value</span>
459
839
  <span class='ivar'>@value</span>
@@ -471,7 +851,465 @@ and a <span class='object_link'><a href="ValidityState.html" title="Brut::FrontE
471
851
 
472
852
 
473
853
  <div class="method_details first">
474
- <h3 class="signature first" id="server_side_constraint_violation-instance_method">
854
+ <h3 class="signature first" id="array?-instance_method">
855
+
856
+ #<strong>array?</strong> &#x21d2; <tt>String|nil</tt>
857
+
858
+
859
+
860
+
861
+
862
+ </h3><div class="docstring">
863
+ <div class="discussion">
864
+ <p>Returns the value from the <code>input_definition</code> given to the
865
+ initializer.</p>
866
+
867
+
868
+ </div>
869
+ </div>
870
+ <div class="tags">
871
+
872
+ <p class="tag_title">Returns:</p>
873
+ <ul class="return">
874
+
875
+ <li>
876
+
877
+
878
+ <span class='type'>(<tt>String|nil</tt>)</span>
879
+
880
+
881
+
882
+ &mdash;
883
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
884
+ initializer</p>
885
+ </div>
886
+
887
+ </li>
888
+
889
+ </ul>
890
+
891
+ </div><table class="source_code">
892
+ <tr>
893
+ <td>
894
+ <pre class="lines">
895
+
896
+
897
+ 105
898
+ 106
899
+ 107
900
+ 108
901
+ 109
902
+ 110
903
+ 111
904
+ 112
905
+ 113
906
+ 114</pre>
907
+ </td>
908
+ <td>
909
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 105</span>
910
+
911
+ <span class='id identifier rubyid_def_delegators'>def_delegators</span> <span class='symbol'>:&quot;@input_definition&quot;</span><span class='comma'>,</span> <span class='symbol'>:max</span><span class='comma'>,</span>
912
+ <span class='symbol'>:maxlength</span><span class='comma'>,</span>
913
+ <span class='symbol'>:min</span><span class='comma'>,</span>
914
+ <span class='symbol'>:minlength</span><span class='comma'>,</span>
915
+ <span class='symbol'>:name</span><span class='comma'>,</span>
916
+ <span class='symbol'>:pattern</span><span class='comma'>,</span>
917
+ <span class='symbol'>:required</span><span class='comma'>,</span>
918
+ <span class='symbol'>:step</span><span class='comma'>,</span>
919
+ <span class='symbol'>:type</span><span class='comma'>,</span>
920
+ <span class='symbol'>:array?</span></pre>
921
+ </td>
922
+ </tr>
923
+ </table>
924
+ </div>
925
+
926
+ <div class="method_details ">
927
+ <h3 class="signature " id="max-instance_method">
928
+
929
+ #<strong>max</strong> &#x21d2; <tt>String|nil</tt>
930
+
931
+
932
+
933
+
934
+
935
+ </h3><div class="docstring">
936
+ <div class="discussion">
937
+ <p>Returns the value from the <code>input_definition</code> given to the
938
+ initializer.</p>
939
+
940
+
941
+ </div>
942
+ </div>
943
+ <div class="tags">
944
+
945
+ <p class="tag_title">Returns:</p>
946
+ <ul class="return">
947
+
948
+ <li>
949
+
950
+
951
+ <span class='type'>(<tt>String|nil</tt>)</span>
952
+
953
+
954
+
955
+ &mdash;
956
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
957
+ initializer</p>
958
+ </div>
959
+
960
+ </li>
961
+
962
+ </ul>
963
+
964
+ </div><table class="source_code">
965
+ <tr>
966
+ <td>
967
+ <pre class="lines">
968
+
969
+
970
+ </pre>
971
+ </td>
972
+ <td>
973
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 65</span>
974
+
975
+ </pre>
976
+ </td>
977
+ </tr>
978
+ </table>
979
+ </div>
980
+
981
+ <div class="method_details ">
982
+ <h3 class="signature " id="maxlength-instance_method">
983
+
984
+ #<strong>maxlength</strong> &#x21d2; <tt>String|nil</tt>
985
+
986
+
987
+
988
+
989
+
990
+ </h3><div class="docstring">
991
+ <div class="discussion">
992
+ <p>Returns the value from the <code>input_definition</code> given to the
993
+ initializer.</p>
994
+
995
+
996
+ </div>
997
+ </div>
998
+ <div class="tags">
999
+
1000
+ <p class="tag_title">Returns:</p>
1001
+ <ul class="return">
1002
+
1003
+ <li>
1004
+
1005
+
1006
+ <span class='type'>(<tt>String|nil</tt>)</span>
1007
+
1008
+
1009
+
1010
+ &mdash;
1011
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1012
+ initializer</p>
1013
+ </div>
1014
+
1015
+ </li>
1016
+
1017
+ </ul>
1018
+
1019
+ </div><table class="source_code">
1020
+ <tr>
1021
+ <td>
1022
+ <pre class="lines">
1023
+
1024
+
1025
+ </pre>
1026
+ </td>
1027
+ <td>
1028
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 69</span>
1029
+
1030
+ </pre>
1031
+ </td>
1032
+ </tr>
1033
+ </table>
1034
+ </div>
1035
+
1036
+ <div class="method_details ">
1037
+ <h3 class="signature " id="min-instance_method">
1038
+
1039
+ #<strong>min</strong> &#x21d2; <tt>String|nil</tt>
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+ </h3><div class="docstring">
1046
+ <div class="discussion">
1047
+ <p>Returns the value from the <code>input_definition</code> given to the
1048
+ initializer.</p>
1049
+
1050
+
1051
+ </div>
1052
+ </div>
1053
+ <div class="tags">
1054
+
1055
+ <p class="tag_title">Returns:</p>
1056
+ <ul class="return">
1057
+
1058
+ <li>
1059
+
1060
+
1061
+ <span class='type'>(<tt>String|nil</tt>)</span>
1062
+
1063
+
1064
+
1065
+ &mdash;
1066
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1067
+ initializer</p>
1068
+ </div>
1069
+
1070
+ </li>
1071
+
1072
+ </ul>
1073
+
1074
+ </div><table class="source_code">
1075
+ <tr>
1076
+ <td>
1077
+ <pre class="lines">
1078
+
1079
+
1080
+ </pre>
1081
+ </td>
1082
+ <td>
1083
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 73</span>
1084
+
1085
+ </pre>
1086
+ </td>
1087
+ </tr>
1088
+ </table>
1089
+ </div>
1090
+
1091
+ <div class="method_details ">
1092
+ <h3 class="signature " id="minlength-instance_method">
1093
+
1094
+ #<strong>minlength</strong> &#x21d2; <tt>String|nil</tt>
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+ </h3><div class="docstring">
1101
+ <div class="discussion">
1102
+ <p>Returns the value from the <code>input_definition</code> given to the
1103
+ initializer.</p>
1104
+
1105
+
1106
+ </div>
1107
+ </div>
1108
+ <div class="tags">
1109
+
1110
+ <p class="tag_title">Returns:</p>
1111
+ <ul class="return">
1112
+
1113
+ <li>
1114
+
1115
+
1116
+ <span class='type'>(<tt>String|nil</tt>)</span>
1117
+
1118
+
1119
+
1120
+ &mdash;
1121
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1122
+ initializer</p>
1123
+ </div>
1124
+
1125
+ </li>
1126
+
1127
+ </ul>
1128
+
1129
+ </div><table class="source_code">
1130
+ <tr>
1131
+ <td>
1132
+ <pre class="lines">
1133
+
1134
+
1135
+ </pre>
1136
+ </td>
1137
+ <td>
1138
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 77</span>
1139
+
1140
+ </pre>
1141
+ </td>
1142
+ </tr>
1143
+ </table>
1144
+ </div>
1145
+
1146
+ <div class="method_details ">
1147
+ <h3 class="signature " id="name-instance_method">
1148
+
1149
+ #<strong>name</strong> &#x21d2; <tt>String|nil</tt>
1150
+
1151
+
1152
+
1153
+
1154
+
1155
+ </h3><div class="docstring">
1156
+ <div class="discussion">
1157
+ <p>Returns the value from the <code>input_definition</code> given to the
1158
+ initializer.</p>
1159
+
1160
+
1161
+ </div>
1162
+ </div>
1163
+ <div class="tags">
1164
+
1165
+ <p class="tag_title">Returns:</p>
1166
+ <ul class="return">
1167
+
1168
+ <li>
1169
+
1170
+
1171
+ <span class='type'>(<tt>String|nil</tt>)</span>
1172
+
1173
+
1174
+
1175
+ &mdash;
1176
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1177
+ initializer</p>
1178
+ </div>
1179
+
1180
+ </li>
1181
+
1182
+ </ul>
1183
+
1184
+ </div><table class="source_code">
1185
+ <tr>
1186
+ <td>
1187
+ <pre class="lines">
1188
+
1189
+
1190
+ </pre>
1191
+ </td>
1192
+ <td>
1193
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 81</span>
1194
+
1195
+ </pre>
1196
+ </td>
1197
+ </tr>
1198
+ </table>
1199
+ </div>
1200
+
1201
+ <div class="method_details ">
1202
+ <h3 class="signature " id="pattern-instance_method">
1203
+
1204
+ #<strong>pattern</strong> &#x21d2; <tt>String|nil</tt>
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+ </h3><div class="docstring">
1211
+ <div class="discussion">
1212
+ <p>Returns the value from the <code>input_definition</code> given to the
1213
+ initializer.</p>
1214
+
1215
+
1216
+ </div>
1217
+ </div>
1218
+ <div class="tags">
1219
+
1220
+ <p class="tag_title">Returns:</p>
1221
+ <ul class="return">
1222
+
1223
+ <li>
1224
+
1225
+
1226
+ <span class='type'>(<tt>String|nil</tt>)</span>
1227
+
1228
+
1229
+
1230
+ &mdash;
1231
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1232
+ initializer</p>
1233
+ </div>
1234
+
1235
+ </li>
1236
+
1237
+ </ul>
1238
+
1239
+ </div><table class="source_code">
1240
+ <tr>
1241
+ <td>
1242
+ <pre class="lines">
1243
+
1244
+
1245
+ </pre>
1246
+ </td>
1247
+ <td>
1248
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 85</span>
1249
+
1250
+ </pre>
1251
+ </td>
1252
+ </tr>
1253
+ </table>
1254
+ </div>
1255
+
1256
+ <div class="method_details ">
1257
+ <h3 class="signature " id="required-instance_method">
1258
+
1259
+ #<strong>required</strong> &#x21d2; <tt>String|nil</tt>
1260
+
1261
+
1262
+
1263
+
1264
+
1265
+ </h3><div class="docstring">
1266
+ <div class="discussion">
1267
+ <p>Returns the value from the <code>input_definition</code> given to the
1268
+ initializer.</p>
1269
+
1270
+
1271
+ </div>
1272
+ </div>
1273
+ <div class="tags">
1274
+
1275
+ <p class="tag_title">Returns:</p>
1276
+ <ul class="return">
1277
+
1278
+ <li>
1279
+
1280
+
1281
+ <span class='type'>(<tt>String|nil</tt>)</span>
1282
+
1283
+
1284
+
1285
+ &mdash;
1286
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1287
+ initializer</p>
1288
+ </div>
1289
+
1290
+ </li>
1291
+
1292
+ </ul>
1293
+
1294
+ </div><table class="source_code">
1295
+ <tr>
1296
+ <td>
1297
+ <pre class="lines">
1298
+
1299
+
1300
+ </pre>
1301
+ </td>
1302
+ <td>
1303
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 89</span>
1304
+
1305
+ </pre>
1306
+ </td>
1307
+ </tr>
1308
+ </table>
1309
+ </div>
1310
+
1311
+ <div class="method_details ">
1312
+ <h3 class="signature " id="server_side_constraint_violation-instance_method">
475
1313
 
476
1314
  #<strong>server_side_constraint_violation</strong>(key, context = true) &#x21d2; <tt>Object</tt>
477
1315
 
@@ -532,12 +1370,12 @@ that <code>key</code> should not be a key used for client-side validations.</p>
532
1370
  <pre class="lines">
533
1371
 
534
1372
 
535
- 102
536
- 103
537
- 104</pre>
1373
+ 265
1374
+ 266
1375
+ 267</pre>
538
1376
  </td>
539
1377
  <td>
540
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 102</span>
1378
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 265</span>
541
1379
 
542
1380
  <span class='kw'>def</span> <span class='id identifier rubyid_server_side_constraint_violation'>server_side_constraint_violation</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_context'>context</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
543
1381
  <span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_server_side_constraint_violation'>server_side_constraint_violation</span><span class='lparen'>(</span><span class='label'>key:</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
@@ -545,6 +1383,116 @@ that <code>key</code> should not be a key used for client-side validations.</p>
545
1383
  </td>
546
1384
  </tr>
547
1385
  </table>
1386
+ </div>
1387
+
1388
+ <div class="method_details ">
1389
+ <h3 class="signature " id="step-instance_method">
1390
+
1391
+ #<strong>step</strong> &#x21d2; <tt>String|nil</tt>
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+ </h3><div class="docstring">
1398
+ <div class="discussion">
1399
+ <p>Returns the value from the <code>input_definition</code> given to the
1400
+ initializer.</p>
1401
+
1402
+
1403
+ </div>
1404
+ </div>
1405
+ <div class="tags">
1406
+
1407
+ <p class="tag_title">Returns:</p>
1408
+ <ul class="return">
1409
+
1410
+ <li>
1411
+
1412
+
1413
+ <span class='type'>(<tt>String|nil</tt>)</span>
1414
+
1415
+
1416
+
1417
+ &mdash;
1418
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1419
+ initializer</p>
1420
+ </div>
1421
+
1422
+ </li>
1423
+
1424
+ </ul>
1425
+
1426
+ </div><table class="source_code">
1427
+ <tr>
1428
+ <td>
1429
+ <pre class="lines">
1430
+
1431
+
1432
+ </pre>
1433
+ </td>
1434
+ <td>
1435
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 93</span>
1436
+
1437
+ </pre>
1438
+ </td>
1439
+ </tr>
1440
+ </table>
1441
+ </div>
1442
+
1443
+ <div class="method_details ">
1444
+ <h3 class="signature " id="type-instance_method">
1445
+
1446
+ #<strong>type</strong> &#x21d2; <tt>String|nil</tt>
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+ </h3><div class="docstring">
1453
+ <div class="discussion">
1454
+ <p>Returns the value from the <code>input_definition</code> given to the
1455
+ initializer.</p>
1456
+
1457
+
1458
+ </div>
1459
+ </div>
1460
+ <div class="tags">
1461
+
1462
+ <p class="tag_title">Returns:</p>
1463
+ <ul class="return">
1464
+
1465
+ <li>
1466
+
1467
+
1468
+ <span class='type'>(<tt>String|nil</tt>)</span>
1469
+
1470
+
1471
+
1472
+ &mdash;
1473
+ <div class='inline'><p>the value from the <code>input_definition</code> given to the
1474
+ initializer</p>
1475
+ </div>
1476
+
1477
+ </li>
1478
+
1479
+ </ul>
1480
+
1481
+ </div><table class="source_code">
1482
+ <tr>
1483
+ <td>
1484
+ <pre class="lines">
1485
+
1486
+
1487
+ </pre>
1488
+ </td>
1489
+ <td>
1490
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 97</span>
1491
+
1492
+ </pre>
1493
+ </td>
1494
+ </tr>
1495
+ </table>
548
1496
  </div>
549
1497
 
550
1498
  <div class="method_details ">
@@ -589,10 +1537,10 @@ that <code>key</code> should not be a key used for client-side validations.</p>
589
1537
  <pre class="lines">
590
1538
 
591
1539
 
592
- 107</pre>
1540
+ 270</pre>
593
1541
  </td>
594
1542
  <td>
595
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 107</span>
1543
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input.rb', line 270</span>
596
1544
 
597
1545
  <span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span></pre>
598
1546
  </td>
@@ -605,7 +1553,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
605
1553
  </div>
606
1554
 
607
1555
  <div id="footer">
608
- Generated on Wed Jul 2 21:45:27 2025 by
1556
+ Generated on Tue Jul 8 01:36:10 2025 by
609
1557
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
610
1558
  0.9.37 (ruby-3.4.4).
611
1559
  </div>