Packages

Idiomatic Elixir SDK for Rockbox — pipe-friendly, builder-friendly, with real-time event subscriptions and a plugin system.

Current section

Files

Jump to
rockbox_ex lib rockbox entry.ex
Raw

lib/rockbox/entry.ex

defmodule Rockbox.Entry do
@moduledoc """
A filesystem entry returned by `Rockbox.Browse`. `:attr` is a bitmask;
use `directory?/1` instead of inspecting it directly.
"""
@type t :: %__MODULE__{
name: String.t(),
attr: integer(),
time_write: integer(),
customaction: integer(),
display_name: String.t() | nil
}
defstruct [:name, :attr, :time_write, :customaction, :display_name]
@doc "Returns `true` when the entry is a directory (attr bit 4 set)."
@spec directory?(t()) :: boolean()
def directory?(%__MODULE__{attr: attr}) when is_integer(attr), do: Bitwise.band(attr, 0x10) != 0
def directory?(_), do: false
@doc "Returns `true` when the entry is a regular file."
@spec file?(t()) :: boolean()
def file?(entry), do: not directory?(entry)
end