Skip to content

Commit

Permalink
Default package link to homepage
Browse files Browse the repository at this point in the history
  • Loading branch information
BrainMaestro committed Apr 23, 2017
1 parent cfc2a0c commit 7757191
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 133 deletions.
4 changes: 2 additions & 2 deletions src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ window.packageConfig = [
registry: 'cargo',
parse: window.parser.toml,
keys: ['dependencies', 'dev-dependencies'],
}
];
},
]
173 changes: 88 additions & 85 deletions src/display.js
Original file line number Diff line number Diff line change
@@ -1,134 +1,137 @@
(function () {
var tableHeaders = ['Name', 'Version', 'Latest', 'Description'];
var open = '\
;(function() {
var tableHeaders = ['Name', 'Version', 'Latest', 'Description']
var open =
'\
<svg class="octicon octicon-chevron-down" viewBox="0 0 10 16" version="1.1" width="15" height="26" aria-hidden="true">\
<path fill-rule="evenodd" d="M5 11L0 6l1.5-1.5L5 8.25 8.5 4.5 10 6z">\
</path>\
</svg>';
var closed = '\
</svg>'
var closed =
'\
<svg class="octicon octicon-chevron-right" viewBox="0 0 8 16" version="1.1" width="12" height="24" aria-hidden="true">\
<path fill-rule="evenodd" d="M7.5 8l-5 5L1 11.5 4.75 8 1 4.5 2.5 3z">\
</path>\
</svg>';

</svg>'

function display(deps, devDeps, config) {
var readme = document.querySelector('.markdown-body.entry-content');
var license = document.querySelector('#user-content-license');
var header = document.createElement('h2');
var table = document.createElement('table');
var body = document.createElement('tbody');

header.textContent = 'Dependencies (' + config.name + ')';
header.title = 'Toggle ' + config.name + ' table display';
header.onclick = toggleTable;
header.style.display = 'none';
table.style.display = 'none';
tableHeaders.forEach(addTableHeader);
table.appendChild(body);

license = license ? license.parentNode : null;
readme.insertBefore(header, license);
readme.insertBefore(table, license);

addDependencies(body, deps, config.registry, config.name);
addDependencies(body, devDeps, config.registry, config.name, true);
var readme = document.querySelector('.markdown-body.entry-content')
var license = document.querySelector('#user-content-license')
var header = document.createElement('h2')
var table = document.createElement('table')
var body = document.createElement('tbody')

header.textContent = 'Dependencies (' + config.name + ')'
header.title = 'Toggle ' + config.name + ' table display'
header.onclick = toggleTable
header.style.display = 'none'
table.style.display = 'none'
tableHeaders.forEach(addTableHeader)
table.appendChild(body)

license = license ? license.parentNode : null
readme.insertBefore(header, license)
readme.insertBefore(table, license)

addDependencies(body, deps, config.registry, config.name)
addDependencies(body, devDeps, config.registry, config.name, true)

function addTableHeader(header) {
var tableHeader = document.createElement('th');
tableHeader.textContent = header;
table.appendChild(tableHeader);
var tableHeader = document.createElement('th')
tableHeader.textContent = header
table.appendChild(tableHeader)
}

function toggleTable() {
toggle(table);
toggle(table)
}
}

function addDependencies(body, deps, registry, name, dev) {
var className = name + (dev ? 'dep' : 'devDep');
var className = name + (dev ? 'dep' : 'devDep')
if (deps) {
body.appendChild(subHeader(dev, className))
}

for (depName in deps) {
var row = document.createElement('tr');
row.className = className;
addName(row, depName);
addVersion(row, deps[depName]);
addVersion(row, '-');
row.appendChild(document.createElement('td')); // description
body.appendChild(row);

window.getExtraPackageData(registry, depName, addExtraData.bind(row));
var row = document.createElement('tr')
row.className = className
addName(row, depName)
addVersion(row, deps[depName])
addVersion(row, '-')
row.appendChild(document.createElement('td')) // description
body.appendChild(row)

window.getExtraPackageData(registry, depName, addExtraData.bind(row))
}
}

function subHeader(dev, className) {
var row = document.createElement('tr');
var td = document.createElement('td');
var header = document.createElement('strong');

header.textContent = dev ? 'Development Dependencies' : 'Project Dependencies';
td.colSpan = tableHeaders.length;
row.style.cursor = 'pointer';
row.onclick = toggleDependencies;
td.appendChild(header);
var icon = document.createElement('div');
icon.style.float = 'right';
icon.innerHTML = open;
td.appendChild(icon);
row.appendChild(td);

return row;
var row = document.createElement('tr')
var td = document.createElement('td')
var header = document.createElement('strong')

header.textContent = dev
? 'Development Dependencies'
: 'Project Dependencies'
td.colSpan = tableHeaders.length
row.style.cursor = 'pointer'
row.onclick = toggleDependencies
td.appendChild(header)
var icon = document.createElement('div')
icon.style.float = 'right'
icon.innerHTML = open
td.appendChild(icon)
row.appendChild(td)

return row

function toggleDependencies() {
var rows = document.getElementsByClassName(className);
var rows = document.getElementsByClassName(className)
for (var i = 0; i < rows.length; i++) {
toggle(rows[i]);
toggle(rows[i])
}
var icon = td.getElementsByTagName('div')[0];
icon.innerHTML = icon.innerHTML === open ? closed : open;
var icon = td.getElementsByTagName('div')[0]
icon.innerHTML = icon.innerHTML === open ? closed : open
}
}

function addName(row, name) {
var td = document.createElement('td');
var anchor = document.createElement('a');
anchor.textContent = name;
td.appendChild(anchor);
row.appendChild(td);
var td = document.createElement('td')
var anchor = document.createElement('a')
anchor.textContent = name
td.appendChild(anchor)
row.appendChild(td)
}

function addVersion(row, version) {
var td = document.createElement('td');
var code = document.createElement('code');
var td = document.createElement('td')
var code = document.createElement('code')
if (typeof version === 'object') {
version = version.version || version.path || '-';
version = version.version || version.path || '-'
}
code.textContent = version;
td.appendChild(code);
row.appendChild(td);
code.textContent = version
td.appendChild(code)
row.appendChild(td)
}

function addExtraData(latestVersion, description, homepage) {
data = this.getElementsByTagName('td');
data = this.getElementsByTagName('td')
if (homepage) {
data[0].children[0].setAttribute('href', homepage);
data[0].children[0].setAttribute('href', homepage)
}
data[2].children[0].textContent = latestVersion;
data[3].textContent = description;
var table = this.parentNode.parentNode;
var header = table.previousSibling;

table.style.display = '';
header.style.display = '';
header.style.cursor = 'pointer';
data[2].children[0].textContent = latestVersion
data[3].textContent = description
var table = this.parentNode.parentNode
var header = table.previousSibling

table.style.display = ''
header.style.display = ''
header.style.cursor = 'pointer'
}

function toggle(element) {
element.style.display = element.style.display === 'none' ? '' : 'none';
element.style.display = element.style.display === 'none' ? '' : 'none'
}

window.display = display;
})();
window.display = display
})()
14 changes: 7 additions & 7 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
(function () {
window.packageConfig.forEach(showDependencies);
;(function() {
window.packageConfig.forEach(showDependencies)

function showDependencies(config) {
var file = document.querySelector('.files [title="' + config.file + '"]');
if (! file) return;
var file = document.querySelector('.files [title="' + config.file + '"]')
if (!file) return

var link = file.href;
window.parse(link, config, window.display);
var link = file.href
window.parse(link, config, window.display)
}
})();
})()
8 changes: 5 additions & 3 deletions src/manifest.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
{
"name": "Package Hub",
"version": "0.7.0",
"version": "0.8.0",
"manifest_version": 2,
"description": "Display dependencies for many package managers on GitHub",
"author": "Ezinwa Okpoechi",
"content_scripts": [
{
"matches": ["https://github.com/*"],
"matches": [
"https://github.com/*"
],
"js": [
"lib/toml.js",
"registry.js",
Expand All @@ -20,4 +22,4 @@
"permissions": [
"https://libraries.io/api/"
]
}
}
50 changes: 25 additions & 25 deletions src/parser.js
Original file line number Diff line number Diff line change
@@ -1,57 +1,57 @@
(function () {
;(function() {
function parse(url, config, callback) {
getPackageData(url, getDependencies);
getPackageData(url, getDependencies)

function getDependencies(text) {
var packageData = config.parse(text);
var packageData = config.parse(text)

var deps = filter(packageData[config.keys[0]], config.filter);
var devDeps = filter(packageData[config.keys[1]], config.filter);
callback(deps, devDeps, config);
var deps = filter(packageData[config.keys[0]], config.filter)
var devDeps = filter(packageData[config.keys[1]], config.filter)
callback(deps, devDeps, config)
}
}

function getPackageData(url, callback) {
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', listener);
xhr.open('GET', url);
xhr.send();
var xhr = new XMLHttpRequest()
xhr.addEventListener('load', listener)
xhr.open('GET', url)
xhr.send()

function listener() {
var parser = new DOMParser();
var doc = parser.parseFromString(this.responseText, 'text/html');
var blob = doc.querySelector('.blob-wrapper');
var parser = new DOMParser()
var doc = parser.parseFromString(this.responseText, 'text/html')
var blob = doc.querySelector('.blob-wrapper')

callback(blob.textContent);
callback(blob.textContent)
}
}

function filter(deps, configFilter) {
if (! configFilter) {
return deps;
if (!configFilter) {
return deps
}

for (name in deps) {
if (! configFilter.test(name)) {
delete deps[name];
if (!configFilter.test(name)) {
delete deps[name]
}
}

return deps;
return deps
}

function json(text) {
return JSON.parse(text);
return JSON.parse(text)
}

function toml(text) {
var nodes = window.toml.parse(text);
return window.toml.compile(nodes);
var nodes = window.toml.parse(text)
return window.toml.compile(nodes)
}

window.parse = parse;
window.parse = parse
window.parser = {
json: json,
toml: toml,
};
})();
}
})()
26 changes: 15 additions & 11 deletions src/registry.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
(function () {
var baseUrl = 'https://libraries.io/api/';
;(function() {
var baseUrl = 'https://libraries.io/api/'

function getExtraPackageData(registry, packageName, callback) {
var url = baseUrl + registry + '/' + encodeURIComponent(packageName);
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', listener);
xhr.open('GET', url);
xhr.send();
var url = baseUrl + registry + '/' + encodeURIComponent(packageName)
var xhr = new XMLHttpRequest()
xhr.addEventListener('load', listener)
xhr.open('GET', url)
xhr.send()

function listener() {
var data = JSON.parse(this.responseText);
callback(data.latest_release_number, data.description, data.repository_url);
var data = JSON.parse(this.responseText)
var homepage = data.repository_url.indexOf('.git') === -1
? data.repository_url
: data.homepage

callback(data.latest_release_number, data.description, homepage)
}
}

window.getExtraPackageData = getExtraPackageData;
})();
window.getExtraPackageData = getExtraPackageData
})()

0 comments on commit 7757191

Please sign in to comment.