Packages
localize
0.22.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.41.3
0.41.2
0.41.1
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.1
0.30.0
retired
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
0.1.0-alpha.1
Localization (parsing, formatting) of numbers, dates/time/calendar, units of measure, messages and lists. Includes localized collation.
Current section
Files
Jump to
Current section
Files
lib/localize/utils.ex
defmodule Localize.Utils do
@moduledoc """
Utility functions and namespace for Localize utility submodules.
This module provides general-purpose utility functions. Specialized
utilities are organized in submodules:
* `Localize.Utils.Math` — mathematical operations.
* `Localize.Utils.Digits` — number decomposition and digit manipulation.
* `Localize.Utils.String` — string transformation utilities.
* `Localize.Utils.Enum` — enumerable utilities with lookahead.
* `Localize.Utils.Map` — deep map transformation and manipulation.
* `Localize.Utils.Helpers` — general-purpose helper functions.
* `Localize.Utils.Decimal` — `Decimal` library compatibility layer.
* `Localize.Utils.Json` — JSON decoding utilities.
* `Localize.Utils.Http` — secure HTTPS downloading.
"""
@doc """
Returns the current OTP version as a string.
### Returns
* A string representing the full OTP version (e.g., `"27.0"`),
or the major release string if the full version cannot be determined.
### Examples
iex> is_binary(Localize.Utils.otp_version())
true
"""
@spec otp_version() :: String.t()
def otp_version do
major = :erlang.system_info(:otp_release) |> List.to_string()
vsn_file = Path.join([:code.root_dir(), "releases", major, "OTP_VERSION"])
try do
{:ok, contents} = File.read(vsn_file)
String.split(contents, "\n", trim: true)
else
[full] -> full
_ -> major
catch
:error, _ -> major
end
end
end