This module provides an interface for managing features, e.g. Revenue Goals,
+Funnels and Custom Properties.
Feature modules have functions for toggling the feature on/off and checking
+whether the feature is available for a site/user.
When defining new features, the following options are expected by the
+__using__ macro:
:display_name - human-readable display name of the feature
:toggle_field - the field in the %Plausible.Site{} schema that toggles
+the feature. If nil or not set, toggle/2 silently returns :ok
:extra_feature - an atom representing the feature name in the plan JSON
+file (see also Plausible.Billing.Plan). If nil or not set,
+check_availability/1 silently returns :ok
Functions defined by __using__ can be overridden if needed.
Each language-range MAY be given an associated quality value which represents an
+ language-range=((1*8ALPHA*("-"1*8ALPHA))|"*")
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."
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]>]}# 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]>]}
diff --git a/Plausible.Cldr.Number.Format.html b/Plausible.Cldr.Number.Format.html
index 18b7079a2..3ad463059 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.
#=> Plausible.Cldr.Number.Format.Format.decimal_format_list
-["#","#,##,##0%",
+["#","#,##,##0%","#,##,##0.###","#,##,##0.00¤","#,##,##0.00¤;(#,##,##0.00¤)","#,##,##0 %","#,##0%","#,##0.###","#,##0.00 ¤","#,##0.00 ¤;(#,##0.00 ¤)","#,##0.00¤","#,##0.00¤;(#,##0.00¤)",
@@ -449,7 +449,7 @@ to precompile all the known formats at compile time.
"000 B ¤"
,"000 E ¤","000 K ¤","000 MRD ¤","000 Md ¤","000 Mio'.' ¤","000 Mio ¤","000 Mld ¤","000 Mln ¤","000 Mn ¤","000 Mrd'.' ¤","000 Mrd ¤","000 Mr ¤","000 M ¤","000 NT ¤","000 N ¤","000 Tn ¤",
-"000 Tr ¤",...]
+"000 Tr ¤",...]
@@ -497,8 +497,8 @@ the known formats at compile time. Its use is not otherwise recommended.
iex> Plausible.Cldr.Number.Format.decimal_format_list_for(:en)
+{:ok,["#,##0%","#,##0.###","#,##0.00","#,##0.00;(#,##0.00)","#E0","0 billion","0 million","0 thousand","0 trillion","00 billion","00 million","00 thousand","00 trillion","000 billion","000 million","000 thousand","000 trillion","000B","000K",
@@ -506,7 +506,7 @@ the known formats at compile time. Its use is not otherwise recommended.
diff --git a/Plausible.Cldr.Number.System.html b/Plausible.Cldr.Number.System.html
index c9a888620..68f3d16d9 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}"}
+}
@@ -395,10 +395,10 @@ or a
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_system123456,:hebr
-{:ok,"קכ״ג׳תנ״ו"}
+{:ok,"קכ״ג׳תנ״ו"}iex> Plausible.Cldr.Number.System.to_system123,:hans
-{:ok,"一百二十三"}
+{:ok,"一百二十三"}iex> Plausible.Cldr.Number.System.to_system123,:hant
-{:ok,"一百二十三"}
+{:ok,"一百二十三"}iex> Plausible.Cldr.Number.System.to_system123,:hansfin
-{:ok,"壹佰贰拾叁"}
+{:ok,"壹佰贰拾叁"}
diff --git a/Plausible.Cldr.Number.Transliterate.html b/Plausible.Cldr.Number.Transliterate.html
index f6a532efb..e63e99472 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:
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.
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.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("£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"]
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:
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.
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"}}
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
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:
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:
@@ -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("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"}}
+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 93b178364..b3d24f16c 100644
--- a/Plausible.ClickhouseEventV2.html
+++ b/Plausible.ClickhouseEventV2.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Plausible.ClickhouseRepo.html b/Plausible.ClickhouseRepo.html
index 99a5de441..c824e4a40 100644
--- a/Plausible.ClickhouseRepo.html
+++ b/Plausible.ClickhouseRepo.html
@@ -13,7 +13,7 @@
-
+
@@ -816,23 +816,23 @@ pool to disconnect within the given interval.