mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 06:22:46 +00:00 
			
		
		
		
	 f7ad8c0f94
			
		
	
	
		f7ad8c0f94
		
	
	
	
	
		
			
			This allows you to invoke the HTML document parser and retrieve a document as though it was loaded as a web page, minus any scripting ability. This does not currently support XML parsing. This is used by YouTube (or more accurately, Web Components Polyfills) to polyfill templates.
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <LibWeb/HTML/DOMParser.h>
 | |
| #include <LibWeb/HTML/Parser/HTMLDocumentParser.h>
 | |
| 
 | |
| namespace Web::HTML {
 | |
| 
 | |
| DOMParser::DOMParser()
 | |
| {
 | |
| }
 | |
| 
 | |
| DOMParser::~DOMParser()
 | |
| {
 | |
| }
 | |
| 
 | |
| // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring
 | |
| NonnullRefPtr<DOM::Document> DOMParser::parse_from_string(String const& string, String const& type)
 | |
| {
 | |
|     // FIXME: Pass in this's relevant global object's associated Document's URL.
 | |
|     auto document = DOM::Document::create();
 | |
|     document->set_content_type(type);
 | |
| 
 | |
|     // NOTE: This isn't a case insensitive match since the DOMParserSupportedType enum enforces an all lowercase type.
 | |
|     if (type == "text/html") {
 | |
|         // FIXME: Set document's type to "html".
 | |
|         HTMLDocumentParser parser(document, string, "UTF-8");
 | |
|         // FIXME: This is to match the default URL. Instead, pass in this's relevant global object's associated Document's URL.
 | |
|         parser.run("about:blank");
 | |
|     } else {
 | |
|         dbgln("DOMParser::parse_from_string: Unimplemented parser for type: {}", type);
 | |
|         TODO();
 | |
|     }
 | |
| 
 | |
|     return document;
 | |
| }
 | |
| 
 | |
| }
 |