|
|
@@ -21,7 +21,7 @@ function pgsh(ev) {
|
|
|
ev.on('mount', function() {
|
|
|
document.getElementById(ev.id).onkeydown = function(e) {
|
|
|
var code = e.keyCode || e.which
|
|
|
- // Tab for file path completion
|
|
|
+ // Tab for file path completion.
|
|
|
if (code == 9) {
|
|
|
var input = ev.tags['command-line'].command.value.trim().split(' ')
|
|
|
var command = input.shift()
|
|
|
@@ -277,12 +277,13 @@ function pgsh(ev) {
|
|
|
if (part == '..' && path.length > 1) { path.pop() }
|
|
|
if (part != '..' && part) { path.push(part) }
|
|
|
})
|
|
|
- return path.length > 1 ? path.join('/') : '/'
|
|
|
+ return (path.length > 1) ? path.join('/') : '/'
|
|
|
}
|
|
|
|
|
|
- // Check if a path exists in the tree
|
|
|
+ // Check if a path exists in the tree.
|
|
|
var pathExists = function(path, isFile) {
|
|
|
- var isFile = (typeof isFile !== 'undefined') ? isFile : false; // Old way, for Safari.
|
|
|
+ // Old way of defining default values, for Safari.
|
|
|
+ var isFile = (typeof isFile !== 'undefined') ? isFile : false;
|
|
|
var parts = path.trim().split('/')
|
|
|
var fname = isFile ? parts.pop() : ''
|
|
|
var tree = self.tree
|
|
|
@@ -309,7 +310,7 @@ function pgsh(ev) {
|
|
|
parts.forEach(function(part) {
|
|
|
if (part) { tree = tree[part] }
|
|
|
})
|
|
|
- // Sort JS object. TODO not a great way.
|
|
|
+ // Sort JS object. Not a great way, but more compatible.
|
|
|
if (typeof tree === 'object') {
|
|
|
var keys = []
|
|
|
for (key in tree) {
|
|
|
@@ -325,22 +326,23 @@ function pgsh(ev) {
|
|
|
return tree
|
|
|
}
|
|
|
|
|
|
+ // Complete a given file path string based on the current tree.
|
|
|
var completePath = function(input, isFile) {
|
|
|
// Extract file fragment and get actual path.
|
|
|
var slash = input.lastIndexOf('/') + 1
|
|
|
var frag = input.substring(slash)
|
|
|
var base = input.substring(0, slash)
|
|
|
var path = resolveAbsPath(base)
|
|
|
- // Complete fragments
|
|
|
+ // Complete fragments.
|
|
|
if (pathExists(path)) {
|
|
|
var contents = getContents(path)
|
|
|
var found = ''
|
|
|
for (var name in contents) {
|
|
|
if (!isFile && typeof contents[name] === 'string') { continue }
|
|
|
if (!frag) { found = name; break }
|
|
|
- if (name.indexOf(frag) == 0) { found = name }
|
|
|
+ if (name.indexOf(frag) == 0) { found = name; break }
|
|
|
}
|
|
|
- var end = typeof contents[found] === 'object' ? '/' : ''
|
|
|
+ var end = (typeof contents[found] === 'object') ? '/' : ''
|
|
|
return base + found + end
|
|
|
}
|
|
|
return ''
|