| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | // CodeMirror, copyright (c) by Marijn Haverbeke and others
 | 
					
						
							| 
									
										
										
										
											2022-10-15 12:22:09 +02:00
										 |  |  | // Distributed under an MIT license: https://codemirror.net/5/LICENSE
 | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | (function(mod) { | 
					
						
							|  |  |  |   if (typeof exports == "object" && typeof module == "object") // CommonJS
 | 
					
						
							|  |  |  |     mod(require("../../lib/codemirror"), require("../../addon/mode/simple"), require("../../addon/mode/multiplex")); | 
					
						
							|  |  |  |   else if (typeof define == "function" && define.amd) // AMD
 | 
					
						
							|  |  |  |     define(["../../lib/codemirror", "../../addon/mode/simple", "../../addon/mode/multiplex"], mod); | 
					
						
							|  |  |  |   else // Plain browser env
 | 
					
						
							|  |  |  |     mod(CodeMirror); | 
					
						
							|  |  |  | })(function(CodeMirror) { | 
					
						
							|  |  |  |   "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   CodeMirror.defineSimpleMode("handlebars-tags", { | 
					
						
							|  |  |  |     start: [ | 
					
						
							| 
									
										
										
										
											2019-08-25 18:46:32 +02:00
										 |  |  |       { regex: /\{\{\{/, push: "handlebars_raw", token: "tag" }, | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |       { regex: /\{\{!--/, push: "dash_comment", token: "comment" }, | 
					
						
							|  |  |  |       { regex: /\{\{!/,   push: "comment", token: "comment" }, | 
					
						
							|  |  |  |       { regex: /\{\{/,    push: "handlebars", token: "tag" } | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2019-08-25 18:46:32 +02:00
										 |  |  |     handlebars_raw: [ | 
					
						
							|  |  |  |       { regex: /\}\}\}/, pop: true, token: "tag" }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |     handlebars: [ | 
					
						
							|  |  |  |       { regex: /\}\}/, pop: true, token: "tag" }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Double and single quotes
 | 
					
						
							|  |  |  |       { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, | 
					
						
							|  |  |  |       { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Handlebars keywords
 | 
					
						
							|  |  |  |       { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" }, | 
					
						
							|  |  |  |       { regex: /(?:else|this)\b/, token: "keyword" }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Numeral
 | 
					
						
							|  |  |  |       { regex: /\d+/i, token: "number" }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Atoms like = and .
 | 
					
						
							|  |  |  |       { regex: /=|~|@|true|false/, token: "atom" }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Paths
 | 
					
						
							|  |  |  |       { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token: "variable-2" } | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     dash_comment: [ | 
					
						
							|  |  |  |       { regex: /--\}\}/, pop: true, token: "comment" }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Commented code
 | 
					
						
							|  |  |  |       { regex: /./, token: "comment"} | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     comment: [ | 
					
						
							|  |  |  |       { regex: /\}\}/, pop: true, token: "comment" }, | 
					
						
							|  |  |  |       { regex: /./, token: "comment" } | 
					
						
							| 
									
										
										
										
											2018-08-15 11:25:30 +02:00
										 |  |  |     ], | 
					
						
							|  |  |  |     meta: { | 
					
						
							|  |  |  |       blockCommentStart: "{{--", | 
					
						
							|  |  |  |       blockCommentEnd: "--}}" | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   CodeMirror.defineMode("handlebars", function(config, parserConfig) { | 
					
						
							|  |  |  |     var handlebars = CodeMirror.getMode(config, "handlebars-tags"); | 
					
						
							|  |  |  |     if (!parserConfig || !parserConfig.base) return handlebars; | 
					
						
							|  |  |  |     return CodeMirror.multiplexingMode( | 
					
						
							|  |  |  |       CodeMirror.getMode(config, parserConfig.base), | 
					
						
							| 
									
										
										
										
											2020-09-20 21:41:40 +02:00
										 |  |  |       {open: "{{", close: /\}\}\}?/, mode: handlebars, parseDelimiters: true} | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |     ); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   CodeMirror.defineMIME("text/x-handlebars-template", "handlebars"); | 
					
						
							|  |  |  | }); |