Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
83ebf1d
Removing tree inconsistencies
Mar 25, 2016
d909c7a
auto (/extra/home/packages/git/dlang/htmld/src/html/dom.d) 50 902
Mar 27, 2016
786a800
leave entities to character parsers
Mar 28, 2016
91e4856
auto (/extra/home/packages/git/dlang/htmld/src/html/parser.d) 269 6475
Mar 28, 2016
7c357e4
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 52 1629
Mar 29, 2016
1ad5200
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 77 1486
Mar 29, 2016
930b762
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 52 1309
Mar 29, 2016
bc6a14b
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 50 1230
Mar 29, 2016
7c094d4
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 129 2782
Mar 29, 2016
5a9b31a
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 51 1041
Mar 29, 2016
1ebe862
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 50 1427
Mar 29, 2016
77d6af4
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 71 1526
Mar 29, 2016
c98a2b0
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 76 1826
Mar 29, 2016
acdb7a4
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 57 1188
Mar 29, 2016
77b1b72
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 50 1068
Mar 29, 2016
33a6be2
auto (/extra/home/packages/git/dlang/htmld/src/html/escape.d) 68 1590
Mar 29, 2016
2e1b751
Restoring support for escaping entities
Mar 29, 2016
2ae4b38
Various cleanups
Mar 30, 2016
781ee7b
Remove debug thing
Mar 30, 2016
0725932
Cleaner detaching
Mar 30, 2016
bb5b84e
Just some ramblings on inserting and detaching
Mar 30, 2016
57b4b2e
this assertion should be guaranteed, but isn't...
Mar 30, 2016
87cb8cf
auto (/extra/home/packages/git/dlang/htmld/src/html/dom.d) 140 3473
Mar 30, 2016
c7d7007
auto (/extra/home/packages/git/dlang/htmld/src/html/dom.d) 116 2678
Mar 31, 2016
e6e971f
auto (/extra/home/packages/git/dlang/htmld/src/html/dom.d) 50 1070
Mar 31, 2016
39e0665
detach setting prev_ to null erroneously
Mar 31, 2016
235cddf
Support for merging text nodes
Mar 31, 2016
0eb9b90
Removing debug stuff
Mar 31, 2016
a77ba71
Just a diagram of some tree mutations
Mar 31, 2016
e315362
added an assert gotcha while inserting
Mar 31, 2016
a063c66
use implicit hashing
Aug 10, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions detach-link-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
* D E F
* A B C

`E.insertAfter(B) ->`

* D F
* A B E C

* B
* _next_ = C
* prev = A

* C
* next = null
* _prev_ = B

* E
* _next_ = F
* _prev_ = D
* _parent_ = ???

* D
* _next_ = E
* _prev_ = F

* F
* next = null
* _prev_ = E

italic properties must change.

```D
// first, fix old nodes.
if(E == E.parent.firstChild) // nope
// E.prev must be null if this is true, short circuit logic?
E.parent.firstChild = E.next;
if(E == E.parent.lastChild) // nope
// E.next must be null if this is true, short circuit logic?
E.parent.lastChild = E.prev;
if(E.next) // F
E.next.prev = E.prev;
if(E.prev) // D
E.prev.next = E.next;
// insertBefore is an exact mirror of this beyond this point, and identical before.
// the links on E are free to scram now
E.prev = B;
E.next = B.next;

// now, set links to E

if(B.next) // C
B.next.prev = E;
B.next = E;
```

in addition to setting,
Any time you set next, you have to check old.next.prev, and old.parent.lastChild
- insertAfter
- also insertBefore for setting dest.next
Any time you set prev, you have to check old.prev.next, and old.parent.firstChild
- insertBefore
- also insertAfter, for setting dest.prev
Any time you set parent, you have to check old.parent.firstChild and old.parent.lastChild
- ??? insertChild? probably never do this. below will both be needed
Any time you set firstChild you have to check old.parent.firstChild (set it to new.next, set it.prev = new)
- appendChild
Any time you set lastChild, you have to check old.parent.lastChild
- prependChild
Loading