All Projects → wangjiejacques → Codegenerator

wangjiejacques / Codegenerator

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Codegenerator

Pragmatic
⚙An Xcode Source Editor extension for simplifying common pragma driven tasks
Stars: ✭ 24 (-65.71%)
Mutual labels:  xcode-extension
marker-extension
Sample project demonstrating use of an Xcode Source Editor Extension to format Swift code
Stars: ✭ 19 (-72.86%)
Mutual labels:  xcode-extension
Swiftinitializergenerator
Xcode Source Code Extension to Generate Swift Initializers
Stars: ✭ 718 (+925.71%)
Mutual labels:  xcode-extension
XShared
Xcode extension that allows you copying the code with special formatting quotes for social (Slack, Telegram)
Stars: ✭ 75 (+7.14%)
Mutual labels:  xcode-extension
ViewGenerator
⚒ ViewGenerator generates view code from variable name automatically in iOS development
Stars: ✭ 75 (+7.14%)
Mutual labels:  xcode-extension
Xalign
An amazing Xcode Source Editor extension to align regular code. It can align Xnything in any way you want.
Stars: ✭ 2,898 (+4040%)
Mutual labels:  xcode-extension
Xcode-AutoLazyLoad
简单的Xcode代码模板extension
Stars: ✭ 23 (-67.14%)
Mutual labels:  xcode-extension
Linessorter Xcode Extension
Xcode Extension that helps you keep your import statements and long code lists organized and uniform
Stars: ✭ 54 (-22.86%)
Mutual labels:  xcode-extension
AMEGetterMaker
A lazyload getter maker without resign for Xcode
Stars: ✭ 42 (-40%)
Mutual labels:  xcode-extension
Swiftmockgeneratorforxcode
An Xcode extension (plugin) to generate Swift test doubles automatically.
Stars: ✭ 522 (+645.71%)
Mutual labels:  xcode-extension
qvcodefriend.github.io
Develop Xcode Extensions with JavaScript
Stars: ✭ 19 (-72.86%)
Mutual labels:  xcode-extension
sample-generator
Xcode Source Editor Extension to generate Swift model samples
Stars: ✭ 19 (-72.86%)
Mutual labels:  xcode-extension
Swiftai
SwiftAI, write Swift code smart. SwiftAI can generate Model class from JSON now. Codable and HandyJSON is supported. More features will be add.
Stars: ✭ 470 (+571.43%)
Mutual labels:  xcode-extension
AutoImport
AutoImport for XCode, replace Peckham.
Stars: ✭ 82 (+17.14%)
Mutual labels:  xcode-extension
Import
Xcode extension for adding imports from anywhere in the code ☝️
Stars: ✭ 818 (+1068.57%)
Mutual labels:  xcode-extension
TrickerX
An Xcode9+ Extension which make CodingKeys automatically.
Stars: ✭ 90 (+28.57%)
Mutual labels:  xcode-extension
GitBlamePR
Mac app that shows pull request last modified each line of a file, Written in SwiftUI
Stars: ✭ 24 (-65.71%)
Mutual labels:  xcode-extension
Codegenerator
A Xcode plugin for generate Objectice-C code.
Stars: ✭ 63 (-10%)
Mutual labels:  xcode-extension
Xcodeextensionsample
Various sample commands to implement Xcode Source Editor Extension
Stars: ✭ 47 (-32.86%)
Mutual labels:  xcode-extension
Playalways
Create Xcode playgrounds from your menu bar
Stars: ✭ 515 (+635.71%)
Mutual labels:  xcode-extension

