Add environment variable "KISS_ASSERT_COMMA_CSV_DATA"
This commit is contained in:
@@ -96,6 +96,10 @@ extension String {
|
||||
}
|
||||
return (hh, mm, ss)
|
||||
}
|
||||
|
||||
public var hasComma: Bool {
|
||||
return nil != rangeOfCharacter(from: commaCharSet)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -168,21 +172,31 @@ extension FileManager {
|
||||
}
|
||||
|
||||
|
||||
private let commaCharSet = CharacterSet([","])
|
||||
private var assertCommaCsvData: Bool = {
|
||||
let val = ProcessInfo.processInfo.environment["KISS_ASSERT_COMMA_CSV_DATA"]
|
||||
switch val {
|
||||
case "true", "1": return true
|
||||
case "false", "0": return false
|
||||
default: return false
|
||||
}
|
||||
}()
|
||||
|
||||
private let commaCharSet = CharacterSet([","])
|
||||
|
||||
public func valueToString(_ any: Any) -> String {
|
||||
|
||||
func validateComma(_ s: String) -> String {
|
||||
let comma: CharacterSet = [","]
|
||||
if s.rangeOfCharacter(from: comma) != nil {
|
||||
assertionFailure("There are comma in: \(s)")
|
||||
func validateComma(_ s: String) {
|
||||
if s.hasComma {
|
||||
print("There are comma in: \(s)")
|
||||
if assertCommaCsvData {
|
||||
assertionFailure("There are comma in: \(s)")
|
||||
}
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
switch any {
|
||||
case let s as String:
|
||||
validateComma(s)
|
||||
return s.trimmingCharacters(in: commaCharSet)
|
||||
case let i as Int8: return String(i)
|
||||
case let i as UInt8: return String(i)
|
||||
@@ -202,6 +216,7 @@ public func valueToString(_ any: Any) -> String {
|
||||
case let raw as any RawRepresentable:
|
||||
switch raw.rawValue {
|
||||
case let s as String:
|
||||
validateComma(s)
|
||||
return s.trimmingCharacters(in: commaCharSet)
|
||||
case let i as Int8: return String(i)
|
||||
case let i as UInt8: return String(i)
|
||||
@@ -217,7 +232,9 @@ public func valueToString(_ any: Any) -> String {
|
||||
return ""
|
||||
}
|
||||
case let c as CustomStringConvertible:
|
||||
return c.description.trimmingCharacters(in: commaCharSet)
|
||||
let s = c.description
|
||||
validateComma(s)
|
||||
return s.trimmingCharacters(in: commaCharSet)
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
|
||||
@@ -135,6 +135,7 @@ extension ShopContext {
|
||||
for items in products.values {
|
||||
all.append(contentsOf: items)
|
||||
}
|
||||
all.sort(by: { $0.shortCode < $1.shortCode })
|
||||
return all
|
||||
}
|
||||
|
||||
|
||||
@@ -21,4 +21,8 @@ let data = try [CapturePrice].readCsv(fromFile: path, verifyHeader: true)
|
||||
if let last = data.last {
|
||||
print(last)
|
||||
}
|
||||
|
||||
let shopProductsUrl = URL.currentDirectory().appending(path: "data/shop-products.csv")
|
||||
let context = ShopContext()
|
||||
context.loadShop(url: shopProductsUrl)
|
||||
*/
|
||||
|
||||
@@ -61,7 +61,7 @@ WIP `showcase` | 추천 상품을 제안함.
|
||||
Environment variable | 설명
|
||||
-------------------- | ---
|
||||
KISS_RESPONSE_LOGGABLE | `true`, `1` 이면, API 응답로그를 기록함. `false`, `0` 이면 기록하지 않음. 기본값은 `false`.
|
||||
|
||||
KISS_ASSERT_COMMA_CSV_DATA | `true`, `1` 이면, CSV 데이터에 comma 문자가 감지되면 assertion 을 발생시킴. 기본값은 `false`.
|
||||
|
||||
# KissMeIndex
|
||||
|
||||
|
||||
Reference in New Issue
Block a user