geulzza is a super-lightweight swift library that helps dealing with korean string by decomposing each letter into jamos.
๊ธ์ง๋ ์๋ชจ๋ฅผ ๋ถ๋ฆฌํด ํ๊ธ ์คํธ๋ง์ ๋ค๋ฃจ๋ ๋ฐ ๋์์ ์ฃผ๋ ๋ฌด์ง ๊ฐ๋ฒผ์ด ์ค์ํํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
import geulzza
let cent = "์ค์์ด"
let chicken = "๋ฐ๊ทผํ"
let rat = "์ด๋ช
๋ฐ"
let ashdragon = "leejaeyong"
let joogija = "JOOJINWOO"
print("\(cent.์ด๊ฐ) \(chicken.์๋ฅผ) ๋๋ ธ๋ค.")
//์ค์์ด์ด ๋ฐ๊ทผํ๋ฅผ ๋๋ ธ๋ค.
print("\(ashdragon.์๋) ๋ฐ๋ณด.")
//leejaeyong์ ๋ฐ๋ณด.
print(rat.์ด๊ฐ + " ์ธ์๋ค.")
//์ด๋ช
๋ฐ์ด ์ธ์๋ค.
print(joogija.์๋ + " ์์๋ค.")
//JOOJINWOO๋ ์์๋ค.
eun/neun ee/ga eul/reul will be appended depending on the last consonant.
๋ฐ์นจ ์ ๋ฌด, ํน์ ๋ง์ง๋ง ๊ธ์์ ๋ฐ๋ผ ์/๋ ์ด/๊ฐ ์/๋ฅผ ์ ์ ํํด ๋ถ์ฌ์ค๋๋ค.
import geulzza
let c: Character = "์"
let ์ = Geulzza("์")
print(์ == c.geulzza)
print(์ == c)
print("ํ" == ์)
//true
//true
//false
let ๋ฐ์นจ = ์.์ข
์ฑ
print(๋ฐ์นจ.rawValue)
//แฒ
print("\(๋ฐ์นจ.์)\(c.geulzza.๋ฐ์นจ.๋ค)")
//ในใ
let cho = ์.์ด์ฑ
let jung = ์.์ค์ฑ
let zong = ์.์ข
์ฑ
print("\(cho)\(jung)\(zong.rawValue)")
//ใ
ใ
แฒ
print(Character(.ใฑ, jung, .ในใ
))
//๊ฐ
print(์.char)
//์
์.์ด์ฑ = .ใ
print(์.char)
//์
composing, decomposing and editing are supported for Geulzza
class.
๊ธ์ง ํด๋์ค๋ ์กฐํฉ, ํด์ฒด, ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
Jaeum
, Moeum
and Badchim
are all enum
of Character
type.
์์, ๋ชจ์, ๋ฐ์นจ์ ๋ชจ๋ Character
ํ์
์ enum
์
๋๋ค.
public class Geulzza {
init(_ c: Character) {
unicode = c.unicode
guard Hex.isHangeul(unicode) else { nonHangeul = c; return }
let offset = unicode - hangeulStart
์ด์ฑ = Jaeum(rawValue: ((offset / 28) / 21 + jaeumStart).char)!
์ค์ฑ = Moeum(rawValue: ((offset / 28) % 21 + moeumStart).char)!
์ข
์ฑ = Badchim(rawValue: ((offset % 28) + badchimStart).char) ?? .__
char = Character(์ด์ฑ, ์ค์ฑ, ์ข
์ฑ)
}
var unicode: Hex
var nonHangeul: Character?
var char: Character = " "
var ์ด์ฑ: Jaeum = .__ {
didSet { char = Character(์ด์ฑ, ์ค์ฑ, ์ข
์ฑ) }
}
var ์ค์ฑ: Moeum = .__ {
didSet { char = Character(์ด์ฑ, ์ค์ฑ, ์ข
์ฑ) }
}
var ์ข
์ฑ: Badchim = .__ {
didSet { char = Character(์ด์ฑ, ์ค์ฑ, ์ข
์ฑ) }
}
var ๋ฐ์นจ: Badchim {
์ข
์ฑ
}
}
extension Geulzza: Equatable {
public static func == (lhs: Geulzza, rhs: Geulzza) -> Bool {
lhs.char == rhs.char
}
public static func == (lhs: Geulzza, rhs: Character) -> Bool {
lhs.char == rhs
}
public static func == (lhs: Character, rhs: Geulzza) -> Bool {
lhs == rhs.char
}
}
it's made of only one file, but here is the core of this library anyway.
๊ณ ์ ํ์ผ ํ๋๋ก ๋ง๋ค์ด์ก๊ธด ํด๋, ์ด์จ๋ ์ด๊ฒ ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํต์ฌ์
๋๋ค.
just use Swift Package Manager to install geulzza by adding this repository.
์ค์ํํธ ํจํค์ง ๋งค๋์ ๋ฅผ ์ฌ์ฉํด ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก geulzza๋ฅผ ์ค์นํ์ธ์.
or just copy and paste geulzza.swift
to your project.
์๋๋ฉด geulzza.swift
ํ์ผ์ ๋ณต์ฌํด ๋น์ ์ ํ๋ก์ ํธ์ ๋ถ์ฌ๋ฃ์ผ์ธ์.
support me through kakaopay, so i can at least eat.
even a dime helps a lot, for ten of them become a great meal.
์นด์นด์คํ์ด๋ก ํ์ํด ์ ๊ฐ ๋ฐฅ์ ๋จน๊ณ ๋ค๋๋๋ก ๋์์ฃผ์ธ์.
๋ฐฑ ์์กฐ์ฐจ๋ ์ด ๋ฒ๋ง ๋ชจ์ด๋ฉด ํ๋ฅญํ ํ ๋ผ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋ฌด์ฒ ๋์์ด ๋ฉ๋๋ค.
link |
Stars: 4 |
Last commit: 1 year ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics