userscript-parser
Version:
Userscript metadata parser.
39 lines (33 loc) • 832 B
JavaScript
/**
* Userscript format:
* http://wiki.greasespot.net/Metadata_Block
*/
module.exports = function extractMetablock (userscriptText) {
try {
var blocksReg = /\B(\/\/ ==UserScript==\r?\n([\S\s]*?)\r?\n\/\/ ==\/UserScript==)([\S\s]*)/
var blocks = userscriptText.match(blocksReg)
if (!blocks) {
return null
}
var metablock = blocks[1]
var metas = blocks[2]
var code = blocks[3]
var meta = {}
var metaArray = metas.split('\n')
metaArray.forEach(function (m) {
var parts = m.match(/@([\w-]+)\s+(.+)/)
if (parts) {
meta[parts[1]] = meta[parts[1]] || []
meta[parts[1]].push(parts[2])
}
})
return {
meta: meta,
metablock: metablock,
content: code
}
} catch(e) {
if (console) console.error(e)
return null
}
}