EnumGen - 一个库和 CLI 工具,可以轻松地从字符串创建枚举
埃努姆根
EnumGen 是一个库和 CLI 工具,可以轻松地从字符串创建枚举。
用法
图书馆
例
let generator = try EnumGen(strings: Locale.isoLanguageCodes, enumName: "LanguageCode", enumType: "String")
try generator.generate()
结果
// This is a generated file.
// Generated by EnumGen, see https://github.com/Ryu0118/EnumGen
import Foundation
public enum LanguageCode: String {
case aa
case ab
case ae
case af
case ak
case am
.......
}
参数
论点 | 类型 | 描述 |
---|---|---|
字符串 | 字符串 | 要转换为枚举的字符串类型数组 |
枚举名称 | 字符串 | 枚举类型名称 |
枚举类型 | 字符串? | 枚举继承的类型 |
路径 | 字符串 | 生成枚举文件的绝对路径。默认值设置为 #path |
命令行界面工具
USAGE: enumgen [--separator <separator>] [--enum-name <enum-name>] [--delimiter <delimiter>] [--raw-value] [--enum-type <enum-type>] <path>
ARGUMENTS:
<path> The path (relative or absolute) of the file you want to convert to enum
OPTIONS:
-s, --separator <separator>
Separator to convert text files to enum cases (default:
)
-e, --enum-name <enum-name>
Name of enum type
-d, --delimiter <delimiter>
If you want to recognize invalid_name as a case of enum, you can convert
it to lower camel case by setting the value of the —delimiter option to
"_" (like case invalidName)
--raw-value Assign a value to each element
--enum-type <enum-type> Make enum inherit the specified type. Only integer literals, floating
point numeric literals, and string literals can be inherited (default:
String)
-h, --help Show help information.
Example1
To change a txt file that lists the names of SFSymbols to enum,
square.and.arrow.up
square.and.arrow.up.fill
square.and.arrow.up.circle
square.and.arrow.up.circle.fill
square.and.arrow.up.trianglebadge.exclamationmark
square.and.arrow.down
square.and.arrow.down.fill
square.and.arrow.up.on.square
square.and.arrow.up.on.square.fill
square.and.arrow.down.on.square
square.and.arrow.down.on.square.fill
rectangle.portrait.and.arrow.right
rectangle.portrait.and.arrow.right.fill
......
then run this.
$ enumgen sfsymbols.txt --raw-value --enum-name SFSymbols --delimiter .
Result
// This is a generated file.
// Generated by EnumGen, see https://github.com/Ryu0118/EnumGen
import Foundation
enum SFSymbols: String {
case squareAndArrowUp = "square.and.arrow.up"
case squareAndArrowUpFill = "square.and.arrow.up.fill"
case squareAndArrowUpCircle = "square.and.arrow.up.circle"
case squareAndArrowUpCircleFill = "square.and.arrow.up.circle.fill"
case squareAndArrowUpTrianglebadgeExclamationmark = "square.and.arrow.up.trianglebadge.exclamationmark"
case squareAndArrowDown = "square.and.arrow.down"
case squareAndArrowDownFill = "square.and.arrow.down.fill"
case squareAndArrowUpOnSquare = "square.and.arrow.up.on.square"
case squareAndArrowUpOnSquareFill = "square.and.arrow.up.on.square.fill"
case squareAndArrowDownOnSquare = "square.and.arrow.down.on.square"
case squareAndArrowDownOnSquareFill = "square.and.arrow.down.on.square.fill"
case rectanglePortraitAndArrowRight = "rectangle.portrait.and.arrow.right"
case rectanglePortraitAndArrowRightFill = "rectangle.portrait.and.arrow.right.fill"
......
}
Example2
test.txt
invalid_name,invalid_file,invalid_url
$ enumgen test.txt --raw-value --enum-name Test --separator , --delimiter _
Result
// This is a generated file.
// Generated by EnumGen, see https://github.com/Ryu0118/EnumGen
import Foundation
enum Test: String {
case invalidName = "invalid_name"
case invalidFile = "invalid_file"
case invalidUrl = "invalid_url"
}
Example3
color.txt
red
green
blue
$ enumgen color.txt --enum-name Colors
Result
// This is a generated file.
// Generated by EnumGen, see https://github.com/Ryu0118/EnumGen
import Foundation
enum Colors {
case red
case green
case blue
}