brut 0.1.0 → 0.2.1

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 (376) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/Gemfile.lock +1 -1
  4. data/brutrb.com/.vitepress/config.mjs +4 -2
  5. data/brutrb.com/.vitepress/theme/style.css +16 -38
  6. data/brutrb.com/adrs.md +15 -0
  7. data/brutrb.com/dev-environment.md +6 -1
  8. data/brutrb.com/doc-conventions.md +1 -2
  9. data/brutrb.com/images/DevEnvironment.graffle +0 -0
  10. data/brutrb.com/images/DevEnvironment.png +0 -0
  11. data/brutrb.com/index.md +0 -3
  12. data/brutrb.com/overview.md +2 -2
  13. data/brutrb.com/roadmap.md +57 -0
  14. data/brutrb.com/tutorial.md +5 -1
  15. data/docs/404.html +4 -4
  16. data/docs/{not-released.html → adrs.html} +8 -8
  17. data/docs/ai.html +6 -6
  18. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  19. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  20. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  21. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  22. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  23. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  24. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  25. data/docs/api/Brut/BackEnd.html +1 -1
  26. data/docs/api/Brut/CLI/App.html +1 -1
  27. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  28. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
  29. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
  30. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  31. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
  32. data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
  33. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  34. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  35. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  36. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
  37. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  38. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
  40. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  42. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  43. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +3 -3
  48. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  50. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  52. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
  53. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
  54. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  55. data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  57. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  58. data/docs/api/Brut/CLI/Apps/Test/JS.html +6 -6
  59. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  60. data/docs/api/Brut/CLI/Apps/Test.html +2 -2
  61. data/docs/api/Brut/CLI/Apps.html +1 -1
  62. data/docs/api/Brut/CLI/Command.html +3 -3
  63. data/docs/api/Brut/CLI/Error.html +1 -1
  64. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  65. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  66. data/docs/api/Brut/CLI/Executor.html +1 -1
  67. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  68. data/docs/api/Brut/CLI/Options.html +1 -1
  69. data/docs/api/Brut/CLI/Output.html +1 -1
  70. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  71. data/docs/api/Brut/CLI.html +1 -1
  72. data/docs/api/Brut/FactoryBot.html +1 -1
  73. data/docs/api/Brut/Framework/App.html +1 -1
  74. data/docs/api/Brut/Framework/Config.html +1 -1
  75. data/docs/api/Brut/Framework/Container.html +1 -1
  76. data/docs/api/Brut/Framework/Error.html +1 -1
  77. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  78. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  79. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  80. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  81. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  82. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  83. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  84. data/docs/api/Brut/Framework/Errors.html +1 -1
  85. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  86. data/docs/api/Brut/Framework/MCP.html +1 -1
  87. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  88. data/docs/api/Brut/Framework.html +1 -1
  89. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  90. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  91. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  92. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
  93. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  94. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
  95. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  96. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  97. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
  98. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  99. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +3 -3
  100. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  102. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  104. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  105. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  106. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  107. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Form.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  111. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  112. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  113. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  114. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  116. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  117. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  122. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  123. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  125. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  131. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  132. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  133. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  134. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  135. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  136. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  137. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  138. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  140. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  142. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  143. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +2 -2
  144. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  145. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  146. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  147. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  148. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  149. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  150. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  151. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  152. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  153. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  154. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  155. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  156. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  157. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  158. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  159. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  161. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  164. data/docs/api/Brut/FrontEnd.html +1 -1
  165. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  166. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  167. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  168. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  169. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  170. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  171. data/docs/api/Brut/I18n.html +1 -1
  172. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  173. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  174. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  175. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  176. data/docs/api/Brut/Instrumentation.html +1 -1
  177. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  178. data/docs/api/Brut/SinatraHelpers.html +1 -1
  179. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  180. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  181. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  182. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  183. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  184. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  185. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  186. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  187. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  188. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  189. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  190. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  191. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  192. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  193. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  194. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  195. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  196. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  200. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  201. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  202. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  203. data/docs/api/Brut/SpecSupport.html +1 -1
  204. data/docs/api/Brut.html +1 -1
  205. data/docs/api/Clock.html +1 -1
  206. data/docs/api/RichString.html +150 -343
  207. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  208. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  209. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  210. data/docs/api/Sequel/Extensions.html +1 -1
  211. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  212. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  213. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  214. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  215. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  216. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  217. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  218. data/docs/api/Sequel/Plugins.html +1 -1
  219. data/docs/api/Sequel.html +1 -1
  220. data/docs/api/_index.html +5 -5
  221. data/docs/api/class_list.html +1 -1
  222. data/docs/api/file.README.html +1 -1
  223. data/docs/api/index.html +1 -1
  224. data/docs/api/method_list.html +281 -313
  225. data/docs/api/top-level-namespace.html +1 -1
  226. data/docs/assets/DevEnvironment.DaFcVfwP.png +0 -0
  227. data/docs/assets/adrs.md.JRxZ5uYE.js +1 -0
  228. data/docs/assets/adrs.md.JRxZ5uYE.lean.js +1 -0
  229. data/docs/assets/{app.ClaS47Ru.js → app.Dm3x-DQc.js} +1 -1
  230. data/docs/assets/chunks/@localSearchIndexroot.BqRrkR00.js +1 -0
  231. data/docs/assets/chunks/{VPLocalSearchBox.DtgDfde2.js → VPLocalSearchBox.DL6bnqee.js} +1 -1
  232. data/docs/assets/chunks/{theme.B45bvibT.js → theme.BXdlf6e8.js} +2 -2
  233. data/docs/assets/{components.md.DatoNgFo.js → components.md.Pg_Lo35G.js} +3 -3
  234. data/docs/assets/{configuration.md.DeyhpqEx.js → configuration.md.BfeGnEci.js} +1 -1
  235. data/docs/assets/dev-environment.md.Dy6EldaM.js +16 -0
  236. data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +1 -0
  237. data/docs/assets/doc-conventions.md.DOkAuXlt.js +1 -0
  238. data/docs/assets/{forms.md.C2Dizvzq.js → forms.md.BQZlCwvi.js} +1 -1
  239. data/docs/assets/{getting-started.md.C93e0odB.js → getting-started.md.BcXnNuD6.js} +2 -2
  240. data/docs/assets/index.md.Bn9e0sRJ.js +1 -0
  241. data/docs/assets/index.md.Bn9e0sRJ.lean.js +1 -0
  242. data/docs/assets/{overview.md.Bdq4qt3L.js → overview.md.iMnwLO4x.js} +1 -1
  243. data/docs/assets/roadmap.md.C6PRi0DX.js +1 -0
  244. data/docs/assets/roadmap.md.C6PRi0DX.lean.js +1 -0
  245. data/docs/assets/{style.prAgp4yQ.css → style.B1z60PPQ.css} +1 -1
  246. data/docs/assets/tutorial.md.BYXj4cOu.js +1 -0
  247. data/docs/assets/tutorial.md.BYXj4cOu.lean.js +1 -0
  248. data/docs/assets.html +6 -6
  249. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  250. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  251. data/docs/brut-js/api/Autosubmit.html +1 -1
  252. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  253. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  254. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  255. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  256. data/docs/brut-js/api/BufferedLogger.html +1 -1
  257. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  258. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  259. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  260. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  261. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  262. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  263. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  264. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  265. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  266. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  267. data/docs/brut-js/api/Form.html +1 -1
  268. data/docs/brut-js/api/Form.js.html +1 -1
  269. data/docs/brut-js/api/I18nTranslation.html +1 -1
  270. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  271. data/docs/brut-js/api/LocaleDetection.html +1 -1
  272. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  273. data/docs/brut-js/api/Logger.html +1 -1
  274. data/docs/brut-js/api/Logger.js.html +1 -1
  275. data/docs/brut-js/api/Message.html +1 -1
  276. data/docs/brut-js/api/Message.js.html +1 -1
  277. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  278. data/docs/brut-js/api/RichString.html +1 -1
  279. data/docs/brut-js/api/RichString.js.html +1 -1
  280. data/docs/brut-js/api/Tabs.html +1 -1
  281. data/docs/brut-js/api/Tabs.js.html +1 -1
  282. data/docs/brut-js/api/Tracing.html +1 -1
  283. data/docs/brut-js/api/Tracing.js.html +1 -1
  284. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  285. data/docs/brut-js/api/external-Performance.html +1 -1
  286. data/docs/brut-js/api/external-Promise.html +1 -1
  287. data/docs/brut-js/api/external-ValidityState.html +1 -1
  288. data/docs/brut-js/api/external-Window.html +1 -1
  289. data/docs/brut-js/api/external-fetch.html +1 -1
  290. data/docs/brut-js/api/global.html +1 -1
  291. data/docs/brut-js/api/index.html +1 -1
  292. data/docs/brut-js/api/index.js.html +1 -1
  293. data/docs/brut-js/api/module-testing.html +1 -1
  294. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  295. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  296. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  297. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  298. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  299. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  300. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  301. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  302. data/docs/brut-js/api/testing_index.js.html +1 -1
  303. data/docs/brut-js.html +6 -6
  304. data/docs/business-logic.html +6 -6
  305. data/docs/cli.html +6 -6
  306. data/docs/components.html +10 -10
  307. data/docs/configuration.html +7 -7
  308. data/docs/css.html +6 -6
  309. data/docs/custom-element-tests.html +6 -6
  310. data/docs/database-access.html +6 -6
  311. data/docs/database-schema.html +6 -6
  312. data/docs/deployment.html +6 -6
  313. data/docs/dev-environment.html +12 -7
  314. data/docs/dir-structure.html +6 -6
  315. data/docs/doc-conventions.html +7 -7
  316. data/docs/end-to-end-tests.html +6 -6
  317. data/docs/features.html +6 -6
  318. data/docs/flash-and-session.html +6 -6
  319. data/docs/form-constraints.html +6 -6
  320. data/docs/forms.html +8 -8
  321. data/docs/getting-started.html +9 -9
  322. data/docs/handlers.html +6 -6
  323. data/docs/hashmap.json +1 -1
  324. data/docs/hooks.html +6 -6
  325. data/docs/i18n.html +6 -6
  326. data/docs/index.html +7 -7
  327. data/docs/instrumentation.html +6 -6
  328. data/docs/javascript.html +6 -6
  329. data/docs/jobs.html +6 -6
  330. data/docs/keyword-injection.html +6 -6
  331. data/docs/layouts.html +6 -6
  332. data/docs/lsp.html +6 -6
  333. data/docs/markdown-examples.html +6 -6
  334. data/docs/middleware.html +6 -6
  335. data/docs/overview.html +7 -7
  336. data/docs/pages.html +6 -6
  337. data/docs/recipes/alternate-layouts.html +6 -6
  338. data/docs/recipes/authentication.html +6 -6
  339. data/docs/recipes/blank-layouts.html +6 -6
  340. data/docs/recipes/custom-flash.html +6 -6
  341. data/docs/recipes/indexed-forms.html +6 -6
  342. data/docs/recipes/text-field-component.html +6 -6
  343. data/docs/roadmap.html +29 -0
  344. data/docs/routes.html +6 -6
  345. data/docs/security.html +6 -6
  346. data/docs/seed-data.html +6 -6
  347. data/docs/space-time-continuum.html +6 -6
  348. data/docs/tutorial.html +7 -7
  349. data/docs/unit-tests.html +6 -6
  350. data/docs/why.html +6 -6
  351. data/lib/brut/cli/apps/test.rb +1 -1
  352. data/lib/brut/front_end/components/inputs/select_tag_with_options.rb +2 -2
  353. data/lib/brut/junk_drawer.rb +48 -9
  354. data/lib/brut/version.rb +1 -1
  355. data/specs/brut/junk_drawer.spec.rb +75 -0
  356. metadata +37 -31
  357. data/brutrb.com/images/logo-300.png +0 -0
  358. data/brutrb.com/images/logo.png +0 -0
  359. data/brutrb.com/not-released.md +0 -5
  360. data/docs/assets/chunks/@localSearchIndexroot.Biqy1A4t.js +0 -1
  361. data/docs/assets/dev-env-overview.Gj7NWM8-.png +0 -0
  362. data/docs/assets/dev-environment.md.BroAOLhF.js +0 -11
  363. data/docs/assets/dev-environment.md.BroAOLhF.lean.js +0 -1
  364. data/docs/assets/doc-conventions.md.BzmSrTEW.js +0 -1
  365. data/docs/assets/index.md.CAMqGBJE.js +0 -1
  366. data/docs/assets/index.md.CAMqGBJE.lean.js +0 -1
  367. data/docs/assets/not-released.md.BBy28McC.js +0 -1
  368. data/docs/assets/not-released.md.BBy28McC.lean.js +0 -1
  369. data/docs/assets/tutorial.md.a4a0eVOy.js +0 -1
  370. data/docs/assets/tutorial.md.a4a0eVOy.lean.js +0 -1
  371. /data/docs/assets/{components.md.DatoNgFo.lean.js → components.md.Pg_Lo35G.lean.js} +0 -0
  372. /data/docs/assets/{configuration.md.DeyhpqEx.lean.js → configuration.md.BfeGnEci.lean.js} +0 -0
  373. /data/docs/assets/{doc-conventions.md.BzmSrTEW.lean.js → doc-conventions.md.DOkAuXlt.lean.js} +0 -0
  374. /data/docs/assets/{forms.md.C2Dizvzq.lean.js → forms.md.BQZlCwvi.lean.js} +0 -0
  375. /data/docs/assets/{getting-started.md.C93e0odB.lean.js → getting-started.md.BcXnNuD6.lean.js} +0 -0
  376. /data/docs/assets/{overview.md.Bdq4qt3L.lean.js → overview.md.iMnwLO4x.lean.js} +0 -0
@@ -103,6 +103,8 @@
103
103
  <div class="discussion">
104
104
  <p>A wrapper around a string to avoid adding a ton of methods to <code>String</code>.</p>
105
105
 
106
+ <p>This may not survive to 1.0 - use at your own risk.</p>
107
+
106
108
 
107
109
  </div>
108
110
  </div>
@@ -127,7 +129,7 @@
127
129
  <li class="public ">
128
130
  <span class="summary_signature">
129
131
 
130
- <a href="#from_string-class_method" title="from_string (class method)">.<strong>from_string</strong>(string, blank_is_nil: true) &#x21d2; Object </a>
132
+ <a href="#from_string-class_method" title="from_string (class method)">.<strong>from_string</strong>(string, blank_is_nil: true) &#x21d2; RichString|nil </a>
131
133
 
132
134
 
133
135
 
@@ -141,7 +143,7 @@
141
143
 
142
144
 
143
145
 
144
- <span class="summary_desc"><div class='inline'>
146
+ <span class="summary_desc"><div class='inline'><p>Create a RichString, return <code>nil</code> instead for blank strings or nil.</p>
145
147
  </div></span>
146
148
 
147
149
  </li>
@@ -219,75 +221,6 @@
219
221
 
220
222
 
221
223
 
222
- <span class="summary_desc"><div class='inline'>
223
- </div></span>
224
-
225
- </li>
226
-
227
-
228
- <li class="public ">
229
- <span class="summary_signature">
230
-
231
- <a href="#camelize-instance_method" title="#camelize (instance method)">#<strong>camelize</strong> &#x21d2; Object </a>
232
-
233
-
234
-
235
- </span>
236
-
237
-
238
-
239
-
240
-
241
-
242
-
243
-
244
-
245
- <span class="summary_desc"><div class='inline'>
246
- </div></span>
247
-
248
- </li>
249
-
250
-
251
- <li class="public ">
252
- <span class="summary_signature">
253
-
254
- <a href="#capitalize-instance_method" title="#capitalize (instance method)">#<strong>capitalize</strong>(*options) &#x21d2; RichString </a>
255
-
256
-
257
-
258
- </span>
259
-
260
-
261
-
262
-
263
-
264
-
265
-
266
-
267
-
268
- <span class="summary_desc"><div class='inline'><p>Capitalizes the string, with the ability to only capitalize the first letter.</p>
269
- </div></span>
270
-
271
- </li>
272
-
273
-
274
- <li class="public ">
275
- <span class="summary_signature">
276
-
277
- <a href="#humanized-instance_method" title="#humanized (instance method)">#<strong>humanized</strong> &#x21d2; Object </a>
278
-
279
-
280
-
281
- </span>
282
-
283
-
284
-
285
-
286
-
287
-
288
-
289
-
290
-
291
224
  <span class="summary_desc"><div class='inline'>
292
225
  </div></span>
293
226
 
@@ -313,7 +246,7 @@
313
246
 
314
247
 
315
248
 
316
- <span class="summary_desc"><div class='inline'><p>A new instance of RichString.</p>
249
+ <span class="summary_desc"><div class='inline'><p>Create a RichString.</p>
317
250
  </div></span>
318
251
 
319
252
  </li>
@@ -405,29 +338,6 @@
405
338
 
406
339
 
407
340
 
408
- <span class="summary_desc"><div class='inline'>
409
- </div></span>
410
-
411
- </li>
412
-
413
-
414
- <li class="public ">
415
- <span class="summary_signature">
416
-
417
- <a href="#underscorized-instance_method" title="#underscorized (instance method)">#<strong>underscorized</strong> &#x21d2; Object </a>
418
-
419
-
420
-
421
- </span>
422
-
423
-
424
-
425
-
426
-
427
-
428
-
429
-
430
-
431
341
  <span class="summary_desc"><div class='inline'>
432
342
  </div></span>
433
343
 
@@ -451,13 +361,33 @@
451
361
 
452
362
  </h3><div class="docstring">
453
363
  <div class="discussion">
454
- <p>Returns a new instance of RichString.</p>
364
+ <p>Create a RichString. This calls <code>to_s</code> on its argument.</p>
455
365
 
456
366
 
457
367
  </div>
458
368
  </div>
459
369
  <div class="tags">
370
+ <p class="tag_title">Parameters:</p>
371
+ <ul class="param">
372
+
373
+ <li>
374
+
375
+ <span class='name'>string</span>
376
+
377
+
378
+ <span class='type'>(<tt>String|Object</tt>)</span>
379
+
380
+
381
+
382
+ &mdash;
383
+ <div class='inline'><p>the string to wrap. <code>to_s</code> is called, so be sure
384
+ that's what you want.</p>
385
+ </div>
386
+
387
+ </li>
460
388
 
389
+ </ul>
390
+
461
391
 
462
392
  </div><table class="source_code">
463
393
  <tr>
@@ -465,12 +395,12 @@
465
395
  <pre class="lines">
466
396
 
467
397
 
468
- 61
469
- 62
470
- 63</pre>
398
+ 77
399
+ 78
400
+ 79</pre>
471
401
  </td>
472
402
  <td>
473
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 61</span>
403
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 77</span>
474
404
 
475
405
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_string'>string</span><span class='rparen'>)</span>
476
406
  <span class='ivar'>@string</span> <span class='op'>=</span> <span class='id identifier rubyid_string'>string</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
@@ -490,29 +420,100 @@
490
420
  <div class="method_details first">
