-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
cfc2a0c
commit 7757191
Showing
6 changed files
with
142 additions
and
133 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
})() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
} | ||
})(); | ||
})() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, | ||
}; | ||
})(); | ||
} | ||
})() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
})() |