mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 06:21:11 +00:00 
			
		
		
		
	Added coding style modes to SimpleMDE (#3286)
* Added coding style modes to SimpleMDE * Moved the CodeMirror addon from simplemd to codemirror directory
This commit is contained in:
		
					parent
					
						
							
								cf85e9eb7b
							
						
					
				
			
			
				commit
				
					
						69dae1ec1c
					
				
			
		
					 286 changed files with 49679 additions and 0 deletions
				
			
		
							
								
								
									
										174
									
								
								public/plugins/codemirror-5.17.0/mode/apl/apl.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								public/plugins/codemirror-5.17.0/mode/apl/apl.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,174 @@ | |||
| // CodeMirror, copyright (c) by Marijn Haverbeke and others
 | ||||
| // Distributed under an MIT license: http://codemirror.net/LICENSE
 | ||||
| 
 | ||||
| (function(mod) { | ||||
|   if (typeof exports == "object" && typeof module == "object") // CommonJS
 | ||||
|     mod(require("../../lib/codemirror")); | ||||
|   else if (typeof define == "function" && define.amd) // AMD
 | ||||
|     define(["../../lib/codemirror"], mod); | ||||
|   else // Plain browser env
 | ||||
|     mod(CodeMirror); | ||||
| })(function(CodeMirror) { | ||||
| "use strict"; | ||||
| 
 | ||||
| CodeMirror.defineMode("apl", function() { | ||||
|   var builtInOps = { | ||||
|     ".": "innerProduct", | ||||
|     "\\": "scan", | ||||
|     "/": "reduce", | ||||
|     "⌿": "reduce1Axis", | ||||
|     "⍀": "scan1Axis", | ||||
|     "¨": "each", | ||||
|     "⍣": "power" | ||||
|   }; | ||||
|   var builtInFuncs = { | ||||
|     "+": ["conjugate", "add"], | ||||
|     "−": ["negate", "subtract"], | ||||
|     "×": ["signOf", "multiply"], | ||||
|     "÷": ["reciprocal", "divide"], | ||||
|     "⌈": ["ceiling", "greaterOf"], | ||||
|     "⌊": ["floor", "lesserOf"], | ||||
|     "∣": ["absolute", "residue"], | ||||
|     "⍳": ["indexGenerate", "indexOf"], | ||||
|     "?": ["roll", "deal"], | ||||
|     "⋆": ["exponentiate", "toThePowerOf"], | ||||
|     "⍟": ["naturalLog", "logToTheBase"], | ||||
|     "○": ["piTimes", "circularFuncs"], | ||||
|     "!": ["factorial", "binomial"], | ||||
|     "⌹": ["matrixInverse", "matrixDivide"], | ||||
|     "<": [null, "lessThan"], | ||||
|     "≤": [null, "lessThanOrEqual"], | ||||
|     "=": [null, "equals"], | ||||
|     ">": [null, "greaterThan"], | ||||
|     "≥": [null, "greaterThanOrEqual"], | ||||
|     "≠": [null, "notEqual"], | ||||
|     "≡": ["depth", "match"], | ||||
|     "≢": [null, "notMatch"], | ||||
|     "∈": ["enlist", "membership"], | ||||
|     "⍷": [null, "find"], | ||||
|     "∪": ["unique", "union"], | ||||
|     "∩": [null, "intersection"], | ||||
|     "∼": ["not", "without"], | ||||
|     "∨": [null, "or"], | ||||
|     "∧": [null, "and"], | ||||
|     "⍱": [null, "nor"], | ||||
|     "⍲": [null, "nand"], | ||||
|     "⍴": ["shapeOf", "reshape"], | ||||
|     ",": ["ravel", "catenate"], | ||||
|     "⍪": [null, "firstAxisCatenate"], | ||||
|     "⌽": ["reverse", "rotate"], | ||||
|     "⊖": ["axis1Reverse", "axis1Rotate"], | ||||
|     "⍉": ["transpose", null], | ||||
|     "↑": ["first", "take"], | ||||
|     "↓": [null, "drop"], | ||||
|     "⊂": ["enclose", "partitionWithAxis"], | ||||
|     "⊃": ["diclose", "pick"], | ||||
|     "⌷": [null, "index"], | ||||
|     "⍋": ["gradeUp", null], | ||||
|     "⍒": ["gradeDown", null], | ||||
|     "⊤": ["encode", null], | ||||
|     "⊥": ["decode", null], | ||||
|     "⍕": ["format", "formatByExample"], | ||||
|     "⍎": ["execute", null], | ||||
|     "⊣": ["stop", "left"], | ||||
|     "⊢": ["pass", "right"] | ||||
|   }; | ||||
| 
 | ||||
|   var isOperator = /[\.\/⌿⍀¨⍣]/; | ||||
|   var isNiladic = /⍬/; | ||||
|   var isFunction = /[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/; | ||||
|   var isArrow = /←/; | ||||
|   var isComment = /[⍝#].*$/; | ||||
| 
 | ||||
|   var stringEater = function(type) { | ||||
|     var prev; | ||||
|     prev = false; | ||||
|     return function(c) { | ||||
|       prev = c; | ||||
|       if (c === type) { | ||||
|         return prev === "\\"; | ||||
|       } | ||||
|       return true; | ||||
|     }; | ||||
|   }; | ||||
|   return { | ||||
|     startState: function() { | ||||
|       return { | ||||
|         prev: false, | ||||
|         func: false, | ||||
|         op: false, | ||||
|         string: false, | ||||
|         escape: false | ||||
|       }; | ||||
|     }, | ||||
|     token: function(stream, state) { | ||||
|       var ch, funcName; | ||||
|       if (stream.eatSpace()) { | ||||
|         return null; | ||||
|       } | ||||
|       ch = stream.next(); | ||||
|       if (ch === '"' || ch === "'") { | ||||
|         stream.eatWhile(stringEater(ch)); | ||||
|         stream.next(); | ||||
|         state.prev = true; | ||||
|         return "string"; | ||||
|       } | ||||
|       if (/[\[{\(]/.test(ch)) { | ||||
|         state.prev = false; | ||||
|         return null; | ||||
|       } | ||||
|       if (/[\]}\)]/.test(ch)) { | ||||
|         state.prev = true; | ||||
|         return null; | ||||
|       } | ||||
|       if (isNiladic.test(ch)) { | ||||
|         state.prev = false; | ||||
|         return "niladic"; | ||||
|       } | ||||
|       if (/[¯\d]/.test(ch)) { | ||||
|         if (state.func) { | ||||
|           state.func = false; | ||||
|           state.prev = false; | ||||
|         } else { | ||||
|           state.prev = true; | ||||
|         } | ||||
|         stream.eatWhile(/[\w\.]/); | ||||
|         return "number"; | ||||
|       } | ||||
|       if (isOperator.test(ch)) { | ||||
|         return "operator apl-" + builtInOps[ch]; | ||||
|       } | ||||
|       if (isArrow.test(ch)) { | ||||
|         return "apl-arrow"; | ||||
|       } | ||||
|       if (isFunction.test(ch)) { | ||||
|         funcName = "apl-"; | ||||
|         if (builtInFuncs[ch] != null) { | ||||
|           if (state.prev) { | ||||
|             funcName += builtInFuncs[ch][1]; | ||||
|           } else { | ||||
|             funcName += builtInFuncs[ch][0]; | ||||
|           } | ||||
|         } | ||||
|         state.func = true; | ||||
|         state.prev = false; | ||||
|         return "function " + funcName; | ||||
|       } | ||||
|       if (isComment.test(ch)) { | ||||
|         stream.skipToEnd(); | ||||
|         return "comment"; | ||||
|       } | ||||
|       if (ch === "∘" && stream.peek() === ".") { | ||||
|         stream.next(); | ||||
|         return "function jot-dot"; | ||||
|       } | ||||
|       stream.eatWhile(/[\w\$_]/); | ||||
|       state.prev = true; | ||||
|       return "keyword"; | ||||
|     } | ||||
|   }; | ||||
| }); | ||||
| 
 | ||||
| CodeMirror.defineMIME("text/apl", "apl"); | ||||
| 
 | ||||
| }); | ||||
							
								
								
									
										72
									
								
								public/plugins/codemirror-5.17.0/mode/apl/index.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								public/plugins/codemirror-5.17.0/mode/apl/index.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| <!doctype html> | ||||
| 
 | ||||
| <title>CodeMirror: APL mode</title> | ||||
| <meta charset="utf-8"/> | ||||
| <link rel=stylesheet href="../../doc/docs.css"> | ||||
| 
 | ||||
| <link rel="stylesheet" href="../../lib/codemirror.css"> | ||||
| <script src="../../lib/codemirror.js"></script> | ||||
| <script src="../../addon/edit/matchbrackets.js"></script> | ||||
| <script src="./apl.js"></script> | ||||
| <style> | ||||
| 	.CodeMirror { border: 2px inset #dee; } | ||||
|     </style> | ||||
| <div id=nav> | ||||
|   <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> | ||||
| 
 | ||||
|   <ul> | ||||
|     <li><a href="../../index.html">Home</a> | ||||
|     <li><a href="../../doc/manual.html">Manual</a> | ||||
|     <li><a href="https://github.com/codemirror/codemirror">Code</a> | ||||
|   </ul> | ||||
|   <ul> | ||||
|     <li><a href="../index.html">Language modes</a> | ||||
|     <li><a class=active href="#">APL</a> | ||||
|   </ul> | ||||
| </div> | ||||
| 
 | ||||
| <article> | ||||
| <h2>APL mode</h2> | ||||
| <form><textarea id="code" name="code"> | ||||
| ⍝ Conway's game of life | ||||
| 
 | ||||
| ⍝ This example was inspired by the impressive demo at | ||||
| ⍝ http://www.youtube.com/watch?v=a9xAKttWgP4 | ||||
| 
 | ||||
| ⍝ Create a matrix: | ||||
| ⍝     0 1 1 | ||||
| ⍝     1 1 0 | ||||
| ⍝     0 1 0 | ||||
| creature ← (3 3 ⍴ ⍳ 9) ∈ 1 2 3 4 7   ⍝ Original creature from demo | ||||
| creature ← (3 3 ⍴ ⍳ 9) ∈ 1 3 6 7 8   ⍝ Glider | ||||
| 
 | ||||
| ⍝ Place the creature on a larger board, near the centre | ||||
| board ← ¯1 ⊖ ¯2 ⌽ 5 7 ↑ creature | ||||
| 
 | ||||
| ⍝ A function to move from one generation to the next | ||||
| life ← {∨/ 1 ⍵ ∧ 3 4 = ⊂+/ +⌿ 1 0 ¯1 ∘.⊖ 1 0 ¯1 ⌽¨ ⊂⍵} | ||||
| 
 | ||||
| ⍝ Compute n-th generation and format it as a | ||||
| ⍝ character matrix | ||||
| gen ← {' #'[(life ⍣ ⍵) board]} | ||||
| 
 | ||||
| ⍝ Show first three generations | ||||
| (gen 1) (gen 2) (gen 3) | ||||
| </textarea></form> | ||||
| 
 | ||||
|     <script> | ||||
|       var editor = CodeMirror.fromTextArea(document.getElementById("code"), { | ||||
|         lineNumbers: true, | ||||
|         matchBrackets: true, | ||||
|         mode: "text/apl" | ||||
|       }); | ||||
|     </script> | ||||
| 
 | ||||
|     <p>Simple mode that tries to handle APL as well as it can.</p> | ||||
|     <p>It attempts to label functions/operators based upon | ||||
|     monadic/dyadic usage (but this is far from fully fleshed out). | ||||
|     This means there are meaningful classnames so hover states can | ||||
|     have popups etc.</p> | ||||
| 
 | ||||
|     <p><strong>MIME types defined:</strong> <code>text/apl</code> (APL code)</p> | ||||
|   </article> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue