Skip to content

Commit

Permalink
Merge pull request #194 from kobeumut/master
Browse files Browse the repository at this point in the history
changed deprecated range(at:) to new rangeAt
  • Loading branch information
tid-kijyun committed Aug 11, 2018
2 parents 2cab4dd + a4ef371 commit bce83b3
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 1 deletion.
14 changes: 14 additions & 0 deletions Sources/Kanna/CSS.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,13 @@ import libxmlKanna
#endif

typealias AKRegularExpression = NSRegularExpression
#if os(Linux) && swift(>=4)
typealias AKTextCheckingResult = NSTextCheckingResult
#elseif os(Linux) && swift(>=3)
typealias AKTextCheckingResult = TextCheckingResult
#else
typealias AKTextCheckingResult = NSTextCheckingResult
#endif

public enum CSSError: Error {
case UnsupportSyntax(String)
Expand Down Expand Up @@ -155,7 +161,11 @@ private let matchSubContains = firstMatch("contains\\([\"\'](.*?)[\"\']\\)")

private func substringWithRangeAtIndex(_ result: AKTextCheckingResult, str: String, at: Int) -> String {
if result.numberOfRanges > at {
#if swift(>=4.0) || os(Linux)
let range = result.range(at: at)
#else
let range = result.rangeAt(at)
#endif
if range.length > 0 {
let startIndex = str.index(str.startIndex, offsetBy: range.location)
let endIndex = str.index(startIndex, offsetBy: range.length)
Expand Down Expand Up @@ -321,7 +331,11 @@ private func getAttrNot(_ str: inout String, skip: Bool = true) -> String? {
if let attr = getAttribute(&one, skip: false) {
return attr
} else if let sub = matchElement(one) {
#if swift(>=4.0) || os(Linux)
let range = sub.range(at: 1)
#else
let range = sub.rangeAt(1)
#endif
let startIndex = one.index(one.startIndex, offsetBy: range.location)
let endIndex = one.index(startIndex, offsetBy: range.length)

Expand Down
51 changes: 50 additions & 1 deletion Sources/Kanna/libxmlHTMLDocument.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import libxmlKanna

extension String.Encoding {
var IANACharSetName: String? {
#if os(Linux)
#if os(Linux) && swift(>=4)
switch self {
case .ascii:
return "us-ascii"
Expand Down Expand Up @@ -82,6 +82,55 @@ extension String.Encoding {
default:
return nil
}
#elseif os(Linux) && swift(>=3)
switch self {
case String.Encoding.ascii:
return "us-ascii"
case String.Encoding.iso2022JP:
return "iso-2022-jp"
case String.Encoding.isoLatin1:
return "iso-8859-1"
case String.Encoding.isoLatin2:
return "iso-8859-2"
case String.Encoding.japaneseEUC:
return "euc-jp"
case String.Encoding.macOSRoman:
return "macintosh"
case String.Encoding.nextstep:
return "x-nextstep"
case String.Encoding.nonLossyASCII:
return nil
case String.Encoding.shiftJIS:
return "cp932"
case String.Encoding.symbol:
return "x-mac-symbol"
case String.Encoding.unicode:
return "utf-16"
case String.Encoding.utf16:
return "utf-16"
case String.Encoding.utf16BigEndian:
return "utf-16be"
case String.Encoding.utf32:
return "utf-32"
case String.Encoding.utf32BigEndian:
return "utf-32be"
case String.Encoding.utf32LittleEndian:
return "utf-32le"
case String.Encoding.utf8:
return "utf-8"
case String.Encoding.windowsCP1250:
return "windows-1250"
case String.Encoding.windowsCP1251:
return "windows-1251"
case String.Encoding.windowsCP1252:
return "windows-1252"
case String.Encoding.windowsCP1253:
return "windows-1253"
case String.Encoding.windowsCP1254:
return "windows-1254"
default:
return nil
}
#else
let cfenc = CFStringConvertNSStringEncodingToEncoding(self.rawValue)
guard let cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc) else {
Expand Down

0 comments on commit bce83b3

Please sign in to comment.