Ogólne#
Sets#
W tym miejscu umieszczam powtarzające się specyficzne pojęcia i algorytmy w dziale SETS, czyli mogą mieć one zastosowanie dla wszystkich interfejsów z tego działu.
Pojęcia#
ordered set of tokens
Obiekt typu DOMTokenList
jest skojarzony z uporządkowanym zestawem słów # (ordered set of tokens), który początkowo jest pusty.
Obiekt typu DOMTokenList
jest także skojarzony z elementem oraz nazwą lokalną jakiegoś atrybutu.
#Kiedy obiekt typu DOMTokenList
jest tworzony i skojarzony z nim element posiada atrybut wskazywany przez nazwę lokalną jakiegoś atrybutu skojarzoną z tym obiektem lub atrybut wskazywany przez skojarzoną nazwę lokalną jakiegoś atrybutu w skojarzonym elemencie jest ustawiany, to ustaw uporządkowany zestawem słów w tym obiekcie na nową wartość (sparsowaną).
#Kiedy atrybut wskazywany przez skojarzoną nazwę lokalną jakiegoś atrybutu posiadany w skojarzonym elemencie jest usuwany, to ustaw uporządkowany zestawem słów w tym obiekcie na pusty zestaw.
supported tokens
Obowiązujące specyfikacje mogą definiować obsługiwane słowa # (supported tokens) dla nazwy lokalnej jakiegoś atrybutu skojarzonej z obiektem typu DOMTokenList
.
supported property indices
Obsługiwane indeksy właściwości # (supported property indices) w obiekcie typu DOMTokenList
są liczbami z przedziału od 0
do liczby słów z jego uporządkowanego zestawu słów minus jeden. Jeśli uporządkowany zestaw słów jest pusty, to indeksy właściwości nie są obsługiwane.
Algorytmy#
update steps
Kroki aktualizacji # (update steps) w zestawie słów DOM domTokenList polegają na ustawieniu wartość atrybut dla elementu skojarzonego z domTokenList, z przekazaniem nazwy lokalnej jakiegoś atrybutu skojarzonej z domTokenList oraz wyniku serializacji uporządkowanego zestawu dla uporządkowanego zestawu słów skojarzonego z domTokenList.
serialize steps
Kroki serializacji # (serialize steps) w zestawie słów DOM domTokenList polegają na zwróceniu wyniku pobrania wartości atrybutu z przekazaniem elementu skojarzonego z domTokenList oraz nazwy lokalnej jakiegoś atrybutu skojarzonej z domTokenList.
validation steps
Kroki walidacji # (validation steps) w zestawie słów DOM domTokenList dla słowa token są następujące:
- Jeśli nazwa lokalna jakiegoś atrybutu skojarzona z domTokenList nie definiuje obsługiwanych słów, to zrzuć błąd
TypeError
. - Niech lowercase token będzie kopią token po konwersji na małe znaki ASCII.
- Jeśli lowercase token jest obecne w obsługiwanych słowach, to zwróć boolowską wartość
true
. - Zwróć boolowską wartość
false
.
Ordered sets
ordered set serializer
Serializacja uporządkowanego zestawu # (ordered set serializer) pobiera uporządkowany zestaw set i, jeśli zestaw nie jest pusty, to zwraca połączone łańcuchy znakowe z set oddzielone od siebie znakiem U+0020 SPACE
(znak spacji), w przeciwnym razie zwraca pusty łańcuch znakowy.
W uproszczeniu można powiedzieć, że powyższy algorytm pobiera jakiś uporządkowany zestaw (np. słów), a następnie zamienia go na łańcuch znakowy, gdzie separatorem między słowami będzie znak spacji. Jest to przeciwieństwem parsowania uporządkowanego zestawu.
ordered set parser
Parsowanie uporządkowanego zestawu # (ordered set parser) pobiera łańcuch znakowy input i wykonuje następujące kroki:
- Niech position będzie wskaźnikiem w input, wstępnie ustawionym na początku łańcucha znakowego.
- Niech tokens będzie uporządkowanym zestawem słów, wstępnie pustym.
- Pomiń białe znaki ASCII.
Dopóki (while) position nie wskazuje na koniec w input:
- Zbierz sekwencję punktów kodowych z przekazaniem kolejnych punktów kodowych z input, które nie są białymi znakami ASCII.
- Jeśli zebrany łańcuch znakowy nie znajduje się w tokens, to dodaj zebrany łańcuch znakowy do tokens.
- Pomiń białe znaki ASCII.
- Zwróć tokens.
W uproszczeniu można powiedzieć, że powyższy algorytm pobiera jakiś łańcuch znakowy i tworzy uporządkowany zestaw słów, którego elementami będą poszczególne słowa z przekazanego łańcucha znakowego (duplikaty są ignorowane). Białe znaki ASCII w łańcuchu znakowym są traktowane jak separator między słowami i automatycznie pomijane w tworzonym zestawie. Jest to przeciwieństwem serializacji uporządkowanego zestawu.
collect a code point sequence
Aby zebrać sekwencję punktów kodowych # (collect a code point sequence) z punktów kodowych code points należy wykonać następujące kroki:
- Niech input i position będą tymi samymi zmiennymi, jak zmienne o tych samych nazwach w algorytmie wywołującym te kroki.
- Niech result będzie pustym łańcuchem znakowym.
- Dopóki (while) position nie wskazuje na koniec w input oraz punkt kodowy z position jest jednym z code points, to dołącz ten punkt kodowy na końcu result i przesuń position na następny punkt kodowy w input.
- Zwróć result.
skip ASCII whitespace
Aby pominąć białe znaki ASCII # (skip ASCII whitespace) należy zebrać sekwencję punktów kodowych z przekazaniem punktów kodowych, którymi są białe znaki ASCII. Zebrane znaki nie będą używane przez wywołujący algorytm.