summaryrefslogtreecommitdiff
path: root/misc/chrome
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2011-05-31 13:16:51 -0700
committerBrad Fitzpatrick <bradfitz@golang.org>2011-05-31 13:16:51 -0700
commita9392f6bce8f436c0c5cf8bcb30940707e947364 (patch)
tree843bd18ae6744d0f1e400d559ea55211461cf3a1 /misc/chrome
parent7b573cd514554cd9e33ec5ef875181ee9b2a371a (diff)
downloadgo-a9392f6bce8f436c0c5cf8bcb30940707e947364.tar.gz
gophertool: also permit typing "go [whatever]" in omnibox
R=rsc CC=golang-dev http://codereview.appspot.com/4560056
Diffstat (limited to 'misc/chrome')
-rw-r--r--misc/chrome/gophertool/background.html24
-rw-r--r--misc/chrome/gophertool/gopher.js34
-rw-r--r--misc/chrome/gophertool/manifest.json5
-rw-r--r--misc/chrome/gophertool/popup.html42
4 files changed, 76 insertions, 29 deletions
diff --git a/misc/chrome/gophertool/background.html b/misc/chrome/gophertool/background.html
new file mode 100644
index 000000000..058c18142
--- /dev/null
+++ b/misc/chrome/gophertool/background.html
@@ -0,0 +1,24 @@
+<html>
+<!--
+ 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.
+-->
+<head>
+<script src="gopher.js"></script>
+<script>
+
+chrome.omnibox.onInputEntered.addListener(function(t) {
+ var url = urlForInput(t);
+ if (url) {
+ chrome.tabs.getSelected(null, function(tab) {
+ if (!tab) return;
+ chrome.tabs.update(tab.id, { "url": url, "selected": true });
+ });
+ }
+});
+
+</script>
+</head>
+</html>
+
diff --git a/misc/chrome/gophertool/gopher.js b/misc/chrome/gophertool/gopher.js
new file mode 100644
index 000000000..847c1c70d
--- /dev/null
+++ b/misc/chrome/gophertool/gopher.js
@@ -0,0 +1,34 @@
+// 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,20})$/; // e.g "8486:ab29d2698a47" or "ab29d2698a47"
+var pkgRE = /^[a-z0-9_\/]+$/;
+
+function urlForInput(t) {
+ if (!t) {
+ return null;
+ }
+
+ if (numericRE.test(t)) {
+ if (t < 1000000) {
+ return "http://code.google.com/p/go/issues/detail?id=" + t;
+ }
+ return "http://codereview.appspot.com/" + t + "/";
+ }
+
+ var match = commitRE.exec(t);
+ if (match) {
+ return "http://code.google.com/p/go/source/detail?r=" + 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?
+ // TODO: prefer localhost:6060 to golang.org if localhost:6060 is responding.
+ return "http://golang.org/pkg/" + t;
+ }
+
+ return null;
+}
diff --git a/misc/chrome/gophertool/manifest.json b/misc/chrome/gophertool/manifest.json
index a8de8dfd2..9a936ca8b 100644
--- a/misc/chrome/gophertool/manifest.json
+++ b/misc/chrome/gophertool/manifest.json
@@ -2,10 +2,15 @@
"name": "Hacking Gopher",
"version": "1.0",
"description": "Go Hacking utility",
+ "background_page": "background.html",
"browser_action": {
"default_icon": "gopher.png",
"popup": "popup.html"
},
+ "omnibox": { "keyword": "go" },
+ "icons": {
+ "16": "gopher.png"
+ },
"permissions": [
"tabs"
]
diff --git a/misc/chrome/gophertool/popup.html b/misc/chrome/gophertool/popup.html
index 4e30ced86..ebbc71f3a 100644
--- a/misc/chrome/gophertool/popup.html
+++ b/misc/chrome/gophertool/popup.html
@@ -5,52 +5,36 @@
license that can be found in the LICENSE file.
-->
<head>
- <script>
+<script src="gopher.js"></script>
+<script>
function focusinput() {
- box = document.getElementById("inputbox");
- box.focus();
+ document.getElementById("inputbox").focus();
}
-var numericRE = /^\d+$/;
-var commitRE = /^(?:\d+:)?([0-9a-f]{6,20})$/; // e.g "8486:ab29d2698a47" or "ab29d2698a47"
-var pkgRE = /^[a-z0-9_\/]+$/;
-
function navigate() {
- box = document.getElementById("inputbox");
+ var box = document.getElementById("inputbox");
box.focus();
+
var t = box.value;
if (t == "") {
return false;
}
- success = function(url) {
+ var success = function(url) {
console.log("matched " + t + " to: " + url)
box.value = "";
openURL(url);
return false; // cancel form submission
- };
+ };
- if (numericRE.test(t)) {
- if (t < 1000000) {
- return success("http://code.google.com/p/go/issues/detail?id=" + t);
- }
- return success("http://codereview.appspot.com/" + t + "/");
- }
-
- var match = commitRE.exec(t);
- if (match) {
- return success("http://code.google.com/p/go/source/detail?r=" + match[1])
- }
+ var url = urlForInput(t);
+ if (url) {
+ return success(url);
+ }
- if (pkgRE.test(t)) {
- // TODO: make this smarter, using a list of packages + substring matches.
- // Get the list from godoc itself in JSON format?
- // TODO: prefer localhost:6060 to golang.org if localhost:6060 is responding.
- return success("http://golang.org/pkg/" + t);
- }
- console.log("no match for text: " + t)
- return false;
+ console.log("no match for text: " + t)
+ return false;
}
function openURL(url) {