491
421
  <h3 class="signature first" id="from_string-class_method">
492
422
 
493
- .<strong>from_string</strong>(string, blank_is_nil: true) &#x21d2; <tt>Object</tt>
423
+ .<strong>from_string</strong>(string, blank_is_nil: true) &#x21d2; <tt><span class='object_link'><a href="" title="RichString (class)">RichString</a></span>|nil</tt>
494
424
 
495
425
 
496
426
 
497
427
 
498
428
 
499
- </h3><table class="source_code">
429
+ </h3><div class="docstring">
430
+ <div class="discussion">
431
+ <p>Create a RichString, return <code>nil</code> instead for blank strings or nil</p>
432
+
433
+
434
+ </div>
435
+ </div>
436
+ <div class="tags">
437
+ <p class="tag_title">Parameters:</p>
438
+ <ul class="param">
439
+
440
+ <li>
441
+
442
+ <span class='name'>string</span>
443
+
444
+
445
+ <span class='type'>(<tt>String|nil</tt>)</span>
446
+
447
+
448
+
449
+ &mdash;
450
+ <div class='inline'><p>the string to convert.</p>
451
+ </div>
452
+
453
+ </li>
454
+
455
+ <li>
456
+
457
+ <span class='name'>blank_is_nil</span>
458
+
459
+
460
+ <span class='type'>(<tt>true|false</tt>)</span>
461
+
462
+
463
+ <em class="default">(defaults to: <tt>true</tt>)</em>
464
+
465
+
466
+ &mdash;
467
+ <div class='inline'><p>if true, a blank string or nil is considered
468
+ nil and nil is returned.</p>
469
+ </div>
470
+
471
+ </li>
472
+
473
+ </ul>
474
+
475
+ <p class="tag_title">Returns:</p>
476
+ <ul class="return">
477
+
478
+ <li>
479
+
480
+
481
+ <span class='type'>(<tt><span class='object_link'><a href="" title="RichString (class)">RichString</a></span>|nil</tt>)</span>
482
+
483
+
484
+
485
+ &mdash;
486
+ <div class='inline'><p>a RichString containing the string or nil if the
487
+ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
488
+ </div>
489
+
490
+ </li>
491
+
492
+ </ul>
493
+
494
+ </div><table class="source_code">
500
495
  <tr>
