{"totalNumberOfResults":7,"page":{"metadata":{"page":1,"per":20,"total":7},"items":[{"language":"swift","code":"extension Array {\n\tsubscript(safely index: Int) -> Element? {\n\t\tif index < self.endIndex && index >= 0  {\n\t\t\treturn self[index]\n\t\t} else {\n\t\t\treturn nil\n\t\t}\n\t}\n}","isHidden":false,"id":"E26F5250-655A-4D80-AB42-D94D8E23DC2A","desc":"Extension addidng array[safely:_] subscript allowing to safely acces array. If index doens’t fit, subscript returns nil and if it fits, returns element.","creator":"4B86B036-10FF-4F81-9023-E71C035CFBB0","creationDate":"2023-02-28T17:36:20Z","category":"None","title":"Acces array safely"},{"language":"swift","code":"let before = NSDate.now\n        \n@__functionCall__@\n        \nlet after = NSDate.now      \nlet time = before.distance(to: after)\n        \nDebug.log(\"Code finished in \\(time) s.\")","isHidden":false,"id":"D9EA3CAD-365B-4F7E-B1E4-10A508CD98A1","desc":"Counts how many seconds did code run.","creator":"4B86B036-10FF-4F81-9023-E71C035CFBB0","creationDate":"2023-02-28T17:36:04Z","category":"Debugging","title":"Benchmark code"},{"language":"swift","code":"extension Optional {\n\tfunc expect(_ message: String) -> Wrapped {\n\t\tif self != nil {\n\t\t\treturn self!\n\t\t} else {\n\t\t\tprint(message)\n\t\t\texit(1)\n\t\t}\n\t}\n}","isHidden":false,"id":"D265DAEB-E326-4E83-8236-FB99644F7EBD","desc":"Adds extension to Optional similar to expect() from Rust. It returns wrapped value if it’s not nil, and prints message if it is and exits. It can be better than usual force unwrapping, because you can provide a more detailed information.","creator":"4B86B036-10FF-4F81-9023-E71C035CFBB0","creationDate":"2023-02-28T17:35:05Z","category":"Debugging","title":"Expect"},{"language":"swift","code":"class ConvertersManager {\n\tenum NumberType: String, CaseIterable {\n\t\tcase hexadecimal\n\t\tcase binary\n\t\tcase decimal\n\t}\n\t\n\tenum ConvertingError: Error {\n\t\tcase numberIsNotOfSpecifiedType\n\t\t\n\t\tvar localizedDescription: String {\n\t\t\tswitch self {\n\t\t\t\tcase .numberIsNotOfSpecifiedType:\n\t\t\t\t\treturn \"Provided number is not a number of specified type.\"\n\t\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate func isNumber(_ number: String, type: NumberType) -> Bool {\n\t\tvar digits = \"\"\n\t\t\n\t\tswitch type {\n\t\t\tcase .hexadecimal:\n\t\t\t\tdigits = \"0123456789ABCDEF\"\n\t\t\tcase .binary:\n\t\t\t\tdigits = \"01\"\n\t\t\tcase .decimal:\n\t\t\t\tdigits = \"0123456789\"\n\t\t}\n\t\t\n\t\tfor digit in number {\n\t\t\tif !digits.contains(digit) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tprivate func toBinary(number: String, ofType type: NumberType) -> String {\n\t\tswitch type {\n\t\t\tcase .hexadecimal:\n\t\t\t\tvar result = \"\"\n\t\t\t\t\n\t\t\t\tfor digit in number {\n\t\t\t\t\tresult.append(hexadecimalDigitToBinaryNumber(digit: String(digit)))\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result\n\t\t\tcase .binary:\n\t\t\t\treturn number\n\t\t\tcase .decimal:\n\t\t\t\treturn String(Int(number)!, radix: 2)\n\t\t}\n\t}\n\t\n\tprivate func toDecimal(number: String, ofType type: NumberType) -> String {\n\t\tswitch type {\n\t\t\tcase .hexadecimal:\n\t\t\t\treturn String(Int(toBinary(number: number, ofType: type), radix: 2)!)\n\t\t\tcase .binary:\n\t\t\t\treturn String(Int(number, radix: 2)!)\n\t\t\tcase .decimal:\n\t\t\t\treturn number\n\t\t}\n\t}\n\t\n\tprivate func toHexadecimal(number: String, ofType type: NumberType) -> String {\n\t\tswitch type {\n\t\t\tcase .hexadecimal:\n\t\t\t\treturn number\n\t\t\tcase .binary:\n\t\t\t\treturn String(fillMissingZerosForHexadecimalInBinary(string: number)).split(by: 4).map {\n\t\t\t\t\tbinaryNumberToHexadecimalDigit(digit: $0)\n\t\t\t\t}.joined()\n\t\t\tcase .decimal:\n\t\t\t\treturn String(fillMissingZerosForHexadecimalInBinary(string: String(Int(number)!, radix: 2))).split(by: 4).map {\n\t\t\t\t\tbinaryNumberToHexadecimalDigit(digit: $0)\n\t\t\t\t}.joined()\n\t\t}\n\t}\n\t\n\t\/**\n\t Converts provided number to number of other type.\n\t \n\t - Parameter number: The number that will be converted.\n\t - Parameter ofType: The type of the number, which is going to be converted.\n\t - Parameter toType: The type to which number will be converted.\n\t \n\t - Returns: A hexadecimal number.\n\t *\/\n\tfunc convert(number: String, ofType typeOfNumber: NumberType, toType resultType: NumberType) throws -> String {\n\t\tif !isNumber(number, type: typeOfNumber) {\n\t\t\tthrow ConvertingError.numberIsNotOfSpecifiedType\t\t}\n\t\t\n\t\tswitch resultType {\n\t\t\tcase .hexadecimal:\n\t\t\t\treturn toHexadecimal(number: number, ofType: typeOfNumber)\n\t\t\tcase .binary:\n\t\t\t\treturn toBinary(number: number, ofType: typeOfNumber)\n\t\t\tcase .decimal:\n\t\t\t\treturn toDecimal(number: number, ofType: typeOfNumber)\n\t\t}\n\t}\n\n\tprivate func fillMissingZerosForHexadecimalInBinary(string: String) -> String {\n\t\tif string.count % 4 == 0 {\n\t\t\treturn string\n\t\t} else {\n\t\t\tvar result = string\n\t\t\tvar count = string.count\n\t\t\t\n\t\t\twhile count % 4 != 0 {\n\t\t\t\tresult = \"0\" + result\n\t\t\t\tcount += 1\n\t\t\t}\n\t\t\t\n\t\t\treturn result\n\t\t}\n\t}\n\t\n\tprivate func hexadecimalDigitToBinaryNumber(digit: String) -> String {\n\t\tswitch digit {\n\t\t\tcase \"0\":\n\t\t\t\treturn \"0000\"\n\t\t\tcase \"1\":\n\t\t\t\treturn \"0001\"\n\t\t\tcase \"2\":\n\t\t\t\treturn \"0010\"\n\t\t\tcase \"3\":\n\t\t\t\treturn \"0011\"\n\t\t\tcase \"4\":\n\t\t\t\treturn \"0100\"\n\t\t\tcase \"5\":\n\t\t\t\treturn \"0101\"\n\t\t\tcase \"6\":\n\t\t\t\treturn \"0110\"\n\t\t\tcase \"7\":\n\t\t\t\treturn \"0111\"\n\t\t\tcase \"8\":\n\t\t\t\treturn \"1000\"\n\t\t\tcase \"9\":\n\t\t\t\treturn \"1001\"\n\t\t\tcase \"A\":\n\t\t\t\treturn \"1010\"\n\t\t\tcase \"B\":\n\t\t\t\treturn \"1011\"\n\t\t\tcase \"C\":\n\t\t\t\treturn \"1100\"\n\t\t\tcase \"D\":\n\t\t\t\treturn \"1101\"\n\t\t\tcase \"E\":\n\t\t\t\treturn \"1110\"\n\t\t\tcase \"F\":\n\t\t\t\treturn \"1111\"\n\t\t\tdefault:\n\t\t\t\t\/\/ Impossible to reach.\n\t\t\t\treturn \"Error: Invalid digit.\"\n\t\t}\n\t}\n\t\n\tprivate func binaryNumberToHexadecimalDigit(digit: String) -> String {\n\t\tswitch digit {\n\t\t\tcase \"0000\":\n\t\t\t\treturn \"0\"\n\t\t\tcase \"0001\":\n\t\t\t\treturn \"1\"\n\t\t\tcase \"0010\":\n\t\t\t\treturn \"2\"\n\t\t\tcase \"0011\":\n\t\t\t\treturn \"3\"\n\t\t\tcase \"0100\":\n\t\t\t\treturn \"4\"\n\t\t\tcase \"0101\":\n\t\t\t\treturn \"5\"\n\t\t\tcase \"0110\":\n\t\t\t\treturn \"6\"\n\t\t\tcase \"0111\":\n\t\t\t\treturn \"7\"\n\t\t\tcase \"1000\":\n\t\t\t\treturn \"8\"\n\t\t\tcase \"1001\":\n\t\t\t\treturn \"9\"\n\t\t\tcase \"1010\":\n\t\t\t\treturn \"A\"\n\t\t\tcase \"1011\":\n\t\t\t\treturn \"B\"\n\t\t\tcase \"1100\":\n\t\t\t\treturn \"C\"\n\t\t\tcase \"1101\":\n\t\t\t\treturn \"D\"\n\t\t\tcase \"1110\":\n\t\t\t\treturn \"E\"\n\t\t\tcase \"1111\":\n\t\t\t\treturn \"F\"\n\t\t\tdefault:\n\t\t\t\t\/\/ Impossible to reach.\n\t\t\t\treturn \"Error: Invalid digit.\"\n\t\t}\n\t}\n}","isHidden":false,"id":"AA4EDE10-5FA9-464D-9C25-BD7A53A0789A","desc":"A class for converting numbers between hexadecimal, decimal and binary.","creator":"4B86B036-10FF-4F81-9023-E71C035CFBB0","creationDate":"2023-02-28T17:33:13Z","category":"Algorithms","title":"Number converter"},{"language":"c#","code":"using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\n\/\/\/ A basic first-person movement controller. Adapted from Brackey’s tutorial.\npublic class MovementController : MonoBehaviour\n{\n    public Transform playerBody;\n    public Transform playerCamera;\n    public CharacterController characterController;\n    public Transform groundCheck;\n    \n    public float sensitivity = 200f;\n    public float speed = 20f;\n    public float gravity = -9.81f;\n    public float groundDistance = 0.4f;\n    public LayerMask groundMask;\n    public float jumpHeight = 3f;\n\n    private float xRotation = 0f;\n    private Vector3 velocity;\n    private bool isGrounded;\n    \n    void Start()\n    {\n        Cursor.lockState = CursorLockMode.Locked;\n    }\n\n    void Update()\n    {\n        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);\n\n        if (isGrounded & velocity.y < 0)\n        {\n            velocity.y = -2f;\n        }\n\n        if (Input.GetButtonDown(\"Jump\") && isGrounded)\n        {\n            velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);\n        }\n\n        float mouseX = Input.GetAxis(\"Mouse X\") * sensitivity * Time.deltaTime;\n        float mouseY = Input.GetAxis(\"Mouse Y\") * sensitivity * Time.deltaTime;\n\n        xRotation -= mouseY;\n        xRotation = Mathf.Clamp(xRotation, -90f, 90f);\n\n        playerCamera.localRotation = Quaternion.Euler(xRotation, 0f, 0f);\n        playerBody.Rotate(Vector3.up * mouseX);\n\n        float horizontal = Input.GetAxis(\"Horizontal\");\n        float vertical = Input.GetAxis(\"Vertical\");\n\n        Vector3 move = playerBody.right * horizontal + playerBody.forward * vertical;\n\n        characterController.Move(move * speed * Time.deltaTime);\n\n        velocity.y += gravity * Time.deltaTime;\n\n        characterController.Move(velocity * Time.deltaTime);\n    }\n}\n ","isHidden":false,"id":"3118F69D-932E-4866-B9B8-C6B5655D7D39","desc":"A basic first-person movement controller class for Unity. Adapted from Brackey’s tutorial.","creator":"4B86B036-10FF-4F81-9023-E71C035CFBB0","creationDate":"2023-02-28T17:32:22Z","category":"None","title":"Movement Controller"},{"language":"swift","code":"struct WebView: NSViewRepresentable {\n\t\/\/\/ URL of current page. If changed, WebView will change it into the new URL.\n\t@Binding var url: URL\n\t\n\tprivate var onLoadStart: (WKWebView) -> ()\n\tprivate var onLoadFinish: (WKWebView) -> ()\n\t\n  \/\/\/ A WKWebView instance, which is used to render WebView, and which can be used to control it thanks to classes being passed by reference.\n\tprivate var wkWebView: WKWebView\n\t\n  \/\/\/ Accepts a binding to an URL, WKWebView instance, which can be used to control WebView and onLoadStart and onLoadFinish which will run when WebView starts or finishes loading a webpage.\n\tinit(url: Binding<URL>, wkWebView: WKWebView = WKWebView(), onLoadStart: ((WKWebView) -> ())? = nil, onLoadFinish: ((WKWebView) -> ())? = nil) {\n\t\tself.wkWebView = wkWebView\n\t\t\n\t\tself._url = url\n\t\t\n\t\tif let onLoadStart = onLoadStart {\n\t\t\tself.onLoadStart = onLoadStart\n\t\t} else {\n\t\t\tself.onLoadStart = { _ in }\n\t\t}\n\t\t\n\t\tif let onLoadFinish = onLoadFinish {\n\t\t\tself.onLoadFinish = onLoadFinish\n\t\t} else {\n\t\t\tself.onLoadFinish = { _ in }\n\t\t}\n\t}\n\t\n\tfunc makeNSView(context: Context) -> WKWebView {\n\t\twkWebView.navigationDelegate = context.coordinator\n\t\twkWebView.load(URLRequest(url: url))\n\t\t\n\t\treturn wkWebView\n\t}\n\t\n\tfunc updateNSView(_ nsView: WKWebView, context: Context) {\n\t\tnsView.load(URLRequest(url: url))\n\t}\n\t\n\tfunc makeCoordinator() -> Coordinator {\n\t\tCoordinator(onLoadStart: onLoadStart, onLoadFinish: onLoadFinish)\n\t}\n\t\n\tclass Coordinator: NSObject, WKNavigationDelegate {\n\t\tlet onLoadStart: (WKWebView) -> ()\n\t\tlet onLoadFinish: (WKWebView) -> ()\n\t\t\n\t\tinit(onLoadStart: @escaping (WKWebView) -> (), onLoadFinish: @escaping (WKWebView) -> ()) {\n\t\t\tself.onLoadStart = onLoadStart\n\t\t\tself.onLoadFinish = onLoadFinish\n\t\t}\n\t\t\n\t\tfunc webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {\n\t\t\tonLoadStart(webView)\n\t\t}\n\t\t\n\t\tfunc webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {\n\t\t\tonLoadFinish(webView)\n\t\t}\n\t}\n}\n","isHidden":false,"id":"9D6666D3-2FD4-41B5-A9A5-5FF17B4153AC","desc":"Loads website provided using URL. WebView loads a new website whenever URL is changed. Optional onLoadStart and onLoadFinish run when WebView starts loading website or finishes loading of website respectively. You can provide own WKWebView and then use it to control WebView (navigationDelegate will be replaced).","creator":"4B86B036-10FF-4F81-9023-E71C035CFBB0","creationDate":"2023-02-28T17:18:03Z","category":"UI","title":"WKWebView swiftUI wrapper"},{"language":"swift","code":"import Foundation\nimport JavaScriptCore\n\n@objc protocol JSHTTPRequestProtocol: JSExport {\n\tvar url: String { get set }\n\tvar method: String { get set }\n\tvar requestHeaders: [String: String] { get set }\n\t\n\tfunc setRequestHeader(_ key: String, _ value: String)\n\tfunc send(_ completionHandler: JSValue)\n\tstatic func `open`(_ url: String, _ method: String) -> JSHTTPRequest\n}\n\n@objc class JSHTTPRequest: NSObject, JSHTTPRequestProtocol {\n\tvar url: String\n\tvar method: String\n\tvar requestHeaders: [String : String] = [:]\n\t\n\tfunc setRequestHeader(_ key: String, _ value: String) {\n\t\trequestHeaders[key] = value\n\t}\n\t\n\tfunc send(_ completionHandler: JSValue) {\n\t\tif let url = URL(string: url) {\n\t\t\tvar request = URLRequest(url: url)\n\t\t\t\n\t\t\trequest.httpMethod = method\n\t\t\t\n\t\t\tfor (key, value) in requestHeaders {\n\t\t\t\trequest.setValue(value, forHTTPHeaderField: key)\n\t\t\t}\n\t\t\t\n\t\t\tlet task = URLSession.shared.dataTask(with: request) { data, response, error in\n\t\t\t\tif let error = error {\n\t\t\t\t\tAsyncMain {\n\t\t\t\t\t\tcompletionHandler.call(withArguments: [[\"statusCode\": 1, \"error\": error.localizedDescription]])\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif let data = String(data: data!, encoding: .utf8) {\n\t\t\t\t\t\tAsyncMain {\n\t\t\t\t\t\t\tcompletionHandler.call(withArguments: [[\"statusCode\": 0, \"data\": data]])\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tAsyncMain {\n\t\t\t\t\t\t\tcompletionHandler.call(withArguments: [[\"statusCode\": 1, \"error\": \"Can't generate string, because encoding is probably different than UTF-8.\"]])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\ttask.resume()\n\t\t} else {\n\t\t\tcompletionHandler.call(withArguments: [[\"statusCode\": 1,\"error\": \"Provided URL is not valid.\"]])\n\t\t}\n\t}\n\t\n\tclass func `open`(_ url: String, _ method: String) -> JSHTTPRequest {\n\t\treturn .init(url: url, method: method)\n\t}\n\t\n\trequired init(url: String, method: String) {\n\t\tself.url = url\n\t\tself.method = method\n\t}\n}\n","isHidden":false,"id":"ACCE8AB7-F049-4ECE-ADCA-44CFF5DE79F6","desc":"URLSession wrapper for JavaScriptCore. Apply using jsContext.setObject(JSHTTPRequest.self, forKeyedSubscript: \"HTTPRequest\" as NSString).","creator":"4B86B036-10FF-4F81-9023-E71C035CFBB0","creationDate":"2023-02-16T18:40:56Z","category":"None","title":"HTTP request"}]}}