Skip to content

Commit

Permalink
Updated for Swift 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Mondok committed Sep 25, 2015
1 parent aba888a commit 854b0ba
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 34 deletions.
2 changes: 2 additions & 0 deletions jqui.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@
9DFD197E1B95257A00AD3535 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftMigration = 0700;
LastSwiftUpdateCheck = 0700;
LastUpgradeCheck = 0640;
ORGANIZATIONNAME = "Matthew Mondok";
TargetAttributes = {
Expand Down
4 changes: 2 additions & 2 deletions jqui/HelpViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class HelpViewController: NSViewController {
@IBOutlet weak var helpWebView: WebView!

override func viewDidLoad() {
var url = NSURL(string: "https://stedolan.github.io/jq/manual/#Basicfilters")!
var req = NSURLRequest(URL: url)
let url = NSURL(string: "https://stedolan.github.io/jq/manual/#Basicfilters")!
let req = NSURLRequest(URL: url)
helpWebView.mainFrame.loadRequest(req)
super.viewDidLoad()
}
Expand Down
8 changes: 4 additions & 4 deletions jqui/JsonProcessViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@ class JsonProcessViewController: NSViewController {
didSet { }
}
@IBAction func prettifyTapped(sender: AnyObject) {
var inputText = jsonInputTextView.string!
let inputText = jsonInputTextView.string!
jsonInputTextView.string = JsonUtils.prettyPrint(inputText)
}

@IBAction func processJsonTapped(sender: AnyObject) {
var inputText = jsonInputTextView.string!
var query = jqQueryTextField.stringValue
let inputText = jsonInputTextView.string!
let query = jqQueryTextField.stringValue

if !JsonUtils.isValidJson(inputText){
showError("Invalid JSON entered")
Expand All @@ -62,7 +62,7 @@ class JsonProcessViewController: NSViewController {
}

func showError(err:String){
var alert = NSAlert()
let alert = NSAlert()
alert.informativeText = err
alert.runModal()
}
Expand Down
21 changes: 11 additions & 10 deletions jqui/classes/JQSavedQuery.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,16 @@ class JQSavedQuery: NSDocument {

func saveToDisk(pathAndName:String){
let strVal = JsonUtils.jsonStringify(self, prettyPrinted: false)
strVal.writeToFile(pathAndName, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
do {
try strVal.writeToFile(pathAndName, atomically: true, encoding: NSUTF8StringEncoding)
} catch _ {
}
}

class func loadFromDisk(pathAndName:String) -> JQSavedQuery? {
var obj:JQSavedQuery?
if let strVal = NSString(contentsOfFile: pathAndName, encoding: NSUTF8StringEncoding, error: nil){
obj = JsonUtils.jsonToAny(strVal as String, err: nil) as! JQSavedQuery?
if let strVal = try? NSString(contentsOfFile: pathAndName, encoding: NSUTF8StringEncoding){
obj = (try? JsonUtils.jsonToAny(strVal as String)) as! JQSavedQuery?
}
return obj
}
Expand All @@ -44,23 +47,21 @@ class JQSavedQuery: NSDocument {

override func makeWindowControllers() {
// Returns the Storyboard that contains your Document window.
let storyboard = NSStoryboard(name: "Main", bundle: nil)!
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let windowController = storyboard.instantiateControllerWithIdentifier("Document Window Controller") as! NSWindowController
self.addWindowController(windowController)
}

override func dataOfType(typeName: String, error outError: NSErrorPointer) -> NSData? {
override func dataOfType(typeName: String) throws -> NSData {
// Insert code here to write your document to data of the specified type. If outError != nil, ensure that you create and set an appropriate error when returning nil.
// You can also choose to override fileWrapperOfType:error:, writeToURL:ofType:error:, or writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead.
outError.memory = NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
return nil
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}

override func readFromData(data: NSData, ofType typeName: String, error outError: NSErrorPointer) -> Bool {
override func readFromData(data: NSData, ofType typeName: String) throws {
// Insert code here to read your document from the given data of the specified type. If outError != nil, ensure that you create and set an appropriate error when returning false.
// You can also choose to override readFromFileWrapper:ofType:error: or readFromURL:ofType:error: instead.
// If you override either of these, you should also override -isEntireFileLoaded to return NO if the contents are lazily loaded.
outError.memory = NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
return false
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
}
}
33 changes: 24 additions & 9 deletions jqui/classes/JsonUtils.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,27 @@ import Foundation
class JsonUtils{
class func isValidJson(str:String)->Bool{
var error: NSError?
jsonToAny(str, err: &error)
do {
try jsonToAny(str)
} catch let error1 as NSError {
error = error1
}
return error == nil
}

class func prettyPrint(str:String)->String{
var error: NSError?
if let obj:AnyObject = jsonToAny(str, err: &error){
do {
let obj:AnyObject = try jsonToAny(str)
return jsonStringify(obj, prettyPrinted: true)
} catch {
}
return str
}

class func jsonStringify(value: AnyObject, prettyPrinted: Bool = false) -> String {
var options = prettyPrinted ? NSJSONWritingOptions.PrettyPrinted : nil
let options:NSJSONWritingOptions = prettyPrinted ? NSJSONWritingOptions.PrettyPrinted : NSJSONWritingOptions.init(rawValue: 0)
if NSJSONSerialization.isValidJSONObject(value) {
if let data = NSJSONSerialization.dataWithJSONObject(value, options: options, error: nil) {
if let data = try? NSJSONSerialization.dataWithJSONObject(value, options: options) {
if let string = NSString(data: data, encoding: NSUTF8StringEncoding) {
return string as String
}
Expand All @@ -36,9 +41,19 @@ class JsonUtils{
return ""
}

class func jsonToAny(str:String, err:NSErrorPointer) -> AnyObject?{
var data = str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
let obj : AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: err)
return obj
class func jsonToAny(str:String) throws -> AnyObject{
var err: NSError! = NSError(domain: "Migrator", code: 0, userInfo: nil)
let data = str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
let obj : AnyObject?
do {
obj = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)
} catch let error as NSError {
err = error
obj = nil
}
if let value = obj {
return value
}
throw err
}
}
18 changes: 9 additions & 9 deletions jqui/classes/QueryRunner.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ class QueryRunner{

func saveTextToTemp(text:String) -> String{
let file = "scratch.json"
var path:String = ""

if let dirs : [String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String] {
let dir = dirs[0] //documents directory
path = dir.stringByAppendingPathComponent(file);
text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);
let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)

}
return path
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.CachesDirectory, inDomains: .UserDomainMask)[0]
let fileURL = documentsURL.URLByAppendingPathComponent(file)

do {
try text.writeToURL(fileURL, atomically: false, encoding: NSUTF8StringEncoding)
} catch _ {
};

return fileURL.path!
}
}

0 comments on commit 854b0ba

Please sign in to comment.