Skip to content

Instantly share code, notes, and snippets.

@willxyu
Last active June 9, 2018 15:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save willxyu/b65c509aaae9af3a60cf246d0c6b80ae to your computer and use it in GitHub Desktop.
Save willxyu/b65c509aaae9af3a60cf246d0c6b80ae to your computer and use it in GitHub Desktop.
EdenJ Mods
gsr = typeof gsr !== 'undefined' ? gsr : {}
gsr.copy = ju.clone
gsr.print = jm.print
gsr.jscr = jm.scripts
gsr.jt = jt.batch
gsr.jtev = jt.eval
gsr.ja = ja.batch
gsr.jaev = ja.eval
gsr.main = $('#output')
gsr.prefix = '<span class="mute"> > gsr:</span><span class="normal"> '
gsr.sequence = [
{desc: 'system', keyword: 'sys' },
{desc: 'Map Module', keyword: 'map' },
// {desc: 'Bash for EdenJ', keyword: 'bash'},
{desc: 'Combat', keyword: 'cb' },
{desc: 'Miscellaneous', keyword: 'misc' },
{desc: 'NDB for EdenJ', keyword: 'ndb' },
// {desc: 'Mutable Priority Entries', keyword: 'mpe'},
]
gsr.gists = {}
gsr.reg = {}
gsr.report = function(msg, fin) {
var s = gsr.prefix + msg // + '</span><span class="mute">.</span>'
if (fin) { s += '<br >' }
gsr.print(s)
}
gsr.bottom = function() {
gsr.main.scrollTop(document.getElementById('output').scrollHeight) // !important
}
gsr.reportDownload = function(name, data) {
gsr.gists[name] = data //; var t = data.responseText
}
gsr.download = function(name, url) {
return $.ajax({ url: url }).done(function(n) { var e = gsr.copy(n); gsr.reportDownload(name, e) }).fail(function() { log('Error downloading ' + url + '.') })
}
gsr.begin = function() {
var seq = gsr.copy(gsr.sequence)
var token
var gists
var list = []
if (typeof jm !== 'undefined' && typeof jm.git !== 'undefined') {
token = jm.git.token
gists = jm.git.gists
}
for (var i=0; i<seq.length; i++) {
var desc = seq[i].desc
for (var j=0; j<gists.length; j++) {
if (gists[j].description == desc) {
for (var k in gists[j].files) {
var s = gists[j].files[k].raw_url
list.push({filename: k, url: s})
}
break
}
}
}
gsr.report('Beginning system retrieval from Github. Standby.', true)
// Beautiful, chained Ajax Promises! https://stackoverflow.com/a/22736654
var p = $.when(1)
list.forEach(function(item, index) {
var k = item.filename
p = p.then(function() { return gsr.download(item.filename, item.url) }).then(function(data) { gsr.reportDownload(k, data) })
})
p.then(function() {
var c = 0
for (var k in gsr.gists) { c += 1 }
gsr.report('Completed retrieval of '+ c +' gists. Now sequencing & executing...', true)
gsr.bottom()
var seq = gsr.copy(gsr.sequence)
var gists = gsr.copy(gsr.gists)
for (var i=0; i<seq.length; i++) {
var keyw = seq[i].keyword
for (var k in gsr.gists) {
if (k.match(keyw + '.main.js')) {
gsr.load(gsr.gists[k])
break
}
}
}
})
}
gsr.load = function(str) {
try {
eval(str)
} catch(err) { console.log(err) }
}
gsr.register = function(name, data) {
gsr.report('Loading <i>' + name + '</i>')
var copy = gsr.copy
// Make the hard copy
gsr.reg[name] = {}
gsr.reg[name].scripts = copy(data.scripts)
gsr.reg[name].triggers= copy(data.triggers)
gsr.reg[name].aliases = copy(data.aliases)
var t = gsr.reg[name]
// expand scripts, triggers, aliases
gsr.expand(t)
gsr.print('.')
// Load secondary files, name.secondary.js
if (data.secondaries) {
var n = data.secondaries.split('\n')
for (var k in n) {
if (n[k].length != 0) {
var s = n[k].trim()
log('Trying to load ' + name + '.' + s + '.js')
gsr.load(gsr.gists[name + '.' + s + '.js'])
gsr.print('.')
// gsr.load('./user/'+name+'/'+name+'.'+s+'.js')
}
}
}
gsr.print(' <span class="green">&check;</span><br >')
gsr.bottom()
}
gsr.append = function(name, data) {
var copy = gsr.copy
if (gsr.reg[name]) {
var scripts = copy(data.scripts)
var triggers = copy(data.triggers)
var aliases = copy(data.aliases)
if (scripts) { gsr.reg[name].scripts += scripts }
if (triggers) { gsr.reg[name].triggers += triggers }
if (aliases) { gsr.reg[name].aliases += aliases }
}
gsr.expand(data)
}
gsr.expand = function(t) {
gsr.jscr(t.scripts) // jm.scripts(t.scripts)
gsr.jt( gsr.jtev(t.triggers) ) // jt.batch(jt.eval(t.triggers))
gsr.ja( gsr.jaev(t.aliases) ) // ja.batch(ja.eval(t.aliases))
}
gsr.begin()
/*
>> grab this file
>> save this file
>> wait for GSR
>> on GSR, run saved file
>> saved file tells us how the directory structure is, different to local files
>> saved file tells us the sequence in which to run web files
>> retrieve and run web files in sequence
*/
// sort the list, using keywords.main.js > interpret secondaries, sort secondaries, load secondaries
// console.log(list)
/*
!function( k ) {
$.ajax({ url: s, complete: function(data) { gsr.reportDownload(k, data) } })
}( k ) */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment