Current section
Files
Jump to
Current section
Files
lib/cliex_map/context.ex
defmodule CliexMap.Context do
use CliexMap.Types
alias CliexMap.SysInterface
defstruct unix_timestamp: nil, variables: %{}
@type t :: %__MODULE__{unix_timestamp: maybe(integer()), variables: map()}
@spec for_now(maybe(integer())) :: t()
def for_now(now \\ nil) do
now1 = now || SysInterface.now()
%__MODULE__{unix_timestamp: now1}
end
@spec format_ts_fn(t(), binary()) :: binary()
def format_ts_fn(%__MODULE__{unix_timestamp: uts}, keyword) do
case keyword do
"ts" -> uts |> div(1_000_000) |> Integer.to_string()
"tms" -> uts |> div(1_000) |> Integer.to_string()
"tmics" -> uts |> Integer.to_string()
"xs" -> uts |> div(1_000_000) |> Integer.to_string(16) |> String.downcase()
"xms" -> uts |> div(1_000) |> Integer.to_string(16) |> String.downcase()
"xmics" -> uts |> Integer.to_string(16) |> String.downcase()
end
end
@spec load_variable(t(), binary()) :: any()
def load_variable(%__MODULE__{variables: variables}, name) do
variables
|> Map.fetch!(name |> String.to_atom)
end
@spec store_variable(t(), name_value_pair_t()) :: t()
def store_variable(%__MODULE__{variables: variables} = myself, {name, value}) do
%{
myself
| variables: Map.put(variables, String.to_atom(name), value)
}
end
end
# SPDX-License-Identifier: Apache-2.0