primo commit
This commit is contained in:
		
							
								
								
									
										69
									
								
								media/vendor/codemirror/js/codemirror-lang-php.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								media/vendor/codemirror/js/codemirror-lang-php.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | ||||
| import { parser } from '@lezer/php'; | ||||
| import { parseMixed } from '@lezer/common'; | ||||
| import { html } from '@codemirror/lang-html'; | ||||
| import { LRLanguage, indentNodeProp, continuedIndent, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language'; | ||||
|  | ||||
| /** | ||||
| A language provider based on the [Lezer PHP | ||||
| parser](https://github.com/lezer-parser/php), extended with | ||||
| highlighting and indentation information. | ||||
| */ | ||||
| const phpLanguage = /*@__PURE__*/LRLanguage.define({ | ||||
|     name: "php", | ||||
|     parser: /*@__PURE__*/parser.configure({ | ||||
|         props: [ | ||||
|             /*@__PURE__*/indentNodeProp.add({ | ||||
|                 IfStatement: /*@__PURE__*/continuedIndent({ except: /^\s*({|else\b|elseif\b|endif\b)/ }), | ||||
|                 TryStatement: /*@__PURE__*/continuedIndent({ except: /^\s*({|catch\b|finally\b)/ }), | ||||
|                 SwitchBody: context => { | ||||
|                     let after = context.textAfter, closed = /^\s*\}/.test(after), isCase = /^\s*(case|default)\b/.test(after); | ||||
|                     return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit; | ||||
|                 }, | ||||
|                 ColonBlock: cx => cx.baseIndent + cx.unit, | ||||
|                 "Block EnumBody DeclarationList": /*@__PURE__*/delimitedIndent({ closing: "}" }), | ||||
|                 ArrowFunction: cx => cx.baseIndent + cx.unit, | ||||
|                 "String BlockComment": () => null, | ||||
|                 Statement: /*@__PURE__*/continuedIndent({ except: /^({|end(for|foreach|switch|while)\b)/ }) | ||||
|             }), | ||||
|             /*@__PURE__*/foldNodeProp.add({ | ||||
|                 "Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList": foldInside, | ||||
|                 ColonBlock(tree) { return { from: tree.from + 1, to: tree.to }; }, | ||||
|                 BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; } | ||||
|             }) | ||||
|         ] | ||||
|     }), | ||||
|     languageData: { | ||||
|         commentTokens: { block: { open: "/*", close: "*/" }, line: "//" }, | ||||
|         indentOnInput: /^\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\{|\})$/, | ||||
|         wordChars: "$", | ||||
|         closeBrackets: { stringPrefixes: ["b", "B"] } | ||||
|     } | ||||
| }); | ||||
| /** | ||||
| PHP language support. | ||||
| */ | ||||
| function php(config = {}) { | ||||
|     let support = [], base; | ||||
|     if (config.baseLanguage === null) ; | ||||
|     else if (config.baseLanguage) { | ||||
|         base = config.baseLanguage; | ||||
|     } | ||||
|     else { | ||||
|         let htmlSupport = html({ matchClosingTags: false }); | ||||
|         support.push(htmlSupport.support); | ||||
|         base = htmlSupport.language; | ||||
|     } | ||||
|     return new LanguageSupport(phpLanguage.configure({ | ||||
|         wrap: base && parseMixed(node => { | ||||
|             if (!node.type.isTop) | ||||
|                 return null; | ||||
|             return { | ||||
|                 parser: base.parser, | ||||
|                 overlay: node => node.name == "Text" | ||||
|             }; | ||||
|         }), | ||||
|         top: config.plain ? "Program" : "Template" | ||||
|     }), support); | ||||
| } | ||||
|  | ||||
| export { php, phpLanguage }; | ||||
		Reference in New Issue
	
	Block a user