From a19362630ea59c0b4714d1f6605a40b39e86279b Mon Sep 17 00:00:00 2001
From: "github-merge-queue[bot]"
Date: Wed, 18 Sep 2024 11:06:38 +0000
Subject: [PATCH] deploy: 82a15884ada4c086a786ad34a940fa521030c3d0
---
.build | 5 +-
404.html | 2 +-
Mix.Tasks.CancelSubscription.html | 2 +-
Mix.Tasks.CleanClickhouse.html | 2 +-
Mix.Tasks.CreateFreeSubscription.html | 2 +-
Mix.Tasks.DownloadCountryDatabase.html | 2 +-
Mix.Tasks.GenerateReferrerFavicons.html | 2 +-
Mix.Tasks.PullSandboxSubscription.html | 2 +-
Mix.Tasks.SendPageview.html | 2 +-
ObanErrorReporter.html | 2 +-
Plausible.AsyncInsertRepo.html | 18 +-
Plausible.Auth.ApiKey.html | 2 +-
Plausible.Auth.ApiKeyAdmin.html | 2 +-
Plausible.Auth.EmailActivationCode.html | 2 +-
Plausible.Auth.EmailVerification.html | 2 +-
Plausible.Auth.GracePeriod.html | 2 +-
Plausible.Auth.Invitation.html | 2 +-
Plausible.Auth.Password.html | 2 +-
Plausible.Auth.TOTP.EncryptedBinary.html | 2 +-
Plausible.Auth.TOTP.RecoveryCode.html | 2 +-
Plausible.Auth.TOTP.Vault.html | 2 +-
Plausible.Auth.TOTP.html | 2 +-
Plausible.Auth.Token.html | 2 +-
Plausible.Auth.User.html | 2 +-
Plausible.Auth.UserAdmin.html | 2 +-
Plausible.Auth.UserSession.html | 2 +-
Plausible.Auth.html | 2 +-
Plausible.Billing.Ecto.Feature.html | 2 +-
Plausible.Billing.Ecto.FeatureList.html | 2 +-
Plausible.Billing.Ecto.Limit.html | 2 +-
Plausible.Billing.EnterprisePlan.html | 2 +-
Plausible.Billing.EnterprisePlanAdmin.html | 2 +-
Plausible.Billing.Feature.html | 2 +-
Plausible.Billing.PaddleApi.html | 2 +-
Plausible.Billing.Plans.html | 2 +-
Plausible.Billing.Quota.html | 2 +-
Plausible.Billing.SiteLocker.html | 2 +-
Plausible.Billing.Subscription.Status.html | 2 +-
Plausible.Billing.html | 2 +-
Plausible.Cache.Adapter.html | 2 +-
Plausible.Cache.Stats.html | 2 +-
Plausible.Cache.Warmer.html | 2 +-
Plausible.Cache.html | 2 +-
Plausible.ChangesetHelpers.html | 2 +-
Plausible.Cldr.AcceptLanguage.html | 250 ++++++-------
Plausible.Cldr.Currency.html | 162 ++++-----
Plausible.Cldr.Locale.html | 50 +--
Plausible.Cldr.Number.Cardinal.html | 20 +-
Plausible.Cldr.Number.Format.html | 50 +--
Plausible.Cldr.Number.Formatter.Decimal.html | 2 +-
Plausible.Cldr.Number.Ordinal.html | 20 +-
Plausible.Cldr.Number.PluralRule.Range.html | 2 +-
Plausible.Cldr.Number.Symbol.html | 16 +-
Plausible.Cldr.Number.System.html | 56 +--
Plausible.Cldr.Number.Transliterate.html | 22 +-
Plausible.Cldr.Number.html | 178 ++++-----
Plausible.Cldr.Rbnf.NumberSystem.html | 14 +-
Plausible.Cldr.Rbnf.Ordinal.html | 18 +-
Plausible.Cldr.Rbnf.Spellout.html | 14 +-
Plausible.Cldr.html | 184 +++++-----
Plausible.ClickhouseEventV2.html | 2 +-
Plausible.ClickhouseLocationData.html | 2 +-
Plausible.ClickhouseRepo.html | 18 +-
Plausible.ClickhouseSessionV2.BoolUInt8.html | 2 +-
Plausible.ClickhouseSessionV2.html | 2 +-
Plausible.ConfigHelpers.html | 2 +-
Plausible.CrmExtensions.html | 2 +-
Plausible.DataCase.html | 2 +-
...gration.CleanUpDemoSiteReferrerSource.html | 2 +-
Plausible.DataMigration.LocationsSync.html | 2 +-
Plausible.DataMigration.NumericIDs.html | 2 +-
...Migration.PopulateEventSessionColumns.html | 2 +-
Plausible.DataMigration.Repo.html | 18 +-
Plausible.DataMigration.SiteImports.html | 2 +-
...sible.DataMigration.VersionedSessions.html | 2 +-
Plausible.DataMigration.html | 2 +-
Plausible.DebugReplayInfo.html | 2 +-
Plausible.Ecto.EventName.html | 2 +-
Plausible.Ecto.Types.CompiledRegex.html | 2 +-
Plausible.Exports.html | 20 +-
Plausible.Factory.html | 2 +-
Plausible.Funnel.Const.html | 2 +-
Plausible.Funnel.Step.html | 2 +-
Plausible.Funnel.html | 2 +-
Plausible.Funnels.html | 2 +-
Plausible.Geo.html | 66 ++--
Plausible.Goal.Revenue.html | 2 +-
Plausible.Goal.html | 2 +-
Plausible.Goals.html | 2 +-
Plausible.Google.API.Mock.html | 2 +-
Plausible.Google.API.html | 2 +-
Plausible.Google.GA4.API.html | 2 +-
Plausible.Google.GA4.HTTP.html | 2 +-
Plausible.Google.GA4.ReportRequest.html | 2 +-
Plausible.Google.HTTP.html | 2 +-
Plausible.HTTPClient.Interface.html | 2 +-
Plausible.HTTPClient.Non200Error.html | 2 +-
Plausible.HTTPClient.html | 2 +-
Plausible.HelpScout.Vault.html | 2 +-
Plausible.HelpScout.html | 2 +-
Plausible.Helpers.JSON.html | 2 +-
Plausible.ImportDeletionRepo.html | 18 +-
Plausible.Imported.Buffer.html | 2 +-
Plausible.Imported.CSVImporter.html | 38 +-
Plausible.Imported.GoogleAnalytics4.html | 2 +-
Plausible.Imported.ImportSources.html | 2 +-
Plausible.Imported.Importer.html | 30 +-
Plausible.Imported.NoopImporter.html | 2 +-
Plausible.Imported.SiteImport.html | 2 +-
Plausible.Imported.UniversalAnalytics.html | 2 +-
Plausible.Imported.html | 2 +-
Plausible.IngestRepo.html | 18 +-
Plausible.Ingestion.Counters.Buffer.html | 2 +-
Plausible.Ingestion.Counters.Record.html | 2 +-
...e.Ingestion.Counters.TelemetryHandler.html | 2 +-
Plausible.Ingestion.Counters.html | 2 +-
Plausible.Ingestion.Event.Revenue.html | 2 +-
Plausible.Ingestion.Event.html | 2 +-
Plausible.Ingestion.Request.Revenue.html | 2 +-
Plausible.Ingestion.Request.html | 2 +-
Plausible.License.html | 2 +-
Plausible.LiveViewTest.html | 2 +-
Plausible.Mailer.html | 2 +-
Plausible.MigrationUtils.html | 2 +-
Plausible.OpenTelemetry.Sampler.html | 2 +-
Plausible.PaddleApi.Mock.html | 2 +-
Plausible.Pagination.html | 2 +-
Plausible.Plugins.API.Capabilities.html | 2 +-
Plausible.Plugins.API.CustomProps.html | 2 +-
Plausible.Plugins.API.Funnels.html | 2 +-
Plausible.Plugins.API.Goals.html | 2 +-
Plausible.Plugins.API.SharedLinks.html | 2 +-
Plausible.Plugins.API.Token.html | 2 +-
Plausible.Plugins.API.Tokens.html | 2 +-
...sible.PromEx.Plugins.PlausibleMetrics.html | 2 +-
Plausible.PromEx.html | 2 +-
Plausible.Props.html | 2 +-
Plausible.Purge.html | 2 +-
Plausible.RateLimit.html | 2 +-
Plausible.Release.html | 2 +-
Plausible.Repo.html | 2 +-
Plausible.RequestLogger.html | 2 +-
Plausible.S3.html | 16 +-
Plausible.Sentry.Client.html | 2 +-
Plausible.SentryFilter.html | 2 +-
Plausible.Session.CacheStore.html | 2 +-
Plausible.Session.Salts.html | 2 +-
Plausible.Shield.CountryRule.html | 2 +-
Plausible.Shield.CountryRuleCache.html | 2 +-
Plausible.Shield.HostnameRule.html | 2 +-
Plausible.Shield.HostnameRuleCache.html | 2 +-
Plausible.Shield.IPRule.html | 2 +-
Plausible.Shield.IPRuleCache.html | 2 +-
Plausible.Shield.PageRule.html | 2 +-
Plausible.Shield.PageRuleCache.html | 2 +-
Plausible.Shields.html | 2 +-
Plausible.Site.Cache.html | 2 +-
Plausible.Site.Domain.html | 2 +-
Plausible.Site.GateKeeper.html | 2 +-
Plausible.Site.GoogleAuth.html | 2 +-
Plausible.Site.ImportedData.html | 2 +-
Plausible.Site.InstallationMeta.html | 2 +-
Plausible.Site.Membership.html | 2 +-
...ble.Site.Memberships.AcceptInvitation.html | 2 +-
...ble.Site.Memberships.CreateInvitation.html | 2 +-
...ble.Site.Memberships.RejectInvitation.html | 2 +-
...ble.Site.Memberships.RemoveInvitation.html | 2 +-
Plausible.Site.Memberships.html | 2 +-
Plausible.Site.MonthlyReport.html | 2 +-
Plausible.Site.Removal.html | 2 +-
Plausible.Site.SharedLink.html | 2 +-
Plausible.Site.TrafficChangeNotification.html | 2 +-
Plausible.Site.UserPreference.html | 2 +-
Plausible.Site.WeeklyReport.html | 2 +-
Plausible.Site.html | 2 +-
Plausible.SiteAdmin.html | 2 +-
Plausible.Sites.html | 2 +-
Plausible.Stats.Aggregate.html | 2 +-
Plausible.Stats.Base.html | 2 +-
Plausible.Stats.Breakdown.html | 2 +-
Plausible.Stats.Clickhouse.html | 2 +-
Plausible.Stats.Compare.html | 2 +-
Plausible.Stats.Comparisons.html | 2 +-
Plausible.Stats.CurrentVisitors.html | 2 +-
Plausible.Stats.CustomProps.html | 2 +-
Plausible.Stats.DateTimeRange.html | 2 +-
Plausible.Stats.EmailReport.html | 2 +-
Plausible.Stats.FilterSuggestions.html | 2 +-
Plausible.Stats.Filters.Utils.html | 2 +-
Plausible.Stats.Filters.html | 14 +-
Plausible.Stats.Funnel.html | 2 +-
Plausible.Stats.Goal.Revenue.html | 2 +-
Plausible.Stats.Imported.Base.html | 2 +-
Plausible.Stats.Imported.SQL.Expression.html | 2 +-
...sible.Stats.Imported.SQL.WhereBuilder.html | 2 +-
Plausible.Stats.Imported.html | 2 +-
Plausible.Stats.Interval.html | 2 +-
Plausible.Stats.JSONSchema.Utils.html | 342 ++++++++++++++++++
Plausible.Stats.JSONSchema.html | 6 +-
Plausible.Stats.Legacy.Dimensions.html | 2 +-
Plausible.Stats.Legacy.QueryBuilder.html | 2 +-
Plausible.Stats.Metrics.html | 2 +-
Plausible.Stats.Query.html | 2 +-
Plausible.Stats.QueryOptimizer.html | 2 +-
Plausible.Stats.QueryResult.html | 2 +-
Plausible.Stats.SQL.Expression.html | 2 +-
Plausible.Stats.SQL.Fragments.html | 6 +-
Plausible.Stats.SQL.SpecialMetrics.html | 2 +-
Plausible.Stats.SQL.WhereBuilder.html | 2 +-
Plausible.Stats.Sampling.html | 2 +-
Plausible.Stats.TableDecider.html | 2 +-
Plausible.Stats.Time.html | 2 +-
Plausible.Stats.Timeseries.html | 2 +-
Plausible.Stats.Util.html | 2 +-
Plausible.Stats.html | 2 +-
Plausible.Test.Support.HTML.html | 2 +-
Plausible.Test.Support.HTTPMocker.html | 2 +-
Plausible.TestUtils.html | 2 +-
Plausible.Themes.html | 2 +-
Plausible.Timezones.html | 2 +-
Plausible.Users.html | 2 +-
Plausible.Verification.Check.html | 2 +-
Plausible.Verification.Checks.CSP.html | 2 +-
Plausible.Verification.Checks.FetchBody.html | 2 +-
...ible.Verification.Checks.Installation.html | 2 +-
Plausible.Verification.Checks.ScanBody.html | 2 +-
Plausible.Verification.Checks.Snippet.html | 2 +-
....Verification.Checks.SnippetCacheBust.html | 2 +-
Plausible.Verification.Checks.html | 2 +-
...sible.Verification.Diagnostics.Result.html | 2 +-
Plausible.Verification.Diagnostics.html | 2 +-
Plausible.Verification.Errors.html | 2 +-
Plausible.Verification.State.html | 2 +-
Plausible.Verification.URL.html | 2 +-
Plausible.Verification.html | 2 +-
Plausible.Workers.AcceptTrafficUntil.html | 2 +-
Plausible.Workers.CheckUsage.html | 2 +-
Plausible.Workers.CleanInvitations.html | 2 +-
Plausible.Workers.CleanUserSessions.html | 2 +-
Plausible.Workers.ClickhouseCleanSites.html | 2 +-
...Workers.ExpireDomainChangeTransitions.html | 2 +-
Plausible.Workers.ExportAnalytics.html | 2 +-
Plausible.Workers.ImportAnalytics.html | 2 +-
...e.Workers.LocalImportAnalyticsCleaner.html | 2 +-
Plausible.Workers.LockSites.html | 2 +-
Plausible.Workers.NotifyAnnualRenewal.html | 2 +-
...sible.Workers.NotifyExportedAnalytics.html | 2 +-
Plausible.Workers.RotateSalts.html | 2 +-
Plausible.Workers.ScheduleEmailReports.html | 2 +-
Plausible.Workers.SendCheckStatsEmails.html | 2 +-
Plausible.Workers.SendEmailReport.html | 2 +-
Plausible.Workers.SendSiteSetupEmails.html | 2 +-
Plausible.Workers.SendTrialNotifications.html | 2 +-
Plausible.Workers.TrafficChangeNotifier.html | 2 +-
Plausible.epub | Bin 765330 -> 766623 bytes
Plausible.html | 2 +-
PlausibleWeb.AdminController.html | 2 +-
PlausibleWeb.Api.ExternalController.html | 2 +-
PlausibleWeb.Api.ExternalSitesController.html | 2 +-
PlausibleWeb.Api.ExternalStatsController.html | 2 +-
PlausibleWeb.Api.Helpers.html | 2 +-
PlausibleWeb.Api.InternalController.html | 2 +-
PlausibleWeb.Api.PaddleController.html | 2 +-
PlausibleWeb.Api.StatsController.html | 18 +-
PlausibleWeb.AuthController.html | 2 +-
PlausibleWeb.AuthPlug.html | 2 +-
PlausibleWeb.AuthView.html | 2 +-
PlausibleWeb.AvatarController.html | 2 +-
PlausibleWeb.BillingController.html | 2 +-
PlausibleWeb.BillingView.html | 2 +-
PlausibleWeb.Captcha.html | 2 +-
...leWeb.Components.Billing.PlanBenefits.html | 2 +-
...Components.FirstDashboardLaunchBanner.html | 2 +-
PlausibleWeb.Components.FlowProgress.html | 2 +-
PlausibleWeb.Components.Generic.html | 2 +-
PlausibleWeb.Components.Google.html | 2 +-
PlausibleWeb.Components.Settings.html | 2 +-
PlausibleWeb.Components.Site.Feature.html | 2 +-
PlausibleWeb.Components.TwoFactor.html | 2 +-
PlausibleWeb.ConnCase.html | 2 +-
PlausibleWeb.ControllerHelpers.html | 2 +-
PlausibleWeb.Controllers.API.Revenue.html | 2 +-
PlausibleWeb.DebugController.html | 2 +-
PlausibleWeb.DebugView.html | 2 +-
PlausibleWeb.Dogfood.html | 2 +-
PlausibleWeb.Email.html | 2 +-
PlausibleWeb.EmailView.html | 2 +-
PlausibleWeb.Endpoint.html | 2 +-
PlausibleWeb.ErrorHelpers.html | 2 +-
PlausibleWeb.ErrorReportController.html | 2 +-
PlausibleWeb.ErrorView.html | 2 +-
PlausibleWeb.Favicon.html | 2 +-
PlausibleWeb.FirstLaunchPlug.Test.html | 2 +-
PlausibleWeb.FirstLaunchPlug.html | 2 +-
PlausibleWeb.Flows.html | 2 +-
PlausibleWeb.FormHelpers.html | 2 +-
PlausibleWeb.GoogleAnalyticsController.html | 2 +-
PlausibleWeb.GoogleAnalyticsView.html | 2 +-
PlausibleWeb.HelpScoutController.html | 2 +-
PlausibleWeb.HelpScoutView.html | 2 +-
PlausibleWeb.InvitationController.html | 2 +-
PlausibleWeb.LayoutView.JWT.html | 2 +-
PlausibleWeb.LayoutView.html | 2 +-
PlausibleWeb.Live.AuthContext.html | 2 +-
PlausibleWeb.Live.CSVExport.html | 2 +-
PlausibleWeb.Live.CSVImport.html | 2 +-
PlausibleWeb.Live.ChoosePlan.html | 2 +-
...Live.Components.ComboBox.StaticSearch.html | 2 +-
PlausibleWeb.Live.Components.ComboBox.html | 2 +-
PlausibleWeb.Live.Components.Form.html | 2 +-
PlausibleWeb.Live.Components.Modal.html | 44 +--
PlausibleWeb.Live.Components.Pagination.html | 2 +-
...sibleWeb.Live.Components.Verification.html | 2 +-
PlausibleWeb.Live.Components.Visitors.html | 2 +-
PlausibleWeb.Live.Flash.html | 2 +-
PlausibleWeb.Live.FunnelSettings.Form.html | 2 +-
PlausibleWeb.Live.FunnelSettings.List.html | 2 +-
PlausibleWeb.Live.FunnelSettings.html | 2 +-
PlausibleWeb.Live.GoalSettings.Form.html | 2 +-
PlausibleWeb.Live.GoalSettings.List.html | 2 +-
PlausibleWeb.Live.GoalSettings.html | 2 +-
PlausibleWeb.Live.ImportsExportsSettings.html | 2 +-
PlausibleWeb.Live.Installation.html | 2 +-
PlausibleWeb.Live.Plugins.API.Settings.html | 2 +-
PlausibleWeb.Live.Plugins.API.TokenForm.html | 2 +-
PlausibleWeb.Live.PropsSettings.Form.html | 2 +-
PlausibleWeb.Live.PropsSettings.List.html | 2 +-
PlausibleWeb.Live.PropsSettings.html | 2 +-
PlausibleWeb.Live.RegisterForm.html | 2 +-
PlausibleWeb.Live.ResetPasswordForm.html | 2 +-
PlausibleWeb.Live.SentryContext.html | 2 +-
PlausibleWeb.Live.Shields.Countries.html | 2 +-
PlausibleWeb.Live.Shields.CountryRules.html | 2 +-
PlausibleWeb.Live.Shields.HostnameRules.html | 2 +-
PlausibleWeb.Live.Shields.Hostnames.html | 2 +-
PlausibleWeb.Live.Shields.IPAddresses.html | 2 +-
PlausibleWeb.Live.Shields.IPRules.html | 2 +-
PlausibleWeb.Live.Shields.PageRules.html | 2 +-
PlausibleWeb.Live.Shields.Pages.html | 2 +-
PlausibleWeb.Live.Sites.html | 2 +-
PlausibleWeb.Live.Verification.html | 2 +-
PlausibleWeb.MJML.StatsReport.html | 2 +-
PlausibleWeb.PageController.html | 2 +-
PlausibleWeb.PageView.html | 2 +-
....Plugins.API.Controllers.Capabilities.html | 2 +-
...b.Plugins.API.Controllers.CustomProps.html | 2 +-
...leWeb.Plugins.API.Controllers.Funnels.html | 2 +-
...ibleWeb.Plugins.API.Controllers.Goals.html | 2 +-
...b.Plugins.API.Controllers.SharedLinks.html | 2 +-
PlausibleWeb.Plugins.API.Errors.html | 2 +-
...eWeb.Plugins.API.Schemas.Capabilities.html | 2 +-
...API.Schemas.CustomProp.DisableRequest.html | 2 +-
....API.Schemas.CustomProp.EnableRequest.html | 2 +-
...s.API.Schemas.CustomProp.ListResponse.html | 2 +-
...bleWeb.Plugins.API.Schemas.CustomProp.html | 2 +-
PlausibleWeb.Plugins.API.Schemas.Error.html | 2 +-
...gins.API.Schemas.Funnel.CreateRequest.html | 2 +-
...ugins.API.Schemas.Funnel.ListResponse.html | 2 +-
PlausibleWeb.Plugins.API.Schemas.Funnel.html | 2 +-
...chemas.Goal.CreateRequest.CustomEvent.html | 2 +-
...I.Schemas.Goal.CreateRequest.Pageview.html | 2 +-
...PI.Schemas.Goal.CreateRequest.Revenue.html | 2 +-
...lugins.API.Schemas.Goal.CreateRequest.html | 2 +-
....Plugins.API.Schemas.Goal.CustomEvent.html | 2 +-
...ns.API.Schemas.Goal.DeleteBulkRequest.html | 2 +-
...Plugins.API.Schemas.Goal.ListResponse.html | 2 +-
...Web.Plugins.API.Schemas.Goal.Pageview.html | 2 +-
...eWeb.Plugins.API.Schemas.Goal.Revenue.html | 2 +-
...ibleWeb.Plugins.API.Schemas.Goal.Type.html | 2 +-
PlausibleWeb.Plugins.API.Schemas.Goal.html | 2 +-
PlausibleWeb.Plugins.API.Schemas.Link.html | 2 +-
...sibleWeb.Plugins.API.Schemas.NotFound.html | 2 +-
...lugins.API.Schemas.PaginationMetadata.html | 2 +-
...b.Plugins.API.Schemas.PaymentRequired.html | 2 +-
....API.Schemas.SharedLink.CreateRequest.html | 2 +-
...s.API.Schemas.SharedLink.ListResponse.html | 2 +-
...bleWeb.Plugins.API.Schemas.SharedLink.html | 2 +-
...eWeb.Plugins.API.Schemas.Unauthorized.html | 2 +-
...ugins.API.Schemas.UnprocessableEntity.html | 2 +-
PlausibleWeb.Plugins.API.Spec.html | 2 +-
...bleWeb.Plugins.API.Views.Capabilities.html | 2 +-
...sibleWeb.Plugins.API.Views.CustomProp.html | 2 +-
PlausibleWeb.Plugins.API.Views.Error.html | 2 +-
PlausibleWeb.Plugins.API.Views.Funnel.html | 2 +-
PlausibleWeb.Plugins.API.Views.Goal.html | 2 +-
...sibleWeb.Plugins.API.Views.Pagination.html | 2 +-
...sibleWeb.Plugins.API.Views.SharedLink.html | 2 +-
PlausibleWeb.PluginsAPICase.html | 2 +-
PlausibleWeb.Plugs.AuthorizePluginsAPI.html | 2 +-
PlausibleWeb.Plugs.AuthorizePublicAPI.html | 8 +-
PlausibleWeb.Plugs.AuthorizeSiteAccess.html | 2 +-
PlausibleWeb.Plugs.ErrorHandler.html | 2 +-
...bleWeb.Plugs.MaybeDisableRegistration.html | 2 +-
PlausibleWeb.Plugs.NoRobots.html | 2 +-
PlausibleWeb.Plugs.UserSessionTouch.html | 2 +-
PlausibleWeb.RefInspector.html | 2 +-
PlausibleWeb.RemoteIP.html | 2 +-
PlausibleWeb.RequireAccountPlug.html | 2 +-
PlausibleWeb.RequireLoggedOutPlug.html | 2 +-
PlausibleWeb.Router.html | 2 +-
PlausibleWeb.Site.MembershipController.html | 2 +-
PlausibleWeb.Site.MembershipView.html | 2 +-
PlausibleWeb.SiteController.html | 2 +-
PlausibleWeb.SiteView.html | 2 +-
PlausibleWeb.StatsController.html | 2 +-
PlausibleWeb.StatsView.html | 2 +-
PlausibleWeb.Tracker.html | 2 +-
PlausibleWeb.TwoFactor.Session.html | 2 +-
PlausibleWeb.UnsubscribeController.html | 2 +-
PlausibleWeb.UnsubscribeView.html | 2 +-
PlausibleWeb.UserAuth.html | 2 +-
PlausibleWeb.html | 2 +-
api-reference.html | 11 +-
contributing.html | 2 +-
...ta-AEAAEAEF.js => search_data-80C474AF.js} | 2 +-
...-800E1FDC.js => sidebar_items-DEB0EA1A.js} | 2 +-
readme.html | 2 +-
search.html | 4 +-
418 files changed, 1445 insertions(+), 1093 deletions(-)
create mode 100644 Plausible.Stats.JSONSchema.Utils.html
rename dist/{search_data-AEAAEAEF.js => search_data-80C474AF.js} (63%)
rename dist/{sidebar_items-800E1FDC.js => sidebar_items-DEB0EA1A.js} (58%)
diff --git a/.build b/.build
index 0121f700d..b9c3a8d2d 100644
--- a/.build
+++ b/.build
@@ -194,6 +194,7 @@ Plausible.Stats.Imported.SQL.Expression.html
Plausible.Stats.Imported.SQL.WhereBuilder.html
Plausible.Stats.Imported.html
Plausible.Stats.Interval.html
+Plausible.Stats.JSONSchema.Utils.html
Plausible.Stats.JSONSchema.html
Plausible.Stats.Legacy.Dimensions.html
Plausible.Stats.Legacy.QueryBuilder.html
@@ -437,8 +438,8 @@ dist/merriweather-latin-ext-300-normal-K6L27CZ5.woff2
dist/merriweather-vietnamese-300-italic-EHHNZPUO.woff2
dist/merriweather-vietnamese-300-normal-U376L4Z4.woff2
dist/remixicon-NKANDIL5.woff2
-dist/search_data-AEAAEAEF.js
-dist/sidebar_items-800E1FDC.js
+dist/search_data-80C474AF.js
+dist/sidebar_items-DEB0EA1A.js
index.html
readme.html
search.html
diff --git a/404.html b/404.html
index 202a14647..69ab8e896 100644
--- a/404.html
+++ b/404.html
@@ -16,7 +16,7 @@
-
+
diff --git a/Mix.Tasks.CancelSubscription.html b/Mix.Tasks.CancelSubscription.html
index 1a2677bec..d7434cf9f 100644
--- a/Mix.Tasks.CancelSubscription.html
+++ b/Mix.Tasks.CancelSubscription.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Mix.Tasks.CleanClickhouse.html b/Mix.Tasks.CleanClickhouse.html
index 221463466..54273c4c9 100644
--- a/Mix.Tasks.CleanClickhouse.html
+++ b/Mix.Tasks.CleanClickhouse.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Mix.Tasks.CreateFreeSubscription.html b/Mix.Tasks.CreateFreeSubscription.html
index 65da90d30..bfe529e7e 100644
--- a/Mix.Tasks.CreateFreeSubscription.html
+++ b/Mix.Tasks.CreateFreeSubscription.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Mix.Tasks.DownloadCountryDatabase.html b/Mix.Tasks.DownloadCountryDatabase.html
index 0fba2771c..e2ef13a77 100644
--- a/Mix.Tasks.DownloadCountryDatabase.html
+++ b/Mix.Tasks.DownloadCountryDatabase.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Mix.Tasks.GenerateReferrerFavicons.html b/Mix.Tasks.GenerateReferrerFavicons.html
index 7f6c34482..9dee6aa8b 100644
--- a/Mix.Tasks.GenerateReferrerFavicons.html
+++ b/Mix.Tasks.GenerateReferrerFavicons.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Mix.Tasks.PullSandboxSubscription.html b/Mix.Tasks.PullSandboxSubscription.html
index cb510d461..6330cccfc 100644
--- a/Mix.Tasks.PullSandboxSubscription.html
+++ b/Mix.Tasks.PullSandboxSubscription.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Mix.Tasks.SendPageview.html b/Mix.Tasks.SendPageview.html
index c21553cd0..a9fba006a 100644
--- a/Mix.Tasks.SendPageview.html
+++ b/Mix.Tasks.SendPageview.html
@@ -14,7 +14,7 @@
-
+
diff --git a/ObanErrorReporter.html b/ObanErrorReporter.html
index 1c0b6acc0..27f9c11fc 100644
--- a/ObanErrorReporter.html
+++ b/ObanErrorReporter.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.AsyncInsertRepo.html b/Plausible.AsyncInsertRepo.html
index a54600ff6..6e894f00f 100644
--- a/Plausible.AsyncInsertRepo.html
+++ b/Plausible.AsyncInsertRepo.html
@@ -14,7 +14,7 @@
-
+
@@ -1187,23 +1187,23 @@ pool to disconnect within the given interval.
See
-Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
+Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
- defmodule Demo do
+ defmodule Demo do
use Ecto.Schema
@primary_key false
- schema "ecto_ch_demo" do
+ schema "ecto_ch_demo" do
field :a , Ch , type : "UInt64"
field :b , :string
- end
- end
+ end
+ end
- rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
- { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
+ rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
+ { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
# schemaless
- { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
+ { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
diff --git a/Plausible.Auth.ApiKey.html b/Plausible.Auth.ApiKey.html
index f87eff772..a9f6f17e7 100644
--- a/Plausible.Auth.ApiKey.html
+++ b/Plausible.Auth.ApiKey.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.ApiKeyAdmin.html b/Plausible.Auth.ApiKeyAdmin.html
index 3090ffe73..71db6d4e0 100644
--- a/Plausible.Auth.ApiKeyAdmin.html
+++ b/Plausible.Auth.ApiKeyAdmin.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.EmailActivationCode.html b/Plausible.Auth.EmailActivationCode.html
index b061ad96b..729bce1be 100644
--- a/Plausible.Auth.EmailActivationCode.html
+++ b/Plausible.Auth.EmailActivationCode.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.EmailVerification.html b/Plausible.Auth.EmailVerification.html
index a6029132b..6be745c61 100644
--- a/Plausible.Auth.EmailVerification.html
+++ b/Plausible.Auth.EmailVerification.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.GracePeriod.html b/Plausible.Auth.GracePeriod.html
index 7f5887920..be8328f35 100644
--- a/Plausible.Auth.GracePeriod.html
+++ b/Plausible.Auth.GracePeriod.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.Invitation.html b/Plausible.Auth.Invitation.html
index 9267902aa..9d41bf11a 100644
--- a/Plausible.Auth.Invitation.html
+++ b/Plausible.Auth.Invitation.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.Password.html b/Plausible.Auth.Password.html
index b0c48af37..bab8d2409 100644
--- a/Plausible.Auth.Password.html
+++ b/Plausible.Auth.Password.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.TOTP.EncryptedBinary.html b/Plausible.Auth.TOTP.EncryptedBinary.html
index 52d77d467..fa8cfa4f1 100644
--- a/Plausible.Auth.TOTP.EncryptedBinary.html
+++ b/Plausible.Auth.TOTP.EncryptedBinary.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.TOTP.RecoveryCode.html b/Plausible.Auth.TOTP.RecoveryCode.html
index a86104170..4e1d3a888 100644
--- a/Plausible.Auth.TOTP.RecoveryCode.html
+++ b/Plausible.Auth.TOTP.RecoveryCode.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.TOTP.Vault.html b/Plausible.Auth.TOTP.Vault.html
index d73b39594..cd5ffe83b 100644
--- a/Plausible.Auth.TOTP.Vault.html
+++ b/Plausible.Auth.TOTP.Vault.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.TOTP.html b/Plausible.Auth.TOTP.html
index 6589394ea..e47137609 100644
--- a/Plausible.Auth.TOTP.html
+++ b/Plausible.Auth.TOTP.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.Token.html b/Plausible.Auth.Token.html
index 52e307f00..4e2b9a862 100644
--- a/Plausible.Auth.Token.html
+++ b/Plausible.Auth.Token.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.User.html b/Plausible.Auth.User.html
index 03b2e2897..73aaf5981 100644
--- a/Plausible.Auth.User.html
+++ b/Plausible.Auth.User.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.UserAdmin.html b/Plausible.Auth.UserAdmin.html
index 44ff87430..16866bd1f 100644
--- a/Plausible.Auth.UserAdmin.html
+++ b/Plausible.Auth.UserAdmin.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.UserSession.html b/Plausible.Auth.UserSession.html
index 2561b4dcc..526fa081c 100644
--- a/Plausible.Auth.UserSession.html
+++ b/Plausible.Auth.UserSession.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Auth.html b/Plausible.Auth.html
index 6aaad6448..2fa9cf2e7 100644
--- a/Plausible.Auth.html
+++ b/Plausible.Auth.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.Ecto.Feature.html b/Plausible.Billing.Ecto.Feature.html
index 410e633c5..300bcd5e5 100644
--- a/Plausible.Billing.Ecto.Feature.html
+++ b/Plausible.Billing.Ecto.Feature.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.Ecto.FeatureList.html b/Plausible.Billing.Ecto.FeatureList.html
index 7b05bd0e7..8aafdde66 100644
--- a/Plausible.Billing.Ecto.FeatureList.html
+++ b/Plausible.Billing.Ecto.FeatureList.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.Ecto.Limit.html b/Plausible.Billing.Ecto.Limit.html
index e2d755ae5..5625749c5 100644
--- a/Plausible.Billing.Ecto.Limit.html
+++ b/Plausible.Billing.Ecto.Limit.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.EnterprisePlan.html b/Plausible.Billing.EnterprisePlan.html
index 0839de6c0..f63038e84 100644
--- a/Plausible.Billing.EnterprisePlan.html
+++ b/Plausible.Billing.EnterprisePlan.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.EnterprisePlanAdmin.html b/Plausible.Billing.EnterprisePlanAdmin.html
index 9d6e4becc..a65517937 100644
--- a/Plausible.Billing.EnterprisePlanAdmin.html
+++ b/Plausible.Billing.EnterprisePlanAdmin.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.Feature.html b/Plausible.Billing.Feature.html
index 65c92961b..07ba73ba3 100644
--- a/Plausible.Billing.Feature.html
+++ b/Plausible.Billing.Feature.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.PaddleApi.html b/Plausible.Billing.PaddleApi.html
index 0bf82be19..20cc6b311 100644
--- a/Plausible.Billing.PaddleApi.html
+++ b/Plausible.Billing.PaddleApi.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.Plans.html b/Plausible.Billing.Plans.html
index 30207783e..3e2703463 100644
--- a/Plausible.Billing.Plans.html
+++ b/Plausible.Billing.Plans.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.Quota.html b/Plausible.Billing.Quota.html
index 0f9122dd7..1fcea455e 100644
--- a/Plausible.Billing.Quota.html
+++ b/Plausible.Billing.Quota.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.SiteLocker.html b/Plausible.Billing.SiteLocker.html
index 4fc8e60b3..8299c8511 100644
--- a/Plausible.Billing.SiteLocker.html
+++ b/Plausible.Billing.SiteLocker.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.Subscription.Status.html b/Plausible.Billing.Subscription.Status.html
index 3e53b338b..cb4db574c 100644
--- a/Plausible.Billing.Subscription.Status.html
+++ b/Plausible.Billing.Subscription.Status.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Billing.html b/Plausible.Billing.html
index 5246ed12f..6079292e3 100644
--- a/Plausible.Billing.html
+++ b/Plausible.Billing.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Cache.Adapter.html b/Plausible.Cache.Adapter.html
index f4bd6beda..44c58176e 100644
--- a/Plausible.Cache.Adapter.html
+++ b/Plausible.Cache.Adapter.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Cache.Stats.html b/Plausible.Cache.Stats.html
index d217fb32a..bf5210832 100644
--- a/Plausible.Cache.Stats.html
+++ b/Plausible.Cache.Stats.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Cache.Warmer.html b/Plausible.Cache.Warmer.html
index da02fb0b9..cd373a711 100644
--- a/Plausible.Cache.Warmer.html
+++ b/Plausible.Cache.Warmer.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Cache.html b/Plausible.Cache.html
index 1cd37c0a8..1ffe23222 100644
--- a/Plausible.Cache.html
+++ b/Plausible.Cache.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.ChangesetHelpers.html b/Plausible.ChangesetHelpers.html
index c64ac6b5b..e0bcc16a6 100644
--- a/Plausible.ChangesetHelpers.html
+++ b/Plausible.ChangesetHelpers.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Cldr.AcceptLanguage.html b/Plausible.Cldr.AcceptLanguage.html
index cc4d43a7b..abf79f05d 100644
--- a/Plausible.Cldr.AcceptLanguage.html
+++ b/Plausible.Cldr.AcceptLanguage.html
@@ -14,7 +14,7 @@
-
+
@@ -148,7 +148,7 @@ Pages
the set of natural languages that are preferred as a response to the request.
Language tags function are provided in Cldr.LanguageTag
.
The format of an Accept-Language
header is as follows in ABNF
format:
Accept - Language = "Accept-Language" ":"
1 #( language-range [ ";" "q" "=" qvalue ] )
- language - range = ( ( 1 * 8 ALPHA * ( "-" 1 * 8 ALPHA ) ) | "*" )
Each language-range MAY be given an associated quality value which represents an
+ language - range = ( ( 1 * 8 ALPHA * ( "-" 1 * 8 ALPHA ) ) | "*" )
Each language-range MAY be given an associated quality value which represents an
estimate of the user's preference for the languages specified by that range. The
quality value defaults to "q=1". For example,
Accept - Language : da , en - gb ; q = 0.8 , en ; q = 0.7
would mean: "I prefer Danish, but will accept British English and other types of English."
@@ -261,54 +261,54 @@ a configured Examples
-iex> Plausible.Cldr.AcceptLanguage . best_match ( "da;q=0.1,zh-TW;q=0.3" , TestBackend.Cldr )
- { :ok ,
- % Cldr.LanguageTag {
+iex> Plausible.Cldr.AcceptLanguage . best_match ( "da;q=0.1,zh-TW;q=0.3" , TestBackend.Cldr )
+ { :ok ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "zh-TW" ,
cldr_locale_name : :"zh-Hant" ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "zh" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :"zh-Hant" ,
requested_locale_name : "zh-TW" ,
script : :Hant ,
territory : :TW ,
- transform : %{ } ,
- language_variants : [ ]
- } }
+ transform : %{ } ,
+ language_variants : [ ]
+ } }
- iex> Plausible.Cldr.AcceptLanguage . best_match ( "da;q=0.1,zh-TW;q=0.3" , TestBackend.Cldr )
- { :ok ,
- % Cldr.LanguageTag {
+ iex> Plausible.Cldr.AcceptLanguage . best_match ( "da;q=0.1,zh-TW;q=0.3" , TestBackend.Cldr )
+ { :ok ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "zh-TW" ,
cldr_locale_name : :"zh-Hant" ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "zh" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :"zh-Hant" ,
requested_locale_name : "zh-TW" ,
script : :Hant ,
territory : :TW ,
- transform : %{ } ,
- language_variants : [ ]
- } }
+ transform : %{ } ,
+ language_variants : [ ]
+ } }
- iex> Plausible.Cldr.AcceptLanguage . best_match ( "xx,yy;q=0.3" )
- { :error ,
- { Cldr.NoMatchingLocale ,
- "No configured locale could be matched to \" xx,yy;q=0.3 \" " } }
+ iex> Plausible.Cldr.AcceptLanguage . best_match ( "xx,yy;q=0.3" )
+ { :error ,
+ { Cldr.NoMatchingLocale ,
+ "No configured locale could be matched to \" xx,yy;q=0.3 \" " } }
- iex> Plausible.Cldr.AcceptLanguage . best_match ( "invalid_tag" )
- { :error , { Cldr.LanguageTag.ParseError ,
- "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
+ iex> Plausible.Cldr.AcceptLanguage . best_match ( "invalid_tag" )
+ { :error , { Cldr.LanguageTag.ParseError ,
+ "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
@@ -369,95 +369,95 @@ with an error tuple for each invalid tag added at the end of the list.
Example
-iex> Cldr.AcceptLanguage . parse ( "da,zh-TW;q=0.3" , TestBackend.Cldr )
- { :ok ,
- [
- { 1.0 ,
- % Cldr.LanguageTag {
+iex> Cldr.AcceptLanguage . parse ( "da,zh-TW;q=0.3" , TestBackend.Cldr )
+ { :ok ,
+ [
+ { 1.0 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "da" ,
cldr_locale_name : :da ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "da" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :da ,
requested_locale_name : "da" ,
script : :Latn ,
territory : :DK ,
- transform : %{ } ,
- language_variants : [ ]
- } } ,
- { 0.3 ,
- % Cldr.LanguageTag {
+ transform : %{ } ,
+ language_variants : [ ]
+ } } ,
+ { 0.3 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "zh-TW" ,
cldr_locale_name : :"zh-Hant" ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "zh" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :"zh-Hant" ,
requested_locale_name : "zh-TW" ,
script : :Hant ,
territory : :TW ,
- transform : %{ } ,
- language_variants : [ ]
- } }
- ] }
+ transform : %{ } ,
+ language_variants : [ ]
+ } }
+ ] }
- iex> Plausible.Cldr.AcceptLanguage . parse ( "invalid_tag" )
- { :error ,
- { Cldr.LanguageTag.ParseError ,
- "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
+ iex> Plausible.Cldr.AcceptLanguage . parse ( "invalid_tag" )
+ { :error ,
+ { Cldr.LanguageTag.ParseError ,
+ "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
- iex> Plausible.Cldr.AcceptLanguage . parse ( "da,zh-TW;q=0.3,invalid_tag" )
- { :ok ,
- [
- { 1.0 ,
- % Cldr.LanguageTag {
+ iex> Plausible.Cldr.AcceptLanguage . parse ( "da,zh-TW;q=0.3,invalid_tag" )
+ { :ok ,
+ [
+ { 1.0 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "da" ,
cldr_locale_name : :da ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "da" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :da ,
requested_locale_name : "da" ,
script : :Latn ,
territory : :DK ,
- transform : %{ } ,
- language_variants : [ ]
- } } ,
- { 0.3 ,
- % Cldr.LanguageTag {
+ transform : %{ } ,
+ language_variants : [ ]
+ } } ,
+ { 0.3 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "zh-TW" ,
cldr_locale_name : :"zh-Hant" ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "zh" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :"zh-Hant" ,
requested_locale_name : "zh-TW" ,
script : :Hant ,
territory : :TW ,
- transform : %{ } ,
- language_variants : [ ]
- } } ,
- { :error ,
- { Cldr.LanguageTag.ParseError ,
- "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
- ] }
+ transform : %{ } ,
+ language_variants : [ ]
+ } } ,
+ { :error ,
+ { Cldr.LanguageTag.ParseError ,
+ "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
+ ] }
@@ -502,92 +502,92 @@ with an error tuple for each invalid tag added at the end of the list.
Example
-iex> Plausible.Cldr.AcceptLanguage . parse! ( "da,zh-TW;q=0.3" )
- [
- { 1.0 ,
- % Cldr.LanguageTag {
+iex> Plausible.Cldr.AcceptLanguage . parse! ( "da,zh-TW;q=0.3" )
+ [
+ { 1.0 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "da" ,
cldr_locale_name : :da ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "da" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :da ,
requested_locale_name : "da" ,
script : :Latn ,
territory : :DK ,
- transform : %{ } ,
- language_variants : [ ]
- } } ,
- { 0.3 ,
- % Cldr.LanguageTag {
+ transform : %{ } ,
+ language_variants : [ ]
+ } } ,
+ { 0.3 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "zh-TW" ,
cldr_locale_name : :"zh-Hant" ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "zh" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :"zh-Hant" ,
requested_locale_name : "zh-TW" ,
script : :Hant ,
territory : :TW ,
- transform : %{ } ,
- language_variants : [ ]
- } }
- ]
+ transform : %{ } ,
+ language_variants : [ ]
+ } }
+ ]
Plausible.Cldr.AcceptLanguage . parse! "invalid_tag"
** (Cldr.AcceptLanguageError) "Expected a BCP47 language tag. Could not parse the remaining "g" starting at position 11
(ex_cldr) lib/cldr/accept_language.ex:304: Cldr.AcceptLanguage.parse!/1
- iex> Plausible.Cldr.AcceptLanguage . parse! ( "da,zh-TW;q=0.3,invalid_tag" )
- [
- { 1.0 ,
- % Cldr.LanguageTag {
+ iex> Plausible.Cldr.AcceptLanguage . parse! ( "da,zh-TW;q=0.3,invalid_tag" )
+ [
+ { 1.0 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "da" ,
cldr_locale_name : :da ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "da" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :da ,
requested_locale_name : "da" ,
script : :Latn ,
territory : :DK ,
- transform : %{ } ,
- language_variants : [ ]
- } } ,
- { 0.3 ,
- % Cldr.LanguageTag {
+ transform : %{ } ,
+ language_variants : [ ]
+ } } ,
+ { 0.3 ,
+ % Cldr.LanguageTag {
backend : TestBackend.Cldr ,
canonical_locale_name : "zh-TW" ,
cldr_locale_name : :"zh-Hant" ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : nil ,
language : "zh" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :"zh-Hant" ,
requested_locale_name : "zh-TW" ,
script : :Hant ,
territory : :TW ,
- transform : %{ } ,
- language_variants : [ ]
- } } ,
- { :error ,
- { Cldr.LanguageTag.ParseError ,
- "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
- ]
+ transform : %{ } ,
+ language_variants : [ ]
+ } } ,
+ { :error ,
+ { Cldr.LanguageTag.ParseError ,
+ "Expected a BCP47 language tag. Could not parse the remaining \" g \" starting at position 11" } }
+ ]
diff --git a/Plausible.Cldr.Currency.html b/Plausible.Cldr.Currency.html
index 17b333283..304916ae3 100644
--- a/Plausible.Cldr.Currency.html
+++ b/Plausible.Cldr.Currency.html
@@ -14,7 +14,7 @@
-
+
@@ -419,11 +419,11 @@ The default is :all
. See FJD : % Cldr.Currency {
+ %{ FJD : % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "FJD" ,
- count : %{ one : "Fijian dollar" , other : "Fijian dollars" } ,
+ count : %{ one : "Fijian dollar" , other : "Fijian dollars" } ,
digits : 2 ,
from : nil ,
iso_digits : 2 ,
@@ -433,12 +433,12 @@ The default is :all
. See symbol : "FJD" ,
tender : true ,
to : nil
- } ,
- SUR : % Cldr.Currency {
+ } ,
+ SUR : % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "SUR" ,
- count : %{ one : "Soviet rouble" , other : "Soviet roubles" } ,
+ count : %{ one : "Soviet rouble" , other : "Soviet roubles" } ,
digits : 2 ,
from : nil ,
iso_digits : nil ,
@@ -448,7 +448,7 @@ The default is :all
. See symbol : "SUR" ,
tender : true ,
to : nil
- } ,
+ } ,
...
} }
@@ -499,11 +499,11 @@ The default is :all
. See Example
MyApp.Cldr.Currency.currencies_for_locale!("en")
- => %{
FJD : % Cldr.Currency {
+ => %{FJD : % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "FJD" ,
- count : %{ one : "Fijian dollar" , other : "Fijian dollars" } ,
+ count : %{ one : "Fijian dollar" , other : "Fijian dollars" } ,
digits : 2 ,
from : nil ,
iso_digits : 2 ,
@@ -513,12 +513,12 @@ The default is :all
. See symbol : "FJD" ,
tender : true ,
to : nil
- } ,
- SUR : % Cldr.Currency {
+ } ,
+ SUR : % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "SUR" ,
- count : %{ one : "Soviet rouble" , other : "Soviet roubles" } ,
+ count : %{ one : "Soviet rouble" , other : "Soviet roubles" } ,
digits : 2 ,
from : nil ,
iso_digits : nil ,
@@ -528,7 +528,7 @@ The default is :all
. See symbol : "SUR" ,
tender : true ,
to : nil
- } ,
+ } ,
...
}
@@ -586,13 +586,13 @@ or a
Examples
-iex> Plausible.Cldr.Currency . currency_for_code ( "AUD" )
- { :ok ,
- % Cldr.Currency {
+iex> Plausible.Cldr.Currency . currency_for_code ( "AUD" )
+ { :ok ,
+ % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "AUD" ,
- count : %{ one : "Australian dollar" , other : "Australian dollars" } ,
+ count : %{ one : "Australian dollar" , other : "Australian dollars" } ,
digits : 2 ,
iso_digits : 2 ,
name : "Australian Dollar" ,
@@ -600,15 +600,15 @@ or a rounding : 0 ,
symbol : "A$" ,
tender : true
- } }
+ } }
- iex> Plausible.Cldr.Currency . currency_for_code ( "THB" )
- { :ok ,
- % Cldr.Currency {
+ iex> Plausible.Cldr.Currency . currency_for_code ( "THB" )
+ { :ok ,
+ % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "THB" ,
- count : %{ one : "Thai baht" , other : "Thai baht" } ,
+ count : %{ one : "Thai baht" , other : "Thai baht" } ,
digits : 2 ,
iso_digits : 2 ,
name : "Thai Baht" ,
@@ -616,7 +616,7 @@ or a rounding : 0 ,
symbol : "THB" ,
tender : true
- } }
+ } }
@@ -675,12 +675,12 @@ or a
Examples
-iex> Plausible.Cldr.Currency . currency_for_code! ( "AUD" )
- % Cldr.Currency {
+iex> Plausible.Cldr.Currency . currency_for_code! ( "AUD" )
+ % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "AUD" ,
- count : %{ one : "Australian dollar" , other : "Australian dollars" } ,
+ count : %{ one : "Australian dollar" , other : "Australian dollars" } ,
digits : 2 ,
iso_digits : 2 ,
name : "Australian Dollar" ,
@@ -688,14 +688,14 @@ or a rounding : 0 ,
symbol : "A$" ,
tender : true
- }
+ }
- iex> Plausible.Cldr.Currency . currency_for_code! ( "THB" )
- % Cldr.Currency {
+ iex> Plausible.Cldr.Currency . currency_for_code! ( "THB" )
+ % Cldr.Currency {
cash_digits : 2 ,
cash_rounding : 0 ,
code : "THB" ,
- count : %{ one : "Thai baht" , other : "Thai baht" } ,
+ count : %{ one : "Thai baht" , other : "Thai baht" } ,
digits : 2 ,
iso_digits : 2 ,
name : "Thai Baht" ,
@@ -703,7 +703,7 @@ or a rounding : 0 ,
symbol : "THB" ,
tender : true
- }
+ }
@@ -796,14 +796,14 @@ or a
Example
-iex> MyApp.Cldr.Currency . currency_history_for_locale ( "en" )
- { :ok ,
- %{
- USD : %{ from : ~D[1792-01-01] , to : nil } ,
- USN : %{ tender : false } ,
- USS : %{ from : nil , tender : false , to : ~D[2014-03-01] }
- }
- }
+iex> MyApp.Cldr.Currency . currency_history_for_locale ( "en" )
+ { :ok ,
+ %{
+ USD : %{ from : ~D[1792-01-01] , to : nil } ,
+ USN : %{ tender : false } ,
+ USS : %{ from : nil , tender : false , to : ~D[2014-03-01] }
+ }
+ }
@@ -862,9 +862,9 @@ The default is :all
. See Example
-MyApp.Cldr.Currency . currency_strings ( "en" )
- => { :ok ,
- %{
+MyApp.Cldr.Currency . currency_strings ( "en" )
+ => { :ok ,
+ %{
"mexican silver pesos" => :MXP ,
"sudanese dinar" => :SDD ,
"bad" => :BAD ,
@@ -874,7 +874,7 @@ The default is :all
. See "guyanaese dollars" => :GYD ,
"equatorial guinean ekwele" => :GQE ,
...
- } }
+ } }
@@ -1033,7 +1033,7 @@ mapping is returned for that territory.Example
-iex> Plausible.Cldr.Currency . current_territory_currencies ( )
+iex> Plausible.Cldr.Currency . current_territory_currencies ( )
@@ -1125,11 +1125,11 @@ currency codeExamples
-iex> Plausible.Cldr.Currency . known_currency_code ( "AUD" )
- { :ok , :AUD }
+iex> Plausible.Cldr.Currency . known_currency_code ( "AUD" )
+ { :ok , :AUD }
- iex> Plausible.Cldr.Currency . known_currency_code ( "GGG" )
- { :error , { Cldr.UnknownCurrencyError , "The currency \" GGG \" is invalid" } }
+ iex> Plausible.Cldr.Currency . known_currency_code ( "GGG" )
+ { :error , { Cldr.UnknownCurrencyError , "The currency \" GGG \" is invalid" } }
@@ -1176,13 +1176,13 @@ currency codeExamples
-iex> Plausible.Cldr.Currency . known_currency_code? ( "AUD" )
+iex> Plausible.Cldr.Currency . known_currency_code? ( "AUD" )
true
- iex> Plausible.Cldr.Currency . known_currency_code? ( "GGG" )
+ iex> Plausible.Cldr.Currency . known_currency_code? ( "GGG" )
false
- iex> Plausible.Cldr.Currency . known_currency_code? ( :XCV )
+ iex> Plausible.Cldr.Currency . known_currency_code? ( :XCV )
false
@@ -1217,7 +1217,7 @@ currency codeExample
-iex> Plausible.Cldr.Currency . known_currency_codes ( )
+iex> Plausible.Cldr.Currency . known_currency_codes ( )
@@ -1276,14 +1276,14 @@ such as 0.05
. Optional.Example
-iex> Plausible.Cldr.Currency . new ( :XAE , name : "Custom Name" , digits : 0 )
- { :ok ,
- % Cldr.Currency {
+iex> Plausible.Cldr.Currency . new ( :XAE , name : "Custom Name" , digits : 0 )
+ { :ok ,
+ % Cldr.Currency {
alt_code : :XAE ,
cash_digits : 0 ,
cash_rounding : nil ,
code : :XAE ,
- count : %{ other : "Custom Name" } ,
+ count : %{ other : "Custom Name" } ,
digits : 0 ,
from : nil ,
iso_digits : 0 ,
@@ -1293,11 +1293,11 @@ such as 0.05
. Optional.symbol : "XAE" ,
tender : false ,
to : nil
- } }
- iex> MyApp.Cldr.Currency . new ( :XAH , name : "Custom Name" )
- { :error , "Required options are missing. Required options are [:name, :digits]" }
- iex> Plausible.Cldr.Currency . new ( :XAE , name : "XAE" , digits : 0 )
- { :error , { Cldr.CurrencyAlreadyDefined , "Currency :XAE is already defined." } }
+ } }
+ iex> MyApp.Cldr.Currency . new ( :XAH , name : "Custom Name" )
+ { :error , "Required options are missing. Required options are [:name, :digits]" }
+ iex> Plausible.Cldr.Currency . new ( :XAE , name : "XAE" , digits : 0 )
+ { :error , { Cldr.CurrencyAlreadyDefined , "Currency :XAE is already defined." } }
@@ -1355,20 +1355,20 @@ default is Plaus
Examples
-iex> Plausible.Cldr.Currency . pluralize ( 1 , :USD )
- { :ok , "US dollar" }
+iex> Plausible.Cldr.Currency . pluralize ( 1 , :USD )
+ { :ok , "US dollar" }
- iex> Plausible.Cldr.Currency . pluralize ( 3 , :USD )
- { :ok , "US dollars" }
+ iex> Plausible.Cldr.Currency . pluralize ( 3 , :USD )
+ { :ok , "US dollars" }
- iex> Plausible.Cldr.Currency . pluralize ( 12 , :USD , locale : "zh" )
- { :ok , "美元" }
+ iex> Plausible.Cldr.Currency . pluralize ( 12 , :USD , locale : "zh" )
+ { :ok , "美元" }
- iex> Plausible.Cldr.Currency . pluralize ( 12 , :USD , locale : "fr" )
- { :ok , "dollars des États-Unis" }
+ iex> Plausible.Cldr.Currency . pluralize ( 12 , :USD , locale : "fr" )
+ { :ok , "dollars des États-Unis" }
- iex> Plausible.Cldr.Currency . pluralize ( 1 , :USD , locale : "fr" )
- { :ok , "dollar des États-Unis" }
+ iex> Plausible.Cldr.Currency . pluralize ( 1 , :USD , locale : "fr" )
+ { :ok , "dollar des États-Unis" }
@@ -1410,8 +1410,8 @@ or a
Example
-iex> MyApp.Cldr.Currency . strings_for_currency :AUD , ( "en" )
- [ "a$" , "australian dollars" , "aud" , "australian dollar" ]
+iex> MyApp.Cldr.Currency . strings_for_currency :AUD , ( "en" )
+ [ "a$" , "australian dollars" , "aud" , "australian dollar" ]
diff --git a/Plausible.Cldr.Locale.html b/Plausible.Cldr.Locale.html
index 288368cf4..7777ca92f 100644
--- a/Plausible.Cldr.Locale.html
+++ b/Plausible.Cldr.Locale.html
@@ -14,7 +14,7 @@
-
+
@@ -326,16 +326,16 @@ this specific locale..Examples
-iex> Plausible.Cldr.Locale . fallback_locale_names ( :"fr-CA" )
- { :ok , [ :"fr-CA" , :fr , :und ] }
+iex> Plausible.Cldr.Locale . fallback_locale_names ( :"fr-CA" )
+ { :ok , [ :"fr-CA" , :fr , :und ] }
# Fallbacks are typically formed by progressively
# stripping variant, territory and script from the
# given locale name. But not always - there are
# certain fallbacks that take a different path.
- iex> Plausible.Cldr.Locale . fallback_locale_names ( :nb )
- { :ok , [ :nb , :no , :und ] }
+ iex> Plausible.Cldr.Locale . fallback_locale_names ( :nb )
+ { :ok , [ :nb , :no , :und ] }
@@ -389,20 +389,20 @@ this specific locale.Examples
-Plausible.Cldr.Locale . fallback_locales ( :"fr-CA" )
- => { :ok ,
- [ # Cldr.LanguageTag < fr - CA [ validated ] > , # Cldr.LanguageTag < fr [ validated ] > ,
- # Cldr.LanguageTag < und [ validated ] > ] }
+Plausible.Cldr.Locale . fallback_locales ( :"fr-CA" )
+ => { :ok ,
+ [ # Cldr.LanguageTag < fr - CA [ validated ] > , # Cldr.LanguageTag < fr [ validated ] > ,
+ # Cldr.LanguageTag < und [ validated ] > ] }
# Fallbacks are typically formed by progressively
# stripping variant, territory and script from the
# given locale name. But not always - there are
# certain fallbacks that take a different path.
- Plausible.Cldr.Locale . fallback_locales ( :nb ) )
- => { :ok ,
- [ # Cldr.LanguageTag < nb [ validated ] > , # Cldr.LanguageTag < no [ validated ] > ,
- # Cldr.LanguageTag < und [ validated ] > ] }
+ Plausible.Cldr.Locale . fallback_locales ( :nb ) )
+ => { :ok ,
+ [ # Cldr.LanguageTag < nb [ validated ] > , # Cldr.LanguageTag < no [ validated ] > ,
+ # Cldr.LanguageTag < und [ validated ] > ] }
@@ -533,15 +533,15 @@ generic top-level domain names.Examples
iex> Plausible.Cldr.Locale . locale_from_host "a.b.com.au"
- Elixir.Plausible.Cldr . validate_locale ( :"en-AU" )
+ Elixir.Plausible.Cldr . validate_locale ( :"en-AU" )
- iex> Plausible.Cldr.Locale . locale_from_host ( "a.b.com.tv" )
- { :error ,
- { Cldr.UnknownLocaleError , "No locale was identified for territory \" tv \" " } }
+ iex> Plausible.Cldr.Locale . locale_from_host ( "a.b.com.tv" )
+ { :error ,
+ { Cldr.UnknownLocaleError , "No locale was identified for territory \" tv \" " } }
- iex> Plausible.Cldr.Locale . locale_from_host ( "a.b.com" )
- { :error ,
- { Cldr.UnknownLocaleError , "No locale was identified for territory \" com \" " } }
+iex> Plausible.Cldr.Locale . locale_from_host ( "a.b.com" )
+ { :error ,
+ { Cldr.UnknownLocaleError , "No locale was identified for territory \" com \" " } }
@@ -683,12 +683,12 @@ be a territory.Examples
-iex> Cldr.Locale . territory_from_host ( "a.b.com.au" )
- { :ok , :AU }
+iex> Cldr.Locale . territory_from_host ( "a.b.com.au" )
+ { :ok , :AU }
- iex> Cldr.Locale . territory_from_host ( "a.b.com" )
- { :error ,
- { Cldr.UnknownLocaleError , "No locale was identified for territory \" com \" " } }
+ iex> Cldr.Locale . territory_from_host ( "a.b.com" )
+ { :error ,
+ { Cldr.UnknownLocaleError , "No locale was identified for territory \" com \" " } }
diff --git a/Plausible.Cldr.Number.Cardinal.html b/Plausible.Cldr.Number.Cardinal.html
index 1f661b894..89cadcfe1 100644
--- a/Plausible.Cldr.Number.Cardinal.html
+++ b/Plausible.Cldr.Number.Cardinal.html
@@ -14,7 +14,7 @@
-
+
@@ -461,31 +461,31 @@ The valid substitution keys are :zero
, Examples
-iex> Plausible.Cldr.Number.Cardinal . pluralize 1 , "en" , %{ one : "one" }
+iex> Plausible.Cldr.Number.Cardinal . pluralize 1 , "en" , %{ one : "one" }
"one"
- iex> Plausible.Cldr.Number.Cardinal . pluralize 2 , "en" , %{ one : "one" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize 2 , "en" , %{ one : "one" }
nil
- iex> Plausible.Cldr.Number.Cardinal . pluralize 2 , "en" , %{ one : "one" , two : "two" , other : "other" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize 2 , "en" , %{ one : "one" , two : "two" , other : "other" }
"other"
- iex> Plausible.Cldr.Number.Cardinal . pluralize 22 , "en" , %{ one : "one" , two : "two" , other : "other" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize 22 , "en" , %{ one : "one" , two : "two" , other : "other" }
"other"
- iex> Plausible.Cldr.Number.Cardinal . pluralize Decimal . new ( 1 ) , "en" , %{ one : "one" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize Decimal . new ( 1 ) , "en" , %{ one : "one" }
"one"
- iex> Plausible.Cldr.Number.Cardinal . pluralize Decimal . new ( 2 ) , "en" , %{ one : "one" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize Decimal . new ( 2 ) , "en" , %{ one : "one" }
nil
- iex> Plausible.Cldr.Number.Cardinal . pluralize Decimal . new ( 2 ) , "en" , %{ one : "one" , two : "two" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize Decimal . new ( 2 ) , "en" , %{ one : "one" , two : "two" }
nil
- iex> Plausible.Cldr.Number.Cardinal . pluralize 1 .. 10 , "ar" , %{ one : "one" , few : "few" , other : "other" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize 1 .. 10 , "ar" , %{ one : "one" , few : "few" , other : "other" }
"few"
- iex> Plausible.Cldr.Number.Cardinal . pluralize 1 .. 10 , "en" , %{ one : "one" , few : "few" , other : "other" }
+ iex> Plausible.Cldr.Number.Cardinal . pluralize 1 .. 10 , "en" , %{ one : "one" , few : "few" , other : "other" }
"other"
diff --git a/Plausible.Cldr.Number.Format.html b/Plausible.Cldr.Number.Format.html
index 7d4245a8e..f0569c996 100644
--- a/Plausible.Cldr.Number.Format.html
+++ b/Plausible.Cldr.Number.Format.html
@@ -14,7 +14,7 @@
-
+
@@ -465,7 +465,7 @@ to precompile all the known formats at compile time.
#=> Plausible.Cldr.Number.Format.Format.decimal_format_list
- [ "#" , "#,##,##0%" ,
+ [ "#" , "#,##,##0%" ,
"#,##,##0.###" , "#,##,##0.00¤" , "#,##,##0.00¤;(#,##,##0.00¤)" ,
"#,##,##0 %" , "#,##0%" , "#,##0.###" , "#,##0.00 ¤" ,
"#,##0.00 ¤;(#,##0.00 ¤)" , "#,##0.00¤" , "#,##0.00¤;(#,##0.00¤)" ,
@@ -475,7 +475,7 @@ to precompile all the known formats at compile time. , "000 E ¤" , "000 K ¤" , "000 MRD ¤" , "000 Md ¤" , "000 Mio'.' ¤" ,
"000 Mio ¤" , "000 Mld ¤" , "000 Mln ¤" , "000 Mn ¤" , "000 Mrd'.' ¤" ,
"000 Mrd ¤" , "000 Mr ¤" , "000 M ¤" , "000 NT ¤" , "000 N ¤" , "000 Tn ¤" ,
- "000 Tr ¤" , ... ]
+"000 Tr ¤" , ... ]
@@ -523,8 +523,8 @@ the known formats at compile time. Its use is not otherwise recommended.
Example
-iex> Plausible.Cldr.Number.Format . decimal_format_list_for ( :en )
- { :ok , [ "#,##0%" , "#,##0.###" , "#,##0.00" , "#,##0.00;(#,##0.00)" , "#E0" ,
+iex> Plausible.Cldr.Number.Format . decimal_format_list_for ( :en )
+ { :ok , [ "#,##0%" , "#,##0.###" , "#,##0.00" , "#,##0.00;(#,##0.00)" , "#E0" ,
"0 billion" , "0 million" , "0 thousand" ,
"0 trillion" , "00 billion" , "00 million" , "00 thousand" , "00 trillion" ,
"000 billion" , "000 million" , "000 thousand" , "000 trillion" , "000B" , "000K" ,
@@ -532,7 +532,7 @@ the known formats at compile time. Its use is not otherwise recommended."¤#,##0.00" , "¤#,##0.00;(¤#,##0.00)" , "¤000B" , "¤000K" , "¤000M" ,
"¤000T" , "¤00B" , "¤00K" , "¤00M" , "¤00T" , "¤0B" , "¤0K" , "¤0M" , "¤0T" ,
"¤ #,##0.00" , "¤ #,##0.00;(¤ #,##0.00)" , "¤ 000B" , "¤ 000K" , "¤ 000M" ,
- "¤ 000T" , "¤ 00B" , "¤ 00K" , "¤ 00M" , "¤ 00T" , "¤ 0B" , "¤ 0K" , "¤ 0M" , "¤ 0T" ] }
+ "¤ 000T" , "¤ 00B" , "¤ 00K" , "¤ 00M" , "¤ 00T" , "¤ 0B" , "¤ 0K" , "¤ 0M" , "¤ 0T" ] }
@@ -585,8 +585,8 @@ is Plausible.Cld
Examples
-iex> Plausible.Cldr.Number.Format . default_grouping_for ( :en )
- { :ok , %{ fraction : %{ first : 0 , rest : 0 } , integer : %{ first : 3 , rest : 3 } } }
+iex> Plausible.Cldr.Number.Format . default_grouping_for ( :en )
+ { :ok , %{ fraction : %{ first : 0 , rest : 0 } , integer : %{ first : 3 , rest : 3 } } }
@@ -642,8 +642,8 @@ is Plausible.Cld
Examples
-iex> Plausible.Cldr.Number.Format . default_grouping_for! ( :en )
- %{ fraction : %{ first : 0 , rest : 0 } , integer : %{ first : 3 , rest : 3 } }
+iex> Plausible.Cldr.Number.Format . default_grouping_for! ( :en )
+ %{ fraction : %{ first : 0 , rest : 0 } , integer : %{ first : 3 , rest : 3 } }
@@ -802,8 +802,8 @@ is Plausible.Cld
Examples
-iex> Plausible.Cldr.Number.Format . minimum_grouping_digits_for ( "en" )
- { :ok , 1 }
+iex> Plausible.Cldr.Number.Format . minimum_grouping_digits_for ( "en" )
+ { :ok , 1 }
@@ -855,7 +855,7 @@ is Plausible.Cld
Examples
-iex> Plausible.Cldr.Number.Format . minimum_grouping_digits_for! ( "en" )
+iex> Plausible.Cldr.Number.Format . minimum_grouping_digits_for! ( "en" )
1
diff --git a/Plausible.Cldr.Number.Formatter.Decimal.html b/Plausible.Cldr.Number.Formatter.Decimal.html
index 4bd104c21..7c7ab0319 100644
--- a/Plausible.Cldr.Number.Formatter.Decimal.html
+++ b/Plausible.Cldr.Number.Formatter.Decimal.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Cldr.Number.Ordinal.html b/Plausible.Cldr.Number.Ordinal.html
index 0e902be3b..8f2673686 100644
--- a/Plausible.Cldr.Number.Ordinal.html
+++ b/Plausible.Cldr.Number.Ordinal.html
@@ -14,7 +14,7 @@
-
+
@@ -464,31 +464,31 @@ The valid substitution keys are :zero
, Examples
-iex> Plausible.Cldr.Number.Ordinal . pluralize 1 , :en , %{ one : "one" }
+iex> Plausible.Cldr.Number.Ordinal . pluralize 1 , :en , %{ one : "one" }
"one"
- iex> Plausible.Cldr.Number.Ordinal . pluralize 2 , :en , %{ one : "one" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize 2 , :en , %{ one : "one" }
nil
- iex> Plausible.Cldr.Number.Ordinal . pluralize 2 , :en , %{ one : "one" , two : "two" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize 2 , :en , %{ one : "one" , two : "two" }
"two"
- iex> Plausible.Cldr.Number.Ordinal . pluralize 22 , :en , %{ one : "one" , two : "two" , other : "other" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize 22 , :en , %{ one : "one" , two : "two" , other : "other" }
"two"
- iex> Plausible.Cldr.Number.Ordinal . pluralize Decimal . new ( 1 ) , :en , %{ one : "one" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize Decimal . new ( 1 ) , :en , %{ one : "one" }
"one"
- iex> Plausible.Cldr.Number.Ordinal . pluralize Decimal . new ( 2 ) , :en , %{ one : "one" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize Decimal . new ( 2 ) , :en , %{ one : "one" }
nil
- iex> Plausible.Cldr.Number.Ordinal . pluralize Decimal . new ( 2 ) , :en , %{ one : "one" , two : "two" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize Decimal . new ( 2 ) , :en , %{ one : "one" , two : "two" }
"two"
- iex> Plausible.Cldr.Number.Ordinal . pluralize 1 .. 10 , "ar" , %{ one : "one" , few : "few" , other : "other" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize 1 .. 10 , "ar" , %{ one : "one" , few : "few" , other : "other" }
"other"
- iex> Plausible.Cldr.Number.Ordinal . pluralize 1 .. 10 , "en" , %{ one : "one" , few : "few" , other : "other" }
+ iex> Plausible.Cldr.Number.Ordinal . pluralize 1 .. 10 , "en" , %{ one : "one" , few : "few" , other : "other" }
"other"
diff --git a/Plausible.Cldr.Number.PluralRule.Range.html b/Plausible.Cldr.Number.PluralRule.Range.html
index d558ea387..17fae83c5 100644
--- a/Plausible.Cldr.Number.PluralRule.Range.html
+++ b/Plausible.Cldr.Number.PluralRule.Range.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Cldr.Number.Symbol.html b/Plausible.Cldr.Number.Symbol.html
index 3d30d206a..27f5fedb8 100644
--- a/Plausible.Cldr.Number.Symbol.html
+++ b/Plausible.Cldr.Number.Symbol.html
@@ -14,7 +14,7 @@
-
+
@@ -378,9 +378,9 @@ is Plausible.Cld
Example:
-iex> Plausible.Cldr.Number.Symbol . number_symbols_for ( :th )
- { :ok , %{
- latn : % Cldr.Number.Symbol {
+iex> Plausible.Cldr.Number.Symbol . number_symbols_for ( :th )
+ { :ok , %{
+ latn : % Cldr.Number.Symbol {
decimal : "." ,
exponential : "E" ,
group : "," ,
@@ -393,8 +393,8 @@ is Plausible.Cld
plus_sign : "+" ,
superscripting_exponent : "×" ,
time_separator : ":"
- } ,
- thai : % Cldr.Number.Symbol {
+ } ,
+ thai : % Cldr.Number.Symbol {
decimal : "." ,
exponential : "E" ,
group : "," ,
@@ -407,8 +407,8 @@ is Plausible.Cld
plus_sign : "+" ,
superscripting_exponent : "×" ,
time_separator : ":"
- }
- } }
+ }
+ } }
diff --git a/Plausible.Cldr.Number.System.html b/Plausible.Cldr.Number.System.html
index c53d7ac78..473017ffc 100644
--- a/Plausible.Cldr.Number.System.html
+++ b/Plausible.Cldr.Number.System.html
@@ -14,7 +14,7 @@
-
+
@@ -317,23 +317,23 @@ it is returned as is.Examples
iex> Plausible.Cldr.Number.System . number_system_for "th" , :latn
- { :ok , %{ digits : "0123456789" , type : :numeric } }
+ { :ok , %{ digits : "0123456789" , type : :numeric } }
iex> Plausible.Cldr.Number.System . number_system_for "en" , :default
- { :ok , %{ digits : "0123456789" , type : :numeric } }
+ { :ok , %{ digits : "0123456789" , type : :numeric } }
iex> Plausible.Cldr.Number.System . number_system_for "he" , :traditional
- { :ok , %{ rules : "hebrew" , type : :algorithmic } }
+ { :ok , %{ rules : "hebrew" , type : :algorithmic } }
iex> Plausible.Cldr.Number.System . number_system_for "en" , :native
- { :ok , %{ digits : "0123456789" , type : :numeric } }
+ { :ok , %{ digits : "0123456789" , type : :numeric } }
iex> Plausible.Cldr.Number.System . number_system_for "en" , :finance
- {
+ {
:error ,
- { Cldr.UnknownNumberSystemError ,
- "The number system :finance is unknown for the locale named :en. Valid number systems are %{default: :latn, native: :latn}" }
- }
+ { Cldr.UnknownNumberSystemError ,
+ "The number system :finance is unknown for the locale named :en. Valid number systems are %{default: :latn, native: :latn}" }
+ }
@@ -509,13 +509,13 @@ or a Examples
iex> Plausible.Cldr.Number.System . number_systems_for "en"
- { :ok , %{ default : :latn , native : :latn } }
+ { :ok , %{ default : :latn , native : :latn } }
iex> Plausible.Cldr.Number.System . number_systems_for "th"
- { :ok , %{ default : :latn , native : :thai } }
+ { :ok , %{ default : :latn , native : :thai } }
iex> Plausible.Cldr.Number.System . number_systems_for "zz"
- { :error , { Cldr.InvalidLanguageError , "The language \" zz \" is invalid" } }
+{ :error , { Cldr.InvalidLanguageError , "The language \" zz \" is invalid" } }
@@ -614,20 +614,20 @@ actual system name.Examples
-ex > Plausible.Cldr.Number.System . system_name_from ( :default , "en" )
- { :ok , :latn }
+ex > Plausible.Cldr.Number.System . system_name_from ( :default , "en" )
+ { :ok , :latn }
- iex> Plausible.Cldr.Number.System . system_name_from ( "latn" , "en" )
- { :ok , :latn }
+ iex> Plausible.Cldr.Number.System . system_name_from ( "latn" , "en" )
+ { :ok , :latn }
- iex> Plausible.Cldr.Number.System . system_name_from ( :native , "en" )
- { :ok , :latn }
+ iex> Plausible.Cldr.Number.System . system_name_from ( :native , "en" )
+ { :ok , :latn }
- iex> Plausible.Cldr.Number.System . system_name_from ( :nope , "en" )
- {
+ iex> Plausible.Cldr.Number.System . system_name_from ( :nope , "en" )
+ {
:error ,
- { Cldr.UnknownNumberSystemError , "The number system :nope is unknown" }
- }
Note that return value is not guaranteed to be a valid
+
{ Cldr.UnknownNumberSystemError , "The number system :nope is unknown" }
+ }
Note that return value is not guaranteed to be a valid
number system for the given locale as demonstrated in the third example.
@@ -674,16 +674,16 @@ is recommended.Examples
iex> Plausible.Cldr.Number.System . to_system 123456 , :hebr
- { :ok , "קכ״ג׳תנ״ו" }
+ { :ok , "קכ״ג׳תנ״ו" }
iex> Plausible.Cldr.Number.System . to_system 123 , :hans
- { :ok , "一百二十三" }
+ { :ok , "一百二十三" }
iex> Plausible.Cldr.Number.System . to_system 123 , :hant
- { :ok , "一百二十三" }
+ { :ok , "一百二十三" }
iex> Plausible.Cldr.Number.System . to_system 123 , :hansfin
- { :ok , "壹佰贰拾叁" }
+{ :ok , "壹佰贰拾叁" }
diff --git a/Plausible.Cldr.Number.Transliterate.html b/Plausible.Cldr.Number.Transliterate.html
index a333779c7..39bed5680 100644
--- a/Plausible.Cldr.Number.Transliterate.html
+++ b/Plausible.Cldr.Number.Transliterate.html
@@ -14,7 +14,7 @@
-
+
@@ -162,12 +162,12 @@ digits between number systems. For example from :arabic to :latn. Since genera
transliteration map is slow, pairs of transliterations can be configured so that the
transliteration map is created at compile time and therefore speeding up transliteration at
run time.To configure these transliteration pairs, add the to the use Cldr
configuration
-in a backend module:
defmodule MyApp.Cldr do
+in a backend module:defmodule MyApp.Cldr do
use Cldr ,
- locale : [ "en" , "fr" , "th" ] ,
+ locale : [ "en" , "fr" , "th" ] ,
default_locale : "en" ,
- precompile_transliterations : [ { :latn , :thai } , { :arab , :thai } ]
- end
Where each tuple in the list configures one transliteration map. In this example, two maps are
+
precompile_transliterations : [ { :latn , :thai } , { :arab , :thai } ]
+ end
Where each tuple in the list configures one transliteration map. In this example, two maps are
configured: from :latn
to :thai
and from :arab
to :thai
.
A list of configurable number systems is returned by Cldr.Number.System.numeric_systems/0
.
If a transliteration is requested between two number pairs that have not been configured for
precompilation, a warning is logged.
@@ -281,22 +281,22 @@ and
Examples
-iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" )
+iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" )
"123556"
- iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123,556.000" , "fr" , :default )
+ iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123,556.000" , "fr" , :default )
"123 556,000"
- iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" , "th" , :default )
+ iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" , "th" , :default )
"123556"
- iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" , "th" , "thai" )
+ iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" , "th" , "thai" )
"๑๒๓๕๕๖"
- iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" , "th" , :native )
+ iex> Plausible.Cldr.Number.Transliterate . transliterate ( "123556" , "th" , :native )
"๑๒๓๕๕๖"
- iex> Plausible.Cldr.Number.Transliterate . transliterate ( "Some number is: 123556" , "th" , "thai" )
+ iex> Plausible.Cldr.Number.Transliterate . transliterate ( "Some number is: 123556" , "th" , "thai" )
"Some number is: ๑๒๓๕๕๖"
diff --git a/Plausible.Cldr.Number.html b/Plausible.Cldr.Number.html
index f8ddc329d..0fa9113a4 100644
--- a/Plausible.Cldr.Number.html
+++ b/Plausible.Cldr.Number.html
@@ -14,7 +14,7 @@
-
+
@@ -441,19 +441,19 @@ using the Elixir standard library functions.
Examples
-iex> Plausible.Cldr.Number . parse ( "+1.000,34" , locale : "de" )
- { :ok , 1000.34 }
+iex> Plausible.Cldr.Number . parse ( "+1.000,34" , locale : "de" )
+ { :ok , 1000.34 }
- iex> Plausible.Cldr.Number . parse ( "-1_000_000.34" )
- { :ok , - 1000000.34 }
+ iex> Plausible.Cldr.Number . parse ( "-1_000_000.34" )
+ { :ok , - 1000000.34 }
- iex> Plausible.Cldr.Number . parse ( "1.000" , locale : "de" , number : :integer )
- { :ok , 1000 }
+ iex> Plausible.Cldr.Number . parse ( "1.000" , locale : "de" , number : :integer )
+ { :ok , 1000 }
- iex> Plausible.Cldr.Number . parse ( "+1.000,34" , locale : "de" , number : :integer )
- { :error ,
- { Cldr.Number.ParseError ,
- "The string \" +1.000,34 \" could not be parsed as a number" } }
+ iex> Plausible.Cldr.Number . parse ( "+1.000,34" , locale : "de" , number : :integer )
+ { :error ,
+ { Cldr.Number.ParseError ,
+ "The string \" +1.000,34 \" could not be parsed as a number" } }
@@ -525,17 +525,17 @@ financial instruments.
Examples
-iex> Plausible.Cldr.Number . scan ( "100 US dollars" )
+iex> Plausible.Cldr.Number . scan ( "100 US dollars" )
...> |> Plausible.Cldr.Number . resolve_currencies
- [ 100 , :USD ]
+ [ 100 , :USD ]
- iex> Plausible.Cldr.Number . scan ( "100 eurosports" )
- ...> |> Plausible.Cldr.Number . resolve_currencies ( fuzzy : 0.75 )
- [ 100 , :EUR ]
+ iex> Plausible.Cldr.Number . scan ( "100 eurosports" )
+ ...> |> Plausible.Cldr.Number . resolve_currencies ( fuzzy : 0.75 )
+ [ 100 , :EUR ]
- iex> Plausible.Cldr.Number . scan ( "100 dollars des États-Unis" )
- ...> |> Plausible.Cldr.Number . resolve_currencies ( locale : "fr" )
- [ 100 , :USD ]
+ iex> Plausible.Cldr.Number . scan ( "100 dollars des États-Unis" )
+ ...> |> Plausible.Cldr.Number . resolve_currencies ( locale : "fr" )
+ [ 100 , :USD ]
@@ -612,19 +612,19 @@ financial instruments.Examples
-iex> Plausible.Cldr.Number . resolve_currency ( "US dollars" )
- [ :USD ]
+iex> Plausible.Cldr.Number . resolve_currency ( "US dollars" )
+ [ :USD ]
- iex> Plausible.Cldr.Number . resolve_currency ( "100 eurosports" , fuzzy : 0.75 )
- [ :EUR ]
+ iex> Plausible.Cldr.Number . resolve_currency ( "100 eurosports" , fuzzy : 0.75 )
+ [ :EUR ]
- iex> Plausible.Cldr.Number . resolve_currency ( "dollars des États-Unis" , locale : "fr" )
- [ :USD ]
+ iex> Plausible.Cldr.Number . resolve_currency ( "dollars des États-Unis" , locale : "fr" )
+ [ :USD ]
- iex> Plausible.Cldr.Number . resolve_currency ( "not a known currency" , locale : "fr" )
- { :error ,
- { Cldr.UnknownCurrencyError ,
- "The currency \" not a known currency \" is unknown or not supported" } }
+ iex> Plausible.Cldr.Number . resolve_currency ( "not a known currency" , locale : "fr" )
+ { :error ,
+ { Cldr.UnknownCurrencyError ,
+ "The currency \" not a known currency \" is unknown or not supported" } }
@@ -688,13 +688,13 @@ The default is options[:backend].get_locale()
Examples
iex> Plausible.Cldr.Number . resolve_per "11%"
- [ "11" , :percent ]
+ [ "11" , :percent ]
iex> Plausible.Cldr.Number . resolve_per "% of linguists"
- [ :percent , " of linguists" ]
+ [ :percent , " of linguists" ]
iex> Plausible.Cldr.Number . resolve_per "% of linguists %"
- [ :percent , " of linguists " , :percent ]
+[ :percent , " of linguists " , :percent ]
@@ -751,9 +751,9 @@ The default is options[:backend].get_locale()
Examples
-iex> Plausible.Cldr.Number . scan ( "100%" )
- ...> |> Plausible.Cldr.Number . resolve_pers ( )
- [ 100 , :percent ]
+iex> Plausible.Cldr.Number . scan ( "100%" )
+ ...> |> Plausible.Cldr.Number . resolve_pers ( )
+ [ 100 , :percent ]
@@ -813,20 +813,20 @@ and any options provided are passed to that function.Examples
-iex> Plausible.Cldr.Number . scan ( "£1_000_000.34" )
- [ "£" , 1000000.34 ]
+iex> Plausible.Cldr.Number . scan ( "£1_000_000.34" )
+ [ "£" , 1000000.34 ]
- iex> Plausible.Cldr.Number . scan ( "I want £1_000_000 dollars" )
- [ "I want £" , 1000000 , " dollars" ]
+ iex> Plausible.Cldr.Number . scan ( "I want £1_000_000 dollars" )
+ [ "I want £" , 1000000 , " dollars" ]
- iex> Plausible.Cldr.Number . scan ( "The prize is 23" )
- [ "The prize is " , 23 ]
+ iex> Plausible.Cldr.Number . scan ( "The prize is 23" )
+ [ "The prize is " , 23 ]
- iex> Plausible.Cldr.Number . scan ( "The lottery number is 23 for the next draw" )
- [ "The lottery number is " , 23 , " for the next draw" ]
+ iex> Plausible.Cldr.Number . scan ( "The lottery number is 23 for the next draw" )
+ [ "The lottery number is " , 23 , " for the next draw" ]
- iex> Plausible.Cldr.Number . scan ( "The loss is -1.000 euros" , locale : "de" , number : :integer )
- [ "The loss is " , - 1000 , " euros" ]
+ iex> Plausible.Cldr.Number . scan ( "The loss is -1.000 euros" , locale : "de" , number : :integer )
+ [ "The loss is " , - 1000 , " euros" ]
@@ -873,7 +873,7 @@ options.Example
iex> Plausible.Cldr.Number . to_approx_string 1234
- { :ok , "~1,234" }
+{ :ok , "~1,234" }
@@ -920,7 +920,7 @@ options.Example
iex> Plausible.Cldr.Number . to_at_least_string 1234
- { :ok , "1,234+" }
+{ :ok , "1,234+" }
@@ -967,7 +967,7 @@ options.Example
iex> Plausible.Cldr.Number . to_at_most_string 1234
- { :ok , "≤1,234" }
+{ :ok , "≤1,234" }
@@ -1014,7 +1014,7 @@ options.Example
iex> Plausible.Cldr.Number . to_range_string 1234 .. 5678
- { :ok , "1,234–5,678" }
+{ :ok , "1,234–5,678" }
@@ -1133,21 +1133,21 @@ extensions.It is also possible and recommended to use the Phoenix.HTML.Tag.content_tag/3
function if wrapping HTML tags since these will ensure HTML entities are
-correctly encoded. For example:
iex> Cldr.Number . to_string ( 100 , format : :currency , currency : :USD , wrapper : fn
- ...> string , :currency_symbol -> Phoenix.HTML.Tag . content_tag ( :span , string , class : "symbol" )
- ...> string , :number -> Phoenix.HTML.Tag . content_tag ( :span , string , class : "number" )
- ...> string , :currency_space -> Phoenix.HTML.Tag . content_tag ( :span , string )
+correctly encoded. For example:iex> Cldr.Number . to_string ( 100 , format : :currency , currency : :USD , wrapper : fn
+ ...> string , :currency_symbol -> Phoenix.HTML.Tag . content_tag ( :span , string , class : "symbol" )
+ ...> string , :number -> Phoenix.HTML.Tag . content_tag ( :span , string , class : "number" )
+ ...> string , :currency_space -> Phoenix.HTML.Tag . content_tag ( :span , string )
...> string , _other -> string
- ...> end )
- { :ok , "<span class= \" symbol \" >$</span><span class= \" number \" >100.00</span>" }
When formatting a number the format is parsed into format elements that might include
+
...> end )
+ { :ok , "<span class= \" symbol \" >$</span><span class= \" number \" >100.00</span>" }
When formatting a number the format is parsed into format elements that might include
a currency symbol, a literal string, inserted text between a currency symbol and the
currency amount, a percent sign, the number itself and several other elements. In
some cases it is helpful to be apply specific formatting to each element.
@@ -1168,80 +1168,80 @@ inserted in the final formatted number.
Examples
iex> Plausible.Cldr.Number . to_string 12345
- { :ok , "12,345" }
+ { :ok , "12,345" }
iex> Plausible.Cldr.Number . to_string 12345 , locale : "fr"
- { :ok , "12 345" }
+ { :ok , "12 345" }
iex> Plausible.Cldr.Number . to_string 1345.32 , currency : :EUR , locale : "es" , minimum_grouping_digits : 1
- { :ok , "1.345,32 €" }
+ { :ok , "1.345,32 €" }
iex> Plausible.Cldr.Number . to_string 1345.32 , currency : :EUR , locale : "es"
- { :ok , "1345,32 €" }
+ { :ok , "1345,32 €" }
iex> Plausible.Cldr.Number . to_string 12345 , locale : "fr" , currency : "USD"
- { :ok , "12 345,00 $US" }
+ { :ok , "12 345,00 $US" }
iex> Plausible.Cldr.Number . to_string 12345 , format : "#E0"
- { :ok , "1.2345E4" }
+ { :ok , "1.2345E4" }
iex> Plausible.Cldr.Number . to_string 12345 , format : :accounting , currency : "THB"
- { :ok , "THB 12,345.00" }
+ { :ok , "THB 12,345.00" }
iex> Plausible.Cldr.Number . to_string - 12345 , format : :accounting , currency : "THB"
- { :ok , "(THB 12,345.00)" }
+ { :ok , "(THB 12,345.00)" }
iex> Plausible.Cldr.Number . to_string 12345 , format : :accounting , currency : "THB" ,
...> locale : "th"
- { :ok , "฿12,345.00" }
+ { :ok , "฿12,345.00" }
iex> Plausible.Cldr.Number . to_string 12345 , format : :accounting , currency : "THB" ,
...> locale : "th" , number_system : :native
- { :ok , "฿๑๒,๓๔๕.๐๐" }
+ { :ok , "฿๑๒,๓๔๕.๐๐" }
iex> Plausible.Cldr.Number . to_string 1244.30 , format : :long
- { :ok , "1 thousand" }
+ { :ok , "1 thousand" }
iex> Plausible.Cldr.Number . to_string 1244.30 , format : :long , currency : "USD"
- { :ok , "1,244 US dollars" }
+ { :ok , "1,244 US dollars" }
iex> Plausible.Cldr.Number . to_string 1244.30 , format : :short
- { :ok , "1K" }
+ { :ok , "1K" }
iex> Plausible.Cldr.Number . to_string 1244.30 , format : :short , currency : "EUR"
- { :ok , "€1K" }
+ { :ok , "€1K" }
iex> Plausible.Cldr.Number . to_string 1234 , format : :spellout
- { :ok , "one thousand two hundred thirty-four" }
+ { :ok , "one thousand two hundred thirty-four" }
iex> Plausible.Cldr.Number . to_string 1234 , format : :spellout_verbose
- { :ok , "one thousand two hundred and thirty-four" }
+ { :ok , "one thousand two hundred and thirty-four" }
iex> Plausible.Cldr.Number . to_string 1989 , format : :spellout_year
- { :ok , "nineteen eighty-nine" }
+ { :ok , "nineteen eighty-nine" }
iex> Plausible.Cldr.Number . to_string 123 , format : :ordinal
- { :ok , "123rd" }
+ { :ok , "123rd" }
iex> Plausible.Cldr.Number . to_string 123 , format : :roman
- { :ok , "CXXIII" }
+ { :ok , "CXXIII" }
iex> Plausible.Cldr.Number . to_string 123 , locale : "th-u-nu-thai"
- { :ok , "๑๒๓" }
+{ :ok , "๑๒๓" }
Errors
An error tuple {:error, reason}
will be returned if an error is detected.
-The two most likely causes of an error return are:
A format cannot be compiled. In this case the error tuple will look like: iex> Plausible.Cldr.Number . to_string ( 12345 , format : "0#" )
- { :error , { Cldr.FormatCompileError ,
- "Decimal format compiler: syntax error before: \" # \" " } }
The format style requested is not defined for the locale
and
+The two most likely causes of an error return are:A format cannot be compiled. In this case the error tuple will look like: iex> Plausible.Cldr.Number . to_string ( 12345 , format : "0#" )
+ { :error , { Cldr.FormatCompileError ,
+ "Decimal format compiler: syntax error before: \" # \" " } }
The format style requested is not defined for the locale
and
number_system
. This happens typically when the number system is
:algorithmic
rather than the more common :numeric
. In this case the error
-return looks like: iex> Plausible.Cldr.Number . to_string ( 1234 , locale : "he" , number_system : "hebr" , format : :percent )
- { :error , { Cldr.UnknownFormatError ,
- "The locale :he with number system :hebr does not define a format :percent" } }
+return looks like: iex> Plausible.Cldr.Number . to_string ( 1234 , locale : "he" , number_system : "hebr" , format : :percent )
+ { :error , { Cldr.UnknownFormatError ,
+ "The locale :he with number system :hebr does not define a format :percent" } }
@@ -1346,17 +1346,17 @@ returned by Examples
iex> Plausible.Cldr.Number . validate_number_system "en" , :latn
- { :ok , :latn }
+ { :ok , :latn }
iex> Plausible.Cldr.Number . validate_number_system "en" , :default
- { :ok , :latn }
+ { :ok , :latn }
iex> Plausible.Cldr.Number . validate_number_system "en" , :unknown
- { :error ,
- { Cldr.UnknownNumberSystemError , "The number system :unknown is unknown" } }
+ { :error ,
+ { Cldr.UnknownNumberSystemError , "The number system :unknown is unknown" } }
iex> Plausible.Cldr.Number . validate_number_system "zz" , :default
- { :error , { Cldr.InvalidLanguageError , "The language \" zz \" is invalid" } }
+{ :error , { Cldr.InvalidLanguageError , "The language \" zz \" is invalid" } }
diff --git a/Plausible.Cldr.Rbnf.NumberSystem.html b/Plausible.Cldr.Rbnf.NumberSystem.html
index a6a51abd5..87bb5adb6 100644
--- a/Plausible.Cldr.Rbnf.NumberSystem.html
+++ b/Plausible.Cldr.Rbnf.NumberSystem.html
@@ -14,7 +14,7 @@
-
+
@@ -145,9 +145,9 @@ Pages
Functions to implement the number system rule-based-number-format rules of CLDR.
These rules are defined only on the "und" locale and represent specialised
number formatting.
The standard public API for RBNF is via the Cldr.Number.to_string/2
function.
The functions on this module are defined at compile time based upon the RBNF rules
-defined in the Unicode CLDR data repository. Available rules are identified by:
iex> Plausible.Cldr.Rbnf.NumberSystem . rule_sets ( :und )
- ...> |> Enum . sort ( )
- [
+defined in the Unicode CLDR data repository. Available rules are identified by:iex> Plausible.Cldr.Rbnf.NumberSystem . rule_sets ( :und )
+ ...> |> Enum . sort ( )
+ [
:armenian_lower ,
:armenian_upper ,
:cyrillic_lower ,
@@ -161,9 +161,9 @@ defined in the Unicode CLDR data repository. Available rules are identified by:
:roman_upper ,
:tamil ,
:zz_default
- ]
A rule can then be invoked on an available rule_set. For example
iex> Plausible.Cldr.Rbnf.NumberSystem . roman_upper ( 123 , :und )
- "CXXIII"
This particular call is equivalent to the call through the public API of:
iex> Plausible.Cldr.Number . to_string ( 123 , format : :roman )
- { :ok , "CXXIII" }
+ ]
A rule can then be invoked on an available rule_set. For example
iex> Plausible.Cldr.Rbnf.NumberSystem . roman_upper ( 123 , :und )
+ "CXXIII"
This particular call is equivalent to the call through the public API of:
iex> Plausible.Cldr.Number . to_string ( 123 , format : :roman )
+ { :ok , "CXXIII" }
diff --git a/Plausible.Cldr.Rbnf.Ordinal.html b/Plausible.Cldr.Rbnf.Ordinal.html
index ca649465d..6c1bdc939 100644
--- a/Plausible.Cldr.Rbnf.Ordinal.html
+++ b/Plausible.Cldr.Rbnf.Ordinal.html
@@ -14,7 +14,7 @@
-
+
@@ -145,20 +145,20 @@ Pages
Functions to implement the ordinal rule-based-number-format rules of CLDR.
As CLDR notes, the data is incomplete or non-existent for many languages. It
is considered complete for English however.
The standard public API for RBNF is via the Cldr.Number.to_string/2
function.
The functions on this module are defined at compile time based upon the RBNF rules
-defined in the Unicode CLDR data repository. Available rules are identified by:
iex> Plausible.Cldr.Rbnf.Ordinal . rule_sets ( :en )
- [ :digits_ordinal ]
+defined in the Unicode CLDR data repository. Available rules are identified by:iex> Plausible.Cldr.Rbnf.Ordinal . rule_sets ( :en )
+ [ :digits_ordinal ]
- iex> Plausible.Cldr.Rbnf.Ordinal . rule_sets ( "fr" )
- ...> |> Enum . sort ( )
- [
+ iex> Plausible.Cldr.Rbnf.Ordinal . rule_sets ( "fr" )
+ ...> |> Enum . sort ( )
+ [
:digits_ordinal ,
:digits_ordinal_feminine ,
:digits_ordinal_feminine_plural ,
:digits_ordinal_masculine ,
:digits_ordinal_masculine_plural
- ]
A rule can then be invoked on an available rule_set. For example
iex> Plausible.Cldr.Rbnf.Ordinal . digits_ordinal ( 123 , :en )
- "123rd"
This call is equivalent to the call through the public API of:
iex> Plausible.Cldr.Number . to_string ( 123 , format : :ordinal )
- { :ok , "123rd" }
+ ]
A rule can then be invoked on an available rule_set. For example
iex> Plausible.Cldr.Rbnf.Ordinal . digits_ordinal ( 123 , :en )
+ "123rd"
This call is equivalent to the call through the public API of:
iex> Plausible.Cldr.Number . to_string ( 123 , format : :ordinal )
+ { :ok , "123rd" }
diff --git a/Plausible.Cldr.Rbnf.Spellout.html b/Plausible.Cldr.Rbnf.Spellout.html
index 23b5071c1..724d4ad7f 100644
--- a/Plausible.Cldr.Rbnf.Spellout.html
+++ b/Plausible.Cldr.Rbnf.Spellout.html
@@ -14,7 +14,7 @@
-
+
@@ -145,9 +145,9 @@ Pages
Functions to implement the spellout rule-based-number-format rules of CLDR.
As CLDR notes, the data is incomplete or non-existent for many languages. It
is considered complete for English however.
The standard public API for RBNF is via the Cldr.Number.to_string/2
function.
The functions on this module are defined at compile time based upon the RBNF rules
-defined in the Unicode CLDR data repository. Available rules are identified by:
iex> Plausible.Cldr.Rbnf.Spellout . rule_sets ( "en" )
- ...> |> Enum . sort ( )
- [
+defined in the Unicode CLDR data repository. Available rules are identified by:iex> Plausible.Cldr.Rbnf.Spellout . rule_sets ( "en" )
+ ...> |> Enum . sort ( )
+ [
:spellout_cardinal ,
:spellout_cardinal_verbose ,
:spellout_numbering ,
@@ -155,9 +155,9 @@ defined in the Unicode CLDR data repository. Available rules are identified by:
:spellout_numbering_year ,
:spellout_ordinal ,
:spellout_ordinal_verbose
- ]
A rule can then be invoked on an available rule_set. For example:
iex> Plausible.Cldr.Rbnf.Spellout . spellout_ordinal ( 123 , "en" )
- "one hundred twenty-third"
This call is equivalent to the call through the public API of:
iex> Plausible.Cldr.Number . to_string ( 123 , format : :spellout )
- { :ok , "one hundred twenty-three" }
+ ]
A rule can then be invoked on an available rule_set. For example:
iex> Plausible.Cldr.Rbnf.Spellout . spellout_ordinal ( 123 , "en" )
+ "one hundred twenty-third"
This call is equivalent to the call through the public API of:
iex> Plausible.Cldr.Number . to_string ( 123 , format : :spellout )
+ { :ok , "one hundred twenty-three" }
diff --git a/Plausible.Cldr.html b/Plausible.Cldr.html
index 49ca34253..6ef7ee483 100644
--- a/Plausible.Cldr.html
+++ b/Plausible.Cldr.html
@@ -14,7 +14,7 @@
-
+
@@ -558,24 +558,24 @@ current locale is restored after the function.
Example
-iex> Plausible.Cldr . default_locale ( )
- % Cldr.LanguageTag {
+iex> Plausible.Cldr . default_locale ( )
+ % Cldr.LanguageTag {
backend : Plausible.Cldr ,
canonical_locale_name : "en-001" ,
cldr_locale_name : :"en-001" ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : "en" ,
language : "en" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :en ,
requested_locale_name : "en-001" ,
script : :Latn ,
territory : :"001" ,
- transform : %{ } ,
- language_variants : [ ]
- }
+ transform : %{ } ,
+ language_variants : [ ]
+ }
@@ -610,7 +610,7 @@ does not specify one and none can be inferred.Example
-iex> Plausible.Cldr . default_territory ( )
+iex> Plausible.Cldr . default_territory ( )
:"001"
@@ -670,16 +670,16 @@ is inserted between words or sentences. The valid options are
Examples
-iex> Plausible.Cldr . ellipsis ( "And furthermore" )
+iex> Plausible.Cldr . ellipsis ( "And furthermore" )
"And furthermore…"
- iex> Plausible.Cldr . ellipsis ( [ "And furthermore" , "there is much to be done" ] , locale : :ja )
+ iex> Plausible.Cldr . ellipsis ( [ "And furthermore" , "there is much to be done" ] , locale : :ja )
"And furthermore…there is much to be done"
- iex> Plausible.Cldr . ellipsis ( "And furthermore" , format : :word )
+ iex> Plausible.Cldr . ellipsis ( "And furthermore" , format : :word )
"And furthermore …"
- iex> Plausible.Cldr . ellipsis ( [ "And furthermore" , "there is much to be done" ] , locale : :ja , format : :word )
+ iex> Plausible.Cldr . ellipsis ( [ "And furthermore" , "there is much to be done" ] , locale : :ja , format : :word )
"And furthermore … there is much to be done"
@@ -715,23 +715,23 @@ take an optional locale parameter for which a locale is not supplied.
Example
-iex> Plausible.Cldr . put_locale ( "pl" )
- iex> Plausible.Cldr . get_locale ( )
- % Cldr.LanguageTag {
+iex> Plausible.Cldr . put_locale ( "pl" )
+ iex> Plausible.Cldr . get_locale ( )
+ % Cldr.LanguageTag {
backend : Elixir.Plausible.Cldr ,
canonical_locale_name : "pl" ,
cldr_locale_name : :pl ,
- extensions : %{ } ,
+ extensions : %{ } ,
language : "pl" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :pl ,
territory : :PL ,
requested_locale_name : "pl" ,
script : :Latn ,
- transform : %{ } ,
- language_variants : [ ]
- }
+ transform : %{ } ,
+ language_variants : [ ]
+ }
@@ -818,10 +818,10 @@ take an optional locale parameter for which a locale is not supplied.
Examples
-iex> Plausible.Cldr . known_gettext_locale_name ( "en" )
+iex> Plausible.Cldr . known_gettext_locale_name ( "en" )
"en"
- iex> Plausible.Cldr . known_gettext_locale_name ( "en-SA" )
+ iex> Plausible.Cldr . known_gettext_locale_name ( "en-SA" )
false
@@ -864,10 +864,10 @@ name is configured and available in Gettext.Examples
-iex> Plausible.Cldr . known_gettext_locale_name? ( "en" )
+iex> Plausible.Cldr . known_gettext_locale_name? ( "en" )
true
- iex> Plausible.Cldr . known_gettext_locale_name? ( "!!" )
+ iex> Plausible.Cldr . known_gettext_locale_name? ( "!!" )
false
@@ -941,10 +941,10 @@ to return the first known locale name from a list.Examples
-iex> Plausible.Cldr . known_locale_name ( :"en-AU" )
+iex> Plausible.Cldr . known_locale_name ( :"en-AU" )
:"en-AU"
- iex> Plausible.Cldr . known_locale_name ( :"en-SA" )
+ iex> Plausible.Cldr . known_locale_name ( :"en-SA" )
false
@@ -986,10 +986,10 @@ name is configured and available in Cldr.Examples
-iex> Plausible.Cldr . known_locale_name? ( :en )
+iex> Plausible.Cldr . known_locale_name? ( :en )
true
- iex> Plausible.Cldr . known_locale_name? ( :"!!" )
+ iex> Plausible.Cldr . known_locale_name? ( :"!!" )
false
@@ -1043,8 +1043,8 @@ in this module or in
Example
-iex> Plausible.Cldr . known_number_system_types ( )
- [ :default , :finance , :native , :traditional ]
+iex> Plausible.Cldr . known_number_system_types ( )
+ [ :default , :finance , :native , :traditional ]
@@ -1109,10 +1109,10 @@ and has RBNF rules defined.
Examples
-iex> Plausible.Cldr . known_rbnf_locale_name ( :en )
+iex> Plausible.Cldr . known_rbnf_locale_name ( :en )
:en
- iex> Plausible.Cldr . known_rbnf_locale_name ( :"en-SA" )
+ iex> Plausible.Cldr . known_rbnf_locale_name ( :"en-SA" )
false
@@ -1155,10 +1155,10 @@ rules based number formats (RBNF).Examples
-iex> Plausible.Cldr . known_rbnf_locale_name? ( :en )
+iex> Plausible.Cldr . known_rbnf_locale_name? ( :en )
true
- iex> Plausible.Cldr . known_rbnf_locale_name? ( :"!!" )
+ iex> Plausible.Cldr . known_rbnf_locale_name? ( :"!!" )
false
@@ -1294,18 +1294,18 @@ CLDR backend defined by the t:Cldr.LanguageTag
is se
Examples
iex> import Cldr.LanguageTag.Sigil
- iex> Plausible.Cldr . put_gettext_locale ( ~l"en" )
- { :ok , "en" }
+ iex> Plausible.Cldr . put_gettext_locale ( ~l"en" )
+ { :ok , "en" }
iex> import Cldr.LanguageTag.Sigil
- iex> Plausible.Cldr . put_gettext_locale ( ~l"de" )
- {
+ iex> Plausible.Cldr . put_gettext_locale ( ~l"de" )
+ {
:error ,
- {
+ {
Cldr.UnknownLocaleError ,
"Locale TestBackend.Cldr.Locale.new!( \" de-DE \" ) does not map to a known gettext locale name"
- }
- }
+ }
+ }
@@ -1349,29 +1349,29 @@ of a language tag.
Examples
-iex> Plausible.Cldr . put_locale ( "en" )
- { :ok ,
- % Cldr.LanguageTag {
+iex> Plausible.Cldr . put_locale ( "en" )
+ { :ok ,
+ % Cldr.LanguageTag {
backend : Plausible.Cldr ,
canonical_locale_name : "en" ,
cldr_locale_name : :en ,
- language_subtags : [ ] ,
- extensions : %{ } ,
+ language_subtags : [ ] ,
+ extensions : %{ } ,
gettext_locale_name : "en" ,
language : "en" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :en ,
requested_locale_name : "en" ,
script : :Latn ,
territory : :US ,
- transform : %{ } ,
- language_variants : [ ]
- } }
+ transform : %{ } ,
+ language_variants : [ ]
+ } }
- iex> Plausible.Cldr . put_locale ( "invalid-locale!" )
- { :error , { Cldr.LanguageTag.ParseError ,
- "Expected a BCP47 language tag. Could not parse the remaining \" ! \" starting at position 15" } }
+ iex> Plausible.Cldr . put_locale ( "invalid-locale!" )
+ { :error , { Cldr.LanguageTag.ParseError ,
+ "Expected a BCP47 language tag. Could not parse the remaining \" ! \" starting at position 15" } }
@@ -1554,47 +1554,47 @@ of a language tag.Examples
-iex> Plausible.Cldr . validate_locale ( :en )
- { :ok ,
- % Cldr.LanguageTag {
+iex> Plausible.Cldr . validate_locale ( :en )
+ { :ok ,
+ % Cldr.LanguageTag {
backend : Plausible.Cldr ,
canonical_locale_name : "en" ,
cldr_locale_name : :en ,
- extensions : %{ } ,
+ extensions : %{ } ,
gettext_locale_name : "en" ,
language : "en" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :en ,
requested_locale_name : "en" ,
script : :Latn ,
territory : :US ,
- transform : %{ } ,
- language_variants : [ ]
- } }
+ transform : %{ } ,
+ language_variants : [ ]
+ } }
- iex> Plausible.Cldr . validate_locale Plausible.Cldr . default_locale ( )
- { :ok ,
- % Cldr.LanguageTag {
+ iex> Plausible.Cldr . validate_locale Plausible.Cldr . default_locale ( )
+ { :ok ,
+ % Cldr.LanguageTag {
backend : Plausible.Cldr ,
canonical_locale_name : "en-001" ,
cldr_locale_name : :"en-001" ,
- extensions : %{ } ,
+ extensions : %{ } ,
gettext_locale_name : "en" ,
language : "en" ,
- locale : %{ } ,
- private_use : [ ] ,
+ locale : %{ } ,
+ private_use : [ ] ,
rbnf_locale_name : :en ,
requested_locale_name : "en-001" ,
script : :Latn ,
territory : :"001" ,
- transform : %{ } ,
- language_variants : [ ]
- } }
+ transform : %{ } ,
+ language_variants : [ ]
+ } }
- iex> Plausible.Cldr . validate_locale ( "zzz" )
- { :error , { Cldr.InvalidLanguageError , "The language \" zzz \" is invalid" } }
+ iex> Plausible.Cldr . validate_locale ( "zzz" )
+ { :error , { Cldr.InvalidLanguageError , "The language \" zzz \" is invalid" } }
@@ -1664,23 +1664,23 @@ of a language tag.Examples
-iex> Plausible.Cldr . validate_number_system_type ( :default )
- { :ok , :default }
+iex> Plausible.Cldr . validate_number_system_type ( :default )
+ { :ok , :default }
- iex> Plausible.Cldr . validate_number_system_type ( :traditional )
- { :ok , :traditional }
+ iex> Plausible.Cldr . validate_number_system_type ( :traditional )
+ { :ok , :traditional }
- iex> Plausible.Cldr . validate_number_system_type ( :latn )
- {
+ iex> Plausible.Cldr . validate_number_system_type ( :latn )
+ {
:error ,
- { Cldr.UnknownNumberSystemTypeError , "The number system type :latn is unknown" }
- }
+ { Cldr.UnknownNumberSystemTypeError , "The number system type :latn is unknown" }
+ }
- iex> Plausible.Cldr . validate_number_system_type ( "bork" )
- {
+ iex> Plausible.Cldr . validate_number_system_type ( "bork" )
+ {
:error ,
- { Cldr.UnknownNumberSystemTypeError , "The number system type \" bork \" is invalid" }
- }
+ { Cldr.UnknownNumberSystemTypeError , "The number system type \" bork \" is invalid" }
+ }
diff --git a/Plausible.ClickhouseEventV2.html b/Plausible.ClickhouseEventV2.html
index aaf314bbb..6b39eb652 100644
--- a/Plausible.ClickhouseEventV2.html
+++ b/Plausible.ClickhouseEventV2.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.ClickhouseLocationData.html b/Plausible.ClickhouseLocationData.html
index 0c065be77..5914cc471 100644
--- a/Plausible.ClickhouseLocationData.html
+++ b/Plausible.ClickhouseLocationData.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.ClickhouseRepo.html b/Plausible.ClickhouseRepo.html
index 497703c42..958ed7de9 100644
--- a/Plausible.ClickhouseRepo.html
+++ b/Plausible.ClickhouseRepo.html
@@ -14,7 +14,7 @@
-
+
@@ -879,23 +879,23 @@ pool to disconnect within the given interval.See
-Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
+Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
- defmodule Demo do
+ defmodule Demo do
use Ecto.Schema
@primary_key false
- schema "ecto_ch_demo" do
+ schema "ecto_ch_demo" do
field :a , Ch , type : "UInt64"
field :b , :string
- end
- end
+ end
+ end
- rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
- { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
+ rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
+ { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
# schemaless
- { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
+ { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
diff --git a/Plausible.ClickhouseSessionV2.BoolUInt8.html b/Plausible.ClickhouseSessionV2.BoolUInt8.html
index cc86d3906..5a2a78287 100644
--- a/Plausible.ClickhouseSessionV2.BoolUInt8.html
+++ b/Plausible.ClickhouseSessionV2.BoolUInt8.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.ClickhouseSessionV2.html b/Plausible.ClickhouseSessionV2.html
index 542e6b208..1bf78ee26 100644
--- a/Plausible.ClickhouseSessionV2.html
+++ b/Plausible.ClickhouseSessionV2.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.ConfigHelpers.html b/Plausible.ConfigHelpers.html
index 25d4402a4..d2507b435 100644
--- a/Plausible.ConfigHelpers.html
+++ b/Plausible.ConfigHelpers.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.CrmExtensions.html b/Plausible.CrmExtensions.html
index 335192b27..7cb6e6376 100644
--- a/Plausible.CrmExtensions.html
+++ b/Plausible.CrmExtensions.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataCase.html b/Plausible.DataCase.html
index 4613c869f..e3f839812 100644
--- a/Plausible.DataCase.html
+++ b/Plausible.DataCase.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataMigration.CleanUpDemoSiteReferrerSource.html b/Plausible.DataMigration.CleanUpDemoSiteReferrerSource.html
index 3ffd5df7b..61993677d 100644
--- a/Plausible.DataMigration.CleanUpDemoSiteReferrerSource.html
+++ b/Plausible.DataMigration.CleanUpDemoSiteReferrerSource.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataMigration.LocationsSync.html b/Plausible.DataMigration.LocationsSync.html
index a998453fd..6f1ec11e1 100644
--- a/Plausible.DataMigration.LocationsSync.html
+++ b/Plausible.DataMigration.LocationsSync.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataMigration.NumericIDs.html b/Plausible.DataMigration.NumericIDs.html
index 90b0341fe..d4d47ef21 100644
--- a/Plausible.DataMigration.NumericIDs.html
+++ b/Plausible.DataMigration.NumericIDs.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataMigration.PopulateEventSessionColumns.html b/Plausible.DataMigration.PopulateEventSessionColumns.html
index 58c2c2641..0564bfb3c 100644
--- a/Plausible.DataMigration.PopulateEventSessionColumns.html
+++ b/Plausible.DataMigration.PopulateEventSessionColumns.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataMigration.Repo.html b/Plausible.DataMigration.Repo.html
index 645e1e44b..1600d4bb9 100644
--- a/Plausible.DataMigration.Repo.html
+++ b/Plausible.DataMigration.Repo.html
@@ -14,7 +14,7 @@
-
+
@@ -1196,23 +1196,23 @@ pool to disconnect within the given interval.See
-Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
+Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
- defmodule Demo do
+ defmodule Demo do
use Ecto.Schema
@primary_key false
- schema "ecto_ch_demo" do
+ schema "ecto_ch_demo" do
field :a , Ch , type : "UInt64"
field :b , :string
- end
- end
+ end
+ end
- rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
- { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
+ rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
+ { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
# schemaless
- { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
+ { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
diff --git a/Plausible.DataMigration.SiteImports.html b/Plausible.DataMigration.SiteImports.html
index 2d9be733d..a48341c5d 100644
--- a/Plausible.DataMigration.SiteImports.html
+++ b/Plausible.DataMigration.SiteImports.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataMigration.VersionedSessions.html b/Plausible.DataMigration.VersionedSessions.html
index 4ccf452b0..8f0eceb35 100644
--- a/Plausible.DataMigration.VersionedSessions.html
+++ b/Plausible.DataMigration.VersionedSessions.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DataMigration.html b/Plausible.DataMigration.html
index 23cf98152..8f36ccb29 100644
--- a/Plausible.DataMigration.html
+++ b/Plausible.DataMigration.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.DebugReplayInfo.html b/Plausible.DebugReplayInfo.html
index e4425fde3..93db4959a 100644
--- a/Plausible.DebugReplayInfo.html
+++ b/Plausible.DebugReplayInfo.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ecto.EventName.html b/Plausible.Ecto.EventName.html
index 8723423e1..c883f8ff7 100644
--- a/Plausible.Ecto.EventName.html
+++ b/Plausible.Ecto.EventName.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ecto.Types.CompiledRegex.html b/Plausible.Ecto.Types.CompiledRegex.html
index af6842189..f66ee2722 100644
--- a/Plausible.Ecto.Types.CompiledRegex.html
+++ b/Plausible.Ecto.Types.CompiledRegex.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Exports.html b/Plausible.Exports.html
index 98fe10c06..fc4343ac2 100644
--- a/Plausible.Exports.html
+++ b/Plausible.Exports.html
@@ -14,7 +14,7 @@
-
+
@@ -381,7 +381,7 @@ tables into the format of imported_*
tables for a we
-Renders export archive filename.
Examples:
iex> archive_filename ( "plausible.io" , _created_on = ~D[2024-12-31] )
+Renders export archive filename.
Examples:
iex> archive_filename ( "plausible.io" , _created_on = ~D[2024-12-31] )
"plausible_io_20241231.zip"
@@ -404,10 +404,10 @@ tables into the format of imported_*
tables for a we
-Safely renders content disposition for an arbitrary export filename.
Examples:
iex> content_disposition ( "plausible_io_20241231.zip" )
+Safely renders content disposition for an arbitrary export filename.
Examples:
iex> content_disposition ( "plausible_io_20241231.zip" )
"attachment; filename= \" plausible_io_20241231.zip \" "
- iex> content_disposition ( "📊.zip" )
+ iex> content_disposition ( "📊.zip" )
"attachment; filename= \" plausible-export.zip \" ; filename*=utf-8''%F0%9F%93%8A.zip"
@@ -726,14 +726,14 @@ tables into the format of imported_*
tables for a we
-Creates a streamable Zip archive from the provided (named) Ecto queries.
Example usage:
{ :ok , pool } = Ch . start_link ( pool_size : 1 )
+Creates a streamable Zip archive from the provided (named) Ecto queries.
Example usage:
{ :ok , pool } = Ch . start_link ( pool_size : 1 )
- DBConnection . run ( pool , fn conn ->
+ DBConnection . run ( pool , fn conn ->
conn
- |> stream_archive ( export_queries ( _site_id = 1 ) , format : "CSVWithNames" )
- |> Stream . into ( File . stream! ( "export.zip" ) )
- |> Stream . run ( )
- end )
+ |> stream_archive ( export_queries ( _site_id = 1 ) , format : "CSVWithNames" )
+ |> Stream . into ( File . stream! ( "export.zip" ) )
+ |> Stream . run ( )
+ end )
diff --git a/Plausible.Factory.html b/Plausible.Factory.html
index 97d29ccb4..0f2142539 100644
--- a/Plausible.Factory.html
+++ b/Plausible.Factory.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Funnel.Const.html b/Plausible.Funnel.Const.html
index 241cb3b5f..bc0069065 100644
--- a/Plausible.Funnel.Const.html
+++ b/Plausible.Funnel.Const.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Funnel.Step.html b/Plausible.Funnel.Step.html
index 4ca3a1a12..02b928203 100644
--- a/Plausible.Funnel.Step.html
+++ b/Plausible.Funnel.Step.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Funnel.html b/Plausible.Funnel.html
index 4b0b77904..f82e28f73 100644
--- a/Plausible.Funnel.html
+++ b/Plausible.Funnel.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Funnels.html b/Plausible.Funnels.html
index 2553990e7..4567b5d2e 100644
--- a/Plausible.Funnels.html
+++ b/Plausible.Funnels.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Geo.html b/Plausible.Geo.html
index e8dad419a..7fb71aaf7 100644
--- a/Plausible.Geo.html
+++ b/Plausible.Geo.html
@@ -14,7 +14,7 @@
-
+
@@ -260,8 +260,8 @@ and MaxMind license key.
Examples
- In the case of a DB-IP database:
iex> database_type ( )
- "DBIP-City-Lite"
In the case of a MaxMind database:
iex> database_type ( )
+ In the case of a DB-IP database:
iex> database_type ( )
+ "DBIP-City-Lite"
In the case of a MaxMind database:
iex> database_type ( )
"GeoLite2-City"
@@ -302,8 +302,8 @@ asynchronously.
Examples
- Loading from a local file:
iex> load_db ( path : "/etc/plausible/dbip-city.mmdb" )
- :ok
Downloading a MaxMind DB (this license key is no longer active):
iex> load_db ( license_key : "LNpsJCCKPis6XvBP" , edition : "GeoLite2-City" , async : true )
+ Loading from a local file:
iex> load_db ( path : "/etc/plausible/dbip-city.mmdb" )
+ :ok
Downloading a MaxMind DB (this license key is no longer active):
iex> load_db ( license_key : "LNpsJCCKPis6XvBP" , edition : "GeoLite2-City" , async : true )
:ok
@@ -332,21 +332,21 @@ asynchronously.
Examples
-iex> lookup ( "8.7.6.5" )
- %{
- "city" => %{
+iex> lookup ( "8.7.6.5" )
+ %{
+ "city" => %{
"geoname_id" => 5349755 ,
- "names" => %{
+ "names" => %{
"de" => "Fontana" ,
"en" => "Fontana" ,
"ja" => "フォンタナ" ,
"ru" => "Фонтана"
- }
- } ,
- "continent" => %{
+ }
+ } ,
+ "continent" => %{
"code" => "NA" ,
"geoname_id" => 6255149 ,
- "names" => %{
+ "names" => %{
"de" => "Nordamerika" ,
"en" => "North America" ,
"es" => "Norteamérica" ,
@@ -355,12 +355,12 @@ asynchronously."pt-BR" => "América do Norte" ,
"ru" => "Северная Америка" ,
"zh-CN" => "北美洲"
- }
- } ,
- "country" => %{
+ }
+ } ,
+ "country" => %{
"geoname_id" => 6252001 ,
"iso_code" => "US" ,
- "names" => %{
+ "names" => %{
"de" => "Vereinigte Staaten" ,
"en" => "United States" ,
"es" => "Estados Unidos" ,
@@ -369,20 +369,20 @@ asynchronously."pt-BR" => "EUA" ,
"ru" => "США" ,
"zh-CN" => "美国"
- }
- } ,
- "location" => %{
+ }
+ } ,
+ "location" => %{
"accuracy_radius" => 50 ,
"latitude" => 34.1211 ,
"longitude" => - 117.4362 ,
"metro_code" => 803 ,
"time_zone" => "America/Los_Angeles"
- } ,
- "postal" => %{ "code" => "92336" } ,
- "registered_country" => %{
+ } ,
+ "postal" => %{ "code" => "92336" } ,
+ "registered_country" => %{
"geoname_id" => 6252001 ,
"iso_code" => "US" ,
- "names" => %{
+ "names" => %{
"de" => "Vereinigte Staaten" ,
"en" => "United States" ,
"es" => "Estados Unidos" ,
@@ -391,13 +391,13 @@ asynchronously."pt-BR" => "EUA" ,
"ru" => "США" ,
"zh-CN" => "美国"
- }
- } ,
- "subdivisions" => [
- %{
+ }
+ } ,
+ "subdivisions" => [
+ %{
"geoname_id" => 5332921 ,
"iso_code" => "CA" ,
- "names" => %{
+ "names" => %{
"de" => "Kalifornien" ,
"en" => "California" ,
"es" => "California" ,
@@ -406,10 +406,10 @@ asynchronously."pt-BR" => "Califórnia" ,
"ru" => "Калифорния" ,
"zh-CN" => "加州"
- }
- }
- ]
- }
+ }
+ }
+ ]
+ }
diff --git a/Plausible.Goal.Revenue.html b/Plausible.Goal.Revenue.html
index aa5e6fecc..869e20b43 100644
--- a/Plausible.Goal.Revenue.html
+++ b/Plausible.Goal.Revenue.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Goal.html b/Plausible.Goal.html
index 9befed98d..b7afd7152 100644
--- a/Plausible.Goal.html
+++ b/Plausible.Goal.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Goals.html b/Plausible.Goals.html
index d4c866311..2c226f747 100644
--- a/Plausible.Goals.html
+++ b/Plausible.Goals.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Google.API.Mock.html b/Plausible.Google.API.Mock.html
index 42a15dc96..94874d9b0 100644
--- a/Plausible.Google.API.Mock.html
+++ b/Plausible.Google.API.Mock.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Google.API.html b/Plausible.Google.API.html
index 92e5d0ed1..4394c69e2 100644
--- a/Plausible.Google.API.html
+++ b/Plausible.Google.API.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Google.GA4.API.html b/Plausible.Google.GA4.API.html
index f49763df4..a900796fc 100644
--- a/Plausible.Google.GA4.API.html
+++ b/Plausible.Google.GA4.API.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Google.GA4.HTTP.html b/Plausible.Google.GA4.HTTP.html
index e0daaf3c2..98d71b581 100644
--- a/Plausible.Google.GA4.HTTP.html
+++ b/Plausible.Google.GA4.HTTP.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Google.GA4.ReportRequest.html b/Plausible.Google.GA4.ReportRequest.html
index 62f02d004..9d67337ff 100644
--- a/Plausible.Google.GA4.ReportRequest.html
+++ b/Plausible.Google.GA4.ReportRequest.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Google.HTTP.html b/Plausible.Google.HTTP.html
index ee1271476..5f00546a7 100644
--- a/Plausible.Google.HTTP.html
+++ b/Plausible.Google.HTTP.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.HTTPClient.Interface.html b/Plausible.HTTPClient.Interface.html
index 01ba4470e..6ffffff64 100644
--- a/Plausible.HTTPClient.Interface.html
+++ b/Plausible.HTTPClient.Interface.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.HTTPClient.Non200Error.html b/Plausible.HTTPClient.Non200Error.html
index 3cfb937a8..3b9fd8f84 100644
--- a/Plausible.HTTPClient.Non200Error.html
+++ b/Plausible.HTTPClient.Non200Error.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.HTTPClient.html b/Plausible.HTTPClient.html
index 0a4c7bc95..548f95d1f 100644
--- a/Plausible.HTTPClient.html
+++ b/Plausible.HTTPClient.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.HelpScout.Vault.html b/Plausible.HelpScout.Vault.html
index eb7856af1..137c301b1 100644
--- a/Plausible.HelpScout.Vault.html
+++ b/Plausible.HelpScout.Vault.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.HelpScout.html b/Plausible.HelpScout.html
index a0e2b0dab..a699baa22 100644
--- a/Plausible.HelpScout.html
+++ b/Plausible.HelpScout.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Helpers.JSON.html b/Plausible.Helpers.JSON.html
index e85cbb701..22c37be07 100644
--- a/Plausible.Helpers.JSON.html
+++ b/Plausible.Helpers.JSON.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.ImportDeletionRepo.html b/Plausible.ImportDeletionRepo.html
index fa8f935ba..c0693316a 100644
--- a/Plausible.ImportDeletionRepo.html
+++ b/Plausible.ImportDeletionRepo.html
@@ -14,7 +14,7 @@
-
+
@@ -1187,23 +1187,23 @@ pool to disconnect within the given interval.See
-Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
+Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
- defmodule Demo do
+ defmodule Demo do
use Ecto.Schema
@primary_key false
- schema "ecto_ch_demo" do
+ schema "ecto_ch_demo" do
field :a , Ch , type : "UInt64"
field :b , :string
- end
- end
+ end
+ end
- rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
- { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
+ rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
+ { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
# schemaless
- { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
+ { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
diff --git a/Plausible.Imported.Buffer.html b/Plausible.Imported.Buffer.html
index ae9217abc..b227c8b66 100644
--- a/Plausible.Imported.Buffer.html
+++ b/Plausible.Imported.Buffer.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Imported.CSVImporter.html b/Plausible.Imported.CSVImporter.html
index 5a108021f..e6e9f7ca0 100644
--- a/Plausible.Imported.CSVImporter.html
+++ b/Plausible.Imported.CSVImporter.html
@@ -14,7 +14,7 @@
-
+
@@ -257,13 +257,13 @@ or from local storage for which it uses iex> date_range ( [
- ...> %{ "filename" => "imported_devices_20190101_20210101.csv" } ,
+Extracts min/max date range from a list of uploads.
Examples:
iex> date_range ( [
+ ...> %{ "filename" => "imported_devices_20190101_20210101.csv" } ,
...> "pages_20200101_20220101.csv"
- ...> ] )
- Date . range ( ~D[2019-01-01] , ~D[2022-01-01] )
+ ...> ] )
+ Date . range ( ~D[2019-01-01] , ~D[2022-01-01] )
- iex> date_range ( [ ] )
+ iex> date_range ( [ ] )
nil
@@ -292,13 +292,13 @@ or from local storage for which it uses iex> extract_table ( "my_data.csv" )
+Extracts the table name from the provided filename.
Raises if the filename doesn't conform to the expected format.
Examples:
iex> extract_table ( "my_data.csv" )
** (ArgumentError) invalid filename
- iex> extract_table ( "imported_devices_00010101_20250101.csv" )
+ iex> extract_table ( "imported_devices_00010101_20250101.csv" )
"imported_devices"
- iex> extract_table ( "devices_00010101_20250101.csv" )
+ iex> extract_table ( "devices_00010101_20250101.csv" )
"imported_devices"
@@ -321,8 +321,8 @@ or from local storage for which it uses
-Returns local directory for CSV imports storage.
Builds upon $DATA_DIR
, $PERSISTENT_CACHE_DIR
or $DEFAULT_DATA_DIR
(if set) and falls back to /tmp.
$DEFAULT_DATA_DIR
is set to /var/lib/plausible
in container images.
Examples:
iex> local_dir = local_dir ( _site_id = 37 )
- iex> String . ends_with? ( local_dir , "/plausible-imports/37" )
+Returns local directory for CSV imports storage.
Builds upon $DATA_DIR
, $PERSISTENT_CACHE_DIR
or $DEFAULT_DATA_DIR
(if set) and falls back to /tmp.
$DEFAULT_DATA_DIR
is set to /var/lib/plausible
in container images.
Examples:
iex> local_dir = local_dir ( _site_id = 37 )
+ iex> String . ends_with? ( local_dir , "/plausible-imports/37" )
true
@@ -382,14 +382,14 @@ or from local storage for which it uses iex> parse_filename! ( "my_data.csv" )
+Extracts table name and min/max dates from the filename.
Examples:
iex> parse_filename! ( "my_data.csv" )
** (ArgumentError) invalid filename
- iex> parse_filename! ( "imported_devices_00010101_20250101.csv" )
- { "imported_devices" , ~D[0001-01-01] , ~D[2025-01-01] }
+ iex> parse_filename! ( "imported_devices_00010101_20250101.csv" )
+ { "imported_devices" , ~D[0001-01-01] , ~D[2025-01-01] }
- iex> parse_filename! ( "devices_00010101_20250101.csv" )
- { "imported_devices" , ~D[0001-01-01] , ~D[2025-01-01] }
+ iex> parse_filename! ( "devices_00010101_20250101.csv" )
+ { "imported_devices" , ~D[0001-01-01] , ~D[2025-01-01] }
diff --git a/Plausible.Imported.GoogleAnalytics4.html b/Plausible.Imported.GoogleAnalytics4.html
index 7e748394a..2863cbe52 100644
--- a/Plausible.Imported.GoogleAnalytics4.html
+++ b/Plausible.Imported.GoogleAnalytics4.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Imported.ImportSources.html b/Plausible.Imported.ImportSources.html
index 8fc05f99b..2051f8638 100644
--- a/Plausible.Imported.ImportSources.html
+++ b/Plausible.Imported.ImportSources.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Imported.Importer.html b/Plausible.Imported.Importer.html
index 6fa9c7a3c..df7a1b3b3 100644
--- a/Plausible.Imported.Importer.html
+++ b/Plausible.Imported.Importer.html
@@ -14,7 +14,7 @@
-
+
@@ -183,30 +183,30 @@ scope of importer logic and is expected to be implemented separately.
In case it's necessary to run the whole import job fully synchronously, the
Plausible.Workers.ImportAnalytics
worker sends an Oban.Notifier
message
-on completion, failure or transient failure of the import.
A basic usage scenario looks like this:
{ :ok , job } = Plausible.Imported.NoopImporter . new_import (
+on completion, failure or transient failure of the import.A basic usage scenario looks like this:
{ :ok , job } = Plausible.Imported.NoopImporter . new_import (
site ,
user ,
start_date : ~D[2005-01-01] ,
- end_date : Date . utc_today ( ) ,
+ end_date : Date . utc_today ( ) ,
# this option is necessary to setup the calling process as listener
listen? : true
- )
+ )
- import_id = job . args [ :import_id ]
+ import_id = job . args [ :import_id ]
- receive do
- { :notification , :analytics_imports_jobs , %{ "event" => "complete" , "import_id" => ^ import_id } } ->
- IO . puts ( "Job completed" )
+ receive do
+ { :notification , :analytics_imports_jobs , %{ "event" => "complete" , "import_id" => ^ import_id } } ->
+ IO . puts ( "Job completed" )
- { :notification , :analytics_imports_jobs , %{ "event" => "transient_fail" , "import_id" => ^ import_id } } ->
- IO . puts ( "Job failed transiently" )
+ { :notification , :analytics_imports_jobs , %{ "event" => "transient_fail" , "import_id" => ^ import_id } } ->
+ IO . puts ( "Job failed transiently" )
- { :notification , :analytics_imports_jobs , %{ "event" => "fail" , "import_id" => ^ import_id } } ->
- IO . puts ( "Job failed permanently" )
- after
+ { :notification , :analytics_imports_jobs , %{ "event" => "fail" , "import_id" => ^ import_id } } ->
+ IO . puts ( "Job failed permanently" )
+ after
15_000 ->
- IO . puts ( "Job didn't finish in 15 seconds" )
- end
In a more realistic scenario, job scheduling will be done inside a GenServer process
+
IO . puts ( "Job didn't finish in 15 seconds" )
+ end
In a more realistic scenario, job scheduling will be done inside a GenServer process
like LiveView, where notifications can be listened for via handle_info/2
.
diff --git a/Plausible.Imported.NoopImporter.html b/Plausible.Imported.NoopImporter.html
index 0838847fc..12522cb40 100644
--- a/Plausible.Imported.NoopImporter.html
+++ b/Plausible.Imported.NoopImporter.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Imported.SiteImport.html b/Plausible.Imported.SiteImport.html
index 13a8e31c5..313b42752 100644
--- a/Plausible.Imported.SiteImport.html
+++ b/Plausible.Imported.SiteImport.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Imported.UniversalAnalytics.html b/Plausible.Imported.UniversalAnalytics.html
index fee7e0a9b..fb329b479 100644
--- a/Plausible.Imported.UniversalAnalytics.html
+++ b/Plausible.Imported.UniversalAnalytics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Imported.html b/Plausible.Imported.html
index f5fa4bb3c..77664f692 100644
--- a/Plausible.Imported.html
+++ b/Plausible.Imported.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.IngestRepo.html b/Plausible.IngestRepo.html
index e4ab78f01..a99aed59a 100644
--- a/Plausible.IngestRepo.html
+++ b/Plausible.IngestRepo.html
@@ -14,7 +14,7 @@
-
+
@@ -1217,23 +1217,23 @@ pool to disconnect within the given interval.See
-Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
+Similar to insert_all/2
but with the following differences:
accepts rows as streams or lists sends rows as a chunked request doesn't autogenerate ids or does any other preprocessing Example:
Repo . query! ( "create table ecto_ch_demo(a UInt64, b String) engine Null" )
- defmodule Demo do
+ defmodule Demo do
use Ecto.Schema
@primary_key false
- schema "ecto_ch_demo" do
+ schema "ecto_ch_demo" do
field :a , Ch , type : "UInt64"
field :b , :string
- end
- end
+ end
+ end
- rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
- { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
+ rows = Stream . map ( 1 .. 100_000 , fn i -> %{ a : i , b : to_string ( i ) } end )
+ { 100_000 , nil } = Repo . insert_stream ( Demo , rows )
# schemaless
- { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
+ { 100_000 , nil } = Repo . insert_stream ( "ecto_ch_demo" , rows , types : [ a : Ch.Types . u64 ( ) , b : :string ] )
diff --git a/Plausible.Ingestion.Counters.Buffer.html b/Plausible.Ingestion.Counters.Buffer.html
index c4c825f89..8500ad65b 100644
--- a/Plausible.Ingestion.Counters.Buffer.html
+++ b/Plausible.Ingestion.Counters.Buffer.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ingestion.Counters.Record.html b/Plausible.Ingestion.Counters.Record.html
index 6788285f9..4404e1fc7 100644
--- a/Plausible.Ingestion.Counters.Record.html
+++ b/Plausible.Ingestion.Counters.Record.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ingestion.Counters.TelemetryHandler.html b/Plausible.Ingestion.Counters.TelemetryHandler.html
index 6fd29a227..941fe6b69 100644
--- a/Plausible.Ingestion.Counters.TelemetryHandler.html
+++ b/Plausible.Ingestion.Counters.TelemetryHandler.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ingestion.Counters.html b/Plausible.Ingestion.Counters.html
index 068a5bdc1..a1bb48142 100644
--- a/Plausible.Ingestion.Counters.html
+++ b/Plausible.Ingestion.Counters.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ingestion.Event.Revenue.html b/Plausible.Ingestion.Event.Revenue.html
index 55317cfe3..db1327462 100644
--- a/Plausible.Ingestion.Event.Revenue.html
+++ b/Plausible.Ingestion.Event.Revenue.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ingestion.Event.html b/Plausible.Ingestion.Event.html
index a22d0ace0..6f93b0ae3 100644
--- a/Plausible.Ingestion.Event.html
+++ b/Plausible.Ingestion.Event.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ingestion.Request.Revenue.html b/Plausible.Ingestion.Request.Revenue.html
index 9094b92cf..17f0bcd8c 100644
--- a/Plausible.Ingestion.Request.Revenue.html
+++ b/Plausible.Ingestion.Request.Revenue.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Ingestion.Request.html b/Plausible.Ingestion.Request.html
index 07c990be2..028e18ccd 100644
--- a/Plausible.Ingestion.Request.html
+++ b/Plausible.Ingestion.Request.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.License.html b/Plausible.License.html
index b47b1f344..bc02be185 100644
--- a/Plausible.License.html
+++ b/Plausible.License.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.LiveViewTest.html b/Plausible.LiveViewTest.html
index 27312abbe..e15c34e4a 100644
--- a/Plausible.LiveViewTest.html
+++ b/Plausible.LiveViewTest.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Mailer.html b/Plausible.Mailer.html
index ccc935818..94a3ef7fc 100644
--- a/Plausible.Mailer.html
+++ b/Plausible.Mailer.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.MigrationUtils.html b/Plausible.MigrationUtils.html
index 3be1a0bd9..5dd9dd19c 100644
--- a/Plausible.MigrationUtils.html
+++ b/Plausible.MigrationUtils.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.OpenTelemetry.Sampler.html b/Plausible.OpenTelemetry.Sampler.html
index 2f46e0579..831792e44 100644
--- a/Plausible.OpenTelemetry.Sampler.html
+++ b/Plausible.OpenTelemetry.Sampler.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.PaddleApi.Mock.html b/Plausible.PaddleApi.Mock.html
index 7fe712290..86a7838ee 100644
--- a/Plausible.PaddleApi.Mock.html
+++ b/Plausible.PaddleApi.Mock.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Pagination.html b/Plausible.Pagination.html
index 8bf91a68d..0c141f72e 100644
--- a/Plausible.Pagination.html
+++ b/Plausible.Pagination.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Plugins.API.Capabilities.html b/Plausible.Plugins.API.Capabilities.html
index db46a8539..177367e84 100644
--- a/Plausible.Plugins.API.Capabilities.html
+++ b/Plausible.Plugins.API.Capabilities.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Plugins.API.CustomProps.html b/Plausible.Plugins.API.CustomProps.html
index e58b7ea68..c003d73b2 100644
--- a/Plausible.Plugins.API.CustomProps.html
+++ b/Plausible.Plugins.API.CustomProps.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Plugins.API.Funnels.html b/Plausible.Plugins.API.Funnels.html
index 01449b709..fce37ab44 100644
--- a/Plausible.Plugins.API.Funnels.html
+++ b/Plausible.Plugins.API.Funnels.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Plugins.API.Goals.html b/Plausible.Plugins.API.Goals.html
index 11b639cc2..6d539221f 100644
--- a/Plausible.Plugins.API.Goals.html
+++ b/Plausible.Plugins.API.Goals.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Plugins.API.SharedLinks.html b/Plausible.Plugins.API.SharedLinks.html
index 19c24f3d9..11c287376 100644
--- a/Plausible.Plugins.API.SharedLinks.html
+++ b/Plausible.Plugins.API.SharedLinks.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Plugins.API.Token.html b/Plausible.Plugins.API.Token.html
index a2aae8d07..ef10be7c5 100644
--- a/Plausible.Plugins.API.Token.html
+++ b/Plausible.Plugins.API.Token.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Plugins.API.Tokens.html b/Plausible.Plugins.API.Tokens.html
index 2442b83c7..5551155ba 100644
--- a/Plausible.Plugins.API.Tokens.html
+++ b/Plausible.Plugins.API.Tokens.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.PromEx.Plugins.PlausibleMetrics.html b/Plausible.PromEx.Plugins.PlausibleMetrics.html
index bcc60712d..9d17db737 100644
--- a/Plausible.PromEx.Plugins.PlausibleMetrics.html
+++ b/Plausible.PromEx.Plugins.PlausibleMetrics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.PromEx.html b/Plausible.PromEx.html
index b37b5dd0f..2f8a5ebbf 100644
--- a/Plausible.PromEx.html
+++ b/Plausible.PromEx.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Props.html b/Plausible.Props.html
index 38328080b..df0403ba0 100644
--- a/Plausible.Props.html
+++ b/Plausible.Props.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Purge.html b/Plausible.Purge.html
index 766e741a3..9acf5825f 100644
--- a/Plausible.Purge.html
+++ b/Plausible.Purge.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.RateLimit.html b/Plausible.RateLimit.html
index 8495ddc10..1e85c7a83 100644
--- a/Plausible.RateLimit.html
+++ b/Plausible.RateLimit.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Release.html b/Plausible.Release.html
index e1ca2ebbf..505bd5bb0 100644
--- a/Plausible.Release.html
+++ b/Plausible.Release.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Repo.html b/Plausible.Repo.html
index 72700250f..c0cce5de2 100644
--- a/Plausible.Repo.html
+++ b/Plausible.Repo.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.RequestLogger.html b/Plausible.RequestLogger.html
index 013eb62cd..3dffe2ddc 100644
--- a/Plausible.RequestLogger.html
+++ b/Plausible.RequestLogger.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.S3.html b/Plausible.S3.html
index b1013eede..9c995e4b2 100644
--- a/Plausible.S3.html
+++ b/Plausible.S3.html
@@ -14,7 +14,7 @@
-
+
@@ -316,7 +316,7 @@ The URL expires in 300 seconds, which should be enough for a redirect.
In
Returns the pre-configured S3 bucket for CSV exports.
config :plausible , Plausible.S3 ,
- exports_bucket : System . fetch_env! ( "S3_EXPORTS_BUCKET" )
Example:
iex> exports_bucket ( )
+ exports_bucket : System . fetch_env! ( "S3_EXPORTS_BUCKET" )
Example:
iex> exports_bucket ( )
"test-exports"
@@ -348,8 +348,8 @@ The URL expires in 300 seconds, which should be enough for a redirect.In
-
Returns access_key_id
and secret_access_key
to be used by ClickHouse during imports from S3.
Example:
iex> import_clickhouse_credentials ( )
- %{ access_key_id : "minioadmin" , secret_access_key : "minioadmin" }
+Returns access_key_id
and secret_access_key
to be used by ClickHouse during imports from S3.
Example:
iex> import_clickhouse_credentials ( )
+ %{ access_key_id : "minioadmin" , secret_access_key : "minioadmin" }
@@ -371,9 +371,9 @@ The URL expires in 300 seconds, which should be enough for a redirect.In
-Presigns an upload for an imported file.
In the current implementation the bucket always goes into the path component.
Example:
iex> upload = import_presign_upload ( _site_id = 123 , _filename = "imported_browsers.csv" )
- iex> true = String . ends_with? ( upload . s3_url , "/test-imports/123/imported_browsers.csv" )
- iex> true = String . contains? ( upload . presigned_url , "/test-imports/123/imported_browsers.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&" )
+Presigns an upload for an imported file.
In the current implementation the bucket always goes into the path component.
Example:
iex> upload = import_presign_upload ( _site_id = 123 , _filename = "imported_browsers.csv" )
+ iex> true = String . ends_with? ( upload . s3_url , "/test-imports/123/imported_browsers.csv" )
+ iex> true = String . contains? ( upload . presigned_url , "/test-imports/123/imported_browsers.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&" )
@@ -402,7 +402,7 @@ The URL expires in 300 seconds, which should be enough for a redirect.In
Returns the pre-configured S3 bucket for CSV imports.
config :plausible , Plausible.S3 ,
- imports_bucket : System . fetch_env! ( "S3_IMPORTS_BUCKET" )
Example:
iex> imports_bucket ( )
+ imports_bucket : System . fetch_env! ( "S3_IMPORTS_BUCKET" )
Example:
iex> imports_bucket ( )
"test-imports"
diff --git a/Plausible.Sentry.Client.html b/Plausible.Sentry.Client.html
index 58cc40182..a7c8da2ad 100644
--- a/Plausible.Sentry.Client.html
+++ b/Plausible.Sentry.Client.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.SentryFilter.html b/Plausible.SentryFilter.html
index 8f88d08b8..a404f8e04 100644
--- a/Plausible.SentryFilter.html
+++ b/Plausible.SentryFilter.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Session.CacheStore.html b/Plausible.Session.CacheStore.html
index 5fa76ac6b..4b6298068 100644
--- a/Plausible.Session.CacheStore.html
+++ b/Plausible.Session.CacheStore.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Session.Salts.html b/Plausible.Session.Salts.html
index 9f91371d9..3c5289a8c 100644
--- a/Plausible.Session.Salts.html
+++ b/Plausible.Session.Salts.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.CountryRule.html b/Plausible.Shield.CountryRule.html
index 37f442a39..9592f1d52 100644
--- a/Plausible.Shield.CountryRule.html
+++ b/Plausible.Shield.CountryRule.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.CountryRuleCache.html b/Plausible.Shield.CountryRuleCache.html
index 8f98b9191..ba52447b0 100644
--- a/Plausible.Shield.CountryRuleCache.html
+++ b/Plausible.Shield.CountryRuleCache.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.HostnameRule.html b/Plausible.Shield.HostnameRule.html
index f81ef515c..36d2f7d52 100644
--- a/Plausible.Shield.HostnameRule.html
+++ b/Plausible.Shield.HostnameRule.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.HostnameRuleCache.html b/Plausible.Shield.HostnameRuleCache.html
index d7662e923..55f898a22 100644
--- a/Plausible.Shield.HostnameRuleCache.html
+++ b/Plausible.Shield.HostnameRuleCache.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.IPRule.html b/Plausible.Shield.IPRule.html
index 18d871eee..37e41dd5a 100644
--- a/Plausible.Shield.IPRule.html
+++ b/Plausible.Shield.IPRule.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.IPRuleCache.html b/Plausible.Shield.IPRuleCache.html
index 48ca54186..63f5b8f44 100644
--- a/Plausible.Shield.IPRuleCache.html
+++ b/Plausible.Shield.IPRuleCache.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.PageRule.html b/Plausible.Shield.PageRule.html
index a24fc9b90..596ec3bd4 100644
--- a/Plausible.Shield.PageRule.html
+++ b/Plausible.Shield.PageRule.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shield.PageRuleCache.html b/Plausible.Shield.PageRuleCache.html
index f1fb303a4..9aaefc266 100644
--- a/Plausible.Shield.PageRuleCache.html
+++ b/Plausible.Shield.PageRuleCache.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Shields.html b/Plausible.Shields.html
index e978d6d0f..562bee665 100644
--- a/Plausible.Shields.html
+++ b/Plausible.Shields.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Cache.html b/Plausible.Site.Cache.html
index c5f52e165..ddbd41f31 100644
--- a/Plausible.Site.Cache.html
+++ b/Plausible.Site.Cache.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Domain.html b/Plausible.Site.Domain.html
index df0dd2af9..ac4651623 100644
--- a/Plausible.Site.Domain.html
+++ b/Plausible.Site.Domain.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.GateKeeper.html b/Plausible.Site.GateKeeper.html
index 1f299cd24..43aa1aa69 100644
--- a/Plausible.Site.GateKeeper.html
+++ b/Plausible.Site.GateKeeper.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.GoogleAuth.html b/Plausible.Site.GoogleAuth.html
index 97fc57d40..68a7dc42e 100644
--- a/Plausible.Site.GoogleAuth.html
+++ b/Plausible.Site.GoogleAuth.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.ImportedData.html b/Plausible.Site.ImportedData.html
index 37838be59..913a45a6d 100644
--- a/Plausible.Site.ImportedData.html
+++ b/Plausible.Site.ImportedData.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.InstallationMeta.html b/Plausible.Site.InstallationMeta.html
index bae929ab1..ca2ab68de 100644
--- a/Plausible.Site.InstallationMeta.html
+++ b/Plausible.Site.InstallationMeta.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Membership.html b/Plausible.Site.Membership.html
index 910552ab0..3184c80a8 100644
--- a/Plausible.Site.Membership.html
+++ b/Plausible.Site.Membership.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Memberships.AcceptInvitation.html b/Plausible.Site.Memberships.AcceptInvitation.html
index ba5598f89..8153abeab 100644
--- a/Plausible.Site.Memberships.AcceptInvitation.html
+++ b/Plausible.Site.Memberships.AcceptInvitation.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Memberships.CreateInvitation.html b/Plausible.Site.Memberships.CreateInvitation.html
index 13b592579..bb0300f29 100644
--- a/Plausible.Site.Memberships.CreateInvitation.html
+++ b/Plausible.Site.Memberships.CreateInvitation.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Memberships.RejectInvitation.html b/Plausible.Site.Memberships.RejectInvitation.html
index 8fc92aca5..4bede0967 100644
--- a/Plausible.Site.Memberships.RejectInvitation.html
+++ b/Plausible.Site.Memberships.RejectInvitation.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Memberships.RemoveInvitation.html b/Plausible.Site.Memberships.RemoveInvitation.html
index 1924601a3..402660cb0 100644
--- a/Plausible.Site.Memberships.RemoveInvitation.html
+++ b/Plausible.Site.Memberships.RemoveInvitation.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Memberships.html b/Plausible.Site.Memberships.html
index 1cca6b987..132f59b33 100644
--- a/Plausible.Site.Memberships.html
+++ b/Plausible.Site.Memberships.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.MonthlyReport.html b/Plausible.Site.MonthlyReport.html
index d213ba7f8..fa743ea66 100644
--- a/Plausible.Site.MonthlyReport.html
+++ b/Plausible.Site.MonthlyReport.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.Removal.html b/Plausible.Site.Removal.html
index fc5ffa092..433f7f2d7 100644
--- a/Plausible.Site.Removal.html
+++ b/Plausible.Site.Removal.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.SharedLink.html b/Plausible.Site.SharedLink.html
index 8616ca53e..96c40639e 100644
--- a/Plausible.Site.SharedLink.html
+++ b/Plausible.Site.SharedLink.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.TrafficChangeNotification.html b/Plausible.Site.TrafficChangeNotification.html
index 61b859156..a9551ca10 100644
--- a/Plausible.Site.TrafficChangeNotification.html
+++ b/Plausible.Site.TrafficChangeNotification.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.UserPreference.html b/Plausible.Site.UserPreference.html
index 6b0eee83a..43c13f450 100644
--- a/Plausible.Site.UserPreference.html
+++ b/Plausible.Site.UserPreference.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.WeeklyReport.html b/Plausible.Site.WeeklyReport.html
index f9476d358..6a8678cae 100644
--- a/Plausible.Site.WeeklyReport.html
+++ b/Plausible.Site.WeeklyReport.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Site.html b/Plausible.Site.html
index 532376415..5f8e0302c 100644
--- a/Plausible.Site.html
+++ b/Plausible.Site.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.SiteAdmin.html b/Plausible.SiteAdmin.html
index f2d5c91ed..d0810ccbb 100644
--- a/Plausible.SiteAdmin.html
+++ b/Plausible.SiteAdmin.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Sites.html b/Plausible.Sites.html
index d01684c40..49fec17e0 100644
--- a/Plausible.Sites.html
+++ b/Plausible.Sites.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Aggregate.html b/Plausible.Stats.Aggregate.html
index 4bdc4c0bc..d2beb36ba 100644
--- a/Plausible.Stats.Aggregate.html
+++ b/Plausible.Stats.Aggregate.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Base.html b/Plausible.Stats.Base.html
index fc059c3d3..d8c80bf96 100644
--- a/Plausible.Stats.Base.html
+++ b/Plausible.Stats.Base.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Breakdown.html b/Plausible.Stats.Breakdown.html
index c15028ba0..8dc8a57cb 100644
--- a/Plausible.Stats.Breakdown.html
+++ b/Plausible.Stats.Breakdown.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Clickhouse.html b/Plausible.Stats.Clickhouse.html
index 74b91002e..062c8c9ba 100644
--- a/Plausible.Stats.Clickhouse.html
+++ b/Plausible.Stats.Clickhouse.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Compare.html b/Plausible.Stats.Compare.html
index c837634f5..53bebb5e7 100644
--- a/Plausible.Stats.Compare.html
+++ b/Plausible.Stats.Compare.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Comparisons.html b/Plausible.Stats.Comparisons.html
index 95dd97068..c7f8a77ee 100644
--- a/Plausible.Stats.Comparisons.html
+++ b/Plausible.Stats.Comparisons.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.CurrentVisitors.html b/Plausible.Stats.CurrentVisitors.html
index 84a29f41e..aea06c9ef 100644
--- a/Plausible.Stats.CurrentVisitors.html
+++ b/Plausible.Stats.CurrentVisitors.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.CustomProps.html b/Plausible.Stats.CustomProps.html
index a417de5be..64f09fdda 100644
--- a/Plausible.Stats.CustomProps.html
+++ b/Plausible.Stats.CustomProps.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.DateTimeRange.html b/Plausible.Stats.DateTimeRange.html
index 17fdf75b8..58540b83d 100644
--- a/Plausible.Stats.DateTimeRange.html
+++ b/Plausible.Stats.DateTimeRange.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.EmailReport.html b/Plausible.Stats.EmailReport.html
index 3529b2128..7e324c5d0 100644
--- a/Plausible.Stats.EmailReport.html
+++ b/Plausible.Stats.EmailReport.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.FilterSuggestions.html b/Plausible.Stats.FilterSuggestions.html
index d67b87043..7f2bea694 100644
--- a/Plausible.Stats.FilterSuggestions.html
+++ b/Plausible.Stats.FilterSuggestions.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Filters.Utils.html b/Plausible.Stats.Filters.Utils.html
index ed02bc52d..f75a29420 100644
--- a/Plausible.Stats.Filters.Utils.html
+++ b/Plausible.Stats.Filters.Utils.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Filters.html b/Plausible.Stats.Filters.html
index 23c771a3d..b6b7cd462 100644
--- a/Plausible.Stats.Filters.html
+++ b/Plausible.Stats.Filters.html
@@ -14,7 +14,7 @@
-
+
@@ -396,14 +396,14 @@ does not handle AND/OR/NOT!
Examples:
-iex> Filters . parse ( "{ \" page \" : \" /blog/** \" }" )
- [ [ :matches_wildcard , "event:page" , [ "/blog/**" ] ] ]
+iex> Filters . parse ( "{ \" page \" : \" /blog/** \" }" )
+ [ [ :matches_wildcard , "event:page" , [ "/blog/**" ] ] ]
- iex> Filters . parse ( "visit:browser!=Chrome" )
- [ [ :is_not , "visit:browser" , [ "Chrome" ] ] ]
+ iex> Filters . parse ( "visit:browser!=Chrome" )
+ [ [ :is_not , "visit:browser" , [ "Chrome" ] ] ]
- iex> Filters . parse ( nil )
- [ ]
+ iex> Filters . parse ( nil )
+ [ ]
diff --git a/Plausible.Stats.Funnel.html b/Plausible.Stats.Funnel.html
index a9d663eac..2429a29b8 100644
--- a/Plausible.Stats.Funnel.html
+++ b/Plausible.Stats.Funnel.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Goal.Revenue.html b/Plausible.Stats.Goal.Revenue.html
index 6532a68c9..50308b73c 100644
--- a/Plausible.Stats.Goal.Revenue.html
+++ b/Plausible.Stats.Goal.Revenue.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Imported.Base.html b/Plausible.Stats.Imported.Base.html
index cefa0dc25..7063805ab 100644
--- a/Plausible.Stats.Imported.Base.html
+++ b/Plausible.Stats.Imported.Base.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Imported.SQL.Expression.html b/Plausible.Stats.Imported.SQL.Expression.html
index 452f5aa38..887887fd8 100644
--- a/Plausible.Stats.Imported.SQL.Expression.html
+++ b/Plausible.Stats.Imported.SQL.Expression.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Imported.SQL.WhereBuilder.html b/Plausible.Stats.Imported.SQL.WhereBuilder.html
index fb284824d..5bec72e99 100644
--- a/Plausible.Stats.Imported.SQL.WhereBuilder.html
+++ b/Plausible.Stats.Imported.SQL.WhereBuilder.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Imported.html b/Plausible.Stats.Imported.html
index e16ebe44b..d9044683f 100644
--- a/Plausible.Stats.Imported.html
+++ b/Plausible.Stats.Imported.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Interval.html b/Plausible.Stats.Interval.html
index 4a0cdb1df..7be57ab62 100644
--- a/Plausible.Stats.Interval.html
+++ b/Plausible.Stats.Interval.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.JSONSchema.Utils.html b/Plausible.Stats.JSONSchema.Utils.html
new file mode 100644
index 000000000..85ea97412
--- /dev/null
+++ b/Plausible.Stats.JSONSchema.Utils.html
@@ -0,0 +1,342 @@
+
+
+
+
+
+
+
+
+
+
+ Plausible.Stats.JSONSchema.Utils — Plausible v0.0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ View Source
+
+
+ Plausible.Stats.JSONSchema.Utils
+ (Plausible v0.0.1)
+
+
+
+
+
+Module for traversing and modifying JSON schemas.
+
+
+
+
+
+
+
+
+ Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Plausible.Stats.JSONSchema.html b/Plausible.Stats.JSONSchema.html
index 255528c85..c70d91582 100644
--- a/Plausible.Stats.JSONSchema.html
+++ b/Plausible.Stats.JSONSchema.html
@@ -14,7 +14,7 @@
-
+
@@ -198,7 +198,7 @@ available on the public API.
raw_public_schema()
-
+
View Source
@@ -220,7 +220,7 @@ available on the public API.
validate(schema_type, params)
-
+
View Source
diff --git a/Plausible.Stats.Legacy.Dimensions.html b/Plausible.Stats.Legacy.Dimensions.html
index bf9c27c3f..3fbb1816f 100644
--- a/Plausible.Stats.Legacy.Dimensions.html
+++ b/Plausible.Stats.Legacy.Dimensions.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Legacy.QueryBuilder.html b/Plausible.Stats.Legacy.QueryBuilder.html
index 8ac881031..c24ca075d 100644
--- a/Plausible.Stats.Legacy.QueryBuilder.html
+++ b/Plausible.Stats.Legacy.QueryBuilder.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Metrics.html b/Plausible.Stats.Metrics.html
index d87be4e66..f52bf2b4c 100644
--- a/Plausible.Stats.Metrics.html
+++ b/Plausible.Stats.Metrics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Query.html b/Plausible.Stats.Query.html
index e49695955..750707248 100644
--- a/Plausible.Stats.Query.html
+++ b/Plausible.Stats.Query.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.QueryOptimizer.html b/Plausible.Stats.QueryOptimizer.html
index 9b97fb12b..adf1d40de 100644
--- a/Plausible.Stats.QueryOptimizer.html
+++ b/Plausible.Stats.QueryOptimizer.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.QueryResult.html b/Plausible.Stats.QueryResult.html
index 32f5af261..9807ccef5 100644
--- a/Plausible.Stats.QueryResult.html
+++ b/Plausible.Stats.QueryResult.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.SQL.Expression.html b/Plausible.Stats.SQL.Expression.html
index f664d1945..8ad20b0c8 100644
--- a/Plausible.Stats.SQL.Expression.html
+++ b/Plausible.Stats.SQL.Expression.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.SQL.Fragments.html b/Plausible.Stats.SQL.Fragments.html
index 6e93627f2..00e23e794 100644
--- a/Plausible.Stats.SQL.Fragments.html
+++ b/Plausible.Stats.SQL.Fragments.html
@@ -14,7 +14,7 @@
-
+
@@ -668,12 +668,12 @@ boundary, not_before
is returned.not_before
boundary is set to the past Saturday, which is before the
weekstart, therefore the cap does not apply. > this_wednesday = ~D[2022-11-09]
> past_saturday = ~D[2022-11-05]
- > weekstart_not_before ( this_wednesday , past_saturday )
+ > weekstart_not_before ( this_wednesday , past_saturday )
~D[2022-11-07]
In this other example, the fragment returns Tuesday and not the weekstart.
The not_before
boundary is set to Tuesday, which is past the weekstart,
therefore the cap applies.
> this_wednesday = ~D[2022-11-09]
> this_tuesday = ~D[2022-11-08]
- > weekstart_not_before ( this_wednesday , this_tuesday )
+ > weekstart_not_before ( this_wednesday , this_tuesday )
~D[2022-11-08]
diff --git a/Plausible.Stats.SQL.SpecialMetrics.html b/Plausible.Stats.SQL.SpecialMetrics.html
index f7c68e2ed..99899c58a 100644
--- a/Plausible.Stats.SQL.SpecialMetrics.html
+++ b/Plausible.Stats.SQL.SpecialMetrics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.SQL.WhereBuilder.html b/Plausible.Stats.SQL.WhereBuilder.html
index 778cc14da..f09bd6bf6 100644
--- a/Plausible.Stats.SQL.WhereBuilder.html
+++ b/Plausible.Stats.SQL.WhereBuilder.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Sampling.html b/Plausible.Stats.Sampling.html
index 746aaf7a8..506aba15f 100644
--- a/Plausible.Stats.Sampling.html
+++ b/Plausible.Stats.Sampling.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.TableDecider.html b/Plausible.Stats.TableDecider.html
index e9706cc7c..1319d96da 100644
--- a/Plausible.Stats.TableDecider.html
+++ b/Plausible.Stats.TableDecider.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Time.html b/Plausible.Stats.Time.html
index 469d8cc01..461b3f421 100644
--- a/Plausible.Stats.Time.html
+++ b/Plausible.Stats.Time.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Timeseries.html b/Plausible.Stats.Timeseries.html
index 4ff950091..40f67b6d3 100644
--- a/Plausible.Stats.Timeseries.html
+++ b/Plausible.Stats.Timeseries.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.Util.html b/Plausible.Stats.Util.html
index 5b02ce81f..086cb6d40 100644
--- a/Plausible.Stats.Util.html
+++ b/Plausible.Stats.Util.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Stats.html b/Plausible.Stats.html
index 1fb460531..36975fe5c 100644
--- a/Plausible.Stats.html
+++ b/Plausible.Stats.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Test.Support.HTML.html b/Plausible.Test.Support.HTML.html
index 0691f73bb..6ebe95604 100644
--- a/Plausible.Test.Support.HTML.html
+++ b/Plausible.Test.Support.HTML.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Test.Support.HTTPMocker.html b/Plausible.Test.Support.HTTPMocker.html
index e5eb8dac2..9cfcc63de 100644
--- a/Plausible.Test.Support.HTTPMocker.html
+++ b/Plausible.Test.Support.HTTPMocker.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.TestUtils.html b/Plausible.TestUtils.html
index 5e023fde9..76894bce3 100644
--- a/Plausible.TestUtils.html
+++ b/Plausible.TestUtils.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Themes.html b/Plausible.Themes.html
index 0c63193cd..440b4a2b4 100644
--- a/Plausible.Themes.html
+++ b/Plausible.Themes.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Timezones.html b/Plausible.Timezones.html
index 93399dfab..d66a7ba7a 100644
--- a/Plausible.Timezones.html
+++ b/Plausible.Timezones.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Users.html b/Plausible.Users.html
index a8ebf318a..ab4334d0f 100644
--- a/Plausible.Users.html
+++ b/Plausible.Users.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Check.html b/Plausible.Verification.Check.html
index e214fc771..efcabcc0b 100644
--- a/Plausible.Verification.Check.html
+++ b/Plausible.Verification.Check.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Checks.CSP.html b/Plausible.Verification.Checks.CSP.html
index 7ccf8cd16..13ce81ef9 100644
--- a/Plausible.Verification.Checks.CSP.html
+++ b/Plausible.Verification.Checks.CSP.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Checks.FetchBody.html b/Plausible.Verification.Checks.FetchBody.html
index 53c3d5b6f..5b2129529 100644
--- a/Plausible.Verification.Checks.FetchBody.html
+++ b/Plausible.Verification.Checks.FetchBody.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Checks.Installation.html b/Plausible.Verification.Checks.Installation.html
index cd7e69aa7..eabbb56f4 100644
--- a/Plausible.Verification.Checks.Installation.html
+++ b/Plausible.Verification.Checks.Installation.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Checks.ScanBody.html b/Plausible.Verification.Checks.ScanBody.html
index 4f06c6179..c7b77b15c 100644
--- a/Plausible.Verification.Checks.ScanBody.html
+++ b/Plausible.Verification.Checks.ScanBody.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Checks.Snippet.html b/Plausible.Verification.Checks.Snippet.html
index 4802b6e6a..bed3730a7 100644
--- a/Plausible.Verification.Checks.Snippet.html
+++ b/Plausible.Verification.Checks.Snippet.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Checks.SnippetCacheBust.html b/Plausible.Verification.Checks.SnippetCacheBust.html
index 85c742247..7b06221dd 100644
--- a/Plausible.Verification.Checks.SnippetCacheBust.html
+++ b/Plausible.Verification.Checks.SnippetCacheBust.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Checks.html b/Plausible.Verification.Checks.html
index 97c409f4b..9bd8d09c2 100644
--- a/Plausible.Verification.Checks.html
+++ b/Plausible.Verification.Checks.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Diagnostics.Result.html b/Plausible.Verification.Diagnostics.Result.html
index 2f5652b3d..b0b8f69c5 100644
--- a/Plausible.Verification.Diagnostics.Result.html
+++ b/Plausible.Verification.Diagnostics.Result.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Diagnostics.html b/Plausible.Verification.Diagnostics.html
index 392ee1e55..b1d83df56 100644
--- a/Plausible.Verification.Diagnostics.html
+++ b/Plausible.Verification.Diagnostics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.Errors.html b/Plausible.Verification.Errors.html
index d5d64fbe2..6656d7d01 100644
--- a/Plausible.Verification.Errors.html
+++ b/Plausible.Verification.Errors.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.State.html b/Plausible.Verification.State.html
index 49953f370..d994e3142 100644
--- a/Plausible.Verification.State.html
+++ b/Plausible.Verification.State.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.URL.html b/Plausible.Verification.URL.html
index f27828a55..810f19cc8 100644
--- a/Plausible.Verification.URL.html
+++ b/Plausible.Verification.URL.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Verification.html b/Plausible.Verification.html
index e30780f26..65c32be8b 100644
--- a/Plausible.Verification.html
+++ b/Plausible.Verification.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.AcceptTrafficUntil.html b/Plausible.Workers.AcceptTrafficUntil.html
index e2d07d3bf..2152f87c1 100644
--- a/Plausible.Workers.AcceptTrafficUntil.html
+++ b/Plausible.Workers.AcceptTrafficUntil.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.CheckUsage.html b/Plausible.Workers.CheckUsage.html
index 4cca9284f..ad4fc7ec6 100644
--- a/Plausible.Workers.CheckUsage.html
+++ b/Plausible.Workers.CheckUsage.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.CleanInvitations.html b/Plausible.Workers.CleanInvitations.html
index 47f1ea9da..bb5d42f07 100644
--- a/Plausible.Workers.CleanInvitations.html
+++ b/Plausible.Workers.CleanInvitations.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.CleanUserSessions.html b/Plausible.Workers.CleanUserSessions.html
index e87226b58..ec0ea0f30 100644
--- a/Plausible.Workers.CleanUserSessions.html
+++ b/Plausible.Workers.CleanUserSessions.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.ClickhouseCleanSites.html b/Plausible.Workers.ClickhouseCleanSites.html
index 3ea453291..f99803594 100644
--- a/Plausible.Workers.ClickhouseCleanSites.html
+++ b/Plausible.Workers.ClickhouseCleanSites.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.ExpireDomainChangeTransitions.html b/Plausible.Workers.ExpireDomainChangeTransitions.html
index 09e2dfacd..bf859f0dd 100644
--- a/Plausible.Workers.ExpireDomainChangeTransitions.html
+++ b/Plausible.Workers.ExpireDomainChangeTransitions.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.ExportAnalytics.html b/Plausible.Workers.ExportAnalytics.html
index b0d364ccf..c99e9a4be 100644
--- a/Plausible.Workers.ExportAnalytics.html
+++ b/Plausible.Workers.ExportAnalytics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.ImportAnalytics.html b/Plausible.Workers.ImportAnalytics.html
index b7ba80c1a..f971f0254 100644
--- a/Plausible.Workers.ImportAnalytics.html
+++ b/Plausible.Workers.ImportAnalytics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.LocalImportAnalyticsCleaner.html b/Plausible.Workers.LocalImportAnalyticsCleaner.html
index 563ce70c4..e89a6bc29 100644
--- a/Plausible.Workers.LocalImportAnalyticsCleaner.html
+++ b/Plausible.Workers.LocalImportAnalyticsCleaner.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.LockSites.html b/Plausible.Workers.LockSites.html
index fc704ba87..c87c791e5 100644
--- a/Plausible.Workers.LockSites.html
+++ b/Plausible.Workers.LockSites.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.NotifyAnnualRenewal.html b/Plausible.Workers.NotifyAnnualRenewal.html
index 877c2f333..2c0cbce12 100644
--- a/Plausible.Workers.NotifyAnnualRenewal.html
+++ b/Plausible.Workers.NotifyAnnualRenewal.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.NotifyExportedAnalytics.html b/Plausible.Workers.NotifyExportedAnalytics.html
index 3629263f9..9aa34f65b 100644
--- a/Plausible.Workers.NotifyExportedAnalytics.html
+++ b/Plausible.Workers.NotifyExportedAnalytics.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.RotateSalts.html b/Plausible.Workers.RotateSalts.html
index 4e97a9100..317d37169 100644
--- a/Plausible.Workers.RotateSalts.html
+++ b/Plausible.Workers.RotateSalts.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.ScheduleEmailReports.html b/Plausible.Workers.ScheduleEmailReports.html
index 51e91f7de..b48a96ff4 100644
--- a/Plausible.Workers.ScheduleEmailReports.html
+++ b/Plausible.Workers.ScheduleEmailReports.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.SendCheckStatsEmails.html b/Plausible.Workers.SendCheckStatsEmails.html
index a548f9a6a..ca4a0da05 100644
--- a/Plausible.Workers.SendCheckStatsEmails.html
+++ b/Plausible.Workers.SendCheckStatsEmails.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.SendEmailReport.html b/Plausible.Workers.SendEmailReport.html
index c031edddb..bc2d7955b 100644
--- a/Plausible.Workers.SendEmailReport.html
+++ b/Plausible.Workers.SendEmailReport.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.SendSiteSetupEmails.html b/Plausible.Workers.SendSiteSetupEmails.html
index e17b02b74..f138b1861 100644
--- a/Plausible.Workers.SendSiteSetupEmails.html
+++ b/Plausible.Workers.SendSiteSetupEmails.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.SendTrialNotifications.html b/Plausible.Workers.SendTrialNotifications.html
index c06eacd50..00416b055 100644
--- a/Plausible.Workers.SendTrialNotifications.html
+++ b/Plausible.Workers.SendTrialNotifications.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.Workers.TrafficChangeNotifier.html b/Plausible.Workers.TrafficChangeNotifier.html
index 348c5d132..890b11c1a 100644
--- a/Plausible.Workers.TrafficChangeNotifier.html
+++ b/Plausible.Workers.TrafficChangeNotifier.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Plausible.epub b/Plausible.epub
index ce42faf6ce18f202e5915184e9ed51e8dcb2b252..96aba11c300eaf872f98654fdf4c80be4f10e172 100644
GIT binary patch
delta 152840
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