If you use the pastebin service you can be annoyed to copy code to pastebin form and choose language (and set nick).
The macro below post the selected text to pastebin.mozilla.org and set the appropriated language.
The pastebin return url is copied to clipboard
var requestString = "parent_pid=&format={1}&code2={2}&poster={3}&paste=Send&expiry={4}";
var sendString = requestString
.replace("{1}", lang)
.replace("{2}", text)
.replace("{3}", nick)
.replace("{4}", expiry);
httpReq.send(sendString);
var url = this.getReturnURL(httpReq);
this.copyText(url);
ko.statusBar.AddMessage("Url " + url
+ " copied on clipboard using lang " + lang,
"pastebin_macro", 3000, true)
},
getReturnURL : function(httpReq) {
return "http://pastebin.mozilla.org/"
+ httpReq.responseText.match('name="parent_pid" value="(.*)"')[1];
},
copyText : function(str) {
Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper)
.copyString(str);
},
ko2pastebinLanguage : function() {
var langMap = {};
langMap["Text"] = "text";
langMap["ActionScript"] = "actionscript";
langMap["Ada"] = "ada";
langMap["Apache"] = "apache";
//langMap[""] = "applescript";
langMap["Assembler"] = "asm";
//langMap[""] = "asp";
langMap["Bash"] = "bash";
langMap["C++"] = "c";
//langMap[""] = "c_mac";
//langMap[""] = "caddcl";
//langMap[""] = "cadlisp";
langMap["C++"] = "cpp";
//langMap[""] = "csharp";
//langMap[""] = "cfm";
langMap["CSS"] = "css";
//langMap[""] = "d";
//langMap[""] = "delphi";
langMap["Diff"] = "diff";
//langMap[""] = "dos";
langMap["Eiffel"] = "eiffel";
langMap["Fortran"] = "fortran";
langMap["FreeBasic"] = "freebasic";
//langMap[""] = "gml";
langMap["HTML"] = "html4strict";
//langMap[""] = "ini";
langMap["Java"] = "java";
langMap["JavaScript"] = "javascript";
langMap["Lisp"] = "lisp";
langMap["Lua"] = "lua";
langMap["Matlab"] = "matlab";
//langMap[""] = "mpasm";
langMap["SQL"] = "mysql";
langMap["Nsis"] = "nsis";
//langMap[""] = "objc";
//langMap[""] = "ocaml";
//langMap[""] = "oobas";
langMap["PL-SQL"] = "oracle8";
langMap["Pascal"] = "pascal";
langMap["Perl"] = "perl";
langMap["PHP"] = "php";
langMap["Python"] = "python";
//langMap[""] = "qbasic";
//langMap[""] = "robots";
langMap["Ruby"] = "ruby";
langMap["Scheme"] = "scheme";
langMap["Smarty"] = "smarty";
langMap["SQL"] = "sql";
langMap["Tcl"] = "tcl";
langMap["VisualBasic"] = "vb";
//langMap[""] = "vbnet";
//langMap[""] = "visualfoxpro";
langMap["XBL"] = "xml";
langMap["XML"] = "xml";
langMap["XSLT"] = "xml";
langMap["XUL"] = "xml";
language = langMap[ko.views.manager.currentView.document.language];
if (language == undefined) {
return "text";
}
return language;
}
};
pastebin.post();
var pastebin = {
post : function() {
var selection = ko.views.manager.currentView.selection;
if (selection == "") {
return;
}
var lang = encodeURIComponent(this.ko2pastebinLanguage());
var text = encodeURIComponent(selection);
var nick = encodeURIComponent("");
var expiry = encodeURIComponent("d");
var httpReq = new XMLHttpRequest();
httpReq.open("post", "http://pastebin.mozilla.org", false);
httpReq.setRequestHeader("content-type",
"application/x-www-form-urlencoded");
var requestString = "parent_pid=&format={1}&code2={2}&poster={3}&paste=Send&expiry={4}";
var sendString = requestString
.replace("{1}", lang)
.replace("{2}", text)
.replace("{3}", nick)
.replace("{4}", expiry);
httpReq.send(sendString);
var url = this.getReturnURL(httpReq);
this.copyText(url);
ko.statusBar.AddMessage("Url " + url
+ " copied on clipboard using lang " + lang,
"pastebin_macro", 3000, true)
},
getReturnURL : function(httpReq) {
return "http://pastebin.mozilla.org/"
+ httpReq.responseText.match('name="parent_pid" value="(.*)"')[1];
},
copyText : function(str) {
Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper)
.copyString(str);
},
ko2pastebinLanguage : function() {
var langMap = {};
langMap["Text"] = "text";
langMap["ActionScript"] = "actionscript";
langMap["Ada"] = "ada";
langMap["Apache"] = "apache";
//langMap[""] = "applescript";
langMap["Assembler"] = "asm";
//langMap[""] = "asp";
langMap["Bash"] = "bash";
langMap["C++"] = "c";
//langMap[""] = "c_mac";
//langMap[""] = "caddcl";
//langMap[""] = "cadlisp";
langMap["C++"] = "cpp";
//langMap[""] = "csharp";
//langMap[""] = "cfm";
langMap["CSS"] = "css";
//langMap[""] = "d";
//langMap[""] = "delphi";
langMap["Diff"] = "diff";
//langMap[""] = "dos";
langMap["Eiffel"] = "eiffel";
langMap["Fortran"] = "fortran";
langMap["FreeBasic"] = "freebasic";
//langMap[""] = "gml";
langMap["HTML"] = "html4strict";
//langMap[""] = "ini";
langMap["Java"] = "java";
langMap["JavaScript"] = "javascript";
langMap["Lisp"] = "lisp";
langMap["Lua"] = "lua";
langMap["Matlab"] = "matlab";
//langMap[""] = "mpasm";
langMap["SQL"] = "mysql";
langMap["Nsis"] = "nsis";
//langMap[""] = "objc";
//langMap[""] = "ocaml";
//langMap[""] = "oobas";
langMap["PL-SQL"] = "oracle8";
langMap["Pascal"] = "pascal";
langMap["Perl"] = "perl";
langMap["PHP"] = "php";
langMap["Python"] = "python";
//langMap[""] = "qbasic";
//langMap[""] = "robots";
langMap["Ruby"] = "ruby";
langMap["Scheme"] = "scheme";
langMap["Smarty"] = "smarty";
langMap["SQL"] = "sql";
langMap["Tcl"] = "tcl";
langMap["VisualBasic"] = "vb";
//langMap[""] = "vbnet";
//langMap[""] = "visualfoxpro";
langMap["XBL"] = "xml";
langMap["XML"] = "xml";
langMap["XSLT"] = "xml";
langMap["XUL"] = "xml";
language = langMap[ko.views.manager.currentView.document.language];
if (language == undefined) {
return "text";
}
return language;
}
};
pastebin.post();
I love this macro. Thanks dafi!
For those of you not that familiar with JavaScript or Komodo macros, note that you can:
Perfect! Hadn't even thought about something like this, but I can already tell it's going to get a lot of use. No more looking up usernames/passwords/urls for my company's pastebin server.
btw, since our pastebin server is behind a password-protected site, I added the encode() and utf8_encode() functions from http://www.webtoolkit.info/javascript-base64.html to the macro (along with an "authorization" header), and tada! works like a charm.
Thanks, dafi!