From 8e710770709409af070a0956e4bd6d7c93645ec7 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Wed, 12 Aug 2020 19:37:11 -0400 Subject: [PATCH] Add Copy Value as JSON --- MongoView/View Controllers/QueryViewController.swift | 12 +++++++++++- MongoView/View Controllers/QueryViewController.xib | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/MongoView/View Controllers/QueryViewController.swift b/MongoView/View Controllers/QueryViewController.swift index 7a565f6..41349e8 100644 --- a/MongoView/View Controllers/QueryViewController.swift +++ b/MongoView/View Controllers/QueryViewController.swift @@ -195,6 +195,16 @@ class QueryViewController: NSViewController { NSPasteboard.general.setString(node.valueString, forType: .string) // todo: support copying more specific types? } + + @IBAction func copyAsJSON(_ sender: Any) { + guard let node = nodeForCopying() else { return } + let doc: BSONDocument = ["value": node.value] + let ext = doc.toExtendedJSONString() + // toExtendedJSON returns `{ "value": }`, drop the object wrapper + let str = String(ext.dropFirst(12).dropLast(2)) + NSPasteboard.general.clearContents() + NSPasteboard.general.setString(str, forType: .string) + } } extension QueryViewController: NSMenuItemValidation { @@ -205,7 +215,7 @@ extension QueryViewController: NSMenuItemValidation { } else { return false } - } else if menuItem.action == #selector(copy(_:)) { + } else if menuItem.action == #selector(copy(_:)) || menuItem.action == #selector(copyAsJSON(_:)) { let node = nodeForCopying() return node != nil && node!.isValueCopyable } diff --git a/MongoView/View Controllers/QueryViewController.xib b/MongoView/View Controllers/QueryViewController.xib index a675fbe..9403962 100644 --- a/MongoView/View Controllers/QueryViewController.xib +++ b/MongoView/View Controllers/QueryViewController.xib @@ -1158,6 +1158,12 @@ + + + + + +