501
496
  <td>
502
497
  <pre class="lines">
503
498
 
504
499
 
505
- 55
506
- 56
507
- 57
508
- 58
509
- 59
510
- 60</pre>
500
+ 63
501
+ 64
502
+ 65
503
+ 66
504
+ 67
505
+ 68
506
+ 69
507
+ 70
508
+ 71</pre>
511
509
  </td>
512
510
  <td>
513
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 55</span>
511
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 63</span>
514
512
 
515
513
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_from_string'>from_string</span><span class='lparen'>(</span><span class='id identifier rubyid_string'>string</span><span class='comma'>,</span><span class='label'>blank_is_nil:</span><span class='kw'>true</span><span class='rparen'>)</span>
514
+ <span class='kw'>if</span> <span class='id identifier rubyid_string'>string</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
515
+ <span class='kw'>return</span> <span class='kw'>nil</span>
516
+ <span class='kw'>end</span>
516
517
  <span class='kw'>if</span> <span class='id identifier rubyid_string'>string</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_blank_is_nil'>blank_is_nil</span>
517
518
  <span class='kw'>return</span> <span class='kw'>nil</span>
518
519
  <span class='kw'>end</span>
@@ -544,18 +545,18 @@
544
545
  <pre class="lines">
545
546
 
546
547
 
547
- 127
548
- 128
549
- 129
550
- 130
551
- 131
552
- 132
553
- 133
554
- 134
555
- 135</pre>
548
+ 166
549
+ 167
550
+ 168
551
+ 169
552
+ 170
553
+ 171
554
+ 172
555
+ 173
556
+ 174</pre>
556
557
  </td>
557
558
  <td>
558
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 127</span>
559
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 166</span>
559
560
 
560
561
  <span class='kw'>def</span> <span class='op'>+</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
561
562
  <span class='kw'>if</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></span><span class='rparen'>)</span>
@@ -586,18 +587,18 @@
586
587
  <pre class="lines">
587
588
 
588
589
 
589
- 117
590
- 118
591
- 119
592
- 120
593
- 121
594
- 122
595
- 123
596
- 124
597
- 125</pre>
590
+ 156
591
+ 157
592
+ 158
593
+ 159
594
+ 160
595
+ 161
596
+ 162
597
+ 163
598
+ 164</pre>
598
599
  </td>
599
600
  <td>
600
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 117</span>
601
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 156</span>
601
602
 
602
603
  <span class='kw'>def</span> <span class='op'>&lt;=&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
603
604
  <span class='kw'>if</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></span><span class='rparen'>)</span>
@@ -628,18 +629,18 @@
628
629
  <pre class="lines">
629
630
 
630
631
 
631
- 107
632
- 108
633
- 109
634
- 110
635
- 111
636
- 112
637
- 113
638
- 114
639
- 115</pre>
632
+ 146
633
+ 147
634
+ 148
635
+ 149
636
+ 150
637
+ 151
638
+ 152
639
+ 153
640
+ 154</pre>
640
641
  </td>
641
642
  <td>
642
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 107</span>
643
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 146</span>
643
644
 
644
645
  <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
645
646
  <span class='kw'>if</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></span><span class='rparen'>)</span>
@@ -653,160 +654,6 @@
653
654
  </td>
654
655
  </tr>
655
656
  </table>
656
- </div>
657
-
658
- <div class="method_details ">
659
- <h3 class="signature " id="camelize-instance_method">
660
-
661
- #<strong>camelize</strong> &#x21d2; <tt>Object</tt>
662
-
663
-
664
-
665
-
666
-
667
- </h3><table class="source_code">
668
- <tr>
669
- <td>
670
- <pre class="lines">
671
-
672
-
673
- 74
674
- 75
675
- 76
676
- 77
677
- 78</pre>
678
- </td>
679
- <td>
680
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 74</span>
681
-
682
- <span class='kw'>def</span> <span class='id identifier rubyid_camelize'>camelize</span>
683
- <span class='ivar'>@string</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[_-]</span><span class='regexp_end'>/</span></span><span class='rparen'>)</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_part'>part</span><span class='op'>|</span>
684
- <span class='const'><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="RichString#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_capitalize'><span class='object_link'><a href="#capitalize-instance_method" title="RichString#capitalize (method)">capitalize</a></span></span><span class='lparen'>(</span><span class='symbol'>:first_only</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'><span class='object_link'><a href="#to_s-instance_method" title="RichString#to_s (method)">to_s</a></span></span>
685
- <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'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
686
- <span class='kw'>end</span></pre>
687
- </td>
688
- </tr>
689
- </table>
690
- </div>
691
-
692
- <div class="method_details ">
693
- <h3 class="signature " id="capitalize-instance_method">
694
-
695
- #<strong>capitalize</strong>(*options) &#x21d2; <tt><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></tt>
696
-
697
-
698
-
699
-
700
-
701
- </h3><div class="docstring">
702
- <div class="discussion">
703
- <p>Capitalizes the string, with the ability to only capitalize the first letter.</p>
704
-
705
- <p>If <code>options</code> includes <code>:first_only</code>, then only the first letter of the string is capitalized. The remaining letters are left
706
- alone. If <code>option</code> does not include <code>:first_only</code>, this capitalizes like Ruby's standard library, which is to lower case all
707
- letters save for the first.</p>
708
-
709
-
710
- </div>
711
- </div>
712
- <div class="tags">
713
- <p class="tag_title">Parameters:</p>
714
- <ul class="param">
715
-
716
- <li>
717
-
718
- <span class='name'>options</span>
719
-
720
-
721
- <span class='type'>(<tt>Array</tt>)</span>
722
-
723
-
724
-
725
- &mdash;
726
- <div class='inline'><p>options suitable for Ruby's built-in <code>String#capitalize</code> method</p>
727
- </div>
728
-
729
- </li>
730
-
731
- </ul>
732
-
733
- <p class="tag_title">Returns:</p>
734
- <ul class="return">
735
-
736
- <li>
737
-
738
-
739
- <span class='type'>(<tt><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></tt>)</span>
740
-
741
-
742
-
743
- &mdash;
744
- <div class='inline'><p>a new string where the wrapped string has been capitalized</p>
745
- </div>
746
-
747
- </li>
748
-
749
- </ul>
750
-
751
- </div><table class="source_code">
752
- <tr>
753
- <td>
754
- <pre class="lines">
755
-
756
-
757
- 88
758
- 89
759
- 90
760
- 91
761
- 92
762
- 93
763
- 94
764
- 95</pre>
765
- </td>
766
- <td>
767
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 88</span>
768
-
769
- <span class='kw'>def</span> <span class='id identifier rubyid_capitalize'>capitalize</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
770
- <span class='kw'>if</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='symbol'>:first_only</span><span class='rparen'>)</span>
771
- <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='symbol'>:first_only</span><span class='rparen'>)</span>
772
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@string</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_capitalize'>capitalize</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='ivar'>@string</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
773
- <span class='kw'>else</span>
774
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@string</span><span class='period'>.</span><span class='id identifier rubyid_capitalize'>capitalize</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span><span class='rparen'>)</span>
775
- <span class='kw'>end</span>
776
- <span class='kw'>end</span></pre>
777
- </td>
778
- </tr>
779
- </table>
780
- </div>
781
-
782
- <div class="method_details ">
783
- <h3 class="signature " id="humanized-instance_method">
784
-
785
- #<strong>humanized</strong> &#x21d2; <tt>Object</tt>
786
-
787
-
788
-
789
-
790
-
791
- </h3><table class="source_code">
792
- <tr>
793
- <td>
794
- <pre class="lines">
795
-
796
-
797
- 97
798
- 98
799
- 99</pre>
800
- </td>
801
- <td>
802
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 97</span>
803
-
804
- <span class='kw'>def</span> <span class='id identifier rubyid_humanized'>humanized</span>
805
- <span class='const'><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="RichString#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='ivar'>@string</span><span class='period'>.</span><span class='id identifier rubyid_tr'>tr</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_-</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
806
- <span class='kw'>end</span></pre>
807
- </td>
808
- </tr>
809
- </table>
810
657
  </div>
811
658
 
812
659
  <div class="method_details ">
@@ -824,10 +671,10 @@ letters save for the first.</p>
824
671
  <pre class="lines">
825
672
 
826
673
 
827
- 103</pre>
674
+ 142</pre>
828
675
  </td>
829
676
  <td>
830
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 103</span>
677
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 142</span>
831
678
 
832
679
  <span class='kw'>def</span> <span class='id identifier rubyid_length'>length</span> <span class='op'>=</span> <span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span></pre>
833
680
  </td>
@@ -850,10 +697,10 @@ letters save for the first.</p>
850
697
  <pre class="lines">
851
698
 
852
699
 
853
- 101</pre>
700
+ 140</pre>
854
701
  </td>
855
702
  <td>
856
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 101</span>
703
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 140</span>
857
704
 
858
705
  <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>=</span> <span class='ivar'>@string</span></pre>
859
706
  </td>
@@ -876,12 +723,12 @@ letters save for the first.</p>
876
723
  <pre class="lines">
877
724
 
878
725
 
879
- 105</pre>
726
+ 144</pre>
880
727
  </td>
881
728
  <td>
882
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 105</span>
729
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 144</span>
883
730
 
884
- <span class='kw'>def</span> <span class='id identifier rubyid_to_s_or_nil'>to_s_or_nil</span> <span class='op'>=</span> <span class='ivar'>@string</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>?</span> <span class='kw'>nil</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span></pre>
731
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_s_or_nil'>to_s_or_nil</span> <span class='op'>=</span> <span class='ivar'>@string</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>?</span> <span class='kw'>nil</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span></pre>
885
732
  </td>
886
733
  </tr>
887
734
  </table>
@@ -902,55 +749,15 @@ letters save for the first.</p>
902
749
  <pre class="lines">
903
750
 
904
751
 
905
- 102</pre>
752
+ 141</pre>
906
753
  </td>
907
754
  <td>
908
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 102</span>
755
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 141</span>
909
756
 
910
757
  <span class='kw'>def</span> <span class='id identifier rubyid_to_str'>to_str</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span></pre>
911
758
  </td>
912
759
  </tr>
913
760
  </table>
914
- </div>
915
-
916
- <div class="method_details ">
917
- <h3 class="signature " id="underscorized-instance_method">
918
-
919
- #<strong>underscorized</strong> &#x21d2; <tt>Object</tt>
920
-
921
-
922
-
923
-
924
-
925
- </h3><table class="source_code">
926
- <tr>
927
- <td>
928
- <pre class="lines">
929
-
930
-
931
- 65
932
- 66
933
- 67
934
- 68
935
- 69
936
- 70
937
- 71
938
- 72</pre>
939
- </td>
940
- <td>
941
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 65</span>
942
-
943
- <span class='kw'>def</span> <span class='id identifier rubyid_underscorized'>underscorized</span>
944
- <span class='kw'>return</span> <span class='kw'>self</span> <span class='kw'>unless</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[A-Z-]|::</span><span class='regexp_end'>/</span></span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='ivar'>@string</span><span class='rparen'>)</span>
945
- <span class='id identifier rubyid_word'>word</span> <span class='op'>=</span> <span class='ivar'>@string</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>::</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
946
- <span class='id identifier rubyid_word'>word</span><span class='period'>.</span><span class='id identifier rubyid_gsub!'>gsub!</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(?&lt;=[A-Z])(?=[A-Z][a-z])|(?&lt;=[a-z\d])(?=[A-Z])</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
947
- <span class='id identifier rubyid_word'>word</span><span class='period'>.</span><span class='id identifier rubyid_tr!'>tr!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
948
- <span class='id identifier rubyid_word'>word</span><span class='period'>.</span><span class='id identifier rubyid_downcase!'>downcase!</span>
949
- <span class='const'><span class='object_link'><a href="" title="RichString (class)">RichString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="RichString#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_word'>word</span><span class='rparen'>)</span>
950
- <span class='kw'>end</span></pre>
951
- </td>
952
- </tr>
953
- </table>
954
761
  </div>
955
762
 
956
763
  </div>
@@ -958,7 +765,7 @@ letters save for the first.</p>
958
765
  </div>
959
766
 
960
767
  <div id="footer">
961
- Generated on Tue Jul 8 01:36:09 2025 by
768
+ Generated on Thu Jul 10 13:41:04 2025 by
962
769
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
963
770
  0.9.37 (ruby-3.4.4).
964
771
  </div>