brut 0.5.0 → 0.9.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 (564) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +13 -0
  3. data/CHANGELOG.md +14 -0
  4. data/Dockerfile.dx +27 -1
  5. data/Gemfile.lock +33 -1
  6. data/README.md +19 -0
  7. data/assets/YouTubeThumb.pxd +0 -0
  8. data/bin/build +86 -0
  9. data/bin/ci +40 -0
  10. data/bin/docs +40 -10
  11. data/bin/generate-and-run-rubocop +52 -0
  12. data/bin/publish +61 -0
  13. data/bin/rubocop +27 -0
  14. data/bin/setup +52 -0
  15. data/bin/test +18 -0
  16. data/brut-css/bin/build +19 -0
  17. data/brut-css/bin/ci +19 -0
  18. data/brut-css/bin/docs +19 -0
  19. data/brut-css/bin/publish +21 -0
  20. data/brut-css/bin/setup +1 -0
  21. data/brut-css/package-lock.json +2 -2
  22. data/brut-css/package.json +1 -1
  23. data/brut-js/bin/build +15 -6
  24. data/brut-js/bin/docs +25 -0
  25. data/brut-js/bin/publish +21 -0
  26. data/brut-js/bin/setup +1 -0
  27. data/brut-js/dx +1 -0
  28. data/brut-js/package-lock.json +2 -2
  29. data/brut-js/package.json +1 -1
  30. data/brut.gemspec +34 -28
  31. data/brutrb.com/.vitepress/config.mjs +3 -0
  32. data/brutrb.com/bin/setup +1 -0
  33. data/brutrb.com/database-schema.md +1 -1
  34. data/brutrb.com/getting-started.md +3 -0
  35. data/brutrb.com/overview.md +6 -0
  36. data/brutrb.com/recipes/migrations.md +1 -1
  37. data/brutrb.com/tutorial.md +7 -3
  38. data/docker-compose.dx.yml +3 -0
  39. data/docs/404.html +2 -2
  40. data/docs/adrs.html +3 -3
  41. data/docs/ai.html +3 -3
  42. data/docs/api/Brut/BackEnd/SeedData.html +2 -2
  43. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +2 -2
  44. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +2 -2
  45. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +2 -2
  46. data/docs/api/Brut/BackEnd/Sidekiq.html +2 -2
  47. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +2 -2
  48. data/docs/api/Brut/BackEnd/Validators.html +2 -2
  49. data/docs/api/Brut/BackEnd.html +2 -2
  50. data/docs/api/Brut/CLI/App.html +2 -2
  51. data/docs/api/Brut/CLI/AppRunner.html +2 -2
  52. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  53. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +2 -2
  54. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +2 -2
  55. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +2 -2
  56. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  57. data/docs/api/Brut/CLI/Apps/DB/Create.html +2 -2
  58. data/docs/api/Brut/CLI/Apps/DB/Drop.html +2 -2
  59. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +2 -2
  60. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +2 -2
  61. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +2 -2
  62. data/docs/api/Brut/CLI/Apps/DB/Seed.html +2 -2
  63. data/docs/api/Brut/CLI/Apps/DB/Status.html +2 -2
  64. data/docs/api/Brut/CLI/Apps/DB.html +2 -2
  65. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +2 -2
  66. data/docs/api/Brut/CLI/Apps/DeployBase.html +2 -2
  67. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +3 -3
  68. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +2 -2
  69. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +2 -2
  70. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +2 -2
  71. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +2 -2
  72. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +2 -2
  73. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +2 -2
  74. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +2 -2
  75. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +2 -2
  76. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +2 -2
  77. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
  78. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +2 -2
  79. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +3 -3
  80. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  81. data/docs/api/Brut/CLI/Apps/Test/Audit.html +2 -2
  82. data/docs/api/Brut/CLI/Apps/Test/E2e.html +2 -2
  83. data/docs/api/Brut/CLI/Apps/Test/JS.html +2 -2
  84. data/docs/api/Brut/CLI/Apps/Test/Run.html +2 -2
  85. data/docs/api/Brut/CLI/Apps/Test.html +2 -2
  86. data/docs/api/Brut/CLI/Apps.html +2 -2
  87. data/docs/api/Brut/CLI/Command.html +2 -2
  88. data/docs/api/Brut/CLI/Error.html +2 -2
  89. data/docs/api/Brut/CLI/ExecutionResults/Result.html +2 -2
  90. data/docs/api/Brut/CLI/ExecutionResults.html +2 -2
  91. data/docs/api/Brut/CLI/Executor.html +2 -2
  92. data/docs/api/Brut/CLI/InvalidOption.html +2 -2
  93. data/docs/api/Brut/CLI/Options.html +80 -2
  94. data/docs/api/Brut/CLI/Output.html +2 -2
  95. data/docs/api/Brut/CLI/SystemExecError.html +2 -2
  96. data/docs/api/Brut/CLI.html +2 -2
  97. data/docs/api/Brut/FactoryBot.html +3 -3
  98. data/docs/api/Brut/Framework/App.html +3 -3
  99. data/docs/api/Brut/Framework/Config.html +25 -3
  100. data/docs/api/Brut/Framework/Container.html +2 -2
  101. data/docs/api/Brut/Framework/Error.html +2 -2
  102. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +2 -2
  103. data/docs/api/Brut/Framework/Errors/Bug.html +2 -2
  104. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +2 -2
  105. data/docs/api/Brut/Framework/Errors/MissingParameter.html +2 -2
  106. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +2 -2
  107. data/docs/api/Brut/Framework/Errors/NotFound.html +2 -2
  108. data/docs/api/Brut/Framework/Errors/NotImplemented.html +2 -2
  109. data/docs/api/Brut/Framework/Errors.html +2 -2
  110. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +2 -2
  111. data/docs/api/Brut/Framework/MCP.html +21 -11
  112. data/docs/api/Brut/Framework/ProjectEnvironment.html +2 -2
  113. data/docs/api/Brut/Framework.html +2 -2
  114. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +2 -2
  115. data/docs/api/Brut/FrontEnd/Component/Helpers.html +2 -2
  116. data/docs/api/Brut/FrontEnd/Component.html +2 -2
  117. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +2 -2
  118. data/docs/api/Brut/FrontEnd/Components/FormTag.html +4 -4
  119. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +2 -2
  120. data/docs/api/Brut/FrontEnd/Components/Input.html +2 -2
  121. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +2 -2
  122. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +2 -2
  123. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +2 -2
  124. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +2 -2
  125. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +2 -2
  126. data/docs/api/Brut/FrontEnd/Components/Inputs.html +2 -2
  127. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +2 -2
  128. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +2 -2
  129. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +2 -2
  130. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +2 -2
  131. data/docs/api/Brut/FrontEnd/Components.html +2 -2
  132. data/docs/api/Brut/FrontEnd/CsrfProtector.html +250 -0
  133. data/docs/api/Brut/FrontEnd/Download.html +2 -2
  134. data/docs/api/Brut/FrontEnd/Flash.html +2 -2
  135. data/docs/api/Brut/FrontEnd/Form.html +6 -6
  136. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +2 -2
  137. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +2 -2
  138. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +2 -2
  139. data/docs/api/Brut/FrontEnd/Forms/Input.html +2 -2
  140. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +2 -2
  141. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +2 -2
  142. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +2 -2
  143. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +2 -2
  144. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +2 -2
  145. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +2 -2
  146. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +2 -2
  147. data/docs/api/Brut/FrontEnd/Forms.html +2 -2
  148. data/docs/api/Brut/FrontEnd/GenericResponse.html +2 -2
  149. data/docs/api/Brut/FrontEnd/Handler.html +2 -2
  150. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +2 -2
  151. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +2 -2
  152. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +2 -2
  153. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +2 -2
  154. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  155. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +2 -2
  156. data/docs/api/Brut/FrontEnd/Handlers.html +2 -2
  157. data/docs/api/Brut/FrontEnd/HandlingResults.html +2 -2
  158. data/docs/api/Brut/FrontEnd/HttpMethod.html +2 -2
  159. data/docs/api/Brut/FrontEnd/HttpStatus.html +2 -2
  160. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +2 -2
  161. data/docs/api/Brut/FrontEnd/Layout.html +2 -2
  162. data/docs/api/Brut/FrontEnd/Middleware.html +2 -2
  163. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +2 -2
  164. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +2 -2
  165. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +2 -2
  166. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +2 -2
  167. data/docs/api/Brut/FrontEnd/Middlewares.html +2 -2
  168. data/docs/api/Brut/FrontEnd/Page.html +2 -2
  169. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +2 -2
  170. data/docs/api/Brut/FrontEnd/Pages.html +2 -2
  171. data/docs/api/Brut/FrontEnd/RequestContext.html +2 -2
  172. data/docs/api/Brut/FrontEnd/RouteHook.html +2 -2
  173. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +2 -2
  174. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +2 -2
  175. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +2 -2
  176. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +2 -2
  177. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +2 -2
  178. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +2 -2
  179. data/docs/api/Brut/FrontEnd/RouteHooks.html +2 -2
  180. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +2 -2
  181. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +2 -2
  182. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +2 -2
  183. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +2 -2
  184. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +2 -2
  185. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +2 -2
  186. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +2 -2
  187. data/docs/api/Brut/FrontEnd/Routing/Route.html +2 -2
  188. data/docs/api/Brut/FrontEnd/Routing.html +2 -2
  189. data/docs/api/Brut/FrontEnd/Session.html +2 -2
  190. data/docs/api/Brut/FrontEnd.html +3 -3
  191. data/docs/api/Brut/I18n/BaseMethods.html +3 -3
  192. data/docs/api/Brut/I18n/ForBackEnd.html +2 -2
  193. data/docs/api/Brut/I18n/ForCLI.html +2 -2
  194. data/docs/api/Brut/I18n/ForHTML.html +2 -2
  195. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +2 -2
  196. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +2 -2
  197. data/docs/api/Brut/I18n.html +2 -2
  198. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +2 -2
  199. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +2 -2
  200. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +2 -2
  201. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +2 -2
  202. data/docs/api/Brut/Instrumentation.html +2 -2
  203. data/docs/api/Brut/RubocopConfig.html +237 -0
  204. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +2 -2
  205. data/docs/api/Brut/SinatraHelpers.html +2 -2
  206. data/docs/api/Brut/SpecSupport/ClockSupport.html +2 -2
  207. data/docs/api/Brut/SpecSupport/ComponentSupport.html +7 -13
  208. data/docs/api/Brut/SpecSupport/E2ETestServer.html +2 -2
  209. data/docs/api/Brut/SpecSupport/E2eSupport.html +2 -2
  210. data/docs/api/Brut/SpecSupport/EnhancedNode.html +2 -2
  211. data/docs/api/Brut/SpecSupport/FlashSupport.html +2 -2
  212. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +2 -2
  213. data/docs/api/Brut/SpecSupport/GeneralSupport.html +2 -2
  214. data/docs/api/Brut/SpecSupport/HandlerSupport.html +2 -2
  215. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +2 -2
  216. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +2 -2
  217. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +2 -2
  218. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +2 -2
  219. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +2 -2
  220. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +2 -2
  221. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +2 -2
  222. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +2 -2
  223. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +2 -2
  224. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +2 -2
  225. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +2 -2
  226. data/docs/api/Brut/SpecSupport/Matchers.html +2 -2
  227. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +2 -2
  228. data/docs/api/Brut/SpecSupport/RSpecSetup.html +4 -4
  229. data/docs/api/Brut/SpecSupport/SessionSupport.html +2 -2
  230. data/docs/api/Brut/SpecSupport.html +2 -2
  231. data/docs/api/Brut.html +128 -12
  232. data/docs/api/Clock.html +2 -2
  233. data/docs/api/ModuleName.html +28 -28
  234. data/docs/api/RichString.html +22 -22
  235. data/docs/api/SemanticLogger/Appender/Async.html +2 -2
  236. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +2 -2
  237. data/docs/api/Sequel/Extensions/BrutMigrations.html +2 -2
  238. data/docs/api/Sequel/Extensions.html +2 -2
  239. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +2 -2
  240. data/docs/api/Sequel/Plugins/CreatedAt.html +2 -2
  241. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +2 -2
  242. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +2 -2
  243. data/docs/api/Sequel/Plugins/ExternalId.html +2 -2
  244. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +2 -2
  245. data/docs/api/Sequel/Plugins/FindBang.html +2 -2
  246. data/docs/api/Sequel/Plugins.html +2 -2
  247. data/docs/api/Sequel.html +2 -2
  248. data/docs/api/_index.html +16 -2
  249. data/docs/api/class_list.html +1 -1
  250. data/docs/api/file.README.html +28 -2
  251. data/docs/api/index.html +28 -2
  252. data/docs/api/method_list.html +192 -168
  253. data/docs/api/top-level-namespace.html +2 -2
  254. data/docs/assets/{app.D6BuVHo9.js → app.CmkhEsw7.js} +1 -1
  255. data/docs/assets/chunks/@localSearchIndexroot.DUha-mf5.js +1 -0
  256. data/docs/assets/chunks/{VPLocalSearchBox.BpvHMbx6.js → VPLocalSearchBox.CDh583Oj.js} +1 -1
  257. data/docs/assets/chunks/{theme.wlAOvi2f.js → theme.B0_7GeW8.js} +2 -2
  258. data/docs/assets/{components.md.iLiv2E9X.js → components.md.-22ecBxM.js} +3 -3
  259. data/docs/assets/{configuration.md.DmuAdsli.js → configuration.md.CLKL1lFf.js} +1 -1
  260. data/docs/assets/{database-schema.md.C5gXexJi.js → database-schema.md.LpmBPVEU.js} +1 -1
  261. data/docs/assets/{forms.md.D8aa_qI-.js → forms.md.CBI5--o2.js} +1 -1
  262. data/docs/assets/{getting-started.md.DLplsDUd.js → getting-started.md.D5nzBZ4J.js} +6 -3
  263. data/docs/assets/{getting-started.md.DLplsDUd.lean.js → getting-started.md.D5nzBZ4J.lean.js} +1 -1
  264. data/docs/assets/overview.md.DlKiRRG_.js +1 -0
  265. data/docs/assets/overview.md.DlKiRRG_.lean.js +1 -0
  266. data/docs/assets/{recipes_migrations.md.DPN3gQE3.js → recipes_migrations.md.CTcnWDJF.js} +1 -1
  267. data/docs/assets/tutorial.md.BIb7XT6j.js +1 -0
  268. data/docs/assets/tutorial.md.BIb7XT6j.lean.js +1 -0
  269. data/docs/assets.html +3 -3
  270. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  271. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  272. data/docs/brut-js/api/Autosubmit.html +1 -1
  273. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  274. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  275. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  276. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  277. data/docs/brut-js/api/BufferedLogger.html +1 -1
  278. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  279. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  280. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  281. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  282. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  283. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  284. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  285. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  286. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  287. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  288. data/docs/brut-js/api/Form.html +1 -1
  289. data/docs/brut-js/api/Form.js.html +1 -1
  290. data/docs/brut-js/api/I18nTranslation.html +1 -1
  291. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  292. data/docs/brut-js/api/LocaleDetection.html +1 -1
  293. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  294. data/docs/brut-js/api/Logger.html +1 -1
  295. data/docs/brut-js/api/Logger.js.html +1 -1
  296. data/docs/brut-js/api/Message.html +1 -1
  297. data/docs/brut-js/api/Message.js.html +1 -1
  298. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  299. data/docs/brut-js/api/RichString.html +1 -1
  300. data/docs/brut-js/api/RichString.js.html +1 -1
  301. data/docs/brut-js/api/Tabs.html +1 -1
  302. data/docs/brut-js/api/Tabs.js.html +1 -1
  303. data/docs/brut-js/api/Tracing.html +1 -1
  304. data/docs/brut-js/api/Tracing.js.html +1 -1
  305. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  306. data/docs/brut-js/api/external-Performance.html +1 -1
  307. data/docs/brut-js/api/external-Promise.html +1 -1
  308. data/docs/brut-js/api/external-ValidityState.html +1 -1
  309. data/docs/brut-js/api/external-Window.html +1 -1
  310. data/docs/brut-js/api/external-fetch.html +1 -1
  311. data/docs/brut-js/api/global.html +1 -1
  312. data/docs/brut-js/api/index.html +1 -1
  313. data/docs/brut-js/api/index.js.html +1 -1
  314. data/docs/brut-js/api/module-testing.html +1 -1
  315. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  316. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  317. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  318. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  319. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  320. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  321. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  322. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  323. data/docs/brut-js/api/testing_index.js.html +1 -1
  324. data/docs/brut-js.html +3 -3
  325. data/docs/business-logic.html +3 -3
  326. data/docs/cli.html +3 -3
  327. data/docs/components.html +7 -7
  328. data/docs/configuration.html +5 -5
  329. data/docs/css.html +3 -3
  330. data/docs/custom-element-tests.html +3 -3
  331. data/docs/database-access.html +3 -3
  332. data/docs/database-schema.html +5 -5
  333. data/docs/deployment.html +3 -3
  334. data/docs/dev-environment.html +3 -3
  335. data/docs/dir-structure.html +3 -3
  336. data/docs/doc-conventions.html +3 -3
  337. data/docs/end-to-end-tests.html +3 -3
  338. data/docs/features.html +3 -3
  339. data/docs/flash-and-session.html +3 -3
  340. data/docs/form-constraints.html +3 -3
  341. data/docs/forms.html +5 -5
  342. data/docs/getting-started.html +9 -6
  343. data/docs/handlers.html +3 -3
  344. data/docs/hashmap.json +1 -1
  345. data/docs/hooks.html +3 -3
  346. data/docs/i18n.html +3 -3
  347. data/docs/index.html +3 -3
  348. data/docs/instrumentation.html +3 -3
  349. data/docs/javascript.html +3 -3
  350. data/docs/jobs.html +3 -3
  351. data/docs/keyword-injection.html +3 -3
  352. data/docs/layouts.html +3 -3
  353. data/docs/lsp.html +3 -3
  354. data/docs/markdown-examples.html +3 -3
  355. data/docs/middleware.html +3 -3
  356. data/docs/overview.html +5 -5
  357. data/docs/pages.html +3 -3
  358. data/docs/recipes/alternate-layouts.html +3 -3
  359. data/docs/recipes/authentication.html +3 -3
  360. data/docs/recipes/blank-layouts.html +3 -3
  361. data/docs/recipes/custom-flash.html +3 -3
  362. data/docs/recipes/indexed-forms.html +3 -3
  363. data/docs/recipes/migrations.html +5 -5
  364. data/docs/recipes/text-field-component.html +3 -3
  365. data/docs/roadmap.html +3 -3
  366. data/docs/routes.html +3 -3
  367. data/docs/security.html +3 -3
  368. data/docs/seed-data.html +3 -3
  369. data/docs/space-time-continuum.html +3 -3
  370. data/docs/tutorial.html +5 -5
  371. data/docs/unit-tests.html +3 -3
  372. data/docs/why.html +3 -3
  373. data/dx/build +45 -9
  374. data/lib/brut/cli/app.rb +1 -1
  375. data/lib/brut/cli/apps/heroku_container_based_deploy.rb +1 -1
  376. data/lib/brut/cli/apps/scaffold.rb +1 -1
  377. data/lib/brut/cli/options.rb +4 -0
  378. data/lib/brut/factory_bot.rb +1 -1
  379. data/lib/brut/framework/app.rb +1 -1
  380. data/lib/brut/framework/config.rb +11 -0
  381. data/lib/brut/framework/mcp.rb +13 -8
  382. data/lib/brut/front_end/components/form_tag.rb +2 -2
  383. data/lib/brut/front_end/csrf_protector.rb +30 -0
  384. data/lib/brut/front_end/form.rb +4 -4
  385. data/lib/brut/front_end/page.rb +1 -1
  386. data/lib/brut/front_end/routing.rb +1 -1
  387. data/lib/brut/front_end.rb +1 -0
  388. data/lib/brut/i18n/base_methods.rb +1 -1
  389. data/lib/brut/instrumentation/logger_span_exporter.rb +1 -1
  390. data/lib/brut/junk_drawer.rb +3 -1
  391. data/lib/brut/rubocop_config.rb +123 -0
  392. data/lib/brut/spec_support/component_support.rb +0 -3
  393. data/lib/brut/spec_support/rspec_setup.rb +2 -2
  394. data/lib/brut/version.rb +1 -1
  395. data/mkbrut/.gitignore +16 -0
  396. data/mkbrut/CODE_OF_CONDUCT.txt +100 -0
  397. data/mkbrut/Gemfile +3 -0
  398. data/mkbrut/Gemfile.lock +19 -0
  399. data/mkbrut/LICENSE.txt +370 -0
  400. data/mkbrut/README.md +145 -0
  401. data/mkbrut/Rakefile +2 -0
  402. data/mkbrut/bin/build +36 -0
  403. data/mkbrut/bin/ci +19 -0
  404. data/mkbrut/bin/docs +19 -0
  405. data/mkbrut/bin/publish +129 -0
  406. data/mkbrut/bin/rake +16 -0
  407. data/mkbrut/bin/setup +30 -0
  408. data/mkbrut/brut-welcome.png +0 -0
  409. data/mkbrut/deploy/.dockerignore +2 -0
  410. data/mkbrut/deploy/Dockerfile +25 -0
  411. data/mkbrut/dx +1 -0
  412. data/mkbrut/exe/mkbrut +5 -0
  413. data/mkbrut/lib/mkbrut/app.rb +79 -0
  414. data/mkbrut/lib/mkbrut/app_id.rb +8 -0
  415. data/mkbrut/lib/mkbrut/app_name.rb +29 -0
  416. data/mkbrut/lib/mkbrut/app_options.rb +36 -0
  417. data/mkbrut/lib/mkbrut/base.rb +57 -0
  418. data/mkbrut/lib/mkbrut/cli.rb +107 -0
  419. data/mkbrut/lib/mkbrut/erb_binding_delegate.rb +20 -0
  420. data/mkbrut/lib/mkbrut/internet_identifier.rb +32 -0
  421. data/mkbrut/lib/mkbrut/invalid_identifier.rb +4 -0
  422. data/mkbrut/lib/mkbrut/ops/add_css_import.rb +42 -0
  423. data/mkbrut/lib/mkbrut/ops/add_i18n_message.rb +74 -0
  424. data/mkbrut/lib/mkbrut/ops/add_method.rb +48 -0
  425. data/mkbrut/lib/mkbrut/ops/append_to_file.rb +20 -0
  426. data/mkbrut/lib/mkbrut/ops/base_op.rb +21 -0
  427. data/mkbrut/lib/mkbrut/ops/copy_file.rb +12 -0
  428. data/mkbrut/lib/mkbrut/ops/insert_code_in_method.rb +58 -0
  429. data/mkbrut/lib/mkbrut/ops/insert_route.rb +52 -0
  430. data/mkbrut/lib/mkbrut/ops/mkdir.rb +13 -0
  431. data/mkbrut/lib/mkbrut/ops/prism_parsing_op.rb +70 -0
  432. data/mkbrut/lib/mkbrut/ops/render_template.rb +26 -0
  433. data/mkbrut/lib/mkbrut/ops/skip_file.rb +10 -0
  434. data/mkbrut/lib/mkbrut/ops.rb +16 -0
  435. data/mkbrut/lib/mkbrut/organization.rb +5 -0
  436. data/mkbrut/lib/mkbrut/prefix.rb +26 -0
  437. data/mkbrut/lib/mkbrut/prefixed_io.rb +16 -0
  438. data/mkbrut/lib/mkbrut/segments/bare_bones.rb +185 -0
  439. data/mkbrut/lib/mkbrut/segments/demo.rb +121 -0
  440. data/mkbrut/lib/mkbrut/segments/heroku.rb +30 -0
  441. data/mkbrut/lib/mkbrut/segments/sidekiq.rb +3 -0
  442. data/mkbrut/lib/mkbrut/segments.rb +8 -0
  443. data/mkbrut/lib/mkbrut/version.rb +3 -0
  444. data/mkbrut/lib/mkbrut/versions.rb +13 -0
  445. data/mkbrut/lib/mkbrut.rb +18 -0
  446. data/mkbrut/mkbrut.gemspec +34 -0
  447. data/mkbrut/templates/Base/.dockerignore +25 -0
  448. data/mkbrut/templates/Base/.env.development.erb +60 -0
  449. data/mkbrut/templates/Base/.env.test.erb +8 -0
  450. data/mkbrut/templates/Base/.gitignore +31 -0
  451. data/mkbrut/templates/Base/.projections.json +59 -0
  452. data/mkbrut/templates/Base/Dockerfile.dx +205 -0
  453. data/mkbrut/templates/Base/Gemfile.erb +53 -0
  454. data/mkbrut/templates/Base/Procfile.development +5 -0
  455. data/mkbrut/templates/Base/Procfile.test +1 -0
  456. data/mkbrut/templates/Base/README.md +4 -0
  457. data/mkbrut/templates/Base/README.md.erb +40 -0
  458. data/mkbrut/templates/Base/app/bootstrap.rb +61 -0
  459. data/mkbrut/templates/Base/app/config/i18n/en/1_defaults.rb +128 -0
  460. data/mkbrut/templates/Base/app/config/i18n/en/2_app.rb +24 -0
  461. data/mkbrut/templates/Base/app/public/static/manifest.json.erb +33 -0
  462. data/mkbrut/templates/Base/app/src/app.rb.erb +37 -0
  463. data/mkbrut/templates/Base/app/src/back_end/data_models/app_data_model.rb +5 -0
  464. data/mkbrut/templates/Base/app/src/back_end/data_models/db.rb +19 -0
  465. data/mkbrut/templates/Base/app/src/back_end/data_models/migrations/20240101130000_citext.rb +6 -0
  466. data/mkbrut/templates/Base/app/src/back_end/data_models/seed/seed_data.rb +9 -0
  467. data/mkbrut/templates/Base/app/src/front_end/components/app_component.rb +8 -0
  468. data/mkbrut/templates/Base/app/src/front_end/components/custom_element_registration.rb.erb +7 -0
  469. data/mkbrut/templates/Base/app/src/front_end/css/index.css +2 -0
  470. data/mkbrut/templates/Base/app/src/front_end/css/svgs.css +12 -0
  471. data/mkbrut/templates/Base/app/src/front_end/forms/app_form.rb +4 -0
  472. data/mkbrut/templates/Base/app/src/front_end/handlers/app_handler.rb +4 -0
  473. data/mkbrut/templates/Base/app/src/front_end/images/LogoPylon.png +0 -0
  474. data/mkbrut/templates/Base/app/src/front_end/images/LogoTransit.png +0 -0
  475. data/mkbrut/templates/Base/app/src/front_end/images/apple-touch-icon-120x120.png +0 -0
  476. data/mkbrut/templates/Base/app/src/front_end/images/apple-touch-icon-152x152.png +0 -0
  477. data/mkbrut/templates/Base/app/src/front_end/images/apple-touch-icon-167x167.png +0 -0
  478. data/mkbrut/templates/Base/app/src/front_end/images/apple-touch-icon-180x180.png +0 -0
  479. data/mkbrut/templates/Base/app/src/front_end/images/favicon.ico +0 -0
  480. data/mkbrut/templates/Base/app/src/front_end/images/icon.png +0 -0
  481. data/mkbrut/templates/Base/app/src/front_end/images/mkicons.sh +6 -0
  482. data/mkbrut/templates/Base/app/src/front_end/js/index.js +6 -0
  483. data/mkbrut/templates/Base/app/src/front_end/layouts/default_layout.rb.erb +73 -0
  484. data/mkbrut/templates/Base/app/src/front_end/pages/app_page.rb +11 -0
  485. data/mkbrut/templates/Base/app/src/front_end/pages/home_page.rb +62 -0
  486. data/mkbrut/templates/Base/app/src/front_end/support/app_session.rb +6 -0
  487. data/mkbrut/templates/Base/app/src/front_end/svgs/README.md +5 -0
  488. data/mkbrut/templates/Base/app/src/front_end/svgs/comment-button.svg +59 -0
  489. data/mkbrut/templates/Base/bin/README.md.erb +5 -0
  490. data/mkbrut/templates/Base/bin/build-assets +7 -0
  491. data/mkbrut/templates/Base/bin/ci +39 -0
  492. data/mkbrut/templates/Base/bin/console +31 -0
  493. data/mkbrut/templates/Base/bin/db +9 -0
  494. data/mkbrut/templates/Base/bin/dbconsole +51 -0
  495. data/mkbrut/templates/Base/bin/dev +25 -0
  496. data/mkbrut/templates/Base/bin/release +26 -0
  497. data/mkbrut/templates/Base/bin/run +86 -0
  498. data/mkbrut/templates/Base/bin/scaffold +9 -0
  499. data/mkbrut/templates/Base/bin/setup +256 -0
  500. data/mkbrut/templates/Base/bin/startup-message +65 -0
  501. data/mkbrut/templates/Base/bin/test +9 -0
  502. data/mkbrut/templates/Base/bin/test-server +29 -0
  503. data/mkbrut/templates/Base/bin/watch-and-build-assets +37 -0
  504. data/mkbrut/templates/Base/config.ru +16 -0
  505. data/mkbrut/templates/Base/docker-compose.dx.yml +92 -0
  506. data/mkbrut/templates/Base/dx/README.md +28 -0
  507. data/mkbrut/templates/Base/dx/bash_customizations +12 -0
  508. data/mkbrut/templates/Base/dx/bash_customizations.local +8 -0
  509. data/mkbrut/templates/Base/dx/build +107 -0
  510. data/mkbrut/templates/Base/dx/docker-compose.env.erb +25 -0
  511. data/mkbrut/templates/Base/dx/dx.sh.lib +137 -0
  512. data/mkbrut/templates/Base/dx/exec +68 -0
  513. data/mkbrut/templates/Base/dx/prune +19 -0
  514. data/mkbrut/templates/Base/dx/show-help-in-app-container-then-wait.sh +38 -0
  515. data/mkbrut/templates/Base/dx/start +30 -0
  516. data/mkbrut/templates/Base/dx/stop +23 -0
  517. data/mkbrut/templates/Base/package.json.erb +37 -0
  518. data/mkbrut/templates/Base/puma.config.rb +53 -0
  519. data/mkbrut/templates/Base/specs/e2e/home_page.spec.rb.erb +23 -0
  520. data/mkbrut/templates/Base/specs/front_end/js/SpecHelper.js +24 -0
  521. data/mkbrut/templates/Base/specs/front_end/pages/home_page.spec.rb +22 -0
  522. data/mkbrut/templates/Base/specs/lint_factories.spec.rb +7 -0
  523. data/mkbrut/templates/Base/specs/spec_helper.rb +78 -0
  524. data/mkbrut/templates/Base/specs/support.rb +2 -0
  525. data/mkbrut/templates/segments/BareBones/app/src/front_end/handlers/trigger_exception_handler.rb +24 -0
  526. data/mkbrut/templates/segments/BareBones/app/src/front_end/js/Example.js.erb +49 -0
  527. data/mkbrut/templates/segments/BareBones/specs/front_end/handlers/trigger_exception_handler.spec.rb +41 -0
  528. data/mkbrut/templates/segments/BareBones/specs/front_end/js/Example.spec.js.erb +38 -0
  529. data/mkbrut/templates/segments/Demo/app/src/back_end/data_models/db/guestbook_message.rb +3 -0
  530. data/mkbrut/templates/segments/Demo/app/src/back_end/data_models/migrations/20250628194124_guestbook.rb +14 -0
  531. data/mkbrut/templates/segments/Demo/app/src/front_end/components/flash_component.rb +36 -0
  532. data/mkbrut/templates/segments/Demo/app/src/front_end/css/constraint-violations.css +18 -0
  533. data/mkbrut/templates/segments/Demo/app/src/front_end/css/fonts.css +19 -0
  534. data/mkbrut/templates/segments/Demo/app/src/front_end/fonts/monaspace-xenon.ttf +0 -0
  535. data/mkbrut/templates/segments/Demo/app/src/front_end/forms/guestbook_message_form.rb +4 -0
  536. data/mkbrut/templates/segments/Demo/app/src/front_end/handlers/guestbook_message_handler.rb +64 -0
  537. data/mkbrut/templates/segments/Demo/app/src/front_end/pages/guestbook_page/message_component.rb +41 -0
  538. data/mkbrut/templates/segments/Demo/app/src/front_end/pages/guestbook_page.rb +43 -0
  539. data/mkbrut/templates/segments/Demo/app/src/front_end/pages/new_guestbook_message_page.rb +64 -0
  540. data/mkbrut/templates/segments/Demo/specs/back_end/data_models/db/guestbook_message.spec.rb +5 -0
  541. data/mkbrut/templates/segments/Demo/specs/e2e/guest_message.spec.rb +54 -0
  542. data/mkbrut/templates/segments/Demo/specs/factories/db/guestbook_message.factory.rb +7 -0
  543. data/mkbrut/templates/segments/Demo/specs/front_end/components/flash_component.spec.rb +5 -0
  544. data/mkbrut/templates/segments/Demo/specs/front_end/handlers/guestbook_message_handler.spec.rb +122 -0
  545. data/mkbrut/templates/segments/Demo/specs/front_end/pages/guestbook_page/message_component.spec.rb +5 -0
  546. data/mkbrut/templates/segments/Demo/specs/front_end/pages/guestbook_page.spec.rb +52 -0
  547. data/mkbrut/templates/segments/Demo/specs/front_end/pages/new_guestbook_message_page.spec.rb +5 -0
  548. data/mkbrut/templates/segments/Heroku/bin/deploy +11 -0
  549. data/mkbrut/templates/segments/Heroku/deploy/Dockerfile +125 -0
  550. data/mkbrut/templates/segments/Heroku/deploy/docker-entrypoint +15 -0
  551. data/mkbrut/templates/segments/Heroku/deploy/heroku_config.rb +26 -0
  552. data/specs/brut/junk_drawer.spec.rb +4 -0
  553. metadata +242 -41
  554. data/.rspec +0 -3
  555. data/docs/assets/chunks/@localSearchIndexroot.COP2Bcmp.js +0 -1
  556. data/docs/assets/overview.md.iMnwLO4x.js +0 -1
  557. data/docs/assets/overview.md.iMnwLO4x.lean.js +0 -1
  558. data/docs/assets/tutorial.md.BYXj4cOu.js +0 -1
  559. data/docs/assets/tutorial.md.BYXj4cOu.lean.js +0 -1
  560. /data/docs/assets/{components.md.iLiv2E9X.lean.js → components.md.-22ecBxM.lean.js} +0 -0
  561. /data/docs/assets/{configuration.md.DmuAdsli.lean.js → configuration.md.CLKL1lFf.lean.js} +0 -0
  562. /data/docs/assets/{database-schema.md.C5gXexJi.lean.js → database-schema.md.LpmBPVEU.lean.js} +0 -0
  563. /data/docs/assets/{forms.md.D8aa_qI-.lean.js → forms.md.CBI5--o2.lean.js} +0 -0
  564. /data/docs/assets/{recipes_migrations.md.DPN3gQE3.lean.js → recipes_migrations.md.CTcnWDJF.lean.js} +0 -0
@@ -186,9 +186,9 @@
186
186
  </div>
187
187
 
188
188
  <div id="footer">
189
- Generated on Mon Jul 21 18:28:17 2025 by
189
+ Generated on Thu Aug 7 21:05:54 2025 by
190
190
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
191
- 0.9.37 (ruby-3.4.4).
191
+ 0.9.37 (ruby-3.4.5).
192
192
  </div>
193
193
 
194
194
  </div>
@@ -119,9 +119,9 @@ Your app's <code>spec_helper.rb</code> should require these explicitly.</p>
119
119
  </div>
120
120
 
121
121
  <div id="footer">
122
- Generated on Mon Jul 21 18:28:17 2025 by
122
+ Generated on Thu Aug 7 21:05:54 2025 by
123
123
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
124
- 0.9.37 (ruby-3.4.4).
124
+ 0.9.37 (ruby-3.4.5).
125
125
  </div>
126
126
 
127
127
  </div>
data/docs/api/Brut.html CHANGED
@@ -79,7 +79,7 @@
79
79
  <dl>
80
80
  <dt>Defined in:</dt>
81
81
  <dd>lib/brut.rb<span class="defines">,<br />
82
- lib/brut/cli.rb,<br /> lib/brut/version.rb,<br /> lib/brut/framework.rb,<br /> lib/brut/spec_support.rb,<br /> lib/brut/cli/app_runner.rb,<br /> lib/brut/framework/errors.rb,<br /> lib/brut/back_end/seed_data.rb,<br /> lib/brut/framework/container.rb,<br /> lib/brut/cli/execution_results.rb</span>
82
+ lib/brut/cli.rb,<br /> lib/brut/version.rb,<br /> lib/brut/framework.rb,<br /> lib/brut/spec_support.rb,<br /> lib/brut/cli/app_runner.rb,<br /> lib/brut/rubocop_config.rb,<br /> lib/brut/framework/errors.rb,<br /> lib/brut/back_end/seed_data.rb,<br /> lib/brut/framework/container.rb,<br /> lib/brut/cli/execution_results.rb</span>
83
83
  </dd>
84
84
  </dl>
85
85
 
@@ -87,15 +87,10 @@
87
87
 
88
88
  <h2>Overview</h2><div class="docstring">
89
89
  <div class="discussion">
90
- <p>Brut is a way to make web apps with Ruby. It focuses on web standards, object-orientation, and other
91
- fundamentals. Brut seeks to minimize abstractions where possible.</p>
90
+ <ul>
91
+ <li>prevent use of postfix conditonals entirely</li>
92
+ </ul>
92
93
 
93
- <p>Brut encourages the use of the browser's technology and encourages you to build a web app based
94
- on good practices that are set up by default. Brut may not look easy, but it aims to be simple.
95
- It attempts to minimize dependencies and complexity, while leveraging
96
- common tested Ruby libraries related to web development.</p>
97
-
98
- <p>Have fun!</p>
99
94
 
100
95
 
101
96
  </div>
@@ -111,11 +106,132 @@ common tested Ruby libraries related to web development.</p>
111
106
 
112
107
 
113
108
 
114
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="Brut/FactoryBot.html" title="Brut::FactoryBot (class)">FactoryBot</a></span>
109
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Brut/FactoryBot.html" title="Brut::FactoryBot (class)">FactoryBot</a></span>, <span class='object_link'><a href="Brut/RubocopConfig.html" title="Brut::RubocopConfig (class)">RubocopConfig</a></span>
115
110
 