Installation

  1. Clone or download the repo
  2. Open CodeGenerator.xcodeproj
  3. Enable target signing for both the Application and the Source Code Extension using your own developer ID
  4. Select the application target and then Product > Archive
  5. Export the archive as a macOS App
  6. Run the app, then quit (Don't delete the app, put it in a convenient folder)
  7. Go to System Preferences -> Extensions -> Xcode Source Editor and enable the CodeGenerator extension
  8. The menu-item should now be available from Xcode's Editor menu

Uninstallation

  1. Remove the App, restart Xcode.

CodeGenerator

CodeGenerator is a Xcode extension for swift code generation.

alt tag

Generating mock

Example:

protocol Pokemon {
    var height: Double! { get set }
    var canEvolve: Bool! { get }

    func eat(food: String)

    func drink(_ water: String)

    func isFlying() -> Bool

    func evolve(successHandler: @escaping (String) -> Void, failureHandler: (String?) -> String?)
}
class PokemonMock: Pokemon {
    var height: Double!
    var canEvolve: Bool!

    var eatFood: String?
    var drinkWater: String?
    var evolveShouldCallSuccessHandler = true
    var evolveSuccessHandlerParam0: String!
    var evolveShouldCallFailureHandler = true
    var evolveFailureHandlerParam0: String!
    var evolveFailureHandlerDidReturn: String?

    var eatFoodWasCalled: Bool?
    var drinkWasCalled: Bool?
    var isFlyingWasCalled: Bool?
    var evolveSuccessHandlerWasCalled: Bool?

    var isFlyingShouldReturn: Bool!

    func eat(food: String) {
        eatFood = food
        eatFoodWasCalled = true
    }

    func drink(_ water: String) {
        drinkWater = water
        drinkWasCalled = true
    }

    func isFlying() -> Bool {
        isFlyingWasCalled = true
        return isFlyingShouldReturn
    }

    func evolve(successHandler: @escaping (String) -> Void, failureHandler: (String?) -> String?) {
        if evolveShouldCallSuccessHandler {
            successHandler(evolveSuccessHandlerParam0)
        }
        if evolveShouldCallFailureHandler {
            evolveFailureHandlerDidReturn = failureHandler(evolveFailureHandlerParam0)
        }
        evolveSuccessHandlerWasCalled = true
    }

}

Generating Equatable

Example:

class EquatableClazz {
    var var0: Int!
    let var1: String
    var var2: Bool?
}
extension EquatableClazz: Equatable {
    static func ==(lhs: EquatableClazz, rhs: EquatableClazz) -> Bool {
        return lhs.var0 == rhs.var0 && lhs.var1 == rhs.var1 && lhs.var2 == rhs.var2
    }
}

if you don't want to use all the vars for the Equatable, just select the vars you want and click Generate... -> Equatable

Generating Hashable

Example:

class EquatableClazz {
    var var0: Int!
    let var1: String
    var var2: Bool?
}
extension EquatableClazz: Hashable {
    static func ==(lhs: EquatableClazz, rhs: EquatableClazz) -> Bool {
        return lhs.var0 == rhs.var0 && lhs.var1 == rhs.var1 && lhs.var2 == rhs.var2
    }

    var hashValue: Int {
        var hashValue = 1
        let hashableVars: [AnyHashable?] = [var0, var1, var2]
        hashableVars.forEach {
            hashValue = 31 * hashValue + ($0?.hashValue ?? 0)
        }
        return hashValue
    }
}

Generating Init

Example:

class EquatableClazz {
    var var0: Int!
    let var1: String
    var var2: Bool?

    init(var0: Int?, var1: String, var2: Bool?) {
        self.var0 = var0
        self.var1 = var1
        self.var2 = var2
    }


}

Generating NSCoding

Example:

class EquatableClazz {
    var var0: Int
    let var1: String
    var var2: Bool?

    required init?(coder aDecoder: NSCoder) {
        guard let var1 = aDecoder.decodeObject(forKey: "var1") as? String else { return nil }
        var0 = aDecoder.decodeInteger(forKey: "var0")
        self.var1 = var1
        if aDecoder.containsValue(forKey: "var2") {
            var2 = aDecoder.decodeBool(forKey: "var2")
        }
    }

    func encode(with aCoder: NSCoder) {
        aCoder.encode(var0, forKey: "var0")
        aCoder.encode(var1, forKey: "var1")
        aCoder.encode(var2, forKey: "var2")
    }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].