brut 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/brutrb.com/.vitepress/config.mjs +4 -2
- data/brutrb.com/.vitepress/theme/style.css +16 -38
- data/brutrb.com/adrs.md +15 -0
- data/brutrb.com/dev-environment.md +6 -1
- data/brutrb.com/doc-conventions.md +1 -2
- data/brutrb.com/images/DevEnvironment.graffle +0 -0
- data/brutrb.com/images/DevEnvironment.png +0 -0
- data/brutrb.com/index.md +0 -3
- data/brutrb.com/overview.md +2 -2
- data/brutrb.com/roadmap.md +57 -0
- data/brutrb.com/tutorial.md +5 -1
- data/docs/404.html +4 -4
- data/docs/{not-released.html → adrs.html} +8 -8
- data/docs/ai.html +6 -6
- data/docs/api/Brut/BackEnd/SeedData.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
- data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
- data/docs/api/Brut/BackEnd/Validators.html +1 -1
- data/docs/api/Brut/BackEnd.html +1 -1
- data/docs/api/Brut/CLI/App.html +1 -1
- data/docs/api/Brut/CLI/AppRunner.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +3 -3
- data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
- data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/JS.html +6 -6
- data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test.html +2 -2
- data/docs/api/Brut/CLI/Apps.html +1 -1
- data/docs/api/Brut/CLI/Command.html +3 -3
- data/docs/api/Brut/CLI/Error.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
- data/docs/api/Brut/CLI/Executor.html +1 -1
- data/docs/api/Brut/CLI/InvalidOption.html +1 -1
- data/docs/api/Brut/CLI/Options.html +1 -1
- data/docs/api/Brut/CLI/Output.html +1 -1
- data/docs/api/Brut/CLI/SystemExecError.html +1 -1
- data/docs/api/Brut/CLI.html +1 -1
- data/docs/api/Brut/FactoryBot.html +1 -1
- data/docs/api/Brut/Framework/App.html +1 -1
- data/docs/api/Brut/Framework/Config.html +1 -1
- data/docs/api/Brut/Framework/Container.html +1 -1
- data/docs/api/Brut/Framework/Error.html +1 -1
- data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
- data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
- data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
- data/docs/api/Brut/Framework/Errors.html +1 -1
- data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
- data/docs/api/Brut/Framework/MCP.html +1 -1
- data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
- data/docs/api/Brut/Framework.html +1 -1
- data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
- data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
- data/docs/api/Brut/FrontEnd/Component.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +3 -3
- data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
- data/docs/api/Brut/FrontEnd/Components.html +1 -1
- data/docs/api/Brut/FrontEnd/Download.html +1 -1
- data/docs/api/Brut/FrontEnd/Flash.html +1 -1
- data/docs/api/Brut/FrontEnd/Form.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms.html +1 -1
- data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
- data/docs/api/Brut/FrontEnd/Handler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
- data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
- data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
- data/docs/api/Brut/FrontEnd/Layout.html +1 -1
- data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
- data/docs/api/Brut/FrontEnd/Page.html +1 -1
- data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +2 -2
- data/docs/api/Brut/FrontEnd/Pages.html +1 -1
- data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing.html +1 -1
- data/docs/api/Brut/FrontEnd/Session.html +1 -1
- data/docs/api/Brut/FrontEnd.html +1 -1
- data/docs/api/Brut/I18n/BaseMethods.html +1 -1
- data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
- data/docs/api/Brut/I18n/ForCLI.html +1 -1
- data/docs/api/Brut/I18n/ForHTML.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
- data/docs/api/Brut/I18n.html +1 -1
- data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
- data/docs/api/Brut/Instrumentation.html +1 -1
- data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
- data/docs/api/Brut/SinatraHelpers.html +1 -1
- data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
- data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
- data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
- data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
- data/docs/api/Brut/SpecSupport.html +1 -1
- data/docs/api/Brut.html +1 -1
- data/docs/api/Clock.html +1 -1
- data/docs/api/RichString.html +150 -343
- data/docs/api/SemanticLogger/Appender/Async.html +1 -1
- data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
- data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
- data/docs/api/Sequel/Extensions.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang.html +1 -1
- data/docs/api/Sequel/Plugins.html +1 -1
- data/docs/api/Sequel.html +1 -1
- data/docs/api/_index.html +5 -5
- data/docs/api/class_list.html +1 -1
- data/docs/api/file.README.html +1 -1
- data/docs/api/index.html +1 -1
- data/docs/api/method_list.html +281 -313
- data/docs/api/top-level-namespace.html +1 -1
- data/docs/assets/DevEnvironment.DaFcVfwP.png +0 -0
- data/docs/assets/adrs.md.JRxZ5uYE.js +1 -0
- data/docs/assets/adrs.md.JRxZ5uYE.lean.js +1 -0
- data/docs/assets/{app.ClaS47Ru.js → app.Dm3x-DQc.js} +1 -1
- data/docs/assets/chunks/@localSearchIndexroot.BqRrkR00.js +1 -0
- data/docs/assets/chunks/{VPLocalSearchBox.DtgDfde2.js → VPLocalSearchBox.DL6bnqee.js} +1 -1
- data/docs/assets/chunks/{theme.B45bvibT.js → theme.BXdlf6e8.js} +2 -2
- data/docs/assets/{components.md.DatoNgFo.js → components.md.Pg_Lo35G.js} +3 -3
- data/docs/assets/{configuration.md.DeyhpqEx.js → configuration.md.BfeGnEci.js} +1 -1
- data/docs/assets/dev-environment.md.Dy6EldaM.js +16 -0
- data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +1 -0
- data/docs/assets/doc-conventions.md.DOkAuXlt.js +1 -0
- data/docs/assets/{forms.md.C2Dizvzq.js → forms.md.BQZlCwvi.js} +1 -1
- data/docs/assets/{getting-started.md.C93e0odB.js → getting-started.md.BcXnNuD6.js} +2 -2
- data/docs/assets/index.md.Bn9e0sRJ.js +1 -0
- data/docs/assets/index.md.Bn9e0sRJ.lean.js +1 -0
- data/docs/assets/{overview.md.Bdq4qt3L.js → overview.md.iMnwLO4x.js} +1 -1
- data/docs/assets/roadmap.md.C6PRi0DX.js +1 -0
- data/docs/assets/roadmap.md.C6PRi0DX.lean.js +1 -0
- data/docs/assets/{style.prAgp4yQ.css → style.B1z60PPQ.css} +1 -1
- data/docs/assets/tutorial.md.BYXj4cOu.js +1 -0
- data/docs/assets/tutorial.md.BYXj4cOu.lean.js +1 -0
- data/docs/assets.html +6 -6
- data/docs/brut-js/api/AjaxSubmit.html +1 -1
- data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
- data/docs/brut-js/api/Autosubmit.html +1 -1
- data/docs/brut-js/api/Autosubmit.js.html +1 -1
- data/docs/brut-js/api/BaseCustomElement.html +1 -1
- data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
- data/docs/brut-js/api/BrutCustomElements.html +1 -1
- data/docs/brut-js/api/BufferedLogger.html +1 -1
- data/docs/brut-js/api/ConfirmSubmit.html +1 -1
- data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
- data/docs/brut-js/api/ConfirmationDialog.html +1 -1
- data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
- data/docs/brut-js/api/CopyToClipboard.html +1 -1
- data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
- data/docs/brut-js/api/Form.html +1 -1
- data/docs/brut-js/api/Form.js.html +1 -1
- data/docs/brut-js/api/I18nTranslation.html +1 -1
- data/docs/brut-js/api/I18nTranslation.js.html +1 -1
- data/docs/brut-js/api/LocaleDetection.html +1 -1
- data/docs/brut-js/api/LocaleDetection.js.html +1 -1
- data/docs/brut-js/api/Logger.html +1 -1
- data/docs/brut-js/api/Logger.js.html +1 -1
- data/docs/brut-js/api/Message.html +1 -1
- data/docs/brut-js/api/Message.js.html +1 -1
- data/docs/brut-js/api/PrefixedLogger.html +1 -1
- data/docs/brut-js/api/RichString.html +1 -1
- data/docs/brut-js/api/RichString.js.html +1 -1
- data/docs/brut-js/api/Tabs.html +1 -1
- data/docs/brut-js/api/Tabs.js.html +1 -1
- data/docs/brut-js/api/Tracing.html +1 -1
- data/docs/brut-js/api/Tracing.js.html +1 -1
- data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
- data/docs/brut-js/api/external-Performance.html +1 -1
- data/docs/brut-js/api/external-Promise.html +1 -1
- data/docs/brut-js/api/external-ValidityState.html +1 -1
- data/docs/brut-js/api/external-Window.html +1 -1
- data/docs/brut-js/api/external-fetch.html +1 -1
- data/docs/brut-js/api/global.html +1 -1
- data/docs/brut-js/api/index.html +1 -1
- data/docs/brut-js/api/index.js.html +1 -1
- data/docs/brut-js/api/module-testing.html +1 -1
- data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
- data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
- data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
- data/docs/brut-js/api/testing.DOMCreator.html +1 -1
- data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
- data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
- data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
- data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
- data/docs/brut-js/api/testing_index.js.html +1 -1
- data/docs/brut-js.html +6 -6
- data/docs/business-logic.html +6 -6
- data/docs/cli.html +6 -6
- data/docs/components.html +10 -10
- data/docs/configuration.html +7 -7
- data/docs/css.html +6 -6
- data/docs/custom-element-tests.html +6 -6
- data/docs/database-access.html +6 -6
- data/docs/database-schema.html +6 -6
- data/docs/deployment.html +6 -6
- data/docs/dev-environment.html +12 -7
- data/docs/dir-structure.html +6 -6
- data/docs/doc-conventions.html +7 -7
- data/docs/end-to-end-tests.html +6 -6
- data/docs/features.html +6 -6
- data/docs/flash-and-session.html +6 -6
- data/docs/form-constraints.html +6 -6
- data/docs/forms.html +8 -8
- data/docs/getting-started.html +9 -9
- data/docs/handlers.html +6 -6
- data/docs/hashmap.json +1 -1
- data/docs/hooks.html +6 -6
- data/docs/i18n.html +6 -6
- data/docs/index.html +7 -7
- data/docs/instrumentation.html +6 -6
- data/docs/javascript.html +6 -6
- data/docs/jobs.html +6 -6
- data/docs/keyword-injection.html +6 -6
- data/docs/layouts.html +6 -6
- data/docs/lsp.html +6 -6
- data/docs/markdown-examples.html +6 -6
- data/docs/middleware.html +6 -6
- data/docs/overview.html +7 -7
- data/docs/pages.html +6 -6
- data/docs/recipes/alternate-layouts.html +6 -6
- data/docs/recipes/authentication.html +6 -6
- data/docs/recipes/blank-layouts.html +6 -6
- data/docs/recipes/custom-flash.html +6 -6
- data/docs/recipes/indexed-forms.html +6 -6
- data/docs/recipes/text-field-component.html +6 -6
- data/docs/roadmap.html +29 -0
- data/docs/routes.html +6 -6
- data/docs/security.html +6 -6
- data/docs/seed-data.html +6 -6
- data/docs/space-time-continuum.html +6 -6
- data/docs/tutorial.html +7 -7
- data/docs/unit-tests.html +6 -6
- data/docs/why.html +6 -6
- data/lib/brut/cli/apps/test.rb +1 -1
- data/lib/brut/front_end/components/inputs/select_tag_with_options.rb +2 -2
- data/lib/brut/junk_drawer.rb +48 -9
- data/lib/brut/version.rb +1 -1
- data/specs/brut/junk_drawer.spec.rb +75 -0
- metadata +36 -31
- data/brutrb.com/images/logo-300.png +0 -0
- data/brutrb.com/images/logo.png +0 -0
- data/brutrb.com/not-released.md +0 -5
- data/docs/assets/chunks/@localSearchIndexroot.Biqy1A4t.js +0 -1
- data/docs/assets/dev-env-overview.Gj7NWM8-.png +0 -0
- data/docs/assets/dev-environment.md.BroAOLhF.js +0 -11
- data/docs/assets/dev-environment.md.BroAOLhF.lean.js +0 -1
- data/docs/assets/doc-conventions.md.BzmSrTEW.js +0 -1
- data/docs/assets/index.md.CAMqGBJE.js +0 -1
- data/docs/assets/index.md.CAMqGBJE.lean.js +0 -1
- data/docs/assets/not-released.md.BBy28McC.js +0 -1
- data/docs/assets/not-released.md.BBy28McC.lean.js +0 -1
- data/docs/assets/tutorial.md.a4a0eVOy.js +0 -1
- data/docs/assets/tutorial.md.a4a0eVOy.lean.js +0 -1
- /data/docs/assets/{components.md.DatoNgFo.lean.js → components.md.Pg_Lo35G.lean.js} +0 -0
- /data/docs/assets/{configuration.md.DeyhpqEx.lean.js → configuration.md.BfeGnEci.lean.js} +0 -0
- /data/docs/assets/{doc-conventions.md.BzmSrTEW.lean.js → doc-conventions.md.DOkAuXlt.lean.js} +0 -0
- /data/docs/assets/{forms.md.C2Dizvzq.lean.js → forms.md.BQZlCwvi.lean.js} +0 -0
- /data/docs/assets/{getting-started.md.C93e0odB.lean.js → getting-started.md.BcXnNuD6.lean.js} +0 -0
- /data/docs/assets/{overview.md.Bdq4qt3L.lean.js → overview.md.iMnwLO4x.lean.js} +0 -0
@@ -72,8 +72,8 @@ class Brut::FrontEnd::Components::Inputs::SelectTagWithOptions < Brut::FrontEnd:
|
|
72
72
|
option = options.detect { |option|
|
73
73
|
input_value == option.send(@value_attribute)
|
74
74
|
}
|
75
|
-
if option.nil?
|
76
|
-
raise ArgumentError, "selected_value #{input_value} was not the value for #{value_attribute} on any of the options: #{options.map { |option| option.send(value_attribute) }.join(', ')}"
|
75
|
+
if option.nil? && option.to_s.strip != ""
|
76
|
+
raise ArgumentError, "selected_value #{input_value}/#{input_value.class} was not the value for #{value_attribute} on any of the options: #{options.map { |option| option.send(value_attribute) }.join(', ')}"
|
77
77
|
end
|
78
78
|
@selected_value = option.send(@value_attribute)
|
79
79
|
end
|
data/lib/brut/junk_drawer.rb
CHANGED
@@ -51,29 +51,64 @@ class Clock
|
|
51
51
|
end
|
52
52
|
|
53
53
|
# A wrapper around a string to avoid adding a ton of methods to `String`.
|
54
|
+
#
|
55
|
+
# This may not survive to 1.0 - use at your own risk.
|
54
56
|
class RichString
|
57
|
+
# Create a RichString, return `nil` instead for blank strings or nil
|
58
|
+
# @param [String|nil] string the string to convert.
|
59
|
+
# @param [true|false] blank_is_nil if true, a blank string or nil is considered
|
60
|
+
# nil and nil is returned.
|
61
|
+
# @return [RichString|nil] a RichString containing the string or nil if the
|
62
|
+
# string is blank or nil, accounting for `blank_is_nil:`
|
55
63
|
def self.from_string(string,blank_is_nil:true)
|
64
|
+
if string.nil?
|
65
|
+
return nil
|
66
|
+
end
|
56
67
|
if string.to_s.strip == "" && blank_is_nil
|
57
68
|
return nil
|
58
69
|
end
|
59
70
|
self.new(string)
|
60
71
|
end
|
72
|
+
|
73
|
+
# Create a RichString. This calls `to_s` on its argument.
|
74
|
+
#
|
75
|
+
# @param [String|Object] string the string to wrap. `to_s` is called, so be sure
|
76
|
+
# that's what you want.
|
61
77
|
def initialize(string)
|
62
78
|
@string = string.to_s
|
63
79
|
end
|
64
80
|
|
81
|
+
# Return a snake_case version of the string. This will convert dashes to
|
82
|
+
# underscores, and use A-Z to know where to insert underscores. Repeated
|
83
|
+
# underscores are coalesced into one, and there will be no leading or trailing
|
84
|
+
# underscores in the string.
|
85
|
+
# @visibility private
|
65
86
|
def underscorized
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
87
|
+
RichString.new(
|
88
|
+
self.to_s.split(/([A-Z])/).
|
89
|
+
select { it.length > 0 }.
|
90
|
+
map { |part|
|
91
|
+
if part == part.upcase
|
92
|
+
"_#{part.downcase}"
|
93
|
+
else
|
94
|
+
part
|
95
|
+
end
|
96
|
+
}.
|
97
|
+
join.gsub("-","_").
|
98
|
+
gsub(/[_]+/,"_").
|
99
|
+
gsub(/^_+/,"").
|
100
|
+
gsub(/_+$/,"")
|
101
|
+
)
|
72
102
|
end
|
73
103
|
|
104
|
+
# Turn a string into CamelCase by captializing any
|
105
|
+
# letter that is preceded by an underscore or dash.
|
106
|
+
# @visibility private
|
74
107
|
def camelize
|
75
|
-
@string.to_s.split(/[_-]/).
|
76
|
-
|
108
|
+
@string.to_s.split(/[_-]/).select {
|
109
|
+
it.strip.length > 0
|
110
|
+
}.map {
|
111
|
+
RichString.new(it).capitalize(:first_only).to_s
|
77
112
|
}.join("")
|
78
113
|
end
|
79
114
|
|
@@ -85,6 +120,7 @@ class RichString
|
|
85
120
|
#
|
86
121
|
# @param [Array] options options suitable for Ruby's built-in `String#capitalize` method
|
87
122
|
# @return [RichString] a new string where the wrapped string has been capitalized
|
123
|
+
# @visibility private
|
88
124
|
def capitalize(*options)
|
89
125
|
if options.include?(:first_only)
|
90
126
|
options.delete(:first_only)
|
@@ -94,6 +130,9 @@ class RichString
|
|
94
130
|
end
|
95
131
|
end
|
96
132
|
|
133
|
+
# Takes a snake_case_or-kebab-case-string and returns it with the underscores
|
134
|
+
# and dashes replaced with spaces.
|
135
|
+
# @visibility private
|
97
136
|
def humanized
|
98
137
|
RichString.new(@string.tr("_-"," "))
|
99
138
|
end
|
@@ -102,7 +141,7 @@ class RichString
|
|
102
141
|
def to_str = self.to_s
|
103
142
|
def length = to_s.length
|
104
143
|
|
105
|
-
def to_s_or_nil = @string.empty? ? nil : self.to_s
|
144
|
+
def to_s_or_nil = @string.to_s.strip.empty? ? nil : self.to_s
|
106
145
|
|
107
146
|
def ==(other)
|
108
147
|
if other.kind_of?(RichString)
|
data/lib/brut/version.rb
CHANGED
@@ -0,0 +1,75 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "RichString" do
|
4
|
+
describe ".from_string" do
|
5
|
+
context "nil" do
|
6
|
+
it "returns nil when blank_is_nil is true" do
|
7
|
+
expect(RichString.from_string(nil)).to eq(nil)
|
8
|
+
end
|
9
|
+
it "returns nil when blank_is_nil is false" do
|
10
|
+
expect(RichString.from_string(nil, blank_is_nil: false)).to eq(nil)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
context "empty string" do
|
14
|
+
it "returns nil when blank_is_nil is true" do
|
15
|
+
expect(RichString.from_string(" ")).to eq(nil)
|
16
|
+
end
|
17
|
+
it "returns the string when blank_is_nil is false" do
|
18
|
+
expect(RichString.from_string(" ", blank_is_nil: false)).to eq(" ")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
context "non-empty string" do
|
22
|
+
it "returns a RichString containing the string" do
|
23
|
+
rich_string = RichString.from_string(" foo ")
|
24
|
+
expect(rich_string.to_str).to eq(" foo ")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
describe "#underscorized" do
|
29
|
+
it "returns self if there's nothing to convert" do
|
30
|
+
rich_string = RichString.new("alreadydone")
|
31
|
+
expect(rich_string.underscorized).to eq(rich_string)
|
32
|
+
end
|
33
|
+
it "splits up CamelCase, turns - into _ and downcases everything" do
|
34
|
+
rich_string = RichString.new("DashBoardPage")
|
35
|
+
expect(rich_string.underscorized.to_s).to eq("dash_board_page")
|
36
|
+
end
|
37
|
+
it "handles weird situations" do
|
38
|
+
rich_string = RichString.new("Dash--BoardHTMLPage---")
|
39
|
+
expect(rich_string.underscorized.to_s).to eq("dash_board_h_t_m_l_page")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
describe "#camelize" do
|
43
|
+
it "splits on _ and -, captializes each part and joins them" do
|
44
|
+
expect(RichString.new("a-normal-base-case").camelize).to eq("ANormalBaseCase")
|
45
|
+
expect(RichString.new("an__odd-_-----_one").camelize).to eq("AnOddOne")
|
46
|
+
expect(RichString.new("Somewhat-Close").camelize).to eq("SomewhatClose")
|
47
|
+
expect(RichString.new("AlreadyDone").camelize).to eq("AlreadyDone")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
describe "#capitalize" do
|
51
|
+
context "first_only" do
|
52
|
+
it "capitalizes the first letter, but does not affect the case of remaining letters" do
|
53
|
+
expect(RichString.new("this is a String").capitalize(:first_only).to_s).to eq("This is a String")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
context "no first_only" do
|
57
|
+
it "behaves as Ruby's stdlib does, which is to capitalize the first letter and downcase the rest" do
|
58
|
+
expect(RichString.new("this is a String").capitalize.to_s).to eq("This is a string")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
describe "#humanized" do
|
63
|
+
it "replaces - and _ with spaces" do
|
64
|
+
expect(RichString.new("this-is-a-string").humanized).to eq("this is a string")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
describe "#to_s_or_nil" do
|
68
|
+
it "returns nil if the string is empty" do
|
69
|
+
expect(RichString.new(" ").to_s_or_nil).to eq(nil)
|
70
|
+
end
|
71
|
+
it "returns the string if the string is not empty" do
|
72
|
+
expect(RichString.new(" foo ").to_s_or_nil).to eq(" foo ")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Bryant Copeland
|
@@ -581,6 +581,7 @@ files:
|
|
581
581
|
- brutrb.com/.vitepress/theme/custom.css
|
582
582
|
- brutrb.com/.vitepress/theme/index.js
|
583
583
|
- brutrb.com/.vitepress/theme/style.css
|
584
|
+
- brutrb.com/adrs.md
|
584
585
|
- brutrb.com/ai.md
|
585
586
|
- brutrb.com/assets.md
|
586
587
|
- brutrb.com/bin/build
|
@@ -610,6 +611,8 @@ files:
|
|
610
611
|
- brutrb.com/handlers.md
|
611
612
|
- brutrb.com/hooks.md
|
612
613
|
- brutrb.com/i18n.md
|
614
|
+
- brutrb.com/images/DevEnvironment.graffle
|
615
|
+
- brutrb.com/images/DevEnvironment.png
|
613
616
|
- brutrb.com/images/LogoPylon.png
|
614
617
|
- brutrb.com/images/LogoSquare.png
|
615
618
|
- brutrb.com/images/LogoStop.png
|
@@ -621,8 +624,6 @@ files:
|
|
621
624
|
- brutrb.com/images/dev-env-overview.png
|
622
625
|
- brutrb.com/images/dev-env-protocol.dot
|
623
626
|
- brutrb.com/images/dev-env-protocol.png
|
624
|
-
- brutrb.com/images/logo-300.png
|
625
|
-
- brutrb.com/images/logo.png
|
626
627
|
- brutrb.com/images/overview.graffle
|
627
628
|
- brutrb.com/images/overview.png
|
628
629
|
- brutrb.com/images/spa.dot
|
@@ -638,7 +639,6 @@ files:
|
|
638
639
|
- brutrb.com/lsp.md
|
639
640
|
- brutrb.com/markdown-examples.md
|
640
641
|
- brutrb.com/middleware.md
|
641
|
-
- brutrb.com/not-released.md
|
642
642
|
- brutrb.com/overview.md
|
643
643
|
- brutrb.com/package-lock.json
|
644
644
|
- brutrb.com/package.json
|
@@ -651,6 +651,7 @@ files:
|
|
651
651
|
- brutrb.com/recipes/custom-flash.md
|
652
652
|
- brutrb.com/recipes/indexed-forms.md
|
653
653
|
- brutrb.com/recipes/text-field-component.md
|
654
|
+
- brutrb.com/roadmap.md
|
654
655
|
- brutrb.com/routes.md
|
655
656
|
- brutrb.com/security.md
|
656
657
|
- brutrb.com/seed-data.md
|
@@ -663,6 +664,7 @@ files:
|
|
663
664
|
- docs/404.html
|
664
665
|
- docs/CNAME
|
665
666
|
- docs/SocialImage.png
|
667
|
+
- docs/adrs.html
|
666
668
|
- docs/ai.html
|
667
669
|
- docs/api/Brut.html
|
668
670
|
- docs/api/Brut/BackEnd.html
|
@@ -882,27 +884,30 @@ files:
|
|
882
884
|
- docs/api/method_list.html
|
883
885
|
- docs/api/top-level-namespace.html
|
884
886
|
- docs/assets.html
|
887
|
+
- docs/assets/DevEnvironment.DaFcVfwP.png
|
885
888
|
- docs/assets/LogoStop.Gb3tDhL1.png
|
886
889
|
- docs/assets/OverviewMetro.DUS-5fUZ.png
|
890
|
+
- docs/assets/adrs.md.JRxZ5uYE.js
|
891
|
+
- docs/assets/adrs.md.JRxZ5uYE.lean.js
|
887
892
|
- docs/assets/ai.md.Cy9GWnER.js
|
888
893
|
- docs/assets/ai.md.Cy9GWnER.lean.js
|
889
|
-
- docs/assets/app.
|
894
|
+
- docs/assets/app.Dm3x-DQc.js
|
890
895
|
- docs/assets/assets.md.7C3HWkga.js
|
891
896
|
- docs/assets/assets.md.7C3HWkga.lean.js
|
892
897
|
- docs/assets/brut-js.md.B4GYxQVw.js
|
893
898
|
- docs/assets/brut-js.md.B4GYxQVw.lean.js
|
894
899
|
- docs/assets/business-logic.md.BY4hGy0m.js
|
895
900
|
- docs/assets/business-logic.md.BY4hGy0m.lean.js
|
896
|
-
- docs/assets/chunks/@localSearchIndexroot.
|
897
|
-
- docs/assets/chunks/VPLocalSearchBox.
|
901
|
+
- docs/assets/chunks/@localSearchIndexroot.BqRrkR00.js
|
902
|
+
- docs/assets/chunks/VPLocalSearchBox.DL6bnqee.js
|
898
903
|
- docs/assets/chunks/framework.1L-BeKqY.js
|
899
|
-
- docs/assets/chunks/theme.
|
904
|
+
- docs/assets/chunks/theme.BXdlf6e8.js
|
900
905
|
- docs/assets/cli.md.CjsktgFz.js
|
901
906
|
- docs/assets/cli.md.CjsktgFz.lean.js
|
902
|
-
- docs/assets/components.md.
|
903
|
-
- docs/assets/components.md.
|
904
|
-
- docs/assets/configuration.md.
|
905
|
-
- docs/assets/configuration.md.
|
907
|
+
- docs/assets/components.md.Pg_Lo35G.js
|
908
|
+
- docs/assets/components.md.Pg_Lo35G.lean.js
|
909
|
+
- docs/assets/configuration.md.BfeGnEci.js
|
910
|
+
- docs/assets/configuration.md.BfeGnEci.lean.js
|
906
911
|
- docs/assets/css.md.CltvJqAa.js
|
907
912
|
- docs/assets/css.md.CltvJqAa.lean.js
|
908
913
|
- docs/assets/custom-element-tests.md.B_rbta32.js
|
@@ -913,14 +918,13 @@ files:
|
|
913
918
|
- docs/assets/database-schema.md.CSYk6E6v.lean.js
|
914
919
|
- docs/assets/deployment.md.BLseERGV.js
|
915
920
|
- docs/assets/deployment.md.BLseERGV.lean.js
|
916
|
-
- docs/assets/dev-env-overview.Gj7NWM8-.png
|
917
921
|
- docs/assets/dev-env-protocol.DysDAtnz.png
|
918
|
-
- docs/assets/dev-environment.md.
|
919
|
-
- docs/assets/dev-environment.md.
|
922
|
+
- docs/assets/dev-environment.md.Dy6EldaM.js
|
923
|
+
- docs/assets/dev-environment.md.Dy6EldaM.lean.js
|
920
924
|
- docs/assets/dir-structure.md.CWir1pic.js
|
921
925
|
- docs/assets/dir-structure.md.CWir1pic.lean.js
|
922
|
-
- docs/assets/doc-conventions.md.
|
923
|
-
- docs/assets/doc-conventions.md.
|
926
|
+
- docs/assets/doc-conventions.md.DOkAuXlt.js
|
927
|
+
- docs/assets/doc-conventions.md.DOkAuXlt.lean.js
|
924
928
|
- docs/assets/end-to-end-tests.md.DzqRpZ43.js
|
925
929
|
- docs/assets/end-to-end-tests.md.DzqRpZ43.lean.js
|
926
930
|
- docs/assets/features.md.DPFXsy0z.js
|
@@ -929,18 +933,18 @@ files:
|
|
929
933
|
- docs/assets/flash-and-session.md.nPvUpnUx.lean.js
|
930
934
|
- docs/assets/form-constraints.md.x5tNpTTI.js
|
931
935
|
- docs/assets/form-constraints.md.x5tNpTTI.lean.js
|
932
|
-
- docs/assets/forms.md.
|
933
|
-
- docs/assets/forms.md.
|
934
|
-
- docs/assets/getting-started.md.
|
935
|
-
- docs/assets/getting-started.md.
|
936
|
+
- docs/assets/forms.md.BQZlCwvi.js
|
937
|
+
- docs/assets/forms.md.BQZlCwvi.lean.js
|
938
|
+
- docs/assets/getting-started.md.BcXnNuD6.js
|
939
|
+
- docs/assets/getting-started.md.BcXnNuD6.lean.js
|
936
940
|
- docs/assets/handlers.md.Chyri6KA.js
|
937
941
|
- docs/assets/handlers.md.Chyri6KA.lean.js
|
938
942
|
- docs/assets/hooks.md.Jmb5VOLA.js
|
939
943
|
- docs/assets/hooks.md.Jmb5VOLA.lean.js
|
940
944
|
- docs/assets/i18n.md.xQhiGo1G.js
|
941
945
|
- docs/assets/i18n.md.xQhiGo1G.lean.js
|
942
|
-
- docs/assets/index.md.
|
943
|
-
- docs/assets/index.md.
|
946
|
+
- docs/assets/index.md.Bn9e0sRJ.js
|
947
|
+
- docs/assets/index.md.Bn9e0sRJ.lean.js
|
944
948
|
- docs/assets/instrumentation.md.BgcaGVYH.js
|
945
949
|
- docs/assets/instrumentation.md.BgcaGVYH.lean.js
|
946
950
|
- docs/assets/javascript.md.DzrMxUmI.js
|
@@ -957,10 +961,8 @@ files:
|
|
957
961
|
- docs/assets/markdown-examples.md.CCFEQO44.lean.js
|
958
962
|
- docs/assets/middleware.md.Czz_UlJN.js
|
959
963
|
- docs/assets/middleware.md.Czz_UlJN.lean.js
|
960
|
-
- docs/assets/
|
961
|
-
- docs/assets/
|
962
|
-
- docs/assets/overview.md.Bdq4qt3L.js
|
963
|
-
- docs/assets/overview.md.Bdq4qt3L.lean.js
|
964
|
+
- docs/assets/overview.md.iMnwLO4x.js
|
965
|
+
- docs/assets/overview.md.iMnwLO4x.lean.js
|
964
966
|
- docs/assets/pages.md.B7Hc-i6H.js
|
965
967
|
- docs/assets/pages.md.B7Hc-i6H.lean.js
|
966
968
|
- docs/assets/recipes_alternate-layouts.md.BwEytl59.js
|
@@ -975,6 +977,8 @@ files:
|
|
975
977
|
- docs/assets/recipes_indexed-forms.md.CstYyOSo.lean.js
|
976
978
|
- docs/assets/recipes_text-field-component.md.H4wLAK0Z.js
|
977
979
|
- docs/assets/recipes_text-field-component.md.H4wLAK0Z.lean.js
|
980
|
+
- docs/assets/roadmap.md.C6PRi0DX.js
|
981
|
+
- docs/assets/roadmap.md.C6PRi0DX.lean.js
|
978
982
|
- docs/assets/routes.md.B8kfUPHU.js
|
979
983
|
- docs/assets/routes.md.B8kfUPHU.lean.js
|
980
984
|
- docs/assets/security.md.C0G_AZR-.js
|
@@ -984,9 +988,9 @@ files:
|
|
984
988
|
- docs/assets/spa.qejUdp-5.png
|
985
989
|
- docs/assets/space-time-continuum.md.xl44xDos.js
|
986
990
|
- docs/assets/space-time-continuum.md.xl44xDos.lean.js
|
987
|
-
- docs/assets/style.
|
988
|
-
- docs/assets/tutorial.md.
|
989
|
-
- docs/assets/tutorial.md.
|
991
|
+
- docs/assets/style.B1z60PPQ.css
|
992
|
+
- docs/assets/tutorial.md.BYXj4cOu.js
|
993
|
+
- docs/assets/tutorial.md.BYXj4cOu.lean.js
|
990
994
|
- docs/assets/unit-tests.md.DUGrnLj5.js
|
991
995
|
- docs/assets/unit-tests.md.DUGrnLj5.lean.js
|
992
996
|
- docs/assets/why.md.C-hk5xgJ.js
|
@@ -1115,7 +1119,6 @@ files:
|
|
1115
1119
|
- docs/lsp.html
|
1116
1120
|
- docs/markdown-examples.html
|
1117
1121
|
- docs/middleware.html
|
1118
|
-
- docs/not-released.html
|
1119
1122
|
- docs/overview.html
|
1120
1123
|
- docs/pages.html
|
1121
1124
|
- docs/recipes/alternate-layouts.html
|
@@ -1124,6 +1127,7 @@ files:
|
|
1124
1127
|
- docs/recipes/custom-flash.html
|
1125
1128
|
- docs/recipes/indexed-forms.html
|
1126
1129
|
- docs/recipes/text-field-component.html
|
1130
|
+
- docs/roadmap.html
|
1127
1131
|
- docs/routes.html
|
1128
1132
|
- docs/security.html
|
1129
1133
|
- docs/seed-data.html
|
@@ -1285,6 +1289,7 @@ files:
|
|
1285
1289
|
- specs/brut/front_end/forms/input.spec.rb
|
1286
1290
|
- specs/brut/front_end/forms/radio_button_group_input.spec.rb
|
1287
1291
|
- specs/brut/front_end/forms/select_input.spec.rb
|
1292
|
+
- specs/brut/junk_drawer.spec.rb
|
1288
1293
|
- specs/spec_helper.rb
|
1289
1294
|
- specs/support.rb
|
1290
1295
|
- specs/support/matchers.rb
|
Binary file
|
data/brutrb.com/images/logo.png
DELETED
Binary file
|