116
111
 
117
112
  </p>
118
113
 
114
+
115
+ <h2>
116
+ Constant Summary
117
+ <small><a href="#" class="constants_summary_toggle">collapse</a></small>
118
+ </h2>
119
+
120
+ <dl class="constants">
121
+
122
+ <dt id="IM_NOT_CALLING_THEM_COPS-constant" class="">IM_NOT_CALLING_THEM_COPS =
123
+
124
+ </dt>
125
+ <dd><pre class="code"><span class='lbrace'>{</span>
126
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Gemspec/AddRuntimeDependency</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
127
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/AmbiguousAssignment</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
128
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/AmbiguousOperator</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
129
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/AmbiguousOperatorPrecedence</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
130
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/AmbiguousRange</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
131
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/AmbiguousRegexpLiteral</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
132
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/DuplicateCaseCondition</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
133
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/DuplicateElsifCondition</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
134
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/Loop</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
135
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/RedundantSplatExpansion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
136
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/RedundantStringCoercion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
137
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/RedundantTypeConversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
138
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/ToJSON</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
139
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/ColonMethodDefinition</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
140
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/DefWithParentheses</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
141
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/InvertibleUnlessCondition</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
142
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/KeywordArgumentsMerging</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
143
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/MethodDefParentheses</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
144
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/MissingRespondToMissing</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
145
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/MultilineTernaryOperator</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
146
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/NegatedUnless</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
147
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/NestedTernaryOperator</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
148
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/PreferredHashMethods</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
149
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/UnlessElse</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
150
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/UnlessLogicalOperators</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
151
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Layout/DotPosition</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
152
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EnforcedStyle</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>trailing</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
153
+ <span class='rbrace'>}</span><span class='comma'>,</span>
154
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Lint/AssignmentInCondition</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
155
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>AllowSafeAssignment</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>false</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
156
+ <span class='rbrace'>}</span><span class='comma'>,</span>
157
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/ClassMethodsDefinitions</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
158
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EnforcedStyle</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>def_self</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
159
+ <span class='rbrace'>}</span><span class='comma'>,</span>
160
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/CollectionMethods</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
161
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PreferredMethods</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
162
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>find</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>detect</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
163
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>collect</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>map</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
164
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>find_all</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>select</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
165
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>member?</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>include?</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
166
+ <span class='rbrace'>}</span><span class='comma'>,</span>
167
+ <span class='rbrace'>}</span><span class='comma'>,</span>
168
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/EndlessMethod</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
169
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EnforcedStyle</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>allow_single_line</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
170
+ <span class='rbrace'>}</span><span class='comma'>,</span>
171
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/For</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
172
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EnforcedStyle</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>each</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
173
+ <span class='rbrace'>}</span><span class='comma'>,</span>
174
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/YodaCondition</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
175
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EnforcedStyle</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>forbid_for_all_comparison_operators</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
176
+ <span class='rbrace'>}</span><span class='comma'>,</span>
177
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/DisableSyntax</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
178
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>DisableSyntax</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span>
179
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>unless</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
180
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>and_or_not</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
181
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>until</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
182
+ <span class='rbracket'>]</span><span class='comma'>,</span>
183
+ <span class='rbrace'>}</span><span class='comma'>,</span>
184
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/TrailingCommaInArrayLiteral</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
185
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EnforcedStyleForMultiline</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>consistent_comma</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
186
+ <span class='rbrace'>}</span><span class='comma'>,</span>
187
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Style/TrailingCommaInHashLiteral</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
188
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>EnforcedStyleForMultiline</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>consistent_comma</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
189
+ <span class='rbrace'>}</span><span class='comma'>,</span>
190
+ <span class='comment'># Documented, but nonexistent
191
+ </span> <span class='comment'>#&quot;Style/ItBlockParameter&quot; =&gt; {
192
+ </span> <span class='comment'># &quot;EnforcedStyle&quot; =&gt; &quot;allow_single_line&quot;,
193
+ </span> <span class='comment'>#},
194
+ </span><span class='rbrace'>}</span></pre></dd>
195
+
196
+ <dt id="PREAMBLE-constant" class="">PREAMBLE =
197
+ <div class="docstring">
198
+ <div class="discussion">
199
+ <p>Documented, but nonexistent
200
+ "Style/ItBlockParameter" => {
201
+ "EnforcedStyle" => "allow_single_line",
202
+ },</p>
203
+
204
+
205
+ </div>
206
+ </div>
207
+ <div class="tags">
208
+
209
+
210
+ </div>
211
+ </dt>
212
+ <dd><pre class="code"><span class='lbrace'>{</span>
213
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>inherit_mode</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
214
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>merge</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exclude</span><span class='tstring_end'>&quot;</span></span> <span class='rbracket'>]</span><span class='comma'>,</span>
215
+ <span class='rbrace'>}</span><span class='comma'>,</span>
216
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>plugins</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span>
217
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>rubocop-disable_syntax</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
218
+ <span class='rbracket'>]</span><span class='comma'>,</span>
219
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>AllCops</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
220
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>DisabledByDefault</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
221
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>TargetRubyVersion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='const'>RUBY_VERSION</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</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='rparen'>)</span><span class='lbracket'>[</span><span class='int'>0</span><span class='op'>..</span><span class='int'>1</span><span class='rbracket'>]</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_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span>
222
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>SuggestExtensions</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='kw'>false</span><span class='comma'>,</span>
223
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exclude</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span>
224
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>local-gems/**/*</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
225
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>**/local-gems/**/*</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
226
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>node_modules/**/*</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
227
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>**/node_modules/**/*</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
228
+ <span class='rbracket'>]</span><span class='comma'>,</span>
229
+ <span class='rbrace'>}</span><span class='comma'>,</span>
230
+ <span class='rbrace'>}</span></pre></dd>
231
+
232
+ </dl>
233
+
234
+
119
235
 
120
236
 
121
237
 
@@ -215,9 +331,9 @@ common tested Ruby libraries related to web development.</p>
215
331
  </div>
216
332
 
217
333
  <div id="footer">
218
- Generated on Mon Jul 21 18:28:17 2025 by
334
+ Generated on Thu Aug 7 21:05:54 2025 by
219
335
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
220
- 0.9.37 (ruby-3.4.4).
336
+ 0.9.37 (ruby-3.4.5).
221
337
  </div>
222
338
 
223
339
  </div>
data/docs/api/Clock.html CHANGED
@@ -593,9 +593,9 @@ returned in the configured time zone.</p>
593
593
  </div>
594
594
 
595
595
  <div id="footer">
596
- Generated on Mon Jul 21 18:28:17 2025 by
596
+ Generated on Thu Aug 7 21:05:54 2025 by
597
597
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
598
- 0.9.37 (ruby-3.4.4).
598
+ 0.9.37 (ruby-3.4.5).
599
599
  </div>
600
600
 
601
601
  </div>
@@ -327,12 +327,12 @@
327
327
  <pre class="lines">
328
328
 
329
329
 
330
- 189
331
- 190
332
- 191</pre>
330
+ 191
331
+ 192
332
+ 193</pre>
333
333
  </td>
334
334
  <td>
335
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 189</span>
335
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 191</span>
336
336
 
337
337
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_parts_of_module'>parts_of_module</span><span class='rparen'>)</span>
338
338
  <span class='ivar'>@parts_of_module</span> <span class='op'>=</span> <span class='id identifier rubyid_parts_of_module'>parts_of_module</span>
@@ -374,12 +374,12 @@
374
374
  <pre class="lines">
375
375
 
376
376
 
377
- 187
378
- 188
379
- 189</pre>
377
+ 189
378
+ 190
379
+ 191</pre>
380
380
  </td>
381
381
  <td>
382
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 187</span>
382
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 189</span>
383
383
 
384
384
  <span class='kw'>def</span> <span class='id identifier rubyid_parts_of_module'>parts_of_module</span>
385
385
  <span class='ivar'>@parts_of_module</span>
@@ -411,16 +411,16 @@
411
411
  <pre class="lines">
412
412
 
413
413
 
414
- 179
415
- 180
416
414
  181
417
415
  182
418
416
  183
419
417
  184
420
- 185</pre>
418
+ 185
419
+ 186
420
+ 187</pre>
421
421
  </td>
422
422
  <td>
423
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 179</span>
423
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 181</span>
424
424
 
425
425
  <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='rparen'>)</span>
426
426
  <span class='id identifier rubyid_string'>string</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="RichString.html" title="RichString (class)">RichString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_from_string'><span class='object_link'><a href="RichString.html#from_string-class_method" title="RichString.from_string (method)">from_string</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_string'>string</span><span class='rparen'>)</span>
