SourceKitten icon indicating copy to clipboard operation
SourceKitten copied to clipboard

strong type `byteRange` instead of just using NSRange

Open masters3d opened this issue 8 years ago • 0 comments

   public let content: String
    /// UTF16 based range in entire String. Equivalent to Range<UTF16Index>
    public let range: NSRange
    /// Byte based range in entire String. Equivalent to Range<UTF8Index>
    public let byteRange: NSRange

Any way to strong type byteRange so that methods like below reject non byte ranges?

extension SyntaxMap {
    /// Returns array of SyntaxTokens intersecting with byte range
    ///
    /// - Parameter byteRange: byte based NSRange
    internal func tokensIn(byteRange: NSRange) -> [SyntaxToken] {....}

Right now we have to remember to use a method on nsstring in SourceKitten to convert the ranges in the contents of the file.

extension NSString {
    /**
        Converts an `NSRange` suitable for filtering `self` as an
        `NSString` to a range of byte offsets in `self`.

        - parameter start: Starting character index in the string.
        - parameter length: Number of characters to include in range.

        - returns: An equivalent `NSRange`.
        */
    public func NSRangeToByteRange(start start: Int, length: Int) -> NSRange?
...

masters3d avatar Aug 31 '16 19:08 masters3d