Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Can use - border-bottom : "purple,3"
- // Can use - border-bottom : "#444, 3"
- // etc
- conf.interpreter.map(UILabel.self, forAttributeKey: "border-bottom", withType:Borderized.self) {
- let key = $0.key.appending("C-")
- let layer = $0.component.layer.sublayers?.lazy.filter { $0.name == key }.first ?? CALayer()
- layer.frame = $0.component.frame
- layer.name = key
- layer.frame.size.height = CGFloat($0.value.width)
- layer.backgroundColor = $0.value.color.cgColor
- layer.frame = layer.frame.offsetBy(dx: 0, dy: $0.component.intrinsicContentSize.height)
- $0.component.layer.addSublayer(layer)
- $0.component.layer.masksToBounds = false
- }
- conf.lexer.type.tokenize(from: String.self, to: Borderized.self) {
- let list = $0.inputValue.components(separatedBy: ",").flatMap {$0.trimmingCharacters(in: .whitespacesAndNewlines) }
- guard let color = list.first, let width = list.last else { return nil }
- let c:UIColor? = conf.lexer.type.scan(withValue: color)
- let w:Double? = conf.lexer.type.scan(withValue: width)
- return Borderized(color: c, width: w)
- }
- struct Borderized {
- let color: UIColor
- let width: Double
- init?(color:UIColor?, width:Double?) {
- guard let c = color, let w = width else { return nil }
- self.color = c
- self.width = w
- }
- }
- extension Borderized : InterpreterValue { }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement