下载Surge到本地
访问GitHub上的Surge项目:
git clone https://github.com/surge-app/surge-app.git cd surge-app mv surge-1...tar.gz . cd ..
创建项目文件
创建一个空的项目文件:
touch src/main/nullproject
安装依赖项
安装所需的Xcode Swift依赖:
xcode -t "import 'Xcode Swift'"
布.build和测试
在Xcode中构建并测试:
Xcode Tools -> Build project -> Xcode
在项目中添加Xcode Swift优化器:
Surge -> Settings -> Generate Swift -> Add Xcode Swift Optimizer
编写应用
编写一个简单的应用,
import App
import NSPredicate
import NSPredicateParser
class MyApp: NSPredicate {
func doAction(_ action: NSAction) {
NSPredicateParser parser = NSPredicateParser.shared()
NSPredicate predicate = NSPredicate.shared()
var variable = NSVariable()
variable.value = "myAction"
if condition {
if predicate.isLocal {
if condition.isLocal {
if condition.isBoolean {
if variable.value == "true" {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.isString {
if condition.value == "true" {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.isDate {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
1 predicate.value = true
2 predicate.value = false
} else {
3 predicate.value = true
4 predicate.value = false
}
} else {
5 predicate.value = true
6 predicate.value = false
}
} else {
7 predicate.value = true
8 predicate.value = false
}
}
}
}
}
}
}
if condition.value.isString {
if condition.value.isString {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
} else {
if condition.value.isDate {
if condition.value.isLocal {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
predicate.value = true
} else {
predicate.value = false
}
}
}
} else {
if condition.value.isDateRange {
if condition.value.isLocal {
if condition.value.isDay {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}
} else {
if condition.value.isWeek {
if condition.value.isDay {
if condition.value.isDay {
predicate.value = true
} else {
predicate.value = false
}