@@ -455,12 +455,12 @@
455
455
  <pre class="lines">
456
456
 
457
457
 
458
- 201
459
- 202
460
- 203</pre>
458
+ 203
459
+ 204
460
+ 205</pre>
461
461
  </td>
462
462
  <td>
463
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 201</span>
463
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 203</span>
464
464
 
465
465
  <span class='kw'>def</span> <span class='id identifier rubyid_append'>append</span><span class='lparen'>(</span><span class='id identifier rubyid_module_name'>module_name</span><span class='rparen'>)</span>
466
466
  <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'>@parts_of_module</span> <span class='op'>+</span> <span class='id identifier rubyid_module_name'>module_name</span><span class='period'>.</span><span class='id identifier rubyid_parts_of_module'>parts_of_module</span><span class='rparen'>)</span>
@@ -485,16 +485,16 @@
485
485
  <pre class="lines">
486
486
 
487
487
 
488
- 193
489
- 194
490
488
  195
491
489
  196
492
490
  197
493
491
  198
494
- 199</pre>
492
+ 199
493
+ 200
494
+ 201</pre>
495
495
  </td>
496
496
  <td>
497
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 193</span>
497
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 195</span>
498
498
 
499
499
  <span class='kw'>def</span> <span class='id identifier rubyid_in_module'>in_module</span><span class='lparen'>(</span><span class='id identifier rubyid_module_name'>module_name</span><span class='rparen'>)</span>
500
500
  <span class='kw'>if</span> <span class='id identifier rubyid_in_module?'>in_module?</span><span class='lparen'>(</span><span class='id identifier rubyid_module_name'>module_name</span><span class='rparen'>)</span>
@@ -523,8 +523,6 @@
523
523
  <pre class="lines">
524
524
 
525
525
 
526
- 207
527
- 208
528
526
  209
529
527
  210
530
528
  211
@@ -533,10 +531,12 @@
533
531
  214
534
532
  215
535
533
  216
536
- 217</pre>
534
+ 217
535
+ 218
536
+ 219</pre>
537
537
  </td>
