diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 17321b81..26cce756 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -942,6 +942,12 @@ Perl: - .pod - .psgi +PogoScript: + type: programming + color: "#d80074" + lexer: Text only + primary_extension: .pogo + PowerShell: type: programming ace_mode: powershell diff --git a/samples/PogoScript/squashy.pogo b/samples/PogoScript/squashy.pogo new file mode 100644 index 00000000..e1d9d999 --- /dev/null +++ b/samples/PogoScript/squashy.pogo @@ -0,0 +1,44 @@ +httpism = require 'httpism' +async = require 'async' +resolve = require 'url'.resolve + +exports.squash (url) ! = + html = httpism.get ! (url).body + squash html ! (html, url) + +squash html (html, url, callback) = + replacements = sort (links in (html).concat(scripts in (html))) + for each @(r) in (replacements) @{ r.url = resolve(url, r.href) } + async.map (replacements, get) @(err, requested) + callback (err, replace (requested) in (html)) + +sort (replacements) = + replacements.sort @(a, b) @{ a.index - b.index } + +get (replacement) = + replacement.body = httpism.get ! (replacement.url).body + replacement + +replace (replacements) in (html) = + i = 0 + parts = "" + for each @(rep) in (replacements) + parts := "#(parts)#(html.substring(i, rep.index))<#(rep.tag)>#(rep.body)" + i := rep.index + rep.length + + parts + html.substr(i) + +links in (html) = + link reg = r/]*href=["']?([^"']+)["'][^\>]*(\/\>|\>\s*\<\/link\>)/gi + elements in (html) matching (link reg) as 'style' + +scripts in (html) = + script reg = r/]*src=["']?([^"']+)["'][^\>]*(\/\>|\>\s*\<\/script\>)/gi + elements in (html) matching (script reg) as 'script' + +elements in (html) matching (reg) as (tag) = + elements = [] + while (m = reg.exec (html)) + elements.push { tag = tag, index = m.index, length = m.0.length, href = m.1 } + + elements