diff --git a/Sources/SQLite/Helpers.swift b/Sources/SQLite/Helpers.swift index 115ea5c6..1645669b 100644 --- a/Sources/SQLite/Helpers.swift +++ b/Sources/SQLite/Helpers.swift @@ -95,6 +95,40 @@ extension String { func wrap(_ expressions: [Expressible]) -> Expression { return wrap(", ".join(expressions)) } + + private func trimName(_ function: String) -> String { + return function.components(separatedBy: "(").first ?? function + } + + func infix(_ lhs: Expressible, _ rhs: Expressible, wrap: Bool = true, function: String = #function) -> Expression { + return trimName(function).infix(lhs, rhs, wrap: wrap) + } + + func wrap(_ expression: Expressible, function: String = #function) -> Expression { + return trimName(function).wrap(expression) + } + + func wrap(_ expressions: [Expressible], function: String = #function) -> Expression { + return trimName(function).wrap(", ".join(expressions)) + } + +} + +func infix(_ lhs: Expressible, _ rhs: Expressible, wrap: Bool = true, function: String = #function) -> Expression { + var funcStr = function + if let range = funcStr.range(of: "(_:_:)") { + funcStr.removeSubrange(range) + } + + return funcStr.infix(lhs, rhs, wrap: wrap) +} + +func wrap(_ expression: Expressible, function: String = #function) -> Expression { + return function.wrap(expression) +} + +func wrap(_ expressions: [Expressible], function: String = #function) -> Expression { + return function.wrap(", ".join(expressions)) }