strip "Bug#" from keyword start
[icedeb.git] / chrome / content / icedeb.js
1 IceDeb = {
2     getClipboardText: function() {
3         var clip = Components.classes['@mozilla.org/widget/clipboard;1']
4             .getService(Components.interfaces.nsIClipboard);
5         if (!clip) return null;
6
7         var trans = Components.classes['@mozilla.org/widget/transferable;1']
8             .createInstance(Components.interfaces.nsITransferable);
9         if (!trans) return null;
10
11         trans.addDataFlavor("text/unicode");
12         clip.getData(trans,
13                 clip.supportsSelectionClipboard()
14                 ? clip.kSelectionClipboard
15                 : clip.kGlobalClipboard
16         );
17
18         var s = new Object;
19         var p;
20         var len = new Object;
21         trans.getTransferData("text/unicode", s, len);
22
23         var text = null;
24         var res;
25
26         if (s)
27             p = s.value.QueryInterface(Components.interfaces.nsISupportsString, res);
28         if (p)
29             text = p.data.substring(0, len.value / 2);
30
31         return text;
32     },
33     trim_keyword: function(word) {
34         if (!word) return word;
35
36         var oldword;
37         do {
38             oldword = word;
39
40             word = word.replace(/^[^a-zA-Z0-9]+/, '');
41             word = word.replace(/[^a-zA-Z0-9]+$/, '');
42             word = word.replace(/^Bug#/i, '');
43         } while ( oldword != word );
44
45         return word;
46     },
47     lookup_bts: function(in_new) {
48         var bug = IceDeb.trim_keyword(IceDeb.getClipboardText());
49         if (!bug) return null;
50         var uri="http://bugs.debian.org/" + bug;
51
52         if (in_new) {
53             var b = getBrowser();
54             var new_tab = b.addTab(uri);
55             b.selectedTab = new_tab;
56         }
57         else {
58             loadURI(uri);
59         }
60     },
61     lookup_pts: function(in_new) {
62         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
63         if (!pkg) return null;
64         var uri="http://packages.qa.debian.org/" + pkg;
65
66         if (in_new) {
67             var b = getBrowser();
68             var new_tab = b.addTab(uri);
69             b.selectedTab = new_tab;
70         }
71         else {
72             loadURI(uri);
73         }
74     },
75     lookup_deb: function(in_new) {
76         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
77         if (!pkg) return null;
78         var uri="http://packages.debian.org/" + pkg;
79
80         if (in_new) {
81             var b = getBrowser();
82             var new_tab = b.addTab(uri);
83             b.selectedTab = new_tab;
84         }
85         else {
86             loadURI(uri);
87         }
88     },
89     lookup_ml: function(in_new) {
90         var msg_id = IceDeb.trim_keyword(IceDeb.getClipboardText());
91         if (!msg_id) msg_id = '';
92         var uri="http://lists.debian.org/msgid-search/" + msg_id;
93
94         if (in_new) {
95             var b = getBrowser();
96             var new_tab = b.addTab(uri);
97             b.selectedTab = new_tab;
98         }
99         else {
100             loadURI(uri);
101         }
102     },
103     lookup_ddpo: function(in_new) {
104         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
105         var uri="http://qa.debian.org/developer.php";
106
107         if (keyword) uri += "?login=" + keyword;
108
109         if (in_new) {
110             var b = getBrowser();
111             var new_tab = b.addTab(uri);
112             b.selectedTab = new_tab;
113         }
114         else {
115             loadURI(uri);
116         }
117     },
118     lookup_buildd: function(in_new) {
119         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
120         var uri="https://buildd.debian.org/";
121
122         if (keyword) uri += keyword;
123
124         if (in_new) {
125             var b = getBrowser();
126             var new_tab = b.addTab(uri);
127             b.selectedTab = new_tab;
128         }
129         else {
130             loadURI(uri);
131         }
132     },
133     lookup_security: function(in_new) {
134         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
135         var uri="http://security-tracker.debian.org/";
136
137         if (keyword) uri += "tracker/" + keyword;
138
139         if (in_new) {
140             var b = getBrowser();
141             var new_tab = b.addTab(uri);
142             b.selectedTab = new_tab;
143         }
144         else {
145             loadURI(uri);
146         }
147     },
148
149     btsButton: function (e) {
150         if ( e.button == 0 )
151             IceDeb.lookup_bts(false)
152         else if ( e.button == 1 )
153             IceDeb.lookup_bts(true);
154     },
155     ptsButton: function (e) {
156         if ( e.button == 0 )
157             IceDeb.lookup_pts(false)
158         else if ( e.button == 1 )
159             IceDeb.lookup_pts(true);
160     },
161     debButton: function (e) {
162         if ( e.button == 0 )
163             IceDeb.lookup_deb(false)
164         else if ( e.button == 1 )
165             IceDeb.lookup_deb(true);
166     },
167     mlButton: function (e) {
168         if ( e.button == 0 )
169             IceDeb.lookup_ml(false)
170         else if ( e.button == 1 )
171             IceDeb.lookup_ml(true);
172     },
173     ddpoButton: function (e) {
174         if ( e.button == 0 )
175             IceDeb.lookup_ddpo(false)
176         else if ( e.button == 1 )
177             IceDeb.lookup_ddpo(true);
178     },
179     builddButton: function (e) {
180         if ( e.button == 0 )
181             IceDeb.lookup_buildd(false)
182         else if ( e.button == 1 )
183             IceDeb.lookup_buildd(true);
184     },
185     securityButton: function (e) {
186         if ( e.button == 0 )
187             IceDeb.lookup_security(false)
188         else if ( e.button == 1 )
189             IceDeb.lookup_security(true);
190     }
191 }
192