Skip to content

Commit c16b77c

Browse files
committed
Support for hex packages
1 parent 2f8e169 commit c16b77c

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

Diff for: extension/content.js

+41
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131
enhanceRBModules();
3232
$(document.body).addClass('boxcutter-processed');
3333
return;
34+
case 'elixir':
35+
enhanceElixirModules();
36+
$(document.body).addClass('boxcutter-processed');
3437
default:
3538
/* do nothing */
3639
return;
@@ -67,6 +70,8 @@
6770
return 'bower';
6871
case 'Gemfile':
6972
return 'rb';
73+
case 'mix.exs':
74+
return 'elixir';
7075
default:
7176
return null;
7277
}
@@ -104,6 +109,42 @@
104109
}
105110
}
106111
}
112+
113+
function handleElixirClick(elem) {
114+
var pkgName = elem.target.attributes['data-pkg-name'].value;
115+
var hexUrl = 'https://hex.pm/packages/' + pkgName;
116+
$.get(hexUrl).then(function(data) {
117+
var ghurl = $(data).find('ul.links li a[href*="github"]').attr('href');
118+
window.open(ghurl || hexUrl);
119+
});
120+
}
121+
122+
function enhanceElixirModules() {
123+
var codeRows = $('.type-elixir tbody tr td.blob-code-inner');
124+
var inDeps = false;
125+
for (var i = 0; i < codeRows.length; i+= 1) {
126+
var rowElem = codeRows[i];
127+
if (rowElem.innerText.trim() === 'defp deps do') {
128+
inDeps = true;
129+
} else {
130+
if (inDeps) {
131+
if (rowElem.innerText.trim() === 'end') {
132+
inDeps = false;
133+
} else {
134+
var r = /[\[]*\{\:([\w]+)[\,\s]*\"[\~\>\=]+[\s]*([0-9\.\w\-]+)/g;
135+
var parts = r.exec(rowElem.innerText.trim());
136+
var lib = parts[1];
137+
var vers = parts[2];
138+
var $pkgSymbol = $(rowElem).find('.pl-c1')[0];
139+
var existingText = $pkgSymbol.innerText;
140+
var newText = ":<a data-pkg-name=\"" + existingText.substring(1) + "\">" + existingText.substring(1) + "</a>"
141+
$($pkgSymbol).click(handleElixirClick);
142+
$pkgSymbol.innerHTML = newText;
143+
}
144+
}
145+
}
146+
}
147+
}
107148

108149
function handleJSClick(jqevt) {
109150
var $target = $(jqevt.target);

Diff for: extension/manifest.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
{
22
"name": "Boxcutter",
33
"description": "Better package manifests on Github",
4-
"version": "7",
4+
"version": "8",
55
"manifest_version": 2,
66
"permissions": [
77
"https://registry.npmjs.org/*",
88
"https://rubygems.org/*",
9+
"https://hex.pm/*",
910
"https://bower.herokuapp.com/*"
1011
],
1112
"content_scripts": [

0 commit comments

Comments
 (0)