mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	add PogoScript detection
This commit is contained in:
		| @@ -942,6 +942,12 @@ Perl: | ||||
|   - .pod | ||||
|   - .psgi | ||||
|  | ||||
| PogoScript: | ||||
|   type: programming | ||||
|   color: "#d80074" | ||||
|   lexer: Text only | ||||
|   primary_extension: .pogo | ||||
|  | ||||
| PowerShell: | ||||
|   type: programming | ||||
|   ace_mode: powershell | ||||
|   | ||||
							
								
								
									
										44
									
								
								samples/PogoScript/squashy.pogo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								samples/PogoScript/squashy.pogo
									
									
									
									
									
										Normal file
									
								
							| @@ -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)</#(rep.tag)>" | ||||
|         i := rep.index + rep.length | ||||
|      | ||||
|     parts + html.substr(i) | ||||
|  | ||||
| links in (html) = | ||||
|     link reg = r/<link\s[^>]*href=["']?([^"']+)["'][^\>]*(\/\>|\>\s*\<\/link\>)/gi | ||||
|     elements in (html) matching (link reg) as 'style' | ||||
|  | ||||
| scripts in (html) = | ||||
|     script reg = r/<script\s[^>]*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 | ||||
		Reference in New Issue
	
	Block a user