admin(major): add YAMLField for attributes, add codemirror editor
This commit is contained in:
		
							
								
								
									
										162
									
								
								passbook/admin/static/codemirror/mode/swift/test.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								passbook/admin/static/codemirror/mode/swift/test.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,162 @@ | ||||
| // CodeMirror, copyright (c) by Marijn Haverbeke and others | ||||
| // Distributed under an MIT license: https://codemirror.net/LICENSE | ||||
|  | ||||
| (function() { | ||||
|   var mode = CodeMirror.getMode({indentUnit: 2}, "swift"); | ||||
|   function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } | ||||
|  | ||||
|   // Ensure all number types are properly represented. | ||||
|   MT("numbers", | ||||
|      "[keyword var] [def a] [operator =] [number 17]", | ||||
|      "[keyword var] [def b] [operator =] [number -0.5]", | ||||
|      "[keyword var] [def c] [operator =] [number 0.3456e-4]", | ||||
|      "[keyword var] [def d] [operator =] [number 345e2]", | ||||
|      "[keyword var] [def e] [operator =] [number 0o7324]", | ||||
|      "[keyword var] [def f] [operator =] [number 0b10010]", | ||||
|      "[keyword var] [def g] [operator =] [number -0x35ade]", | ||||
|      "[keyword var] [def h] [operator =] [number 0xaea.ep-13]", | ||||
|      "[keyword var] [def i] [operator =] [number 0x13ep6]"); | ||||
|  | ||||
|   // Variable/class/etc definition. | ||||
|   MT("definition", | ||||
|      "[keyword var] [def a] [operator =] [number 5]", | ||||
|      "[keyword let] [def b][punctuation :] [variable-2 Int] [operator =] [number 10]", | ||||
|      "[keyword class] [def C] [punctuation {] [punctuation }]", | ||||
|      "[keyword struct] [def D] [punctuation {] [punctuation }]", | ||||
|      "[keyword enum] [def E] [punctuation {] [punctuation }]", | ||||
|      "[keyword extension] [def F] [punctuation {] [punctuation }]", | ||||
|      "[keyword protocol] [def G] [punctuation {] [punctuation }]", | ||||
|      "[keyword func] [def h][punctuation ()] [punctuation {] [punctuation }]", | ||||
|      "[keyword import] [def Foundation]", | ||||
|      "[keyword typealias] [def NewString] [operator =] [variable-2 String]", | ||||
|      "[keyword associatedtype] [def I]", | ||||
|      "[keyword for] [def j] [keyword in] [number 0][punctuation ..][operator <][number 3] [punctuation {] [punctuation }]"); | ||||
|  | ||||
|   // Strings and string interpolation. | ||||
|   MT("strings", | ||||
|      "[keyword var] [def a][punctuation :] [variable-2 String] [operator =] [string \"test\"]", | ||||
|      "[keyword var] [def b][punctuation :] [variable-2 String] [operator =] [string \"\\(][variable a][string )\"]", | ||||
|      "[keyword var] [def c] [operator =] [string \"\"\"]", | ||||
|      "[string multi]", | ||||
|      "[string line]", | ||||
|      "[string \"test\"]", | ||||
|      "[string \"\"\"]", | ||||
|      "[variable print][punctuation (][string \"\"][punctuation )]"); | ||||
|  | ||||
|   // Comments. | ||||
|   MT("comments", | ||||
|      "[comment // This is a comment]", | ||||
|      "[comment /* This is another comment */]", | ||||
|      "[keyword var] [def a] [operator =] [number 5] [comment // Third comment]"); | ||||
|  | ||||
|   // Atoms. | ||||
|   MT("atoms", | ||||
|      "[keyword class] [def FooClass] [punctuation {]", | ||||
|      "  [keyword let] [def fooBool][punctuation :] [variable-2 Bool][operator ?]", | ||||
|      "  [keyword let] [def fooInt][punctuation :] [variable-2 Int][operator ?]", | ||||
|      "  [keyword func] [keyword init][punctuation (][variable fooBool][punctuation :] [variable-2 Bool][punctuation ,] [variable barBool][punctuation :] [variable-2 Bool][punctuation )] [punctuation {]", | ||||
|      "    [atom super][property .init][punctuation ()]", | ||||
|      "    [atom self][property .fooBool] [operator =] [variable fooBool]", | ||||
|      "    [variable fooInt] [operator =] [atom nil]", | ||||
|      "    [keyword if] [variable barBool] [operator ==] [atom true] [punctuation {]", | ||||
|      "      [variable print][punctuation (][string \"True!\"][punctuation )]", | ||||
|      "    [punctuation }] [keyword else] [keyword if] [variable barBool] [operator ==] [atom false] [punctuation {]", | ||||
|      "      [keyword for] [atom _] [keyword in] [number 0][punctuation ...][number 5] [punctuation {]", | ||||
|      "        [variable print][punctuation (][string \"False!\"][punctuation )]", | ||||
|      "      [punctuation }]", | ||||
|      "    [punctuation }]", | ||||
|      "  [punctuation }]", | ||||
|      "[punctuation }]"); | ||||
|  | ||||
|   // Types. | ||||
|   MT("types", | ||||
|      "[keyword var] [def a] [operator =] [variable-2 Array][operator <][variable-2 Int][operator >]", | ||||
|      "[keyword var] [def b] [operator =] [variable-2 Set][operator <][variable-2 Bool][operator >]", | ||||
|      "[keyword var] [def c] [operator =] [variable-2 Dictionary][operator <][variable-2 String][punctuation ,][variable-2 Character][operator >]", | ||||
|      "[keyword var] [def d][punctuation :] [variable-2 Int64][operator ?] [operator =] [variable-2 Optional][punctuation (][number 8][punctuation )]", | ||||
|      "[keyword func] [def e][punctuation ()] [operator ->] [variable-2 Void] [punctuation {]", | ||||
|      "  [keyword var] [def e1][punctuation :] [variable-2 Float] [operator =] [number 1.2]", | ||||
|      "[punctuation }]", | ||||
|      "[keyword func] [def f][punctuation ()] [operator ->] [variable-2 Never] [punctuation {]", | ||||
|      "  [keyword var] [def f1][punctuation :] [variable-2 Double] [operator =] [number 2.4]", | ||||
|      "[punctuation }]"); | ||||
|  | ||||
|   // Operators. | ||||
|   MT("operators", | ||||
|      "[keyword var] [def a] [operator =] [number 1] [operator +] [number 2]", | ||||
|      "[keyword var] [def b] [operator =] [number 1] [operator -] [number 2]", | ||||
|      "[keyword var] [def c] [operator =] [number 1] [operator *] [number 2]", | ||||
|      "[keyword var] [def d] [operator =] [number 1] [operator /] [number 2]", | ||||
|      "[keyword var] [def e] [operator =] [number 1] [operator %] [number 2]", | ||||
|      "[keyword var] [def f] [operator =] [number 1] [operator |] [number 2]", | ||||
|      "[keyword var] [def g] [operator =] [number 1] [operator &] [number 2]", | ||||
|      "[keyword var] [def h] [operator =] [number 1] [operator <<] [number 2]", | ||||
|      "[keyword var] [def i] [operator =] [number 1] [operator >>] [number 2]", | ||||
|      "[keyword var] [def j] [operator =] [number 1] [operator ^] [number 2]", | ||||
|      "[keyword var] [def k] [operator =] [operator ~][number 1]", | ||||
|      "[keyword var] [def l] [operator =] [variable foo] [operator ?] [number 1] [punctuation :] [number 2]", | ||||
|      "[keyword var] [def m][punctuation :] [variable-2 Int] [operator =] [variable-2 Optional][punctuation (][number 8][punctuation )][operator !]"); | ||||
|  | ||||
|   // Punctuation. | ||||
|   MT("punctuation", | ||||
|      "[keyword let] [def a] [operator =] [number 1][punctuation ;] [keyword let] [def b] [operator =] [number 2]", | ||||
|      "[keyword let] [def testArr][punctuation :] [punctuation [[][variable-2 Int][punctuation ]]] [operator =] [punctuation [[][variable a][punctuation ,] [variable b][punctuation ]]]", | ||||
|      "[keyword for] [def i] [keyword in] [number 0][punctuation ..][operator <][variable testArr][property .count] [punctuation {]", | ||||
|      "  [variable print][punctuation (][variable testArr][punctuation [[][variable i][punctuation ]])]", | ||||
|      "[punctuation }]"); | ||||
|  | ||||
|   // Identifiers. | ||||
|   MT("identifiers", | ||||
|      "[keyword let] [def abc] [operator =] [number 1]", | ||||
|      "[keyword let] [def ABC] [operator =] [number 2]", | ||||
|      "[keyword let] [def _123] [operator =] [number 3]", | ||||
|      "[keyword let] [def _$1$2$3] [operator =] [number 4]", | ||||
|      "[keyword let] [def A1$_c32_$_] [operator =] [number 5]", | ||||
|      "[keyword let] [def `var`] [operator =] [punctuation [[][number 1][punctuation ,] [number 2][punctuation ,] [number 3][punctuation ]]]", | ||||
|      "[keyword let] [def square$] [operator =] [variable `var`][property .map] [punctuation {][variable $0] [operator *] [variable $0][punctuation }]", | ||||
|      "$$ [number 1][variable a] $[atom _] [variable _$] [variable __] `[variable a] [variable b]`"); | ||||
|  | ||||
|   // Properties. | ||||
|   MT("properties", | ||||
|      "[variable print][punctuation (][variable foo][property .abc][punctuation )]", | ||||
|      "[variable print][punctuation (][variable foo][property .ABC][punctuation )]", | ||||
|      "[variable print][punctuation (][variable foo][property ._123][punctuation )]", | ||||
|      "[variable print][punctuation (][variable foo][property ._$1$2$3][punctuation )]", | ||||
|      "[variable print][punctuation (][variable foo][property .A1$_c32_$_][punctuation )]", | ||||
|      "[variable print][punctuation (][variable foo][property .`var`][punctuation )]", | ||||
|      "[variable print][punctuation (][variable foo][property .__][punctuation )]"); | ||||
|  | ||||
|   // Instructions or other things that start with #. | ||||
|   MT("instructions", | ||||
|      "[keyword if] [builtin #available][punctuation (][variable iOS] [number 9][punctuation ,] [operator *][punctuation )] [punctuation {}]", | ||||
|      "[variable print][punctuation (][builtin #file][punctuation ,] [builtin #function][punctuation )]", | ||||
|      "[variable print][punctuation (][builtin #line][punctuation ,] [builtin #column][punctuation )]", | ||||
|      "[builtin #if] [atom true]", | ||||
|      "[keyword import] [def A]", | ||||
|      "[builtin #elseif] [atom false]", | ||||
|      "[keyword import] [def B]", | ||||
|      "[builtin #endif]", | ||||
|      "[builtin #sourceLocation][punctuation (][variable file][punctuation :] [string \"file.swift\"][punctuation ,] [variable line][punctuation :] [number 2][punctuation )]"); | ||||
|  | ||||
|   // Attributes; things that start with @. | ||||
|   MT("attributes", | ||||
|      "[attribute @objc][punctuation (][variable objcFoo][punctuation :)]", | ||||
|      "[attribute @available][punctuation (][variable iOS][punctuation )]"); | ||||
|  | ||||
|   // Property/number edge case. | ||||
|   MT("property_number", | ||||
|      "[variable print][punctuation (][variable foo][property ._123][punctuation )]", | ||||
|      "[variable print][punctuation (]") | ||||
|  | ||||
|   MT("nested_comments", | ||||
|      "[comment /*]", | ||||
|      "[comment But wait /* this is a nested comment */ for real]", | ||||
|      "[comment /**** let * me * show * you ****/]", | ||||
|      "[comment ///// let / me / show / you /////]", | ||||
|      "[comment */]"); | ||||
|  | ||||
|   // TODO: correctly identify when multiple variables are being declared | ||||
|   // by use of a comma-separated list. | ||||
|   // TODO: correctly identify when variables are being declared in a tuple. | ||||
|   // TODO: identify protocols as types when used before an extension? | ||||
| })(); | ||||
		Reference in New Issue
	
	Block a user
	 Langhammer, Jens
					Langhammer, Jens