mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-10-31 02:50:08 +00:00 
			
		
		
		
	exploration...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									7f15b1894a
								
							
						
					
					
						commit
						80d9974b83
					
				| @ -191,14 +191,59 @@ var getMarkdownOffset = function(markdown, text, i){ | |||||||
|     return map[i] } |     return map[i] } | ||||||
| //*/
 | //*/
 | ||||||
| 
 | 
 | ||||||
| getText = function(elem, res=[]){ | /* XXX this is not needed... | ||||||
|  | var getText = function(elem, res=[]){ | ||||||
|     for(var n of elem.childNodes){ |     for(var n of elem.childNodes){ | ||||||
|         if(n.nodeType == n.TEXT_NODE){ |         n.nodeType == n.TEXT_NODE ? | ||||||
|             res.push(n.textContent) |             res.push(n.textContent) | ||||||
|         } else { |             : getText(n, res) } | ||||||
|             getText(n, res) } } |  | ||||||
|     return res } |     return res } | ||||||
|  | //*/
 | ||||||
| 
 | 
 | ||||||
|  | var offsetAt = function(A, B, i){ | ||||||
|  |     i ??= A.length-1 | ||||||
|  |     var o = 0 | ||||||
|  |     var p = 0 | ||||||
|  |     for(var n=0; n <= i; n++){ | ||||||
|  |         while(A[n] != B[n+o]){ | ||||||
|  |             if(n+o >= B.length){ | ||||||
|  |                 o = p | ||||||
|  |                 break } | ||||||
|  |             o++ } | ||||||
|  |         p = o } | ||||||
|  |     return o } | ||||||
|  | 
 | ||||||
|  | //
 | ||||||
|  | // 	offsetMap(
 | ||||||
|  | // 			'abMcdefg',
 | ||||||
|  | // 			'abcdeXfg')
 | ||||||
|  | // 		-> [0, 0, , -1, -1, -1, 0, 0]
 | ||||||
|  | // 
 | ||||||
|  | // XXX this is still wrong -- the problem is that in more complex cases 
 | ||||||
|  | // 		this finds a non-optimal solution...
 | ||||||
|  | // 			m = `text text text
 | ||||||
|  | //			<div>
 | ||||||
|  | //			block element
 | ||||||
|  | //			</div>
 | ||||||
|  | //			this line, and above placement of completely broken`
 | ||||||
|  | //			t = 'text text text\n\n\nblock element\n\n\nthis line, and above placement of completely broken '
 | ||||||
|  | //			o = offsetMap(m, t)
 | ||||||
|  | //			// this should reproduce common sections...
 | ||||||
|  | //			console.log('---', o.map(function(e, i){ return m[i+e] }).join(''))
 | ||||||
|  | var offsetMap = function(A, B, m=[]){ | ||||||
|  |     var o = 0 | ||||||
|  |     var p = 0 | ||||||
|  |     for(var n=0; n < A.length; n++){ | ||||||
|  |         while(A[n] != B[n+o]){ | ||||||
|  |             if(n+o >= B.length){ | ||||||
|  | 				m.length += 1 | ||||||
|  |                 o = p-1 | ||||||
|  |                 break } | ||||||
|  |             o++ } | ||||||
|  |         A[n] == B[n+o] | ||||||
|  | 			&& m.push(o) | ||||||
|  |         p = o } | ||||||
|  |     return m } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user