PageSourceSearch

https://www.oauth.com/wp-content/plugins/syntaxhighlighter/syntaxh…/scripts/shBrushSwift.js?ver=3.0.9b

js oauth.com collected 2026-09-24 07:33:07 UTC 8,485 bytes, 195 lines download raw bytes

1// Swift brush based on contributions by Alex Gorbatchev
2// https://github.com/syntaxhighlighter/brush-swift/blob/master/brush.js
3
4;(function()
5{
6	// CommonJS
7	SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
8
9	function Brush()
10	{
11		function getKeywordsPrependedBy(keywords, by) {
12			return '(?:' + keywords.replace(/^\s+|\s+$/g, '').replace(/\s+/g, '|' + by + '\\b').replace(/^/, by + '\\b') + ')\\b';
13		}
14
15		function stringAdd(match, regexInfo) {
16			var str = match[0],
17				result = [],
18				pos = 0,
19				matchStart = 0,
20				level = 0;
21
22			while (pos < str.length - 1) {
23				if (level === 0) {
24					if (str.substr(pos, 2) === "\\(") {
25						result.push(new SyntaxHighlighter.Match(str.substring(matchStart, pos + 2), matchStart + match.index, regexInfo.css));
26						level++;
27						pos += 2;
28					} else {
29						pos++;
30					}
31				} else {
32					if (str[pos] === "(") {
33						level++;
34					}
35					if (str[pos] === ")") {
36						level--;
37						if (level === 0) {
38							matchStart = pos;
39						}
40					}
41					pos++;
42				}
43			}
44			if (level === 0) {
45				result.push(new SyntaxHighlighter.Match(str.substring(matchStart, str.length), matchStart + match.index, regexInfo.css));
46			}
47
48			return result;
49		};
50
51		// "Swift-native types" are all the protocols, classes, structs, enums, funcs, vars, and typealiases built into the language
52		var swiftTypes = 'AbsoluteValuable Any AnyClass Array ArrayBound ArrayBuffer ArrayBufferType ' +
53			'ArrayLiteralConvertible ArrayType AutoreleasingUnsafePointer BidirectionalIndex Bit ' +
54			'BitwiseOperations Bool C CBool CChar CChar16 CChar32 CConstPointer CConstVoidPointer ' +
55			'CDouble CFloat CInt CLong CLongLong CMutablePointer CMutableVoidPointer COpaquePointer ' +
56			'CShort CSignedChar CString CUnsignedChar CUnsignedInt CUnsignedLong CUnsignedLongLong ' +
57			'CUnsignedShort CVaListPointer CVarArg CWideChar Character CharacterLiteralConvertible ' +
58			'Collection CollectionOfOne Comparable ContiguousArray ContiguousArrayBuffer DebugPrintable ' +
59			'Dictionary DictionaryGenerator DictionaryIndex DictionaryLiteralConvertible Double ' +
60			'EmptyCollection EmptyGenerator EnumerateGenerator Equatable ExtendedGraphemeClusterLiteralConvertible ' +
61			'ExtendedGraphemeClusterType ExtensibleCollection FilterCollectionView FilterCollectionViewIndex ' +
62			'FilterGenerator FilterSequenceView Float Float32 Float64 Float80 FloatLiteralConvertible ' +
63			'FloatLiteralType FloatingPointClassification FloatingPointNumber ForwardIndex Generator ' +
64			'GeneratorOf GeneratorOfOne GeneratorSequence Hashable HeapBuffer HeapBufferStorage ' +
65			'HeapBufferStorageBase ImplicitlyUnwrappedOptional IndexingGenerator Int Int16 Int32 Int64 ' +
66			'Int8 IntEncoder IntMax Integer IntegerArithmetic IntegerLiteralConvertible IntegerLiteralType ' +
67			'Less LifetimeManager LogicValue MapCollectionView MapSequenceGenerator MapSequenceView ' +
68			'MaxBuiltinFloatType MaxBuiltinIntegerType Mirror MirrorDisposition MutableCollection ' +
69			'MutableSliceable ObjectIdentifier OnHeap Optional OutputStream PermutationGenerator ' +
70			'Printable QuickLookObject RandomAccessIndex Range RangeGenerator RawByte RawOptionSet ' +
71			'RawRepresentable Reflectable Repeat ReverseIndex ReverseRange ReverseRangeGenerator ' +
72			'ReverseView Sequence SequenceOf SignedInteger SignedNumber Sink SinkOf Slice SliceBuffer ' +
73			'Sliceable StaticString Streamable StridedRangeGenerator String StringElement ' +
74			'StringInterpolationConvertible StringLiteralConvertible StringLiteralType UInt UInt16 ' +
75			'UInt32 UInt64 UInt8 UIntMax UTF16 UTF32 UTF8 UWord UnicodeCodec UnicodeScalar Unmanaged ' +
76			'UnsafeArray UnsafePointer UnsignedInteger Void Word Zip2 ZipGenerator2 abs advance alignof ' +
77			'alignofValue assert bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC ' +
78			'bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint ' +
79			'debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal false filter ' +
80			'find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC ' +
81			'isBridgedVerbatimToObjectiveC isUniquelyReferenced join lexicographicalCompare map max ' +
82			'maxElement min minElement nil numericCast partition posix print println quickSort reduce ' +
83			'reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofV
83alue sort split startsWith ' +
84			'strideof strideofValue swap swift toString transcode true underestimateCount unsafeReflect ' +
85			'withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject ' +
86			'ßwithUnsafePointers withVaList ' +
87			'fatalError assert assertionFailure precondition preconditionFailure ' +
88			'Set AnyPublisher AnyCancellable sink store compactMap flatMap ObservableObject ';
89
90		var keywords = 'as break catch case class continue default deinit do dynamicType else enum ' +
91			'extension fallthrough for forEach func if import in init is let new protocol ' +
92			'return self Self static struct subscript super switch Type typealias ' +
93			'var where while __COLUMN__ __FILE__ __FUNCTION__ __LINE__ associativity ' +
94			'didSet get infix inout left mutating none nonmutating operator override required ' +
95			'postfix precedence prefix right set try unowned unowned(safe) unowned(unsafe) weak willSet ' +
96			'guard convenience defer dynamic final fileprivate private internal open public repeat throw throws rethrows unowned lazy ' +
97			'isolated nonisolated safe unsafe some optional assignment indirect ' +
98			// Precedence group
99			'precedencegroup higherThan lowerThan ' +
100			// Swift concurrency
101			'actor associatedtype async await ';
102
103		var attributes = 'assignment class_protocol exported noreturn escaping NSCopying NSManaged objc nonobjc optional required auto_closure IBAction IBDesignable IBInspectable IBOutlet infix prefix postfix unknown available ' +
104			'resultBuilder propertyWrapper autoclosure convention ' +
105			// SwiftUI property wrappers
106			'Binding State StateObject ObservedObject EnvironmentObject ViewBuilder Environment ScaledMetric main ' +
107			// Swift concurrency
108			'MainActor Sendable globalActor ';
109
110		var datatypes =	'char bool BOOL double float int long short id instancetype void ' +
111			' Class IMP SEL _cmd';
112
113		this.regexList = [
114			// HTML entities
115			{
116				regex: new RegExp('\&[a-z]+;', 'gi'),
117				css: 'plain'
118			},
119			// Single line comments
120			{
121				regex: SyntaxHighlighter.regexLib.singleLineCComments,
122				css: 'comments'
123			},
124			// Multiline comments in Swift
125			{
126				regex: SyntaxHighlighter.regexLib.multiLineCComments,
127				css: 'comments'
128			},
129			// Nested comments are supported up to 2 levels
130			{
131				regex: new RegExp(/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/, 'gs'),
132				css: 'comments'
133			},
134			// Multiline strings in Swift
135			{
136				regex: new RegExp(/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/, 'gm'),
137				css: 'string'
138			},
139			// Types in Swift foundation
140			{
141				regex: new RegExp(this.getKeywords(datatypes), 'gm'),
142				css: 'datatypes'
143			},
144			// Handle string interpolation in Swift
145			{
146				regex: SyntaxHighlighter.regexLib.doubleQuotedString,
147				css: 'string',
148				func: stringAdd
149			},
150			// Numeric literals in Swift
151			{
152				regex: new RegExp('\\b([\\d_]+(\\.[\\de_]+)?|0x[a-f0-9_]+(\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b', 'gi'),
153				css: 'value'
154			},
155			// Keywords in Swift
156			{
157				regex: new RegExp(this.getKeywords(keywords), 'gm'),
158				css: 'keyword'
159			},
160			// Common declaration and type attributes in Swift
161			{
162				regex: new RegExp(getKeywordsPrependedBy(attributes, '@'), 'gm'),
163				css: 'color1'
164			},
165			// Common native types in Swift
166			{
167				regex: new RegExp(this.getKeywords(swiftTypes), 'gm'),
168				css: 'color2'
169			},
170			// UIKit/NS/Core Graphics/Core Animation/MapKit/XCFrameworks types
171			{
172				regex: new RegExp(/\b(?:UI|NS|CG|CA|MK|XC)[a-zA-Z0-9_]+\b/, 'g'),
173				css: 'color2'
174			},
175			// Compiler directives
176			{
177				regex: new RegExp(/^ *#[a-zA-Z0-9_]+/, 'gm'),
178				css: 'preprocessor'
179			},
180			// Any variables
181			{
182				regex: new RegExp('\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b', 'gi'),
183				css: 'variable'
184			}
185		];
186	}
187
188	Brush.prototype	= new SyntaxHighlighter.Highlighter();
189	Brush.aliases	= ['swift'];
190
191	SyntaxHighlighter.brushes.Swift = Brush;
192
193	// CommonJS
194	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
195})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.