| 
									
										
										
										
											2021-05-20 23:15:33 +04:30
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2021, Ali Mohammad Pur <mpfard@serenityos.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibSyntax/Highlighter.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::HTML { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-24 13:49:03 +01:00
										 |  |  | enum class AugmentedTokenKind : u32 { | 
					
						
							|  |  |  |     AttributeName, | 
					
						
							|  |  |  |     AttributeValue, | 
					
						
							|  |  |  |     OpenTag, | 
					
						
							|  |  |  |     CloseTag, | 
					
						
							|  |  |  |     Comment, | 
					
						
							|  |  |  |     Doctype, | 
					
						
							|  |  |  |     __Count, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 23:15:33 +04:30
										 |  |  | class SyntaxHighlighter : public Syntax::Highlighter { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     SyntaxHighlighter() = default; | 
					
						
							|  |  |  |     virtual ~SyntaxHighlighter() override = default; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-07 12:03:09 +04:30
										 |  |  |     virtual bool is_identifier(u64) const override; | 
					
						
							|  |  |  |     virtual bool is_navigatable(u64) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 23:15:33 +04:30
										 |  |  | 
 | 
					
						
							|  |  |  |     virtual Syntax::Language language() const override { return Syntax::Language::HTML; } | 
					
						
							| 
									
										
										
										
											2022-10-26 10:01:13 -05:00
										 |  |  |     virtual Optional<StringView> comment_prefix() const override { return "<!--"sv; } | 
					
						
							|  |  |  |     virtual Optional<StringView> comment_suffix() const override { return "-->"sv; } | 
					
						
							| 
									
										
										
										
											2021-06-04 11:25:09 +02:00
										 |  |  |     virtual void rehighlight(Palette const&) override; | 
					
						
							| 
									
										
										
										
											2021-05-20 23:15:33 +04:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-24 12:36:49 +01:00
										 |  |  |     static constexpr u64 JS_TOKEN_START_VALUE = 1000; | 
					
						
							|  |  |  |     static constexpr u64 CSS_TOKEN_START_VALUE = 2000; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 23:15:33 +04:30
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2021-06-07 12:03:09 +04:30
										 |  |  |     virtual Vector<MatchingTokenPair> matching_token_pairs_impl() const override; | 
					
						
							|  |  |  |     virtual bool token_types_equal(u64, u64) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 23:15:33 +04:30
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |