From 43a123c1ae6613b3efeed291fa552ecd909d3acf Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 16 Apr 2024 21:23:18 +0200 Subject: Adding upstream version 1.20.14. Signed-off-by: Daniel Baumann --- misc/chrome/gophertool/README.txt | 8 ++++++ misc/chrome/gophertool/background.html | 12 +++++++++ misc/chrome/gophertool/background.js | 9 +++++++ misc/chrome/gophertool/gopher.js | 41 +++++++++++++++++++++++++++++ misc/chrome/gophertool/gopher.png | Bin 0 -> 5588 bytes misc/chrome/gophertool/manifest.json | 20 ++++++++++++++ misc/chrome/gophertool/popup.html | 21 +++++++++++++++ misc/chrome/gophertool/popup.js | 46 +++++++++++++++++++++++++++++++++ 8 files changed, 157 insertions(+) create mode 100644 misc/chrome/gophertool/README.txt create mode 100644 misc/chrome/gophertool/background.html create mode 100644 misc/chrome/gophertool/background.js create mode 100644 misc/chrome/gophertool/gopher.js create mode 100644 misc/chrome/gophertool/gopher.png create mode 100644 misc/chrome/gophertool/manifest.json create mode 100644 misc/chrome/gophertool/popup.html create mode 100644 misc/chrome/gophertool/popup.js (limited to 'misc/chrome/gophertool') diff --git a/misc/chrome/gophertool/README.txt b/misc/chrome/gophertool/README.txt new file mode 100644 index 0000000..a7c0b4b --- /dev/null +++ b/misc/chrome/gophertool/README.txt @@ -0,0 +1,8 @@ +To install: + +1) chrome://extensions/ +2) click "[+] Developer Mode" in top right +3) "Load unpacked extension..." +4) pick $GOROOT/misc/chrome/gophertool + +Done. It'll now auto-reload from source. diff --git a/misc/chrome/gophertool/background.html b/misc/chrome/gophertool/background.html new file mode 100644 index 0000000..06daa98 --- /dev/null +++ b/misc/chrome/gophertool/background.html @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/misc/chrome/gophertool/background.js b/misc/chrome/gophertool/background.js new file mode 100644 index 0000000..79ae05d --- /dev/null +++ b/misc/chrome/gophertool/background.js @@ -0,0 +1,9 @@ +chrome.omnibox.onInputEntered.addListener(function(t) { + var url = urlForInput(t); + if (url) { + chrome.tabs.query({ "active": true, "currentWindow": true }, function(tab) { + if (!tab) return; + chrome.tabs.update(tab.id, { "url": url, "selected": true }); + }); + } +}); diff --git a/misc/chrome/gophertool/gopher.js b/misc/chrome/gophertool/gopher.js new file mode 100644 index 0000000..09edb29 --- /dev/null +++ b/misc/chrome/gophertool/gopher.js @@ -0,0 +1,41 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +var numericRE = /^\d+$/; +var commitRE = /^(?:\d+:)?([0-9a-f]{6,40})$/; // e.g "8486:ab29d2698a47" or "ab29d2698a47" +var gerritChangeIdRE = /^I[0-9a-f]{4,40}$/; // e.g. Id69c00d908d18151486007ec03da5495b34b05f5 +var pkgRE = /^[a-z0-9_\/]+$/; + +function urlForInput(t) { + if (!t) { + return null; + } + + if (numericRE.test(t)) { + if (t < 150000) { + // We could use the golang.org/cl/ handler here, but + // avoid some redirect latency and go right there, since + // one is easy. (no server-side mapping) + return "https://github.com/golang/go/issues/" + t; + } + return "https://golang.org/cl/" + t; + } + + if (gerritChangeIdRE.test(t)) { + return "https://golang.org/cl/" + t; + } + + var match = commitRE.exec(t); + if (match) { + return "https://golang.org/change/" + match[1]; + } + + if (pkgRE.test(t)) { + // TODO: make this smarter, using a list of packages + substring matches. + // Get the list from godoc itself in JSON format? + return "https://golang.org/pkg/" + t; + } + + return null; +} diff --git a/misc/chrome/gophertool/gopher.png b/misc/chrome/gophertool/gopher.png new file mode 100644 index 0000000..0d1abb7 Binary files /dev/null and b/misc/chrome/gophertool/gopher.png differ diff --git a/misc/chrome/gophertool/manifest.json b/misc/chrome/gophertool/manifest.json new file mode 100644 index 0000000..0438659 --- /dev/null +++ b/misc/chrome/gophertool/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "Hacking Gopher", + "version": "1.0", + "manifest_version": 2, + "description": "Go Hacking utility", + "background": { + "page": "background.html" + }, + "browser_action": { + "default_icon": "gopher.png", + "default_popup": "popup.html" + }, + "omnibox": { "keyword": "golang" }, + "icons": { + "16": "gopher.png" + }, + "permissions": [ + "tabs" + ] +} diff --git a/misc/chrome/gophertool/popup.html b/misc/chrome/gophertool/popup.html new file mode 100644 index 0000000..ad42a38 --- /dev/null +++ b/misc/chrome/gophertool/popup.html @@ -0,0 +1,21 @@ + + + + + + + +issue, +codereview, +commit, or +pkg id/name: + +Also: buildbots +GitHub + + + diff --git a/misc/chrome/gophertool/popup.js b/misc/chrome/gophertool/popup.js new file mode 100644 index 0000000..410d651 --- /dev/null +++ b/misc/chrome/gophertool/popup.js @@ -0,0 +1,46 @@ +function openURL(url) { + chrome.tabs.create({ "url": url }) +} + +function addLinks() { + var links = document.getElementsByTagName("a"); + for (var i = 0; i < links.length; i++) { + var url = links[i].getAttribute("url"); + if (url) + links[i].addEventListener("click", function () { + openURL(this.getAttribute("url")); + }); + } +} + +window.addEventListener("load", function () { + addLinks(); + console.log("hacking gopher pop-up loaded."); + document.getElementById("inputbox").focus(); +}); + +window.addEventListener("submit", function () { + console.log("submitting form"); + var box = document.getElementById("inputbox"); + box.focus(); + + var t = box.value; + if (t == "") { + return false; + } + + var success = function(url) { + console.log("matched " + t + " to: " + url) + box.value = ""; + openURL(url); + return false; // cancel form submission + }; + + var url = urlForInput(t); + if (url) { + return success(url); + } + + console.log("no match for text: " + t) + return false; +}); -- cgit v1.2.3