Skip to content

Commit

Permalink
Remove ScannerUtils dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
zmeyc committed Mar 14, 2019
1 parent 22e4295 commit b6fd1d8
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 28 deletions.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ build:
clean:
swift package clean

.PHONY: all test build clean
xcodeproj:
swift package generate-xcodeproj

.PHONY: all test build clean xcodeproj
9 changes: 0 additions & 9 deletions Package.resolved
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,6 @@
"version": "0.0.2"
}
},
{
"package": "ScannerUtils",
"repositoryURL": "https://github.com/smud/ScannerUtils.git",
"state": {
"branch": null,
"revision": "26015cb4fb0c4d2021d9d428dade45d7a15d1800",
"version": "1.0.6"
}
},
{
"package": "SwiftyJSON",
"repositoryURL": "https://github.com/IBM-Swift/SwiftyJSON.git",
Expand Down
5 changes: 2 additions & 3 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,14 @@ let package = Package(
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
.package(url: "https://github.com/zmeyc/CCurl.git", from: "0.0.0"),
.package(url: "https://github.com/IBM-Swift/SwiftyJSON.git", from: "15.0.0"),
.package(url: "https://github.com/smud/ScannerUtils.git", from: "1.0.0")
.package(url: "https://github.com/IBM-Swift/SwiftyJSON.git", from: "15.0.0")
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "TelegramBotSDK",
dependencies: ["SwiftyJSON", "ScannerUtils"]),
dependencies: ["SwiftyJSON"]),
.testTarget(
name: "TelegramBotSDKTests",
dependencies: ["TelegramBotSDK"]),
Expand Down
13 changes: 7 additions & 6 deletions Sources/TelegramBotSDK/Categories/String+ExtractBotCommand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
//

import Foundation
import ScannerUtils

extension String {
/// - Parameter botName: bot name to remove.
Expand All @@ -22,21 +21,21 @@ extension String {
scanner.charactersToBeSkipped = nil

let whitespaceAndNewline = CharacterSet.whitespacesAndNewlines
scanner.skipCharacters(from: whitespaceAndNewline)
scanner.scanCharacters(from: whitespaceAndNewline, into: nil)

guard scanner.skipString("/") else {
guard scanner.scanString("/", into: nil) else {
return self
}

let alphanumericCharacters = CharacterSet.alphanumerics
guard scanner.skipCharacters(from: alphanumericCharacters) else {
guard scanner.scanCharacters(from: alphanumericCharacters, into: nil) else {
return self
}

let usernameSeparatorIndex = scanner.scanLocation

let usernameSeparator = "@"
guard scanner.skipString(usernameSeparator) else {
guard scanner.scanString(usernameSeparator, into: nil) else {
return self
}

Expand All @@ -45,7 +44,9 @@ extension String {
"abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"1234567890_")
guard let username = scanner.scanCharacters(from: usernameCharacters) else {
var usernameNS: NSString?
guard scanner.scanCharacters(from: usernameCharacters, into: &usernameNS),
let username = usernameNS as String? else {
// Empty bot name. Treat as no bot name and process the comamnd.
return self
}
Expand Down
19 changes: 12 additions & 7 deletions Sources/TelegramBotSDK/Router/Arguments.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public class Arguments {
}

public func scanWord() -> String? {
return scanner.scanUpToCharacters(from: T.whitespaceAndNewline)
var word: NSString?
return scanner.scanUpToCharacters(from: T.whitespaceAndNewline, into: &word) ? (word as String?) : nil
}

public func scanWords() -> [String] {
Expand All @@ -45,7 +46,8 @@ public class Arguments {
}
let validator = Scanner(string: word)
validator.charactersToBeSkipped = nil
guard let value = validator.scanInteger(), validator.isAtEnd else {
var value: Int = 0
guard validator.scanInt(&value), validator.isAtEnd else {
return nil
}
return value
Expand All @@ -57,7 +59,8 @@ public class Arguments {
}
let validator = Scanner(string: word)
validator.charactersToBeSkipped = nil
guard let value = validator.scanInt64(), validator.isAtEnd else {
var value: Int64 = 0
guard validator.scanInt64(&value), validator.isAtEnd else {
return nil
}
return value
Expand All @@ -69,20 +72,22 @@ public class Arguments {
}
let validator = Scanner(string: word)
validator.charactersToBeSkipped = nil
guard let value = validator.scanDouble(), validator.isAtEnd else {
var value: Double = 0.0
guard validator.scanDouble(&value), validator.isAtEnd else {
return nil
}
return value
}

public func scanRestOfString() -> String {
guard let restOfString = scanner.scanUpTo("") else {
var restOfString: NSString?
guard scanner.scanUpTo("", into: &restOfString) else {
return ""
}
return restOfString
return (restOfString as String?) ?? ""
}

public func skipRestOfString() {
scanner.skipUpTo("")
scanner.scanLocation = scanner.string.utf16.count
}
}
8 changes: 6 additions & 2 deletions Sources/TelegramBotSDK/Router/Command.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ public class Command {
public func fetchFrom(_ scanner: Scanner, caseSensitive: Bool = false) -> (command: String, startsWithSlash: Bool)? {
if nameWords.isEmpty {
// This is "match all" rule
guard let word = scanner.scanUpToCharacters(from: T.whitespaceAndNewline) else {
var wordNS: NSString?
guard scanner.scanUpToCharacters(from: T.whitespaceAndNewline, into: &wordNS),
let word = wordNS as String? else {
return nil
}

Expand All @@ -72,7 +74,9 @@ public class Command {

// Each word in nameWords should match a word (possibly abbreviated) from scanner
for nameWord in nameWords {
guard let word = scanner.scanUpToCharacters(from: T.whitespaceAndNewline) else {
var wordNS: NSString?
guard scanner.scanUpToCharacters(from: T.whitespaceAndNewline, into: &wordNS),
let word = wordNS as String? else {
return nil
}

Expand Down

0 comments on commit b6fd1d8

Please sign in to comment.