From 6037d209e20549fe9ae83aa1728c7439f134924b Mon Sep 17 00:00:00 2001
From: aerosol
Date: Mon, 20 Nov 2023 11:53:04 +0000
Subject: [PATCH] deploy: b9ec38038cec090cb2b16eb4aa062430e8b42b41
---
.build | 6 +-
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.Token.html | 2 +-
Plausible.Auth.User.html | 2 +-
Plausible.Auth.UserAdmin.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 | 28 +-
Plausible.Billing.SiteLocker.html | 2 +-
Plausible.Billing.Subscription.Status.html | 2 +-
Plausible.Billing.html | 2 +-
Plausible.ChangesetHelpers.html | 2 +-
Plausible.Cldr.AcceptLanguage.html | 250 +++++-----
Plausible.Cldr.Currency.html | 126 ++---
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 | 138 +++---
Plausible.ClickhouseEventV2.html | 2 +-
Plausible.ClickhouseRepo.html | 18 +-
Plausible.ClickhouseSessionV2.BoolUInt8.html | 2 +-
Plausible.ClickhouseSessionV2.html | 2 +-
Plausible.ConfigHelpers.html | 2 +-
Plausible.DataCase.html | 2 +-
Plausible.DataMigration.NumericIDs.html | 2 +-
Plausible.DataMigration.Repo.html | 18 +-
...ible.DataMigration.RewriteFunnelDupes.html | 468 ------------------
Plausible.DataMigration.html | 2 +-
Plausible.DebugReplayInfo.html | 2 +-
Plausible.Ecto.EventName.html | 2 +-
Plausible.Event.WriteBuffer.html | 2 +-
Plausible.Factory.html | 2 +-
Plausible.Funnel.Const.html | 246 +++++++++
Plausible.Funnel.Step.html | 8 +-
Plausible.Funnel.html | 14 +-
Plausible.Funnels.html | 16 +-
Plausible.Geo.html | 66 +--
Plausible.Goal.html | 12 +-
Plausible.Goals.html | 14 +-
Plausible.Google.Api.Mock.html | 2 +-
Plausible.Google.Api.html | 2 +-
Plausible.Google.Buffer.html | 2 +-
Plausible.Google.HTTP.html | 2 +-
Plausible.Google.ReportRequest.html | 2 +-
Plausible.HTTPClient.Interface.html | 2 +-
Plausible.HTTPClient.Non200Error.html | 2 +-
Plausible.HTTPClient.html | 2 +-
Plausible.ImportDeletionRepo.html | 18 +-
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.html | 2 +-
Plausible.Ingestion.Request.html | 2 +-
Plausible.Mailer.html | 2 +-
Plausible.OpenTelemetry.Sampler.html | 2 +-
Plausible.PaddleApi.Mock.html | 2 +-
Plausible.Pagination.html | 2 +-
Plausible.Plugins.API.Goals.html | 10 +-
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.Release.html | 2 +-
Plausible.Repo.html | 2 +-
Plausible.Sentry.Client.html | 2 +-
Plausible.SentryFilter.html | 2 +-
Plausible.Session.CacheStore.html | 2 +-
Plausible.Session.Salts.html | 2 +-
Plausible.Session.WriteBuffer.html | 2 +-
Plausible.Site.Cache.Warmer.All.html | 2 +-
...ble.Site.Cache.Warmer.RecentlyUpdated.html | 2 +-
Plausible.Site.Cache.Warmer.html | 2 +-
Plausible.Site.Cache.html | 2 +-
Plausible.Site.CustomDomain.html | 2 +-
Plausible.Site.Domain.html | 2 +-
Plausible.Site.GateKeeper.html | 2 +-
Plausible.Site.GoogleAuth.html | 2 +-
Plausible.Site.ImportedData.html | 2 +-
Plausible.Site.Membership.html | 2 +-
...ble.Site.Memberships.AcceptInvitation.html | 6 +-
...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.SpikeNotification.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.FilterParser.html | 14 +-
Plausible.Stats.FilterSuggestions.html | 2 +-
Plausible.Stats.Filters.html | 2 +-
Plausible.Stats.Fragments.html | 2 +-
Plausible.Stats.Funnel.html | 6 +-
Plausible.Stats.Imported.html | 2 +-
Plausible.Stats.Interval.html | 2 +-
Plausible.Stats.Props.html | 2 +-
Plausible.Stats.Query.html | 2 +-
Plausible.Stats.Timeseries.html | 2 +-
Plausible.Stats.Util.html | 2 +-
Plausible.Stats.html | 14 +-
Plausible.Test.Support.HTML.html | 22 +-
Plausible.Test.Support.HTTPMocker.html | 2 +-
Plausible.TestUtils.html | 2 +-
Plausible.Themes.html | 2 +-
Plausible.Timezones.html | 2 +-
Plausible.Users.html | 2 +-
Plausible.Workers.CheckUsage.html | 2 +-
Plausible.Workers.CleanInvitations.html | 2 +-
...Workers.ExpireDomainChangeTransitions.html | 2 +-
Plausible.Workers.ImportGoogleAnalytics.html | 2 +-
Plausible.Workers.LockSites.html | 2 +-
Plausible.Workers.NotifyAnnualRenewal.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.SpikeNotifier.html | 2 +-
Plausible.epub | Bin 564689 -> 564170 bytes
Plausible.html | 162 +++++-
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 | 74 +--
PlausibleWeb.AuthController.html | 2 +-
PlausibleWeb.AuthPlug.html | 2 +-
PlausibleWeb.AuthView.html | 2 +-
PlausibleWeb.AuthorizeSiteAccess.html | 2 +-
PlausibleWeb.AuthorizeSitesApiPlug.html | 2 +-
PlausibleWeb.AuthorizeStatsApiPlug.html | 2 +-
PlausibleWeb.AvatarController.html | 2 +-
PlausibleWeb.BillingController.html | 2 +-
PlausibleWeb.BillingView.html | 2 +-
PlausibleWeb.CRMAuthPlug.html | 2 +-
PlausibleWeb.Captcha.html | 2 +-
PlausibleWeb.Components.Generic.html | 2 +-
PlausibleWeb.Components.Google.html | 2 +-
PlausibleWeb.Components.Settings.html | 2 +-
PlausibleWeb.Components.Site.Feature.html | 2 +-
PlausibleWeb.ConnCase.html | 2 +-
PlausibleWeb.ControllerHelpers.html | 2 +-
PlausibleWeb.Email.html | 2 +-
PlausibleWeb.EmailView.html | 2 +-
PlausibleWeb.Endpoint.html | 54 +-
PlausibleWeb.ErrorHelpers.html | 2 +-
PlausibleWeb.ErrorReportController.html | 2 +-
PlausibleWeb.ErrorView.html | 2 +-
PlausibleWeb.Favicon.html | 2 +-
PlausibleWeb.FirstLaunchPlug.html | 2 +-
PlausibleWeb.FormHelpers.html | 2 +-
PlausibleWeb.InvitationController.html | 2 +-
PlausibleWeb.LastSeenPlug.html | 2 +-
PlausibleWeb.LayoutView.JWT.html | 12 +-
PlausibleWeb.LayoutView.html | 28 +-
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.Pagination.html | 2 +-
PlausibleWeb.Live.Components.Visitors.html | 2 +-
PlausibleWeb.Live.Flash.html | 2 +-
PlausibleWeb.Live.FunnelSettings.Form.html | 18 +-
PlausibleWeb.Live.FunnelSettings.List.html | 6 +-
PlausibleWeb.Live.FunnelSettings.html | 12 +-
PlausibleWeb.Live.GoalSettings.Form.html | 2 +-
PlausibleWeb.Live.GoalSettings.List.html | 2 +-
PlausibleWeb.Live.GoalSettings.html | 8 +-
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.Sites.html | 2 +-
PlausibleWeb.MJML.WeeklyReport.html | 2 +-
PlausibleWeb.PageController.html | 2 +-
PlausibleWeb.PageView.html | 2 +-
...ibleWeb.Plugins.API.Controllers.Goals.html | 2 +-
...b.Plugins.API.Controllers.SharedLinks.html | 2 +-
PlausibleWeb.Plugins.API.Errors.html | 2 +-
PlausibleWeb.Plugins.API.Router.html | 2 +-
PlausibleWeb.Plugins.API.Schemas.Error.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 +-
...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 +-
PlausibleWeb.Plugins.API.Views.Error.html | 2 +-
PlausibleWeb.Plugins.API.Views.Goal.html | 2 +-
...sibleWeb.Plugins.API.Views.Pagination.html | 2 +-
...sibleWeb.Plugins.API.Views.SharedLink.html | 2 +-
PlausibleWeb.Plugins.API.html | 2 +-
PlausibleWeb.PluginsAPICase.html | 2 +-
PlausibleWeb.Plugs.AuthorizePluginsAPI.html | 2 +-
...bleWeb.Plugs.MaybeDisableRegistration.html | 2 +-
PlausibleWeb.Plugs.NoRobots.html | 2 +-
PlausibleWeb.RefInspector.html | 2 +-
PlausibleWeb.RemoteIp.html | 2 +-
PlausibleWeb.RequireAccountPlug.html | 2 +-
PlausibleWeb.RequireLoggedOutPlug.html | 2 +-
PlausibleWeb.Router.html | 22 +-
PlausibleWeb.SessionTimeoutPlug.html | 2 +-
PlausibleWeb.Site.MembershipController.html | 2 +-
PlausibleWeb.Site.MembershipView.html | 2 +-
PlausibleWeb.SiteController.html | 2 +-
PlausibleWeb.SiteView.html | 2 +-
PlausibleWeb.StatsController.html | 10 +-
PlausibleWeb.StatsView.html | 2 +-
PlausibleWeb.Tracker.html | 2 +-
PlausibleWeb.UnsubscribeController.html | 2 +-
PlausibleWeb.UnsubscribeView.html | 2 +-
PlausibleWeb.html | 2 +-
account-locking.html | 2 +-
api-reference.html | 31 +-
contributing.html | 2 +-
dist/search_data-28B3E855.js | 1 -
dist/search_data-3A47F6AA.js | 1 +
dist/sidebar_items-073B7C2E.js | 1 -
dist/sidebar_items-72A97DF3.js | 1 +
readme.html | 2 +-
search.html | 4 +-
293 files changed, 1430 insertions(+), 1507 deletions(-)
delete mode 100644 Plausible.DataMigration.RewriteFunnelDupes.html
create mode 100644 Plausible.Funnel.Const.html
delete mode 100644 dist/search_data-28B3E855.js
create mode 100644 dist/search_data-3A47F6AA.js
delete mode 100644 dist/sidebar_items-073B7C2E.js
create mode 100644 dist/sidebar_items-72A97DF3.js
diff --git a/.build b/.build
index 9d5d9cd72..fe8b4ecae 100644
--- a/.build
+++ b/.build
@@ -56,12 +56,12 @@ Plausible.ConfigHelpers.html
Plausible.DataCase.html
Plausible.DataMigration.NumericIDs.html
Plausible.DataMigration.Repo.html
-Plausible.DataMigration.RewriteFunnelDupes.html
Plausible.DataMigration.html
Plausible.DebugReplayInfo.html
Plausible.Ecto.EventName.html
Plausible.Event.WriteBuffer.html
Plausible.Factory.html
+Plausible.Funnel.Const.html
Plausible.Funnel.Step.html
Plausible.Funnel.html
Plausible.Funnels.html
@@ -310,8 +310,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-28B3E855.js
-dist/sidebar_items-073B7C2E.js
+dist/search_data-3A47F6AA.js
+dist/sidebar_items-72A97DF3.js
index.html
readme.html
search.html
diff --git a/404.html b/404.html
index 59a6194dd..e739401fb 100644
--- a/404.html
+++ b/404.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Mix.Tasks.CancelSubscription.html b/Mix.Tasks.CancelSubscription.html
index 321dbaadf..0ce953913 100644
--- a/Mix.Tasks.CancelSubscription.html
+++ b/Mix.Tasks.CancelSubscription.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Mix.Tasks.CleanClickhouse.html b/Mix.Tasks.CleanClickhouse.html
index 582c75d57..f2ce8dc75 100644
--- a/Mix.Tasks.CleanClickhouse.html
+++ b/Mix.Tasks.CleanClickhouse.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Mix.Tasks.CreateFreeSubscription.html b/Mix.Tasks.CreateFreeSubscription.html
index c4a0233b8..f2092305d 100644
--- a/Mix.Tasks.CreateFreeSubscription.html
+++ b/Mix.Tasks.CreateFreeSubscription.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Mix.Tasks.DownloadCountryDatabase.html b/Mix.Tasks.DownloadCountryDatabase.html
index c5863774a..069eb1f05 100644
--- a/Mix.Tasks.DownloadCountryDatabase.html
+++ b/Mix.Tasks.DownloadCountryDatabase.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Mix.Tasks.GenerateReferrerFavicons.html b/Mix.Tasks.GenerateReferrerFavicons.html
index c30a0af6e..9a754b66f 100644
--- a/Mix.Tasks.GenerateReferrerFavicons.html
+++ b/Mix.Tasks.GenerateReferrerFavicons.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Mix.Tasks.PullSandboxSubscription.html b/Mix.Tasks.PullSandboxSubscription.html
index b8815f181..f3a95c3f8 100644
--- a/Mix.Tasks.PullSandboxSubscription.html
+++ b/Mix.Tasks.PullSandboxSubscription.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Mix.Tasks.SendPageview.html b/Mix.Tasks.SendPageview.html
index 99f65e1c0..2212e23dc 100644
--- a/Mix.Tasks.SendPageview.html
+++ b/Mix.Tasks.SendPageview.html
@@ -13,7 +13,7 @@
-
+
diff --git a/ObanErrorReporter.html b/ObanErrorReporter.html
index 77c28b3bd..a2d65d54d 100644
--- a/ObanErrorReporter.html
+++ b/ObanErrorReporter.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.AsyncInsertRepo.html b/Plausible.AsyncInsertRepo.html
index b9d3895d7..c3b549ea9 100644
--- a/Plausible.AsyncInsertRepo.html
+++ b/Plausible.AsyncInsertRepo.html
@@ -13,7 +13,7 @@
-
+
@@ -1114,23 +1114,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 24c1b6ac9..0a6ecf2eb 100644
--- a/Plausible.Auth.ApiKey.html
+++ b/Plausible.Auth.ApiKey.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.ApiKeyAdmin.html b/Plausible.Auth.ApiKeyAdmin.html
index c00eb75db..076af62db 100644
--- a/Plausible.Auth.ApiKeyAdmin.html
+++ b/Plausible.Auth.ApiKeyAdmin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.EmailActivationCode.html b/Plausible.Auth.EmailActivationCode.html
index 6d267ad73..589fd0178 100644
--- a/Plausible.Auth.EmailActivationCode.html
+++ b/Plausible.Auth.EmailActivationCode.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.EmailVerification.html b/Plausible.Auth.EmailVerification.html
index 8515dc943..5f99d08d5 100644
--- a/Plausible.Auth.EmailVerification.html
+++ b/Plausible.Auth.EmailVerification.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.GracePeriod.html b/Plausible.Auth.GracePeriod.html
index 503eaf56f..838ea2bcc 100644
--- a/Plausible.Auth.GracePeriod.html
+++ b/Plausible.Auth.GracePeriod.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.Invitation.html b/Plausible.Auth.Invitation.html
index 156da09bd..f9f3743f3 100644
--- a/Plausible.Auth.Invitation.html
+++ b/Plausible.Auth.Invitation.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.Password.html b/Plausible.Auth.Password.html
index bf6d767b1..e372c80c2 100644
--- a/Plausible.Auth.Password.html
+++ b/Plausible.Auth.Password.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.Token.html b/Plausible.Auth.Token.html
index bb719d5ce..be50ed737 100644
--- a/Plausible.Auth.Token.html
+++ b/Plausible.Auth.Token.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.User.html b/Plausible.Auth.User.html
index 2cc2963dc..75077c174 100644
--- a/Plausible.Auth.User.html
+++ b/Plausible.Auth.User.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.UserAdmin.html b/Plausible.Auth.UserAdmin.html
index e6c3e266d..e926b59d7 100644
--- a/Plausible.Auth.UserAdmin.html
+++ b/Plausible.Auth.UserAdmin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Auth.html b/Plausible.Auth.html
index b42e73bdb..21e13d0d5 100644
--- a/Plausible.Auth.html
+++ b/Plausible.Auth.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.Ecto.Feature.html b/Plausible.Billing.Ecto.Feature.html
index cafe5c0bd..385e28026 100644
--- a/Plausible.Billing.Ecto.Feature.html
+++ b/Plausible.Billing.Ecto.Feature.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.Ecto.FeatureList.html b/Plausible.Billing.Ecto.FeatureList.html
index 094cf0e09..1005f289b 100644
--- a/Plausible.Billing.Ecto.FeatureList.html
+++ b/Plausible.Billing.Ecto.FeatureList.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.Ecto.Limit.html b/Plausible.Billing.Ecto.Limit.html
index fcbf2e77f..c45e406d1 100644
--- a/Plausible.Billing.Ecto.Limit.html
+++ b/Plausible.Billing.Ecto.Limit.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.EnterprisePlan.html b/Plausible.Billing.EnterprisePlan.html
index a5ef7119c..fd3918be1 100644
--- a/Plausible.Billing.EnterprisePlan.html
+++ b/Plausible.Billing.EnterprisePlan.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.EnterprisePlanAdmin.html b/Plausible.Billing.EnterprisePlanAdmin.html
index 1026cf017..1ab2ddf83 100644
--- a/Plausible.Billing.EnterprisePlanAdmin.html
+++ b/Plausible.Billing.EnterprisePlanAdmin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.Feature.html b/Plausible.Billing.Feature.html
index c12eadc6d..e8fcdb0fc 100644
--- a/Plausible.Billing.Feature.html
+++ b/Plausible.Billing.Feature.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.PaddleApi.html b/Plausible.Billing.PaddleApi.html
index ab4f293ba..cf92cb923 100644
--- a/Plausible.Billing.PaddleApi.html
+++ b/Plausible.Billing.PaddleApi.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.Plans.html b/Plausible.Billing.Plans.html
index 7342a28f7..e9cb7753a 100644
--- a/Plausible.Billing.Plans.html
+++ b/Plausible.Billing.Plans.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.Quota.html b/Plausible.Billing.Quota.html
index 9d83b9009..5f8be8b37 100644
--- a/Plausible.Billing.Quota.html
+++ b/Plausible.Billing.Quota.html
@@ -13,7 +13,7 @@
-
+
@@ -282,7 +282,7 @@ Functions
allowed_features_for(user)
-
+
View Source
@@ -305,7 +305,7 @@ ability to use all features during their trial.
below_limit?(usage, limit)
-
+
View Source
@@ -334,7 +334,7 @@ Returns false if usage is equal to the limit.
ensure_can_subscribe_to_plan(user, plan)
-
+
View Source
@@ -356,7 +356,7 @@ Returns false if usage is equal to the limit.
exceeded_limits(usage, plan)
-
+
View Source
@@ -378,7 +378,7 @@ Returns false if usage is equal to the limit.
features_usage(user)
-
+
View Source
@@ -407,7 +407,7 @@ this user owns + StatsAPI if the user has a configured Stats API key.Give
monthly_pageview_limit(subscription)
-
+
View Source
@@ -436,7 +436,7 @@ this user owns + StatsAPI if the user has a configured Stats API key.Give
monthly_pageview_usage(user)
-
+
View Source
@@ -465,7 +465,7 @@ sent by the sites the user owns in last 30 days.
site_limit(user)
-
+
View Source
@@ -494,7 +494,7 @@ background job so as to avoid service disruption.
site_usage(user)
-
+
View Source
@@ -522,7 +522,7 @@ background job so as to avoid service disruption.
team_member_limit(user)
-
+
View Source
@@ -550,7 +550,7 @@ background job so as to avoid service disruption.
team_member_usage(user)
-
+
View Source
@@ -581,7 +581,7 @@ with the user's sites.
usage(user, opts \\ [])
-
+
View Source
@@ -603,7 +603,7 @@ with the user's sites.
within_limit?(usage, limit)
-
+
View Source
diff --git a/Plausible.Billing.SiteLocker.html b/Plausible.Billing.SiteLocker.html
index 6fe5b3da9..1da1ac879 100644
--- a/Plausible.Billing.SiteLocker.html
+++ b/Plausible.Billing.SiteLocker.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.Subscription.Status.html b/Plausible.Billing.Subscription.Status.html
index 4b80cf53d..d8e0a24b9 100644
--- a/Plausible.Billing.Subscription.Status.html
+++ b/Plausible.Billing.Subscription.Status.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Billing.html b/Plausible.Billing.html
index 77da457df..d26132de3 100644
--- a/Plausible.Billing.html
+++ b/Plausible.Billing.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.ChangesetHelpers.html b/Plausible.ChangesetHelpers.html
index b4e02a663..a4866e27c 100644
--- a/Plausible.ChangesetHelpers.html
+++ b/Plausible.ChangesetHelpers.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Cldr.AcceptLanguage.html b/Plausible.Cldr.AcceptLanguage.html
index d8b4cfced..89ac5b37f 100644
--- a/Plausible.Cldr.AcceptLanguage.html
+++ b/Plausible.Cldr.AcceptLanguage.html
@@ -13,7 +13,7 @@
-
+
@@ -119,7 +119,7 @@ Plausible
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."
@@ -232,54 +232,54 @@ a configured 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" } }
@@ -340,95 +340,95 @@ wuth an error tuple for each invalid tag added at the end of the list.
-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" } }
+ ] }
@@ -473,92 +473,92 @@ wuth an error tuple for each invalid tag added at the end of the list.
-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 c961e1dda..490eba419 100644
--- a/Plausible.Cldr.Currency.html
+++ b/Plausible.Cldr.Currency.html
@@ -13,7 +13,7 @@
-
+
@@ -390,11 +390,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 ,
@@ -404,12 +404,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 ,
@@ -419,7 +419,7 @@ The default is :all
. See symbol : "SUR" ,
tender : true ,
to : nil
- } ,
+ } ,
...
} }
@@ -470,11 +470,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 ,
@@ -484,12 +484,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 ,
@@ -499,7 +499,7 @@ The default is :all
. See symbol : "SUR" ,
tender : true ,
to : nil
- } ,
+ } ,
...
}
@@ -557,13 +557,13 @@ or a
-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" ,
@@ -571,15 +571,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" ,
@@ -587,7 +587,7 @@ or a rounding : 0 ,
symbol : "THB" ,
tender : true
- } }
+ } }
@@ -646,12 +646,12 @@ or a
-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" ,
@@ -659,14 +659,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" ,
@@ -674,7 +674,7 @@ or a rounding : 0 ,
symbol : "THB" ,
tender : true
- }
+ }
@@ -715,11 +715,11 @@ or a
-iex> { :ok , locale } = Plausible.Cldr . validate_locale "en"
+iex> { :ok , locale } = Plausible.Cldr . validate_locale "en"
iex> Plausible.Cldr.Currency . currency_from_locale locale
:USD
- iex> { :ok , locale } = Plausible.Cldr . validate_locale "en-AU"
+ iex> { :ok , locale } = Plausible.Cldr . validate_locale "en-AU"
iex> Plausible.Cldr.Currency . currency_from_locale locale
:AUD
@@ -768,13 +768,13 @@ or a
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] }
- }
- }
+
{ :ok ,
+ %{
+ USD : %{ from : ~D[1792-01-01] , to : nil } ,
+ USN : %{ tender : false } ,
+ USS : %{ from : nil , tender : false , to : ~D[2014-03-01] }
+ }
+ }
@@ -834,8 +834,8 @@ The default is :all
. See MyApp.Cldr.Currency . currency_strings "en"
- => { :ok ,
- %{
+ => { :ok ,
+ %{
"mexican silver pesos" => :MXP ,
"sudanese dinar" => :SDD ,
"bad" => :BAD ,
@@ -845,7 +845,7 @@ The default is :all
. See "guyanaese dollars" => :GYD ,
"equatorial guinean ekwele" => :GQE ,
...
- } }
+ } }
}
@@ -1004,7 +1004,7 @@ mapping is returned for that territory.iex> Plausible.Cldr.Currency . current_territory_currencies ( )
+iex> Plausible.Cldr.Currency . current_territory_currencies ( )
@@ -1097,10 +1097,10 @@ currency codeiex> Plausible.Cldr.Currency . known_currency_code "AUD"
- { :ok , :AUD }
+ { :ok , :AUD }
iex> Plausible.Cldr.Currency . known_currency_code "GGG"
- { :error , { Cldr.UnknownCurrencyError , "The currency \" GGG \" is invalid" } }
+{ :error , { Cldr.UnknownCurrencyError , "The currency \" GGG \" is invalid" } }
@@ -1247,14 +1247,14 @@ such as 0.05
. Optional.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 ,
@@ -1264,11 +1264,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." } }
@@ -1327,19 +1327,19 @@ default is Plaus
iex> Plausible.Cldr.Currency . pluralize 1 , :USD
- { :ok , "US dollar" }
+ { :ok , "US dollar" }
iex> Plausible.Cldr.Currency . pluralize 3 , :USD
- { :ok , "US dollars" }
+ { :ok , "US dollars" }
iex> Plausible.Cldr.Currency . pluralize 12 , :USD , locale : "zh"
- { :ok , "美元" }
+ { :ok , "美元" }
iex> Plausible.Cldr.Currency . pluralize 12 , :USD , locale : "fr"
- { :ok , "dollars des États-Unis" }
+ { :ok , "dollars des États-Unis" }
iex> Plausible.Cldr.Currency . pluralize 1 , :USD , locale : "fr"
- { :ok , "dollar des États-Unis" }
+{ :ok , "dollar des États-Unis" }
diff --git a/Plausible.Cldr.Locale.html b/Plausible.Cldr.Locale.html
index 8331884f0..685c05b97 100644
--- a/Plausible.Cldr.Locale.html
+++ b/Plausible.Cldr.Locale.html
@@ -13,7 +13,7 @@
-
+
@@ -297,16 +297,16 @@ this specific locale..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 ] }
@@ -360,20 +360,20 @@ this specific locale.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 ] > ] }
@@ -504,15 +504,15 @@ generic top-level domain names.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 \" " } }
@@ -654,12 +654,12 @@ be a territory.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 9252a478e..e34cfba10 100644
--- a/Plausible.Cldr.Number.Cardinal.html
+++ b/Plausible.Cldr.Number.Cardinal.html
@@ -13,7 +13,7 @@
-
+
@@ -426,31 +426,31 @@ The valid substitution keys are :zero
, 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 24daa664f..e2c7054ef 100644
--- a/Plausible.Cldr.Number.Format.html
+++ b/Plausible.Cldr.Number.Format.html
@@ -13,7 +13,7 @@
-
+
@@ -439,7 +439,7 @@ to precompile all the known formats at compile time.
-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 } } }
-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 } }
@@ -772,8 +772,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 }
@@ -825,7 +825,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 e5f865c5c..8abee969c 100644
--- a/Plausible.Cldr.Number.Formatter.Decimal.html
+++ b/Plausible.Cldr.Number.Formatter.Decimal.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Cldr.Number.Ordinal.html b/Plausible.Cldr.Number.Ordinal.html
index d49175cc0..e1c37961f 100644
--- a/Plausible.Cldr.Number.Ordinal.html
+++ b/Plausible.Cldr.Number.Ordinal.html
@@ -13,7 +13,7 @@
-
+
@@ -429,31 +429,31 @@ The valid substitution keys are :zero
, 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 dbb7eb12b..078dfba27 100644
--- a/Plausible.Cldr.Number.PluralRule.Range.html
+++ b/Plausible.Cldr.Number.PluralRule.Range.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Cldr.Number.Symbol.html b/Plausible.Cldr.Number.Symbol.html
index 730f0ec48..c493832e5 100644
--- a/Plausible.Cldr.Number.Symbol.html
+++ b/Plausible.Cldr.Number.Symbol.html
@@ -13,7 +13,7 @@
-
+
@@ -349,9 +349,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 : "," ,
@@ -364,8 +364,8 @@ is Plausible.Cld
plus_sign : "+" ,
superscripting_exponent : "×" ,
time_separator : ":"
- } ,
- thai : % Cldr.Number.Symbol {
+ } ,
+ thai : % Cldr.Number.Symbol {
decimal : "." ,
exponential : "E" ,
group : "," ,
@@ -378,8 +378,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 c920cc691..706734794 100644
--- a/Plausible.Cldr.Number.System.html
+++ b/Plausible.Cldr.Number.System.html
@@ -13,7 +13,7 @@
-
+
@@ -288,23 +288,23 @@ it is returned as is.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}" }
+ }
@@ -480,13 +480,13 @@ or a
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" } }
@@ -584,20 +584,20 @@ actual system name.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.
@@ -644,16 +644,16 @@ is recommended.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 24f35094c..862f512e8 100644
--- a/Plausible.Cldr.Number.Transliterate.html
+++ b/Plausible.Cldr.Number.Transliterate.html
@@ -13,7 +13,7 @@
-
+
@@ -133,12 +133,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.systems_with_digits/0
.
If a transliteration is requested between two number pairs that have not been configured for
precompilation, a warning is logged.
@@ -252,22 +252,22 @@ and
-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 600aaf691..9b49e9929 100644
--- a/Plausible.Cldr.Number.html
+++ b/Plausible.Cldr.Number.html
@@ -13,7 +13,7 @@
-
+
@@ -412,19 +412,19 @@ using the Elixir standard library functions.
-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" } }
@@ -496,17 +496,17 @@ financial instruments.
-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 ]
@@ -583,19 +583,19 @@ financial instruments.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" } }
@@ -659,13 +659,13 @@ The default is options[:backend].get_locale()
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 ]
@@ -722,9 +722,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 ]
@@ -784,20 +784,20 @@ and any options provided are passed to that function.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" ]
@@ -844,7 +844,7 @@ options.iex> Plausible.Cldr.Number . to_approx_string 1234
- { :ok , "~1,234" }
+{ :ok , "~1,234" }
@@ -891,7 +891,7 @@ options.iex> Plausible.Cldr.Number . to_at_least_string 1234
- { :ok , "1,234+" }
+{ :ok , "1,234+" }
@@ -938,7 +938,7 @@ options.iex> Plausible.Cldr.Number . to_at_most_string 1234
- { :ok , "≤1,234" }
+{ :ok , "≤1,234" }
@@ -985,7 +985,7 @@ options.
iex> Plausible.Cldr.Number . to_range_string 1234 .. 5678
- { :ok , "1,234–5,678" }
+{ :ok , "1,234–5,678" }
@@ -1104,21 +1104,21 @@ extensions.iex> Cldr.Number . to_string ( 100 , format : :currency , currency : :USD , wrapper : fn
+applied to the symbol than the number. For example:iex> Cldr.Number . to_string ( 100 , format : :currency , currency : :USD , wrapper : fn
...> string , :currency_symbol -> "<span class= \" symbol \" >" <> string <> "</span>"
...> string , :number -> "<span class= \" number \" >" <> string <> "</span>"
...> string , :currency_space -> "<span>" <> string <> "</span>"
...> string , _other -> string
- ...> end )
- { :ok , "<span class= \" symbol \" >$</span><span class= \" number \" >100.00</span>" }
It is also possible and recommended to use the Phoenix.HTML.Tag.content_tag/3
+
...> end )
+ { :ok , "<span class= \" symbol \" >$</span><span class= \" number \" >100.00</span>" } 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.
@@ -1139,80 +1139,80 @@ inserted in the final formatted number.
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" )
- { :error , { Cldr.UnknownFormatError ,
- "The locale :he with number system :hebr does not define a format :standard" } }
+return looks like: iex> Plausible.Cldr.Number . to_string ( 1234 , locale : "he" , number_system : "hebr" )
+ { :error , { Cldr.UnknownFormatError ,
+ "The locale :he with number system :hebr does not define a format :standard" } }
@@ -1316,17 +1316,17 @@ returned by 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 c2278f18e..4e1a32846 100644
--- a/Plausible.Cldr.Rbnf.NumberSystem.html
+++ b/Plausible.Cldr.Rbnf.NumberSystem.html
@@ -13,7 +13,7 @@
-
+
@@ -116,9 +116,9 @@ Plausible
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 ,
@@ -132,9 +132,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 0805e76d1..27ee00b4d 100644
--- a/Plausible.Cldr.Rbnf.Ordinal.html
+++ b/Plausible.Cldr.Rbnf.Ordinal.html
@@ -13,7 +13,7 @@
-
+
@@ -116,20 +116,20 @@ Plausible
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 9ba6fe688..fac3f7166 100644
--- a/Plausible.Cldr.Rbnf.Spellout.html
+++ b/Plausible.Cldr.Rbnf.Spellout.html
@@ -13,7 +13,7 @@
-
+
@@ -116,9 +116,9 @@ Plausible
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 ,
@@ -126,9 +126,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 fafa1eb8e..6ab2d1470 100644
--- a/Plausible.Cldr.html
+++ b/Plausible.Cldr.html
@@ -13,7 +13,7 @@
-
+
@@ -518,24 +518,24 @@ Functions
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 : [ ]
+ }
@@ -570,7 +570,7 @@ does not specify one and none can be inferred.iex> Plausible.Cldr . default_territory ( )
+iex> Plausible.Cldr . default_territory ( )
:"001"
@@ -633,13 +633,13 @@ is inserted between words or sentences. The valid options are
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
"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"
@@ -675,23 +675,23 @@ take an optional locale parameter for which a locale is not supplied.
-iex> Plausible.Cldr . put_locale ( "pl" )
+iex> Plausible.Cldr . put_locale ( "pl" )
iex> Plausible.Cldr . get_locale
- % Cldr.LanguageTag {
+ % 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 : [ ]
+ }
@@ -824,10 +824,10 @@ name is configured and available in Gettext.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
@@ -946,10 +946,10 @@ name is configured and available in Cldr.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
@@ -1004,7 +1004,7 @@ in this module or in
iex> Plausible.Cldr . known_number_system_types
- [ :default , :finance , :native , :traditional ]
+[ :default , :finance , :native , :traditional ]
@@ -1115,10 +1115,10 @@ rules based number formats (RBNF).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
@@ -1239,29 +1239,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" } }
@@ -1444,47 +1444,47 @@ of a language tag.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" } }
@@ -1555,22 +1555,22 @@ of a language tag.iex> Plausible.Cldr . validate_number_system_type :default
- { :ok , :default }
+ { :ok , :default }
iex> Plausible.Cldr . validate_number_system_type :traditional
- { :ok , :traditional }
+ { :ok , :traditional }
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"
- {
+ {
: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 66fb46241..6f7aa458b 100644
--- a/Plausible.ClickhouseEventV2.html
+++ b/Plausible.ClickhouseEventV2.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.ClickhouseRepo.html b/Plausible.ClickhouseRepo.html
index 7ad10d0dc..9cd5ba8da 100644
--- a/Plausible.ClickhouseRepo.html
+++ b/Plausible.ClickhouseRepo.html
@@ -13,7 +13,7 @@
-
+
@@ -816,23 +816,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 6717be825..9bcc7cc6c 100644
--- a/Plausible.ClickhouseSessionV2.BoolUInt8.html
+++ b/Plausible.ClickhouseSessionV2.BoolUInt8.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.ClickhouseSessionV2.html b/Plausible.ClickhouseSessionV2.html
index 83cccf754..8216dd17d 100644
--- a/Plausible.ClickhouseSessionV2.html
+++ b/Plausible.ClickhouseSessionV2.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.ConfigHelpers.html b/Plausible.ConfigHelpers.html
index ac16a843e..d1b1462ae 100644
--- a/Plausible.ConfigHelpers.html
+++ b/Plausible.ConfigHelpers.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.DataCase.html b/Plausible.DataCase.html
index dde3c5eff..2901323af 100644
--- a/Plausible.DataCase.html
+++ b/Plausible.DataCase.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.DataMigration.NumericIDs.html b/Plausible.DataMigration.NumericIDs.html
index 9195d77ad..9f6701227 100644
--- a/Plausible.DataMigration.NumericIDs.html
+++ b/Plausible.DataMigration.NumericIDs.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.DataMigration.Repo.html b/Plausible.DataMigration.Repo.html
index a081e9385..4227b5e3e 100644
--- a/Plausible.DataMigration.Repo.html
+++ b/Plausible.DataMigration.Repo.html
@@ -13,7 +13,7 @@
-
+
@@ -1123,23 +1123,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.RewriteFunnelDupes.html b/Plausible.DataMigration.RewriteFunnelDupes.html
deleted file mode 100644
index 657646438..000000000
--- a/Plausible.DataMigration.RewriteFunnelDupes.html
+++ /dev/null
@@ -1,468 +0,0 @@
-
-
-
-
-
-
-
-
-
- Plausible.DataMigration.RewriteFunnelDupes — Plausible v0.0.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Settings
-
-
-
-
-
- View Source
-
-
- Plausible.DataMigration.RewriteFunnelDupes
- (Plausible v0.0.1)
-
-
-
-
-
-A data fix migration that seeks funnels having steps
-whose goals are equally named.
-It then tries to rewrite the duplicate goals using the
-oldest goal available. In extreme cases, e.g. when multiple
-duplicates are found for a single funnel, it will either
-reduce or completely remove the funnel.
-This enables us to run a migration later on that will
-delete duplicate goals and enforce goal uniqueness at the
-database level via a CHECK constraint.
To run, just call the run
function.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Plausible.DataMigration.html b/Plausible.DataMigration.html
index e4678dafe..fb86a5062 100644
--- a/Plausible.DataMigration.html
+++ b/Plausible.DataMigration.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.DebugReplayInfo.html b/Plausible.DebugReplayInfo.html
index 4987ccfdd..a21e4c0c2 100644
--- a/Plausible.DebugReplayInfo.html
+++ b/Plausible.DebugReplayInfo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Ecto.EventName.html b/Plausible.Ecto.EventName.html
index 3bd739a34..c1181f657 100644
--- a/Plausible.Ecto.EventName.html
+++ b/Plausible.Ecto.EventName.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Event.WriteBuffer.html b/Plausible.Event.WriteBuffer.html
index 9a15e997b..80fd38048 100644
--- a/Plausible.Event.WriteBuffer.html
+++ b/Plausible.Event.WriteBuffer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Factory.html b/Plausible.Factory.html
index 3abcdaf08..49a2494b8 100644
--- a/Plausible.Factory.html
+++ b/Plausible.Factory.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Funnel.Const.html b/Plausible.Funnel.Const.html
new file mode 100644
index 000000000..884fd57f2
--- /dev/null
+++ b/Plausible.Funnel.Const.html
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+
+
+ Plausible.Funnel.Const — Plausible v0.0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Settings
+
+
+
+
+
+ View Source
+
+
+ Plausible.Funnel.Const
+ (Plausible v0.0.1)
+
+
+
+
+
+Compile-time convience constants for funnel characteristics.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Plausible.Funnel.Step.html b/Plausible.Funnel.Step.html
index c1324454e..0b162dc7c 100644
--- a/Plausible.Funnel.Step.html
+++ b/Plausible.Funnel.Step.html
@@ -13,7 +13,7 @@
-
+
@@ -102,7 +102,7 @@ Plausible
-
+
View Source
@@ -175,7 +175,7 @@ Types
t()
-
+
View Source
@@ -227,7 +227,7 @@ Functions
changeset(step, attrs \\ %{})
-
+
View Source
diff --git a/Plausible.Funnel.html b/Plausible.Funnel.html
index 0bd49821b..b100ce975 100644
--- a/Plausible.Funnel.html
+++ b/Plausible.Funnel.html
@@ -13,7 +13,7 @@
-
+
@@ -102,7 +102,7 @@ Plausible
-
+
View Source
@@ -201,7 +201,7 @@ Types
t()
-
+
View Source
@@ -255,7 +255,7 @@ Functions
changeset(funnel \\ %__MODULE__{}, attrs \\ %{})
-
+
View Source
@@ -277,7 +277,7 @@ Functions
max_steps()
-
+
View Source
@@ -301,7 +301,7 @@ Functions
min_steps()
-
+
View Source
@@ -325,7 +325,7 @@ Functions
put_step_orders(changeset)
-
+
View Source
diff --git a/Plausible.Funnels.html b/Plausible.Funnels.html
index fcfdc300f..f005b30d6 100644
--- a/Plausible.Funnels.html
+++ b/Plausible.Funnels.html
@@ -13,7 +13,7 @@
-
+
@@ -102,7 +102,7 @@ Plausible
-
+
View Source
@@ -202,7 +202,7 @@ Functions
create(site, name, steps)
-
+
View Source
@@ -232,7 +232,7 @@ Functions
create_changeset(site, name, steps)
-
+
View Source
@@ -260,7 +260,7 @@ Functions
delete(site_id, funnel_id)
-
+
View Source
@@ -288,7 +288,7 @@ Functions
ephemeral_definition(site, name, steps)
-
+
View Source
@@ -317,7 +317,7 @@ Functions
get(site_id, by)
-
+
View Source
@@ -346,7 +346,7 @@ Functions
list(site)
-
+
View Source
diff --git a/Plausible.Geo.html b/Plausible.Geo.html
index d556326c8..17263d1eb 100644
--- a/Plausible.Geo.html
+++ b/Plausible.Geo.html
@@ -13,7 +13,7 @@
-
+
@@ -231,8 +231,8 @@ Functions
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"
@@ -272,8 +272,8 @@ asynchronously.
- 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
@@ -302,21 +302,21 @@ asynchronously.
-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" ,
@@ -325,12 +325,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" ,
@@ -339,20 +339,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" ,
@@ -361,13 +361,13 @@ asynchronously."pt-BR" => "EUA" ,
"ru" => "США" ,
"zh-CN" => "美国"
- }
- } ,
- "subdivisions" => [
- %{
+ }
+ } ,
+ "subdivisions" => [
+ %{
"geoname_id" => 5332921 ,
"iso_code" => "CA" ,
- "names" => %{
+ "names" => %{
"de" => "Kalifornien" ,
"en" => "California" ,
"es" => "California" ,
@@ -376,10 +376,10 @@ asynchronously."pt-BR" => "Califórnia" ,
"ru" => "Калифорния" ,
"zh-CN" => "加州"
- }
- }
- ]
- }
+ }
+ }
+ ]
+ }
diff --git a/Plausible.Goal.html b/Plausible.Goal.html
index 0c5a3519a..e4c21aa12 100644
--- a/Plausible.Goal.html
+++ b/Plausible.Goal.html
@@ -13,7 +13,7 @@
-
+
@@ -194,7 +194,7 @@ Types
t()
-
+
View Source
@@ -247,7 +247,7 @@ Functions
changeset(goal, attrs \\ %{})
-
+
View Source
@@ -269,7 +269,7 @@ Functions
currency_options()
-
+
View Source
@@ -291,7 +291,7 @@ Functions
revenue?(goal)
-
+
View Source
@@ -313,7 +313,7 @@ Functions
valid_currencies()
-
+
View Source
diff --git a/Plausible.Goals.html b/Plausible.Goals.html
index 27205feb5..2162a3f60 100644
--- a/Plausible.Goals.html
+++ b/Plausible.Goals.html
@@ -13,7 +13,7 @@
-
+
@@ -200,7 +200,7 @@ Functions
count(site)
-
+
View Source
@@ -230,7 +230,7 @@ Functions
create(site, params, opts \\ [])
-
+
View Source
@@ -262,7 +262,7 @@ refreshed by the sites cache, as revenue goals are used during ingestion.
delete(id, site_id)
-
+
View Source
@@ -288,7 +288,7 @@ funnel record(s) are removed completely along with the targeted goal.
find_or_create(site, map)
-
+
View Source
@@ -312,7 +312,7 @@ funnel record(s) are removed completely along with the targeted goal.
for_site(site, opts \\ [])
-
+
View Source
@@ -336,7 +336,7 @@ funnel record(s) are removed completely along with the targeted goal.
for_site_query(site, opts \\ [])
-
+
View Source
diff --git a/Plausible.Google.Api.Mock.html b/Plausible.Google.Api.Mock.html
index 9728b0e20..43bd7536d 100644
--- a/Plausible.Google.Api.Mock.html
+++ b/Plausible.Google.Api.Mock.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Google.Api.html b/Plausible.Google.Api.html
index b5e320364..f0c38c123 100644
--- a/Plausible.Google.Api.html
+++ b/Plausible.Google.Api.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Google.Buffer.html b/Plausible.Google.Buffer.html
index 7673620bc..1b37b0627 100644
--- a/Plausible.Google.Buffer.html
+++ b/Plausible.Google.Buffer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Google.HTTP.html b/Plausible.Google.HTTP.html
index 4ea84cf9b..26838e6f2 100644
--- a/Plausible.Google.HTTP.html
+++ b/Plausible.Google.HTTP.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Google.ReportRequest.html b/Plausible.Google.ReportRequest.html
index 61d1b50c0..0fa5731ab 100644
--- a/Plausible.Google.ReportRequest.html
+++ b/Plausible.Google.ReportRequest.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.HTTPClient.Interface.html b/Plausible.HTTPClient.Interface.html
index b613e55ca..93480343a 100644
--- a/Plausible.HTTPClient.Interface.html
+++ b/Plausible.HTTPClient.Interface.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.HTTPClient.Non200Error.html b/Plausible.HTTPClient.Non200Error.html
index b7ba3afd6..d93b25657 100644
--- a/Plausible.HTTPClient.Non200Error.html
+++ b/Plausible.HTTPClient.Non200Error.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.HTTPClient.html b/Plausible.HTTPClient.html
index a59aacb26..c371a448a 100644
--- a/Plausible.HTTPClient.html
+++ b/Plausible.HTTPClient.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.ImportDeletionRepo.html b/Plausible.ImportDeletionRepo.html
index 6b005a6a9..33399e464 100644
--- a/Plausible.ImportDeletionRepo.html
+++ b/Plausible.ImportDeletionRepo.html
@@ -13,7 +13,7 @@
-
+
@@ -1114,23 +1114,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.html b/Plausible.Imported.html
index 1554b3688..c273a65cd 100644
--- a/Plausible.Imported.html
+++ b/Plausible.Imported.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.IngestRepo.html b/Plausible.IngestRepo.html
index e90a92f27..4acf05725 100644
--- a/Plausible.IngestRepo.html
+++ b/Plausible.IngestRepo.html
@@ -13,7 +13,7 @@
-
+
@@ -1114,23 +1114,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 2ca6ec249..26acc95d2 100644
--- a/Plausible.Ingestion.Counters.Buffer.html
+++ b/Plausible.Ingestion.Counters.Buffer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Ingestion.Counters.Record.html b/Plausible.Ingestion.Counters.Record.html
index f898bbf57..1451597d3 100644
--- a/Plausible.Ingestion.Counters.Record.html
+++ b/Plausible.Ingestion.Counters.Record.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Ingestion.Counters.TelemetryHandler.html b/Plausible.Ingestion.Counters.TelemetryHandler.html
index 4dc06c233..3d9b45387 100644
--- a/Plausible.Ingestion.Counters.TelemetryHandler.html
+++ b/Plausible.Ingestion.Counters.TelemetryHandler.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Ingestion.Counters.html b/Plausible.Ingestion.Counters.html
index c05c15f90..72579e93b 100644
--- a/Plausible.Ingestion.Counters.html
+++ b/Plausible.Ingestion.Counters.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Ingestion.Event.html b/Plausible.Ingestion.Event.html
index 1895b89dc..e6bae4fa2 100644
--- a/Plausible.Ingestion.Event.html
+++ b/Plausible.Ingestion.Event.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Ingestion.Request.html b/Plausible.Ingestion.Request.html
index f7984873c..a9f9e8469 100644
--- a/Plausible.Ingestion.Request.html
+++ b/Plausible.Ingestion.Request.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Mailer.html b/Plausible.Mailer.html
index 73a19456d..1ef7ab20c 100644
--- a/Plausible.Mailer.html
+++ b/Plausible.Mailer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.OpenTelemetry.Sampler.html b/Plausible.OpenTelemetry.Sampler.html
index 0a7667b9d..eeaa82f28 100644
--- a/Plausible.OpenTelemetry.Sampler.html
+++ b/Plausible.OpenTelemetry.Sampler.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.PaddleApi.Mock.html b/Plausible.PaddleApi.Mock.html
index 75828dd05..97246726a 100644
--- a/Plausible.PaddleApi.Mock.html
+++ b/Plausible.PaddleApi.Mock.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Pagination.html b/Plausible.Pagination.html
index 6de37700e..a3df38e1b 100644
--- a/Plausible.Pagination.html
+++ b/Plausible.Pagination.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Plugins.API.Goals.html b/Plausible.Plugins.API.Goals.html
index 4e1380294..3f804472e 100644
--- a/Plausible.Plugins.API.Goals.html
+++ b/Plausible.Plugins.API.Goals.html
@@ -13,7 +13,7 @@
-
+
@@ -191,7 +191,7 @@ Types
create_request()
-
+
View Source
@@ -234,7 +234,7 @@ Functions
create(site, goal_or_goals)
-
+
View Source
@@ -268,7 +268,7 @@ Functions
get(site, id)
-
+
View Source
@@ -296,7 +296,7 @@ Functions
get_goals(site, params)
-
+
View Source
diff --git a/Plausible.Plugins.API.SharedLinks.html b/Plausible.Plugins.API.SharedLinks.html
index d21973174..8a23a2347 100644
--- a/Plausible.Plugins.API.SharedLinks.html
+++ b/Plausible.Plugins.API.SharedLinks.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Plugins.API.Token.html b/Plausible.Plugins.API.Token.html
index f74db4649..aee3e386a 100644
--- a/Plausible.Plugins.API.Token.html
+++ b/Plausible.Plugins.API.Token.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Plugins.API.Tokens.html b/Plausible.Plugins.API.Tokens.html
index 0cc9d03c5..58a5e04ed 100644
--- a/Plausible.Plugins.API.Tokens.html
+++ b/Plausible.Plugins.API.Tokens.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.PromEx.Plugins.PlausibleMetrics.html b/Plausible.PromEx.Plugins.PlausibleMetrics.html
index fbceaed42..59982a7b8 100644
--- a/Plausible.PromEx.Plugins.PlausibleMetrics.html
+++ b/Plausible.PromEx.Plugins.PlausibleMetrics.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.PromEx.html b/Plausible.PromEx.html
index 5a00db5dd..e11cef5b9 100644
--- a/Plausible.PromEx.html
+++ b/Plausible.PromEx.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Props.html b/Plausible.Props.html
index 5af98f7c2..b9d7a9f05 100644
--- a/Plausible.Props.html
+++ b/Plausible.Props.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Purge.html b/Plausible.Purge.html
index 77297436e..03e85612f 100644
--- a/Plausible.Purge.html
+++ b/Plausible.Purge.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Release.html b/Plausible.Release.html
index 544e06121..f90e38f56 100644
--- a/Plausible.Release.html
+++ b/Plausible.Release.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Repo.html b/Plausible.Repo.html
index 3167cce9b..3fef6dab3 100644
--- a/Plausible.Repo.html
+++ b/Plausible.Repo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Sentry.Client.html b/Plausible.Sentry.Client.html
index 005351777..36261bba2 100644
--- a/Plausible.Sentry.Client.html
+++ b/Plausible.Sentry.Client.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.SentryFilter.html b/Plausible.SentryFilter.html
index faa5d2d1b..ecc39f083 100644
--- a/Plausible.SentryFilter.html
+++ b/Plausible.SentryFilter.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Session.CacheStore.html b/Plausible.Session.CacheStore.html
index b70d1240a..f007f6ec7 100644
--- a/Plausible.Session.CacheStore.html
+++ b/Plausible.Session.CacheStore.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Session.Salts.html b/Plausible.Session.Salts.html
index 8399c6ea0..e6af71c22 100644
--- a/Plausible.Session.Salts.html
+++ b/Plausible.Session.Salts.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Session.WriteBuffer.html b/Plausible.Session.WriteBuffer.html
index e2a0300f8..5433de34a 100644
--- a/Plausible.Session.WriteBuffer.html
+++ b/Plausible.Session.WriteBuffer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Cache.Warmer.All.html b/Plausible.Site.Cache.Warmer.All.html
index 27bdcfb53..6d83c2d01 100644
--- a/Plausible.Site.Cache.Warmer.All.html
+++ b/Plausible.Site.Cache.Warmer.All.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Cache.Warmer.RecentlyUpdated.html b/Plausible.Site.Cache.Warmer.RecentlyUpdated.html
index f2fce7e90..274b762dc 100644
--- a/Plausible.Site.Cache.Warmer.RecentlyUpdated.html
+++ b/Plausible.Site.Cache.Warmer.RecentlyUpdated.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Cache.Warmer.html b/Plausible.Site.Cache.Warmer.html
index 5bb6e9bc7..36ef4e990 100644
--- a/Plausible.Site.Cache.Warmer.html
+++ b/Plausible.Site.Cache.Warmer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Cache.html b/Plausible.Site.Cache.html
index c836b0281..fca039095 100644
--- a/Plausible.Site.Cache.html
+++ b/Plausible.Site.Cache.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.CustomDomain.html b/Plausible.Site.CustomDomain.html
index 171f71f2a..15db175a7 100644
--- a/Plausible.Site.CustomDomain.html
+++ b/Plausible.Site.CustomDomain.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Domain.html b/Plausible.Site.Domain.html
index de645d5f9..4eebe559d 100644
--- a/Plausible.Site.Domain.html
+++ b/Plausible.Site.Domain.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.GateKeeper.html b/Plausible.Site.GateKeeper.html
index 392769e9a..172655ac4 100644
--- a/Plausible.Site.GateKeeper.html
+++ b/Plausible.Site.GateKeeper.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.GoogleAuth.html b/Plausible.Site.GoogleAuth.html
index d6a8b18ef..4fbab6ad2 100644
--- a/Plausible.Site.GoogleAuth.html
+++ b/Plausible.Site.GoogleAuth.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.ImportedData.html b/Plausible.Site.ImportedData.html
index 9dbeaf69d..9f4d7b9a6 100644
--- a/Plausible.Site.ImportedData.html
+++ b/Plausible.Site.ImportedData.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Membership.html b/Plausible.Site.Membership.html
index ee65b3d35..a5891f68c 100644
--- a/Plausible.Site.Membership.html
+++ b/Plausible.Site.Membership.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Memberships.AcceptInvitation.html b/Plausible.Site.Memberships.AcceptInvitation.html
index cee3d1c10..df2b2a7d7 100644
--- a/Plausible.Site.Memberships.AcceptInvitation.html
+++ b/Plausible.Site.Memberships.AcceptInvitation.html
@@ -13,7 +13,7 @@
-
+
@@ -175,7 +175,7 @@ Functions
accept_invitation(invitation_id, user, opts \\ [])
-
+
View Source
@@ -207,7 +207,7 @@ Functions
transfer_ownership(site, user, opts \\ [])
-
+
View Source
diff --git a/Plausible.Site.Memberships.CreateInvitation.html b/Plausible.Site.Memberships.CreateInvitation.html
index 77a13fc44..a261e3c76 100644
--- a/Plausible.Site.Memberships.CreateInvitation.html
+++ b/Plausible.Site.Memberships.CreateInvitation.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Memberships.RejectInvitation.html b/Plausible.Site.Memberships.RejectInvitation.html
index 77608cfcc..1cd2242e4 100644
--- a/Plausible.Site.Memberships.RejectInvitation.html
+++ b/Plausible.Site.Memberships.RejectInvitation.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Memberships.RemoveInvitation.html b/Plausible.Site.Memberships.RemoveInvitation.html
index 3f0d63f3e..3a01eda34 100644
--- a/Plausible.Site.Memberships.RemoveInvitation.html
+++ b/Plausible.Site.Memberships.RemoveInvitation.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Memberships.html b/Plausible.Site.Memberships.html
index bdb3557ea..e3a0be2b5 100644
--- a/Plausible.Site.Memberships.html
+++ b/Plausible.Site.Memberships.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.MonthlyReport.html b/Plausible.Site.MonthlyReport.html
index cf255aab7..b254f1073 100644
--- a/Plausible.Site.MonthlyReport.html
+++ b/Plausible.Site.MonthlyReport.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.Removal.html b/Plausible.Site.Removal.html
index c3e630a27..9a3af5be5 100644
--- a/Plausible.Site.Removal.html
+++ b/Plausible.Site.Removal.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.SharedLink.html b/Plausible.Site.SharedLink.html
index 267725296..bd2050988 100644
--- a/Plausible.Site.SharedLink.html
+++ b/Plausible.Site.SharedLink.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.SpikeNotification.html b/Plausible.Site.SpikeNotification.html
index ed016cedf..bd6d6f17e 100644
--- a/Plausible.Site.SpikeNotification.html
+++ b/Plausible.Site.SpikeNotification.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.UserPreference.html b/Plausible.Site.UserPreference.html
index f93b328e9..34ba976b1 100644
--- a/Plausible.Site.UserPreference.html
+++ b/Plausible.Site.UserPreference.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.WeeklyReport.html b/Plausible.Site.WeeklyReport.html
index ef34bc54e..70c65a09d 100644
--- a/Plausible.Site.WeeklyReport.html
+++ b/Plausible.Site.WeeklyReport.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Site.html b/Plausible.Site.html
index 2b2693f48..08fae49db 100644
--- a/Plausible.Site.html
+++ b/Plausible.Site.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.SiteAdmin.html b/Plausible.SiteAdmin.html
index 04caa5f72..83d57c2bc 100644
--- a/Plausible.SiteAdmin.html
+++ b/Plausible.SiteAdmin.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Sites.html b/Plausible.Sites.html
index 097c91598..bd36eb11a 100644
--- a/Plausible.Sites.html
+++ b/Plausible.Sites.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Aggregate.html b/Plausible.Stats.Aggregate.html
index d722155a4..9f4aa8ba6 100644
--- a/Plausible.Stats.Aggregate.html
+++ b/Plausible.Stats.Aggregate.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Base.html b/Plausible.Stats.Base.html
index 8502b581b..8ba735063 100644
--- a/Plausible.Stats.Base.html
+++ b/Plausible.Stats.Base.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Breakdown.html b/Plausible.Stats.Breakdown.html
index d599c616b..5619a644c 100644
--- a/Plausible.Stats.Breakdown.html
+++ b/Plausible.Stats.Breakdown.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Clickhouse.html b/Plausible.Stats.Clickhouse.html
index b2f6dac65..1c53275a5 100644
--- a/Plausible.Stats.Clickhouse.html
+++ b/Plausible.Stats.Clickhouse.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Compare.html b/Plausible.Stats.Compare.html
index 06f97dfa2..b8645686e 100644
--- a/Plausible.Stats.Compare.html
+++ b/Plausible.Stats.Compare.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Comparisons.html b/Plausible.Stats.Comparisons.html
index 2235039c6..52c734b1f 100644
--- a/Plausible.Stats.Comparisons.html
+++ b/Plausible.Stats.Comparisons.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.CurrentVisitors.html b/Plausible.Stats.CurrentVisitors.html
index 1104c6fce..59987dc86 100644
--- a/Plausible.Stats.CurrentVisitors.html
+++ b/Plausible.Stats.CurrentVisitors.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.CustomProps.html b/Plausible.Stats.CustomProps.html
index 573d373ca..1dabac401 100644
--- a/Plausible.Stats.CustomProps.html
+++ b/Plausible.Stats.CustomProps.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.FilterParser.html b/Plausible.Stats.FilterParser.html
index 5ba6102eb..636157da9 100644
--- a/Plausible.Stats.FilterParser.html
+++ b/Plausible.Stats.FilterParser.html
@@ -13,7 +13,7 @@
-
+
@@ -178,14 +178,14 @@ Functions
Examples:
-iex> FilterParser . parse_filters ( "{ \" page \" : \" /blog/** \" }" )
- %{ "page" => "/blog/**" }
+iex> FilterParser . parse_filters ( "{ \" page \" : \" /blog/** \" }" )
+ %{ "page" => "/blog/**" }
- iex> FilterParser . parse_filters ( "visit:browser!=Chrome" )
- %{ "visit:browser" => { :is_not , "Chrome" } }
+ iex> FilterParser . parse_filters ( "visit:browser!=Chrome" )
+ %{ "visit:browser" => { :is_not , "Chrome" } }
- iex> FilterParser . parse_filters ( nil )
- %{ }
+ iex> FilterParser . parse_filters ( nil )
+ %{ }
diff --git a/Plausible.Stats.FilterSuggestions.html b/Plausible.Stats.FilterSuggestions.html
index 111754ea3..8b5e70ccb 100644
--- a/Plausible.Stats.FilterSuggestions.html
+++ b/Plausible.Stats.FilterSuggestions.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Filters.html b/Plausible.Stats.Filters.html
index d8c2f2bc6..641899ce5 100644
--- a/Plausible.Stats.Filters.html
+++ b/Plausible.Stats.Filters.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Fragments.html b/Plausible.Stats.Fragments.html
index 0d8022608..ec94672de 100644
--- a/Plausible.Stats.Fragments.html
+++ b/Plausible.Stats.Fragments.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Funnel.html b/Plausible.Stats.Funnel.html
index 9b406ed5b..21fc64a16 100644
--- a/Plausible.Stats.Funnel.html
+++ b/Plausible.Stats.Funnel.html
@@ -13,7 +13,7 @@
-
+
@@ -102,7 +102,7 @@ Plausible
-
+
View Source
@@ -161,7 +161,7 @@ Functions
funnel(site, query, funnel_id)
-
+
View Source
diff --git a/Plausible.Stats.Imported.html b/Plausible.Stats.Imported.html
index 3e5d81766..a0509b4ab 100644
--- a/Plausible.Stats.Imported.html
+++ b/Plausible.Stats.Imported.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Interval.html b/Plausible.Stats.Interval.html
index 0afb0dc7f..b22ef4814 100644
--- a/Plausible.Stats.Interval.html
+++ b/Plausible.Stats.Interval.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Props.html b/Plausible.Stats.Props.html
index 403c1a258..0dd9b0ae8 100644
--- a/Plausible.Stats.Props.html
+++ b/Plausible.Stats.Props.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Query.html b/Plausible.Stats.Query.html
index 77e330e7a..19fa7e8a2 100644
--- a/Plausible.Stats.Query.html
+++ b/Plausible.Stats.Query.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Timeseries.html b/Plausible.Stats.Timeseries.html
index b5dc94c64..e58a6183d 100644
--- a/Plausible.Stats.Timeseries.html
+++ b/Plausible.Stats.Timeseries.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.Util.html b/Plausible.Stats.Util.html
index b18c5dfa6..7ac96c734 100644
--- a/Plausible.Stats.Util.html
+++ b/Plausible.Stats.Util.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Stats.html b/Plausible.Stats.html
index 85bb8a15a..943d908b4 100644
--- a/Plausible.Stats.html
+++ b/Plausible.Stats.html
@@ -13,7 +13,7 @@
-
+
@@ -196,7 +196,7 @@ Functions
aggregate(site, query, metrics)
-
+
View Source
@@ -218,7 +218,7 @@ Functions
breakdown(site, query, prop, metrics, pagination)
-
+
View Source
@@ -240,7 +240,7 @@ Functions
current_visitors(site)
-
+
View Source
@@ -262,7 +262,7 @@ Functions
filter_suggestions(site, query, filter_name, filter_search)
-
+
View Source
@@ -284,7 +284,7 @@ Functions
funnel(site, query, funnel)
-
+
View Source
@@ -306,7 +306,7 @@ Functions
timeseries(site, query, metrics)
-
+
View Source
diff --git a/Plausible.Test.Support.HTML.html b/Plausible.Test.Support.HTML.html
index e1daf0745..38f46d41c 100644
--- a/Plausible.Test.Support.HTML.html
+++ b/Plausible.Test.Support.HTML.html
@@ -13,7 +13,7 @@
-
+
@@ -232,7 +232,7 @@ Functions
class_of_element(html, element)
-
+
View Source
@@ -254,7 +254,7 @@ Functions
element_exists?(html, selector)
-
+
View Source
@@ -276,7 +276,7 @@ Functions
find(html, value)
-
+
View Source
@@ -298,7 +298,7 @@ Functions
form_exists?(html, action_path)
-
+
View Source
@@ -320,7 +320,7 @@ Functions
name_of(element)
-
+
View Source
@@ -342,7 +342,7 @@ Functions
submit_button(html, form)
-
+
View Source
@@ -364,7 +364,7 @@ Functions
text(element)
-
+
View Source
@@ -386,7 +386,7 @@ Functions
text_of_attr(element, attr)
-
+
View Source
@@ -408,7 +408,7 @@ Functions
text_of_attr(html, element, attr)
-
+
View Source
@@ -430,7 +430,7 @@ Functions
text_of_element(html, element)
-
+
View Source
diff --git a/Plausible.Test.Support.HTTPMocker.html b/Plausible.Test.Support.HTTPMocker.html
index 2aa5bbbda..90a027343 100644
--- a/Plausible.Test.Support.HTTPMocker.html
+++ b/Plausible.Test.Support.HTTPMocker.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.TestUtils.html b/Plausible.TestUtils.html
index ad8d45320..d195568ca 100644
--- a/Plausible.TestUtils.html
+++ b/Plausible.TestUtils.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Themes.html b/Plausible.Themes.html
index 89178cb1a..28e6cf4e1 100644
--- a/Plausible.Themes.html
+++ b/Plausible.Themes.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Timezones.html b/Plausible.Timezones.html
index 405671972..d48afe651 100644
--- a/Plausible.Timezones.html
+++ b/Plausible.Timezones.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Users.html b/Plausible.Users.html
index f616cca71..211150f19 100644
--- a/Plausible.Users.html
+++ b/Plausible.Users.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.CheckUsage.html b/Plausible.Workers.CheckUsage.html
index e2205f058..37de90dc2 100644
--- a/Plausible.Workers.CheckUsage.html
+++ b/Plausible.Workers.CheckUsage.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.CleanInvitations.html b/Plausible.Workers.CleanInvitations.html
index 7fbf0d4a7..4c0e6fbf6 100644
--- a/Plausible.Workers.CleanInvitations.html
+++ b/Plausible.Workers.CleanInvitations.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.ExpireDomainChangeTransitions.html b/Plausible.Workers.ExpireDomainChangeTransitions.html
index c8e5db22c..4e88f19c3 100644
--- a/Plausible.Workers.ExpireDomainChangeTransitions.html
+++ b/Plausible.Workers.ExpireDomainChangeTransitions.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.ImportGoogleAnalytics.html b/Plausible.Workers.ImportGoogleAnalytics.html
index eded103a3..01977564e 100644
--- a/Plausible.Workers.ImportGoogleAnalytics.html
+++ b/Plausible.Workers.ImportGoogleAnalytics.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.LockSites.html b/Plausible.Workers.LockSites.html
index 953dd8483..e7f3c45b7 100644
--- a/Plausible.Workers.LockSites.html
+++ b/Plausible.Workers.LockSites.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.NotifyAnnualRenewal.html b/Plausible.Workers.NotifyAnnualRenewal.html
index 26c1ba24b..4e13e70c7 100644
--- a/Plausible.Workers.NotifyAnnualRenewal.html
+++ b/Plausible.Workers.NotifyAnnualRenewal.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.RotateSalts.html b/Plausible.Workers.RotateSalts.html
index c28c676a3..ba9aadc03 100644
--- a/Plausible.Workers.RotateSalts.html
+++ b/Plausible.Workers.RotateSalts.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.ScheduleEmailReports.html b/Plausible.Workers.ScheduleEmailReports.html
index 60d2bfc8c..a4f269599 100644
--- a/Plausible.Workers.ScheduleEmailReports.html
+++ b/Plausible.Workers.ScheduleEmailReports.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.SendCheckStatsEmails.html b/Plausible.Workers.SendCheckStatsEmails.html
index 0671c500f..731b71f5a 100644
--- a/Plausible.Workers.SendCheckStatsEmails.html
+++ b/Plausible.Workers.SendCheckStatsEmails.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.SendEmailReport.html b/Plausible.Workers.SendEmailReport.html
index bb6a2a95a..2f1791b5a 100644
--- a/Plausible.Workers.SendEmailReport.html
+++ b/Plausible.Workers.SendEmailReport.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.SendSiteSetupEmails.html b/Plausible.Workers.SendSiteSetupEmails.html
index 411004922..6828c42e8 100644
--- a/Plausible.Workers.SendSiteSetupEmails.html
+++ b/Plausible.Workers.SendSiteSetupEmails.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.SendTrialNotifications.html b/Plausible.Workers.SendTrialNotifications.html
index d95ff8790..9b5341991 100644
--- a/Plausible.Workers.SendTrialNotifications.html
+++ b/Plausible.Workers.SendTrialNotifications.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.Workers.SpikeNotifier.html b/Plausible.Workers.SpikeNotifier.html
index 5b7764807..9d52e3606 100644
--- a/Plausible.Workers.SpikeNotifier.html
+++ b/Plausible.Workers.SpikeNotifier.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.epub b/Plausible.epub
index 5f7bdf4736c78671b1828654006f01494b6a72bc..a3f372e09d1e60e20a790f6f3d14d5c5f8fc418b 100644
GIT binary patch
delta 158509
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