Files
SwiftLint/Source/SwiftLintFramework/String+SwiftLint.swift
T
2015-08-27 14:20:51 -07:00

53 lines
1.5 KiB
Swift

//
// String+SwiftLint.swift
// SwiftLint
//
// Created by JP Simard on 2015-05-16.
// Copyright (c) 2015 Realm. All rights reserved.
//
import Foundation
import SourceKittenFramework
extension String {
func lines() -> [Line] {
var lines = [Line]()
var lineIndex = 1
enumerateLines { line, stop in
lines.append((lineIndex++, line))
}
return lines
}
func isUppercase() -> Bool {
return self == uppercaseString
}
func countOfTailingCharactersInSet(characterSet: NSCharacterSet) -> Int {
return String(self.characters.reverse()).countOfLeadingCharactersInSet(characterSet)
}
public var chomped: String {
return stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
}
}
extension NSString {
public func lineAndCharacterForByteOffset(offset: Int) -> (line: Int, character: Int)? {
return byteRangeToNSRange(start: offset, length: 0).flatMap { range in
var numberOfLines = 0, index = 0, lineRangeStart = 0, previousIndex = 0
while index < length {
numberOfLines++
if index <= range.location {
lineRangeStart = numberOfLines
previousIndex = index
index = NSMaxRange(self.lineRangeForRange(NSRange(location: index, length: 1)))
} else {
break
}
}
return (lineRangeStart, range.location - previousIndex + 1)
}
}
}