Adapter...eredMap(3)

πŸ“¦ version 0.019, in alpine 3.24

πŸ’– NAME πŸ’–

okay so this is Adapter...eredMap(3) from the User Contributed Perl Documentation, and the actual module is Adapter::Async::UnorderedMap β€” literally the API for dealing with key => value maps. map girlie behavior, no cap. πŸ—ΊοΈβœ¨

🌸 VERSION 🌸

version 0.018 β€” that's the version, bestie. πŸ’…

πŸ¦‹ DESCRIPTION πŸ¦‹

πŸ”‘ Accessing data

  • count β€” resolves with the number of items. If this isn't possible, an estimate may be acceptable. lowkey flexible. πŸ’«
say "items: " . $adapter->count->get
  • get β€” accepts a list of keys. πŸŽ€
$adapter->get(
 items   => [1,2,3],
 on_item => sub { ... }
)->on_done(sub { warn "all done, full list of items: %{$_[0]}" })

Unlike the get in Adapter::Async::OrderedList method, this resolves to a hashref. plot twist! 🫢

The top-level of the hashref returned is guaranteed not to be modified further, if you want to store it directly. No such guarantee applies to the values themselves β€” it is only a shallow clone. so like, shallow clone only, bestie. 🌸

This means we have double-notify on get: a request for (a,b, 34, q) needs to fire events for each of a,b,34,q, and also return the hashref containing those keys on completion (by resolving a Future). πŸ’€βœ¨

πŸ› οΈ Modification

  • clear β€” remove all data
  • modify β€” changes a single entry
  • set β€” adds a new key
  • delete β€” removes an existing key

πŸ“£ Events

All events are shared over a common bus for each data source, in the usual fashion β€” adapters and views can subscribe to the ones they're interested in, and publish events at any time. group chat for data, basically. πŸ’¬πŸ¦‹

The adapter raises these:

  • item_changed β€” the given item has been modified. by default only applies to elements that were marked as visible. πŸ‘€
  • splice β€” changes to the array which remove or add elements
  • move β€” an existing element moves to a new key (some adapters may not be able to differentiate between this and splice: if in doubt, use splice instead, don't report as a move unless it's guaranteed to be existing items)

The view raises these:

  • visible β€” indicates visibility of one or more items. change events will start being sent for these items. ✨
visible => [1,2,3,4,5,6]

Filters may result in a list with gaps:

visible => [1,3,4,8,9,10]

Note that visible means "the user is able to see this data", so they'd be a single page of data rather than the entire set when no filters are applied. Visibility changes often β€” scrolling will trigger a visible/hidden pair for example. πŸ“œπŸ‘€

Also note that ->get may be called on any element, regardless of visibility β€” prefetching is one common example here. prefetch era, honestly. 🧚

  • hidden β€” no longer visible. πŸ™ˆ
hidden => [1,2,4]
  • selected β€” this item is now part of an active selection. could be used to block deletes. πŸ‘‘
selected => [1,4,5,6]
  • highlight β€” mouse over, cursor, etc. πŸ–±οΈ
highlight => 1

Some views won't raise this β€” if touch control is involved, for example

  • activate β€” some action has been performed. πŸ”₯
activate => [1]
activate => [1,2,5,6,7,8]

Multi-activate will typically happen when items have been selected rather than just highlighted. πŸ‘―β€β™€οΈ

The adapter itself doesn't do much with this. like, it's just vibing. πŸ’€

πŸŽ€ METHODS πŸŽ€

✨ set

Sets the value of a key.

$adapter->set(xyz => 'abc')

✨ all

Returns all the items. Shortcut for calling count then get. πŸ’…

πŸ‘‘ AUTHOR πŸ‘‘

Tom Molesworth <TEAM@cpan.org>

🌈 LICENSE 🌈

Copyright Tom Molesworth 2013-2015. Licensed under the same terms as Perl itself.


okay that's the whole page, bestie. the footer energy is perl v5.42.2, dated 2026-02-15 β€” mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from