538
538
  <td>
539
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 207</span>
539
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 209</span>
540
540
 
541
541
  <span class='kw'>def</span> <span class='id identifier rubyid_path_from'>path_from</span><span class='lparen'>(</span><span class='id identifier rubyid_base_path'>base_path</span><span class='comma'>,</span> <span class='label'>extname:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.rb</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
542
542
  <span class='id identifier rubyid_parts_as_path_segment'>parts_as_path_segment</span> <span class='op'>=</span> <span class='ivar'>@parts_of_module</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>
@@ -569,10 +569,10 @@
569
569
  <pre class="lines">
570
570
 
571
571
 
572
- 205</pre>
572
+ 207</pre>
573
573
  </td>
574
574
  <td>
575
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 205</span>
575
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 207</span>
576
576
 
577
577
  <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>=</span> <span class='ivar'>@parts_of_module</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_content'>::</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></pre>
578
578
  </td>
@@ -585,9 +585,9 @@
585
585
  </div>
586
586
 
587
587
  <div id="footer">
588
- Generated on Mon Jul 21 18:28:17 2025 by
588
+ Generated on Thu Aug 7 21:05:54 2025 by
589
589
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
590
- 0.9.37 (ruby-3.4.4).
590
+ 0.9.37 (ruby-3.4.5).
591
591
  </div>
592
592
 
593
593
  </div>
@@ -545,18 +545,18 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
545
545
  <pre class="lines">
546
546
 
547
547
 
548
- 166
549
- 167
550
548
  168
551
549
  169
552
550
  170
553
551
  171
554
552
  172
555
553
  173
556
- 174</pre>
554
+ 174
555
+ 175
556
+ 176</pre>
557
557
  </td>
558
558
  <td>
559
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 166</span>
559
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 168</span>
560
560
 
561
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>
562
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>
@@ -587,18 +587,18 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
587
587
  <pre class="lines">
588
588
 
589
589
 
590
- 156
591
- 157
592
590
  158
593
591
  159
594
592
  160
595
593
  161
596
594
  162
597
595
  163
598
- 164</pre>
596
+ 164
597
+ 165
598
+ 166</pre>
599
599
  </td>
600
600
  <td>
601
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 156</span>
601
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 158</span>
602
602
 
603
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>
604
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>
@@ -629,18 +629,18 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
629
629
  <pre class="lines">
630
630
 
631
631
 
632
- 146
633
- 147
634
632
  148
635
633
  149
636
634
  150
637
635
  151
638
636
  152
639
637
  153
640
- 154</pre>
638
+ 154
639
+ 155
640
+ 156</pre>
641
641
  </td>
642
642
  <td>
643
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 146</span>
643
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 148</span>
644
644
 
645
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>
646
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>
@@ -671,10 +671,10 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
671
671
  <pre class="lines">
672
672
 
673
673
 
674
- 142</pre>
674
+ 144</pre>
675
675
  </td>
676
676
  <td>
677
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 142</span>
677
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 144</span>
678
678
 
679
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>
680
680
  </td>
@@ -697,10 +697,10 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
697
697
  <pre class="lines">
698
698
 
699
699
 
700
- 140</pre>
700
+ 142</pre>
701
701
  </td>
702
702
  <td>
703
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 140</span>
703
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 142</span>
704
704
 
705
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>
706
706
  </td>
@@ -723,10 +723,10 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
723
723
  <pre class="lines">
724
724
 
725
725
 
726
- 144</pre>
726
+ 146</pre>
727
727
  </td>
728
728
  <td>
729
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 144</span>
729
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 146</span>
730
730
 
731
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>
732
732
  </td>
@@ -749,10 +749,10 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
749
749
  <pre class="lines">
750
750
 
751
751
 
752
- 141</pre>
752
+ 143</pre>
753
753
  </td>
754
754
  <td>
755
- <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 141</span>
755
+ <pre class="code"><span class="info file"># File 'lib/brut/junk_drawer.rb', line 143</span>
756
756
 
757
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>
758
758
  </td>
@@ -765,9 +765,9 @@ string is blank or nil, accounting for <code>blank_is_nil:</code></p>
765
765
  </div>
766
766
 
767
767
  <div id="footer">
768
- Generated on Mon Jul 21 18:28:17 2025 by
768
+ Generated on Thu Aug 7 21:05:54 2025 by
769
769
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
770
- 0.9.37 (ruby-3.4.4).
770
+ 0.9.37 (ruby-3.4.5).
771
771
  </div>
772
772
 
773
773
  </div>
@@ -209,9 +209,9 @@ SemanticLogger's appenders. Otherwise, the warning is legit.</p>
209
209
  </div>
210
210
 
211
211
  <div id="footer">
212
- Generated on Mon Jul 21 18:28:18 2025 by
212
+ Generated on Thu Aug 7 21:05:55 2025 by
213
213
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
214
- 0.9.37 (ruby-3.4.4).
214
+ 0.9.37 (ruby-3.4.5).
215
215
  </div>
216
216
 
217
217
  </div>
@@ -109,9 +109,9 @@ platforms.</p>
109
109
  </div>
110
110
 
111
111
  <div id="footer">
112
- Generated on Mon Jul 21 18:28:17 2025 by
112
+ Generated on Thu Aug 7 21:05:54 2025 by
113
113
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
114
- 0.9.37 (ruby-3.4.4).
114
+ 0.9.37 (ruby-3.4.5).
115
115
  </div>
116
116
 
117
117
  </div>
@@ -531,9 +531,9 @@ Inside a <code>create_table</code> block, this can be called via <code>key</code
531
531
  </div>
532
532
 
533
533
  <div id="footer">
534
- Generated on Mon Jul 21 18:28:17 2025 by
534
+ Generated on Thu Aug 7 21:05:54 2025 by
535
535
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
536
- 0.9.37 (ruby-3.4.4).
536
+ 0.9.37 (ruby-3.4.5).
537
537
  </div>
538
538
 
539
539
  </div>
@@ -107,9 +107,9 @@
107
107
  </div>
108
108
 
109
109
  <div id="footer">
110
- Generated on Mon Jul 21 18:28:17 2025 by
110
+ Generated on Thu Aug 7 21:05:54 2025 by
111
111
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
112
- 0.9.37 (ruby-3.4.4).
112
+ 0.9.37 (ruby-3.4.5).
113
113
  </div>
114
114
 
115
115
  </div>
@@ -95,9 +95,9 @@
95
95
  </div>
96
96
 
97
97
  <div id="footer">
98
- Generated on Mon Jul 21 18:28:17 2025 by
98
+ Generated on Thu Aug 7 21:05:54 2025 by
99
99
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
100
- 0.9.37 (ruby-3.4.4).
100
+ 0.9.37 (ruby-3.4.5).
101
101
  </div>
102
102
 
103
103
  </div>
@@ -115,9 +115,9 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Mon Jul 21 18:28:17 2025 by
118
+ Generated on Thu Aug 7 21:05:54 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
- 0.9.37 (ruby-3.4.4).
120
+ 0.9.37 (ruby-3.4.5).
121
121
  </div>
122
122
 
123
123
  </div>