Karya, built on 2022-03-21T01:30:44 (patch 89d1651424c35e564138d93424a157ff87457245)

Ui.GenId

Description

Utilities to create a non-colliding Id, using the standard naming scheme. It should be passed to the apppropriate create funciton, e.g. Ui.create_block to make a BlockId.

Synopsis

# Documentation

ViewIds look like "nsb0.v0", "nsb0.v1", etc.

generate_id :: Ord a => Id.Namespace -> Id.Id -> Text -> (Id.Id -> a) -> Map a b -> Maybe Id.Id Source #

Guess a TrackId generated from GenId. Useful for tests.

ids_for :: Id.Namespace -> Text -> Text -> [Id.Id] Source #

IDs are numbered, and they start at 1 instead of 0.

This is because usually tracknum 0 is the ruler, so counting with tracknums, event tracks start at 1. The actual TrackId should be irrelevant (and would be out of date as soon as a track is swapped), but for testing it's very convenient if they line up with the tracknums. So even though it's purely for testing and only for TrackIds, I start everything at 1 just for consistency.

require_id :: Ui.M m => Text -> Maybe a -> m a Source #