mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Compare commits
	
		
			53 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6ab5870b59 | ||
| 
						 | 
					7dbe2bb774 | ||
| 
						 | 
					163a039e0d | ||
| 
						 | 
					9595e2ba7e | ||
| 
						 | 
					a696e3a7a2 | ||
| 
						 | 
					8336dc33e4 | ||
| 
						 | 
					94fba197d1 | ||
| 
						 | 
					3504a36c3e | ||
| 
						 | 
					c8038d1c80 | ||
| 
						 | 
					8ba8b48caf | ||
| 
						 | 
					92d0c1f3b7 | ||
| 
						 | 
					d4186bd34a | ||
| 
						 | 
					008ba9e23f | ||
| 
						 | 
					f258e4940d | ||
| 
						 | 
					a7b8e38bf3 | ||
| 
						 | 
					b65129a8e1 | ||
| 
						 | 
					6b0783936f | ||
| 
						 | 
					2a66b754c2 | ||
| 
						 | 
					460443b3c8 | ||
| 
						 | 
					cd99ab2d6e | ||
| 
						 | 
					6d07302963 | ||
| 
						 | 
					d831205f6a | ||
| 
						 | 
					a9b9e6216b | ||
| 
						 | 
					3ba090de7e | ||
| 
						 | 
					c105208481 | ||
| 
						 | 
					0c9e14eeff | ||
| 
						 | 
					2a8a5cdca9 | ||
| 
						 | 
					1f91acbd9d | ||
| 
						 | 
					3e48a84cf1 | ||
| 
						 | 
					31728a3a78 | ||
| 
						 | 
					e56a2ed6ad | ||
| 
						 | 
					35aa57657b | ||
| 
						 | 
					423c8865bd | ||
| 
						 | 
					55ecc5f7eb | ||
| 
						 | 
					6aae7882df | ||
| 
						 | 
					240fcec3ce | ||
| 
						 | 
					170c1d4ee8 | ||
| 
						 | 
					38f0a71ea3 | ||
| 
						 | 
					62936dc6b5 | ||
| 
						 | 
					fb9c784f4f | ||
| 
						 | 
					89477ed2fa | ||
| 
						 | 
					844679dcbe | ||
| 
						 | 
					47843e7e78 | ||
| 
						 | 
					85957ecf56 | ||
| 
						 | 
					4232b04571 | ||
| 
						 | 
					34f717526a | ||
| 
						 | 
					b0b94182a2 | ||
| 
						 | 
					843e196f00 | ||
| 
						 | 
					63661dfc6e | ||
| 
						 | 
					0fcc26f778 | ||
| 
						 | 
					48f2949d69 | ||
| 
						 | 
					baa3cba0fc | ||
| 
						 | 
					eb54a92328 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,4 @@
 | 
				
			|||||||
Gemfile.lock
 | 
					Gemfile.lock
 | 
				
			||||||
.bundle/
 | 
					.bundle/
 | 
				
			||||||
vendor/
 | 
					 | 
				
			||||||
benchmark/
 | 
					benchmark/
 | 
				
			||||||
lib/linguist/samples.json
 | 
					lib/linguist/samples.json
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Gemfile
									
									
									
									
									
								
							@@ -1,3 +1,2 @@
 | 
				
			|||||||
source 'https://rubygems.org'
 | 
					source 'https://rubygems.org'
 | 
				
			||||||
gemspec
 | 
					gemspec
 | 
				
			||||||
gem 'rugged', '0.21.1b2'
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										25
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								README.md
									
									
									
									
									
								
							@@ -104,9 +104,32 @@ Linguist::FileBlob.new("underscore.min.js").generated? # => true
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See [Linguist::Generated#generated?](https://github.com/github/linguist/blob/master/lib/linguist/generated.rb).
 | 
					See [Linguist::Generated#generated?](https://github.com/github/linguist/blob/master/lib/linguist/generated.rb).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Overrides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Linguist supports custom overrides for language definitions and vendored paths. Add a `.gitattributes` file to your project using the keys `linguist-language` and `linguist-vendored` with the standard git-style path matchers for the files you want to override.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ cat .gitattributes
 | 
				
			||||||
 | 
					*.rb linguist-language=Java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ linguist --breakdown
 | 
				
			||||||
 | 
					100.00% Java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Java:
 | 
				
			||||||
 | 
					ruby_file.rb
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					By default, Linguist treats all of the paths defined in [lib/linguist/vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml) as vendored and therefore doesn't include them in the language statistics for a repository. Use the `linguist-vendored` attribute to vendor or un-vendor paths.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ cat .gitattributes
 | 
				
			||||||
 | 
					special-vendored-path/* linguist-vendored
 | 
				
			||||||
 | 
					jquery.js linguist-vendored=false
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Installation
 | 
					## Installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
github.com is usually running the latest version of the `github-linguist` gem that is released on [RubyGems.org](http://rubygems.org/gems/github-linguist).
 | 
					Github.com is usually running the latest version of the `github-linguist` gem that is released on [RubyGems.org](http://rubygems.org/gems/github-linguist).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
But for development you are going to want to checkout out the source. To get it, clone the repo and run [Bundler](http://gembundler.com/) to install its dependencies.
 | 
					But for development you are going to want to checkout out the source. To get it, clone the repo and run [Bundler](http://gembundler.com/) to install its dependencies.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								Rakefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Rakefile
									
									
									
									
									
								
							@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					require 'bundler/setup'
 | 
				
			||||||
require 'json'
 | 
					require 'json'
 | 
				
			||||||
require 'rake/clean'
 | 
					require 'rake/clean'
 | 
				
			||||||
require 'rake/testtask'
 | 
					require 'rake/testtask'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
 | 
				
			|||||||
  s.add_dependency 'escape_utils',    '~> 1.0.1'
 | 
					  s.add_dependency 'escape_utils',    '~> 1.0.1'
 | 
				
			||||||
  s.add_dependency 'mime-types',      '~> 1.19'
 | 
					  s.add_dependency 'mime-types',      '~> 1.19'
 | 
				
			||||||
  s.add_dependency 'pygments.rb',     '~> 0.6.0'
 | 
					  s.add_dependency 'pygments.rb',     '~> 0.6.0'
 | 
				
			||||||
 | 
					  s.add_dependency 'rugged',          '~> 0.21.1b2'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  s.add_development_dependency 'json'
 | 
					  s.add_development_dependency 'json'
 | 
				
			||||||
  s.add_development_dependency 'mocha'
 | 
					  s.add_development_dependency 'mocha'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,6 +37,7 @@ AGS Script:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .asc
 | 
					  - .asc
 | 
				
			||||||
  - .ash
 | 
					  - .ash
 | 
				
			||||||
 | 
					  tm_scope: source.c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ANTLR:
 | 
					ANTLR:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -50,6 +51,7 @@ APL:
 | 
				
			|||||||
  color: "#8a0707"
 | 
					  color: "#8a0707"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .apl
 | 
					  - .apl
 | 
				
			||||||
 | 
					  - .dyalog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ASP:
 | 
					ASP:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -79,6 +81,7 @@ ATS:
 | 
				
			|||||||
  - .atxt
 | 
					  - .atxt
 | 
				
			||||||
  - .hats
 | 
					  - .hats
 | 
				
			||||||
  - .sats
 | 
					  - .sats
 | 
				
			||||||
 | 
					  tm_scope: source.ocaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ActionScript:
 | 
					ActionScript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -117,12 +120,14 @@ ApacheConf:
 | 
				
			|||||||
  - apache
 | 
					  - apache
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .apacheconf
 | 
					  - .apacheconf
 | 
				
			||||||
 | 
					  tm_scope: source.apache-config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Apex:
 | 
					Apex:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
  lexer: Java
 | 
					  lexer: Java
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cls
 | 
					  - .cls
 | 
				
			||||||
 | 
					  tm_scope: source.java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AppleScript:
 | 
					AppleScript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -147,6 +152,7 @@ Arduino:
 | 
				
			|||||||
  lexer: C++
 | 
					  lexer: C++
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ino
 | 
					  - .ino
 | 
				
			||||||
 | 
					  tm_scope: source.c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AsciiDoc:
 | 
					AsciiDoc:
 | 
				
			||||||
  type: prose
 | 
					  type: prose
 | 
				
			||||||
@@ -174,6 +180,8 @@ Assembly:
 | 
				
			|||||||
  - nasm
 | 
					  - nasm
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .asm
 | 
					  - .asm
 | 
				
			||||||
 | 
					  - .a51
 | 
				
			||||||
 | 
					  tm_scope: source.asm.x86
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Augeas:
 | 
					Augeas:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -198,6 +206,7 @@ AutoIt:
 | 
				
			|||||||
  - AutoItScript
 | 
					  - AutoItScript
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .au3
 | 
					  - .au3
 | 
				
			||||||
 | 
					  tm_scope: source.autoit.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Awk:
 | 
					Awk:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -223,6 +232,7 @@ Batchfile:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .bat
 | 
					  - .bat
 | 
				
			||||||
  - .cmd
 | 
					  - .cmd
 | 
				
			||||||
 | 
					  tm_scope: source.dosbatch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Befunge:
 | 
					Befunge:
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
@@ -236,6 +246,7 @@ BlitzBasic:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .bb
 | 
					  - .bb
 | 
				
			||||||
  - .decls
 | 
					  - .decls
 | 
				
			||||||
 | 
					  tm_scope: source.blitzmax
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BlitzMax:
 | 
					BlitzMax:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -248,6 +259,7 @@ Bluespec:
 | 
				
			|||||||
  lexer: verilog
 | 
					  lexer: verilog
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .bsv
 | 
					  - .bsv
 | 
				
			||||||
 | 
					  tm_scope: source.verilog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Boo:
 | 
					Boo:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -259,6 +271,7 @@ Brainfuck:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .b
 | 
					  - .b
 | 
				
			||||||
  - .bf
 | 
					  - .bf
 | 
				
			||||||
 | 
					  tm_scope: source.bf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Brightscript:
 | 
					Brightscript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -322,6 +335,7 @@ C-ObjDump:
 | 
				
			|||||||
  lexer: c-objdump
 | 
					  lexer: c-objdump
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .c-objdump
 | 
					  - .c-objdump
 | 
				
			||||||
 | 
					  tm_scope: objdump.x86asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
C2hs Haskell:
 | 
					C2hs Haskell:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -331,6 +345,7 @@ C2hs Haskell:
 | 
				
			|||||||
  - c2hs
 | 
					  - c2hs
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .chs
 | 
					  - .chs
 | 
				
			||||||
 | 
					  tm_scope: source.haskell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CLIPS:
 | 
					CLIPS:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -378,6 +393,7 @@ ChucK:
 | 
				
			|||||||
  lexer: Java
 | 
					  lexer: Java
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ck
 | 
					  - .ck
 | 
				
			||||||
 | 
					  tm_scope: source.java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cirru:
 | 
					Cirru:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -441,6 +457,7 @@ ColdFusion:
 | 
				
			|||||||
  - cfml
 | 
					  - cfml
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cfm
 | 
					  - .cfm
 | 
				
			||||||
 | 
					  tm_scope: text.html.cfm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ColdFusion CFC:
 | 
					ColdFusion CFC:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -453,6 +470,7 @@ ColdFusion CFC:
 | 
				
			|||||||
  - cfc
 | 
					  - cfc
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cfc
 | 
					  - .cfc
 | 
				
			||||||
 | 
					  tm_scope: source.cfscript
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Common Lisp:
 | 
					Common Lisp:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -481,6 +499,7 @@ Component Pascal:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cp
 | 
					  - .cp
 | 
				
			||||||
  - .cps
 | 
					  - .cps
 | 
				
			||||||
 | 
					  tm_scope: source.pascal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Coq:
 | 
					Coq:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -495,6 +514,7 @@ Cpp-ObjDump:
 | 
				
			|||||||
  - .cppobjdump
 | 
					  - .cppobjdump
 | 
				
			||||||
  - .c++objdump
 | 
					  - .c++objdump
 | 
				
			||||||
  - .cxx-objdump
 | 
					  - .cxx-objdump
 | 
				
			||||||
 | 
					  tm_scope: objdump.x86asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Creole:
 | 
					Creole:
 | 
				
			||||||
  type: prose
 | 
					  type: prose
 | 
				
			||||||
@@ -509,11 +529,13 @@ Crystal:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cr
 | 
					  - .cr
 | 
				
			||||||
  ace_mode: ruby
 | 
					  ace_mode: ruby
 | 
				
			||||||
 | 
					  tm_scope: source.ruby
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cucumber:
 | 
					Cucumber:
 | 
				
			||||||
  lexer: Gherkin
 | 
					  lexer: Gherkin
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .feature
 | 
					  - .feature
 | 
				
			||||||
 | 
					  tm_scope: text.gherkin.feature
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cuda:
 | 
					Cuda:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -521,12 +543,14 @@ Cuda:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cu
 | 
					  - .cu
 | 
				
			||||||
  - .cuh
 | 
					  - .cuh
 | 
				
			||||||
 | 
					  tm_scope: source.cuda-c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cycript:
 | 
					Cycript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
  lexer: JavaScript
 | 
					  lexer: JavaScript
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cy
 | 
					  - .cy
 | 
				
			||||||
 | 
					  tm_scope: source.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cython:
 | 
					Cython:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -548,6 +572,7 @@ D-ObjDump:
 | 
				
			|||||||
  lexer: d-objdump
 | 
					  lexer: d-objdump
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .d-objdump
 | 
					  - .d-objdump
 | 
				
			||||||
 | 
					  tm_scope: objdump.x86asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DM:
 | 
					DM:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -557,6 +582,7 @@ DM:
 | 
				
			|||||||
  - .dm
 | 
					  - .dm
 | 
				
			||||||
  aliases:
 | 
					  aliases:
 | 
				
			||||||
  - byond
 | 
					  - byond
 | 
				
			||||||
 | 
					  tm_scope: source.c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DOT:
 | 
					DOT:
 | 
				
			||||||
  type: data
 | 
					  type: data
 | 
				
			||||||
@@ -612,6 +638,7 @@ Ecere Projects:
 | 
				
			|||||||
  lexer: JSON
 | 
					  lexer: JSON
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .epj
 | 
					  - .epj
 | 
				
			||||||
 | 
					  tm_scope: source.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ECL:
 | 
					ECL:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -628,6 +655,7 @@ Eagle:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .sch
 | 
					  - .sch
 | 
				
			||||||
  - .brd
 | 
					  - .brd
 | 
				
			||||||
 | 
					  tm_scope: text.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Eiffel:
 | 
					Eiffel:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -648,6 +676,7 @@ Elm:
 | 
				
			|||||||
  lexer: Haskell
 | 
					  lexer: Haskell
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .elm
 | 
					  - .elm
 | 
				
			||||||
 | 
					  tm_scope: source.haskell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Emacs Lisp:
 | 
					Emacs Lisp:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -670,6 +699,7 @@ EmberScript:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .em
 | 
					  - .em
 | 
				
			||||||
  - .emberscript
 | 
					  - .emberscript
 | 
				
			||||||
 | 
					  tm_scope: source.coffee
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Erlang:
 | 
					Erlang:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -690,6 +720,7 @@ F#:
 | 
				
			|||||||
  - .fs
 | 
					  - .fs
 | 
				
			||||||
  - .fsi
 | 
					  - .fsi
 | 
				
			||||||
  - .fsx
 | 
					  - .fsx
 | 
				
			||||||
 | 
					  tm_scope: source.fsharp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FLUX:
 | 
					FLUX:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -744,6 +775,7 @@ Fantom:
 | 
				
			|||||||
  color: "#dbded5"
 | 
					  color: "#dbded5"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .fan
 | 
					  - .fan
 | 
				
			||||||
 | 
					  tm_scope: source.fan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Forth:
 | 
					Forth:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -761,6 +793,7 @@ Frege:
 | 
				
			|||||||
  lexer: Haskell
 | 
					  lexer: Haskell
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .fr
 | 
					  - .fr
 | 
				
			||||||
 | 
					  tm_scope: source.haskell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G-code:
 | 
					G-code:
 | 
				
			||||||
  type: data
 | 
					  type: data
 | 
				
			||||||
@@ -776,6 +809,7 @@ Game Maker Language:
 | 
				
			|||||||
  lexer: JavaScript
 | 
					  lexer: JavaScript
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .gml
 | 
					  - .gml
 | 
				
			||||||
 | 
					  tm_scope: source.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GAMS:
 | 
					GAMS:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -825,18 +859,21 @@ GLSL:
 | 
				
			|||||||
Genshi:
 | 
					Genshi:
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .kid
 | 
					  - .kid
 | 
				
			||||||
 | 
					  tm_scope: text.xml.genshi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Gentoo Ebuild:
 | 
					Gentoo Ebuild:
 | 
				
			||||||
  group: Shell
 | 
					  group: Shell
 | 
				
			||||||
  lexer: Bash
 | 
					  lexer: Bash
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ebuild
 | 
					  - .ebuild
 | 
				
			||||||
 | 
					  tm_scope: source.shell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Gentoo Eclass:
 | 
					Gentoo Eclass:
 | 
				
			||||||
  group: Shell
 | 
					  group: Shell
 | 
				
			||||||
  lexer: Bash
 | 
					  lexer: Bash
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .eclass
 | 
					  - .eclass
 | 
				
			||||||
 | 
					  tm_scope: source.shell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Gettext Catalog:
 | 
					Gettext Catalog:
 | 
				
			||||||
  search_term: pot
 | 
					  search_term: pot
 | 
				
			||||||
@@ -846,6 +883,7 @@ Gettext Catalog:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .po
 | 
					  - .po
 | 
				
			||||||
  - .pot
 | 
					  - .pot
 | 
				
			||||||
 | 
					  tm_scope: source.po
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Glyph:
 | 
					Glyph:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -853,6 +891,7 @@ Glyph:
 | 
				
			|||||||
  lexer: Tcl
 | 
					  lexer: Tcl
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .glf
 | 
					  - .glf
 | 
				
			||||||
 | 
					  tm_scope: source.tcl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Gnuplot:
 | 
					Gnuplot:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -879,6 +918,7 @@ Gosu:
 | 
				
			|||||||
  - .gst
 | 
					  - .gst
 | 
				
			||||||
  - .gsx
 | 
					  - .gsx
 | 
				
			||||||
  - .vark
 | 
					  - .vark
 | 
				
			||||||
 | 
					  tm_scope: source.gosu.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Grace:
 | 
					Grace:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -896,6 +936,7 @@ Grammatical Framework:
 | 
				
			|||||||
  - .gf
 | 
					  - .gf
 | 
				
			||||||
  searchable: true
 | 
					  searchable: true
 | 
				
			||||||
  color: "#ff0000"
 | 
					  color: "#ff0000"
 | 
				
			||||||
 | 
					  tm_scope: source.haskell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Graph Modeling Language:
 | 
					Graph Modeling Language:
 | 
				
			||||||
  type: data
 | 
					  type: data
 | 
				
			||||||
@@ -913,6 +954,7 @@ Groff:
 | 
				
			|||||||
  - '.5'
 | 
					  - '.5'
 | 
				
			||||||
  - '.6'
 | 
					  - '.6'
 | 
				
			||||||
  - '.7'
 | 
					  - '.7'
 | 
				
			||||||
 | 
					  tm_scope: text.groff
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Groovy:
 | 
					Groovy:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -934,6 +976,7 @@ Groovy Server Pages:
 | 
				
			|||||||
  - gsp
 | 
					  - gsp
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .gsp
 | 
					  - .gsp
 | 
				
			||||||
 | 
					  tm_scope: text.html.jsp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HTML:
 | 
					HTML:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -958,7 +1001,7 @@ HTML+Django:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
HTML+ERB:
 | 
					HTML+ERB:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
  tm_scope: text.html.ruby
 | 
					  tm_scope: text.html.erb
 | 
				
			||||||
  group: HTML
 | 
					  group: HTML
 | 
				
			||||||
  lexer: RHTML
 | 
					  lexer: RHTML
 | 
				
			||||||
  aliases:
 | 
					  aliases:
 | 
				
			||||||
@@ -989,9 +1032,12 @@ Haml:
 | 
				
			|||||||
Handlebars:
 | 
					Handlebars:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
  lexer: Handlebars
 | 
					  lexer: Handlebars
 | 
				
			||||||
 | 
					  aliases:
 | 
				
			||||||
 | 
					  - hbs
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .handlebars
 | 
					  - .handlebars
 | 
				
			||||||
  - .hbs
 | 
					  - .hbs
 | 
				
			||||||
 | 
					  tm_scope: text.html.handlebars
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Harbour:
 | 
					Harbour:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1014,6 +1060,7 @@ Haxe:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .hx
 | 
					  - .hx
 | 
				
			||||||
  - .hxsl
 | 
					  - .hxsl
 | 
				
			||||||
 | 
					  tm_scope: source.haxe.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Hy:
 | 
					Hy:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1043,6 +1090,7 @@ INI:
 | 
				
			|||||||
  - .ini
 | 
					  - .ini
 | 
				
			||||||
  - .prefs
 | 
					  - .prefs
 | 
				
			||||||
  - .properties
 | 
					  - .properties
 | 
				
			||||||
 | 
					  tm_scope: source.ini
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Inno Setup:
 | 
					Inno Setup:
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
@@ -1063,6 +1111,7 @@ Inform 7:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ni
 | 
					  - .ni
 | 
				
			||||||
  - .i7x
 | 
					  - .i7x
 | 
				
			||||||
 | 
					  tm_scope: source.inform
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Inno Setup:
 | 
					Inno Setup:
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
@@ -1128,6 +1177,7 @@ JSON5:
 | 
				
			|||||||
  lexer: JavaScript
 | 
					  lexer: JavaScript
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .json5
 | 
					  - .json5
 | 
				
			||||||
 | 
					  tm_scope: source.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JSONLD:
 | 
					JSONLD:
 | 
				
			||||||
  type: data
 | 
					  type: data
 | 
				
			||||||
@@ -1136,6 +1186,7 @@ JSONLD:
 | 
				
			|||||||
  lexer: JavaScript
 | 
					  lexer: JavaScript
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .jsonld
 | 
					  - .jsonld
 | 
				
			||||||
 | 
					  tm_scope: source.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JSONiq:
 | 
					JSONiq:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1143,12 +1194,14 @@ JSONiq:
 | 
				
			|||||||
  lexer: XQuery
 | 
					  lexer: XQuery
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .jq
 | 
					  - .jq
 | 
				
			||||||
 | 
					  tm_scope: source.xquery
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Jade:
 | 
					Jade:
 | 
				
			||||||
  group: HTML
 | 
					  group: HTML
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .jade
 | 
					  - .jade
 | 
				
			||||||
 | 
					  tm_scope: source.jade
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Java:
 | 
					Java:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1165,6 +1218,7 @@ Java Server Pages:
 | 
				
			|||||||
  - jsp
 | 
					  - jsp
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .jsp
 | 
					  - .jsp
 | 
				
			||||||
 | 
					  tm_scope: text.html.jsp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JavaScript:
 | 
					JavaScript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1216,6 +1270,7 @@ Kit:
 | 
				
			|||||||
  ace_mode: html
 | 
					  ace_mode: html
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .kit
 | 
					  - .kit
 | 
				
			||||||
 | 
					  tm_scope: text.html.basic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Kotlin:
 | 
					Kotlin:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1223,6 +1278,7 @@ Kotlin:
 | 
				
			|||||||
  - .kt
 | 
					  - .kt
 | 
				
			||||||
  - .ktm
 | 
					  - .ktm
 | 
				
			||||||
  - .kts
 | 
					  - .kts
 | 
				
			||||||
 | 
					  tm_scope: source.Kotlin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LFE:
 | 
					LFE:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1231,11 +1287,19 @@ LFE:
 | 
				
			|||||||
  color: "#004200"
 | 
					  color: "#004200"
 | 
				
			||||||
  lexer: Common Lisp
 | 
					  lexer: Common Lisp
 | 
				
			||||||
  group: Erlang
 | 
					  group: Erlang
 | 
				
			||||||
 | 
					  tm_scope: source.lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LLVM:
 | 
					LLVM:
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ll
 | 
					  - .ll
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LOLCODE:
 | 
				
			||||||
 | 
					  type: programming
 | 
				
			||||||
 | 
					  lexer: Text only
 | 
				
			||||||
 | 
					  extensions:
 | 
				
			||||||
 | 
					  - .lol
 | 
				
			||||||
 | 
					  color: "#cc9900"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LSL:
 | 
					LSL:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
  lexer: LSL
 | 
					  lexer: LSL
 | 
				
			||||||
@@ -1261,6 +1325,7 @@ Lasso:
 | 
				
			|||||||
  - .las
 | 
					  - .las
 | 
				
			||||||
  - .lasso9
 | 
					  - .lasso9
 | 
				
			||||||
  - .ldml
 | 
					  - .ldml
 | 
				
			||||||
 | 
					  tm_scope: file.lasso
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Latte:
 | 
					Latte:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -1269,6 +1334,7 @@ Latte:
 | 
				
			|||||||
  lexer: Smarty
 | 
					  lexer: Smarty
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .latte
 | 
					  - .latte
 | 
				
			||||||
 | 
					  tm_scope: source.smarty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Less:
 | 
					Less:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -1276,6 +1342,7 @@ Less:
 | 
				
			|||||||
  lexer: CSS
 | 
					  lexer: CSS
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .less
 | 
					  - .less
 | 
				
			||||||
 | 
					  tm_scope: source.css
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LilyPond:
 | 
					LilyPond:
 | 
				
			||||||
  lexer: Text only
 | 
					  lexer: Text only
 | 
				
			||||||
@@ -1316,6 +1383,7 @@ Literate Haskell:
 | 
				
			|||||||
  - lhs
 | 
					  - lhs
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .lhs
 | 
					  - .lhs
 | 
				
			||||||
 | 
					  tm_scope: text.tex.latex.haskell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LiveScript:
 | 
					LiveScript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1347,6 +1415,7 @@ LookML:
 | 
				
			|||||||
  color: "#652B81"
 | 
					  color: "#652B81"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .lookml
 | 
					  - .lookml
 | 
				
			||||||
 | 
					  tm_scope: source.yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Lua:
 | 
					Lua:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1354,6 +1423,7 @@ Lua:
 | 
				
			|||||||
  color: "#fa1fa1"
 | 
					  color: "#fa1fa1"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .lua
 | 
					  - .lua
 | 
				
			||||||
 | 
					  - .fcgi
 | 
				
			||||||
  - .nse
 | 
					  - .nse
 | 
				
			||||||
  - .pd_lua
 | 
					  - .pd_lua
 | 
				
			||||||
  - .rbxs
 | 
					  - .rbxs
 | 
				
			||||||
@@ -1368,6 +1438,7 @@ M:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .mumps
 | 
					  - .mumps
 | 
				
			||||||
  - .m
 | 
					  - .m
 | 
				
			||||||
 | 
					  tm_scope: source.lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MTML:
 | 
					MTML:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -1375,6 +1446,7 @@ MTML:
 | 
				
			|||||||
  color: "#0095d9"
 | 
					  color: "#0095d9"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .mtml
 | 
					  - .mtml
 | 
				
			||||||
 | 
					  tm_scope: text.html.basic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Makefile:
 | 
					Makefile:
 | 
				
			||||||
  aliases:
 | 
					  aliases:
 | 
				
			||||||
@@ -1393,6 +1465,7 @@ Mako:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .mako
 | 
					  - .mako
 | 
				
			||||||
  - .mao
 | 
					  - .mao
 | 
				
			||||||
 | 
					  tm_scope: text.html.mako
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Markdown:
 | 
					Markdown:
 | 
				
			||||||
  type: prose
 | 
					  type: prose
 | 
				
			||||||
@@ -1406,6 +1479,7 @@ Markdown:
 | 
				
			|||||||
  - .mkdn
 | 
					  - .mkdn
 | 
				
			||||||
  - .mkdown
 | 
					  - .mkdown
 | 
				
			||||||
  - .ron
 | 
					  - .ron
 | 
				
			||||||
 | 
					  tm_scope: text.html.markdown
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Mask:
 | 
					Mask:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -1414,6 +1488,7 @@ Mask:
 | 
				
			|||||||
  ace_mode: scss
 | 
					  ace_mode: scss
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .mask
 | 
					  - .mask
 | 
				
			||||||
 | 
					  tm_scope: source.scss
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Mathematica:
 | 
					Mathematica:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1444,6 +1519,7 @@ Max:
 | 
				
			|||||||
  - .maxproj
 | 
					  - .maxproj
 | 
				
			||||||
  - .mxt
 | 
					  - .mxt
 | 
				
			||||||
  - .pat
 | 
					  - .pat
 | 
				
			||||||
 | 
					  tm_scope: source.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MediaWiki:
 | 
					MediaWiki:
 | 
				
			||||||
  type: prose
 | 
					  type: prose
 | 
				
			||||||
@@ -1460,6 +1536,7 @@ Mercury:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .m
 | 
					  - .m
 | 
				
			||||||
  - .moo
 | 
					  - .moo
 | 
				
			||||||
 | 
					  tm_scope: source.prolog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MiniD: # Legacy
 | 
					MiniD: # Legacy
 | 
				
			||||||
  searchable: false
 | 
					  searchable: false
 | 
				
			||||||
@@ -1476,6 +1553,7 @@ Mirah:
 | 
				
			|||||||
  - .duby
 | 
					  - .duby
 | 
				
			||||||
  - .mir
 | 
					  - .mir
 | 
				
			||||||
  - .mirah
 | 
					  - .mirah
 | 
				
			||||||
 | 
					  tm_scope: source.ruby
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Monkey:
 | 
					Monkey:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1515,12 +1593,14 @@ NetLogo:
 | 
				
			|||||||
  color: "#ff2b2b"
 | 
					  color: "#ff2b2b"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .nlogo
 | 
					  - .nlogo
 | 
				
			||||||
 | 
					  tm_scope: source.lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Nginx:
 | 
					Nginx:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
  lexer: Nginx configuration file
 | 
					  lexer: Nginx configuration file
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .nginxconf
 | 
					  - .nginxconf
 | 
				
			||||||
 | 
					  tm_scope: source.nginx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Nimrod:
 | 
					Nimrod:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1552,6 +1632,7 @@ Nu:
 | 
				
			|||||||
  - .nu
 | 
					  - .nu
 | 
				
			||||||
  filenames:
 | 
					  filenames:
 | 
				
			||||||
  - Nukefile
 | 
					  - Nukefile
 | 
				
			||||||
 | 
					  tm_scope: source.scheme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NumPy:
 | 
					NumPy:
 | 
				
			||||||
  group: Python
 | 
					  group: Python
 | 
				
			||||||
@@ -1578,6 +1659,7 @@ ObjDump:
 | 
				
			|||||||
  lexer: objdump
 | 
					  lexer: objdump
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .objdump
 | 
					  - .objdump
 | 
				
			||||||
 | 
					  tm_scope: objdump.x86asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Objective-C:
 | 
					Objective-C:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1608,6 +1690,7 @@ Objective-J:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .j
 | 
					  - .j
 | 
				
			||||||
  - .sj
 | 
					  - .sj
 | 
				
			||||||
 | 
					  tm_scope: source.js.objj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Omgrofl:
 | 
					Omgrofl:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1635,6 +1718,7 @@ OpenCL:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .cl
 | 
					  - .cl
 | 
				
			||||||
  - .opencl
 | 
					  - .opencl
 | 
				
			||||||
 | 
					  tm_scope: source.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OpenEdge ABL:
 | 
					OpenEdge ABL:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1645,6 +1729,7 @@ OpenEdge ABL:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .p
 | 
					  - .p
 | 
				
			||||||
  - .cls
 | 
					  - .cls
 | 
				
			||||||
 | 
					  tm_scope: source.abl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OpenSCAD:
 | 
					OpenSCAD:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1680,6 +1765,7 @@ PAWN:
 | 
				
			|||||||
  color: "#dbb284"
 | 
					  color: "#dbb284"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .pwn
 | 
					  - .pwn
 | 
				
			||||||
 | 
					  tm_scope: source.c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PHP:
 | 
					PHP:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1690,6 +1776,7 @@ PHP:
 | 
				
			|||||||
  - .php
 | 
					  - .php
 | 
				
			||||||
  - .aw
 | 
					  - .aw
 | 
				
			||||||
  - .ctp
 | 
					  - .ctp
 | 
				
			||||||
 | 
					  - .fcgi
 | 
				
			||||||
  - .module
 | 
					  - .module
 | 
				
			||||||
  - .php3
 | 
					  - .php3
 | 
				
			||||||
  - .php4
 | 
					  - .php4
 | 
				
			||||||
@@ -1810,6 +1897,7 @@ PostScript:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ps
 | 
					  - .ps
 | 
				
			||||||
  - .eps
 | 
					  - .eps
 | 
				
			||||||
 | 
					  tm_scope: source.postscript
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PowerShell:
 | 
					PowerShell:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1852,6 +1940,7 @@ Protocol Buffer:
 | 
				
			|||||||
  - Protocol Buffers
 | 
					  - Protocol Buffers
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .proto
 | 
					  - .proto
 | 
				
			||||||
 | 
					  tm_scope: source.protobuf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Puppet:
 | 
					Puppet:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1874,6 +1963,7 @@ PureScript:
 | 
				
			|||||||
  lexer: Haskell
 | 
					  lexer: Haskell
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .purs
 | 
					  - .purs
 | 
				
			||||||
 | 
					  tm_scope: source.haskell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Python:
 | 
					Python:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1882,6 +1972,7 @@ Python:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .py
 | 
					  - .py
 | 
				
			||||||
  - .cgi
 | 
					  - .cgi
 | 
				
			||||||
 | 
					  - .fcgi
 | 
				
			||||||
  - .gyp
 | 
					  - .gyp
 | 
				
			||||||
  - .lmi
 | 
					  - .lmi
 | 
				
			||||||
  - .pyde
 | 
					  - .pyde
 | 
				
			||||||
@@ -1910,6 +2001,7 @@ QML:
 | 
				
			|||||||
  color: "#44a51c"
 | 
					  color: "#44a51c"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .qml
 | 
					  - .qml
 | 
				
			||||||
 | 
					  tm_scope: source.qml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QMake:
 | 
					QMake:
 | 
				
			||||||
  lexer: Text only
 | 
					  lexer: Text only
 | 
				
			||||||
@@ -1942,6 +2034,7 @@ RDoc:
 | 
				
			|||||||
  wrap: true
 | 
					  wrap: true
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .rdoc
 | 
					  - .rdoc
 | 
				
			||||||
 | 
					  tm_scope: text.rdoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REALbasic:
 | 
					REALbasic:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -1953,12 +2046,14 @@ REALbasic:
 | 
				
			|||||||
  - .rbres
 | 
					  - .rbres
 | 
				
			||||||
  - .rbtbar
 | 
					  - .rbtbar
 | 
				
			||||||
  - .rbuistate
 | 
					  - .rbuistate
 | 
				
			||||||
 | 
					  tm_scope: source.vbnet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RHTML:
 | 
					RHTML:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
  group: HTML
 | 
					  group: HTML
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .rhtml
 | 
					  - .rhtml
 | 
				
			||||||
 | 
					  tm_scope: text.html.ruby
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RMarkdown:
 | 
					RMarkdown:
 | 
				
			||||||
  type: prose
 | 
					  type: prose
 | 
				
			||||||
@@ -1978,6 +2073,7 @@ Racket:
 | 
				
			|||||||
  - .rktd
 | 
					  - .rktd
 | 
				
			||||||
  - .rktl
 | 
					  - .rktl
 | 
				
			||||||
  - .scrbl
 | 
					  - .scrbl
 | 
				
			||||||
 | 
					  tm_scope: source.scheme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ragel in Ruby Host:
 | 
					Ragel in Ruby Host:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2021,6 +2117,7 @@ RobotFramework:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .robot
 | 
					  - .robot
 | 
				
			||||||
  # - .txt
 | 
					  # - .txt
 | 
				
			||||||
 | 
					  tm_scope: text.robot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Rouge:
 | 
					Rouge:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2029,6 +2126,7 @@ Rouge:
 | 
				
			|||||||
  color: "#cc0088"
 | 
					  color: "#cc0088"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .rg
 | 
					  - .rg
 | 
				
			||||||
 | 
					  tm_scope: source.clojure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ruby:
 | 
					Ruby:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2043,6 +2141,7 @@ Ruby:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .rb
 | 
					  - .rb
 | 
				
			||||||
  - .builder
 | 
					  - .builder
 | 
				
			||||||
 | 
					  - .fcgi
 | 
				
			||||||
  - .gemspec
 | 
					  - .gemspec
 | 
				
			||||||
  - .god
 | 
					  - .god
 | 
				
			||||||
  - .irbrc
 | 
					  - .irbrc
 | 
				
			||||||
@@ -2103,6 +2202,7 @@ SQF:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .sqf
 | 
					  - .sqf
 | 
				
			||||||
  - .hqf
 | 
					  - .hqf
 | 
				
			||||||
 | 
					  tm_scope: source.c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SQL:
 | 
					SQL:
 | 
				
			||||||
  type: data
 | 
					  type: data
 | 
				
			||||||
@@ -2121,6 +2221,7 @@ STON:
 | 
				
			|||||||
  lexer: JSON
 | 
					  lexer: JSON
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ston
 | 
					  - .ston
 | 
				
			||||||
 | 
					  tm_scope: source.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sage:
 | 
					Sage:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2128,6 +2229,7 @@ Sage:
 | 
				
			|||||||
  group: Python
 | 
					  group: Python
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .sage
 | 
					  - .sage
 | 
				
			||||||
 | 
					  tm_scope: source.python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sass:
 | 
					Sass:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -2151,6 +2253,7 @@ Scaml:
 | 
				
			|||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .scaml
 | 
					  - .scaml
 | 
				
			||||||
 | 
					  tm_scope: source.scaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Scheme:
 | 
					Scheme:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2195,6 +2298,8 @@ Shell:
 | 
				
			|||||||
  - .bash
 | 
					  - .bash
 | 
				
			||||||
  - .bats
 | 
					  - .bats
 | 
				
			||||||
  - .cgi
 | 
					  - .cgi
 | 
				
			||||||
 | 
					  - .command
 | 
				
			||||||
 | 
					  - .fcgi
 | 
				
			||||||
  - .tmux
 | 
					  - .tmux
 | 
				
			||||||
  - .zsh
 | 
					  - .zsh
 | 
				
			||||||
  interpreters:
 | 
					  interpreters:
 | 
				
			||||||
@@ -2222,6 +2327,7 @@ Slash:
 | 
				
			|||||||
  color: "#007eff"
 | 
					  color: "#007eff"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .sl
 | 
					  - .sl
 | 
				
			||||||
 | 
					  tm_scope: text.html.slash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Slim:
 | 
					Slim:
 | 
				
			||||||
  group: HTML
 | 
					  group: HTML
 | 
				
			||||||
@@ -2248,12 +2354,14 @@ SourcePawn:
 | 
				
			|||||||
  - sourcemod
 | 
					  - sourcemod
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .sp
 | 
					  - .sp
 | 
				
			||||||
 | 
					  tm_scope: source.sp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Squirrel:
 | 
					Squirrel:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
  lexer: C++
 | 
					  lexer: C++
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .nut
 | 
					  - .nut
 | 
				
			||||||
 | 
					  tm_scope: source.c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Standard ML:
 | 
					Standard ML:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2265,6 +2373,7 @@ Standard ML:
 | 
				
			|||||||
  - .fun
 | 
					  - .fun
 | 
				
			||||||
  - .sig
 | 
					  - .sig
 | 
				
			||||||
  - .sml
 | 
					  - .sml
 | 
				
			||||||
 | 
					  tm_scope: source.ml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Stata:
 | 
					Stata:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2312,6 +2421,7 @@ TOML:
 | 
				
			|||||||
  type: data
 | 
					  type: data
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .toml
 | 
					  - .toml
 | 
				
			||||||
 | 
					  tm_scope: source.toml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TXL:
 | 
					TXL:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2326,6 +2436,9 @@ Tcl:
 | 
				
			|||||||
  - .tcl
 | 
					  - .tcl
 | 
				
			||||||
  - .adp
 | 
					  - .adp
 | 
				
			||||||
  - .tm
 | 
					  - .tm
 | 
				
			||||||
 | 
					  interpreters:
 | 
				
			||||||
 | 
					  - tclsh
 | 
				
			||||||
 | 
					  - wish
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Tcsh:
 | 
					Tcsh:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2333,6 +2446,7 @@ Tcsh:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .tcsh
 | 
					  - .tcsh
 | 
				
			||||||
  - .csh
 | 
					  - .csh
 | 
				
			||||||
 | 
					  tm_scope: source.shell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TeX:
 | 
					TeX:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -2362,6 +2476,7 @@ Tea:
 | 
				
			|||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .tea
 | 
					  - .tea
 | 
				
			||||||
 | 
					  tm_scope: source.tea
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Textile:
 | 
					Textile:
 | 
				
			||||||
  type: prose
 | 
					  type: prose
 | 
				
			||||||
@@ -2385,6 +2500,7 @@ Twig:
 | 
				
			|||||||
  lexer: HTML+Django/Jinja
 | 
					  lexer: HTML+Django/Jinja
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .twig
 | 
					  - .twig
 | 
				
			||||||
 | 
					  tm_scope: text.html.twig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TypeScript:
 | 
					TypeScript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2393,6 +2509,7 @@ TypeScript:
 | 
				
			|||||||
  - ts
 | 
					  - ts
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .ts
 | 
					  - .ts
 | 
				
			||||||
 | 
					  tm_scope: source.ts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Unified Parallel C:
 | 
					Unified Parallel C:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2402,6 +2519,7 @@ Unified Parallel C:
 | 
				
			|||||||
  color: "#755223"
 | 
					  color: "#755223"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .upc
 | 
					  - .upc
 | 
				
			||||||
 | 
					  tm_scope: source.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
UnrealScript:
 | 
					UnrealScript:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2409,6 +2527,7 @@ UnrealScript:
 | 
				
			|||||||
  lexer: Java
 | 
					  lexer: Java
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .uc
 | 
					  - .uc
 | 
				
			||||||
 | 
					  tm_scope: source.java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VCL:
 | 
					VCL:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2417,6 +2536,7 @@ VCL:
 | 
				
			|||||||
  color: "#0298c3"
 | 
					  color: "#0298c3"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .vcl
 | 
					  - .vcl
 | 
				
			||||||
 | 
					  tm_scope: source.perl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VHDL:
 | 
					VHDL:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2457,6 +2577,7 @@ VimL:
 | 
				
			|||||||
  - .vim
 | 
					  - .vim
 | 
				
			||||||
  filenames:
 | 
					  filenames:
 | 
				
			||||||
  - .vimrc
 | 
					  - .vimrc
 | 
				
			||||||
 | 
					  - _vimrc
 | 
				
			||||||
  - vimrc
 | 
					  - vimrc
 | 
				
			||||||
  - gvimrc
 | 
					  - gvimrc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2473,6 +2594,7 @@ Visual Basic:
 | 
				
			|||||||
  - .vba
 | 
					  - .vba
 | 
				
			||||||
  - .vbhtml
 | 
					  - .vbhtml
 | 
				
			||||||
  - .vbs
 | 
					  - .vbs
 | 
				
			||||||
 | 
					  tm_scope: source.vbnet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Volt:
 | 
					Volt:
 | 
				
			||||||
    type: programming
 | 
					    type: programming
 | 
				
			||||||
@@ -2480,12 +2602,14 @@ Volt:
 | 
				
			|||||||
    color: "#0098db"
 | 
					    color: "#0098db"
 | 
				
			||||||
    extensions:
 | 
					    extensions:
 | 
				
			||||||
    - .volt
 | 
					    - .volt
 | 
				
			||||||
 | 
					    tm_scope: source.d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XC:
 | 
					XC:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
  lexer: C
 | 
					  lexer: C
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .xc
 | 
					  - .xc
 | 
				
			||||||
 | 
					  tm_scope: source.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XML:
 | 
					XML:
 | 
				
			||||||
  type: markup
 | 
					  type: markup
 | 
				
			||||||
@@ -2564,6 +2688,7 @@ XProc:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .xpl
 | 
					  - .xpl
 | 
				
			||||||
  - .xproc
 | 
					  - .xproc
 | 
				
			||||||
 | 
					  tm_scope: text.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XQuery:
 | 
					XQuery:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2579,6 +2704,7 @@ XS:
 | 
				
			|||||||
  lexer: C
 | 
					  lexer: C
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .xs
 | 
					  - .xs
 | 
				
			||||||
 | 
					  tm_scope: source.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XSLT:
 | 
					XSLT:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2587,6 +2713,7 @@ XSLT:
 | 
				
			|||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .xslt
 | 
					  - .xslt
 | 
				
			||||||
  - .xsl
 | 
					  - .xsl
 | 
				
			||||||
 | 
					  tm_scope: text.xml.xsl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Xojo:
 | 
					Xojo:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2598,6 +2725,7 @@ Xojo:
 | 
				
			|||||||
  - .xojo_script
 | 
					  - .xojo_script
 | 
				
			||||||
  - .xojo_toolbar
 | 
					  - .xojo_toolbar
 | 
				
			||||||
  - .xojo_window
 | 
					  - .xojo_window
 | 
				
			||||||
 | 
					  tm_scope: source.vbnet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Xtend:
 | 
					Xtend:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2621,6 +2749,7 @@ Zephir:
 | 
				
			|||||||
  color: "#118f9e"
 | 
					  color: "#118f9e"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .zep
 | 
					  - .zep
 | 
				
			||||||
 | 
					  tm_scope: text.html.php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Zimpl:
 | 
					Zimpl:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2644,6 +2773,7 @@ edn:
 | 
				
			|||||||
  color: "#db5855"
 | 
					  color: "#db5855"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .edn
 | 
					  - .edn
 | 
				
			||||||
 | 
					  tm_scope: source.clojure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fish:
 | 
					fish:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
@@ -2688,6 +2818,7 @@ wisp:
 | 
				
			|||||||
  color: "#7582D1"
 | 
					  color: "#7582D1"
 | 
				
			||||||
  extensions:
 | 
					  extensions:
 | 
				
			||||||
  - .wisp
 | 
					  - .wisp
 | 
				
			||||||
 | 
					  tm_scope: source.clojure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
xBase:
 | 
					xBase:
 | 
				
			||||||
  type: programming
 | 
					  type: programming
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -242,3 +242,7 @@
 | 
				
			|||||||
# Typesafe Activator
 | 
					# Typesafe Activator
 | 
				
			||||||
- (^|/)activator$
 | 
					- (^|/)activator$
 | 
				
			||||||
- (^|/)activator\.bat$
 | 
					- (^|/)activator\.bat$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ProGuard
 | 
				
			||||||
 | 
					- proguard.pro
 | 
				
			||||||
 | 
					- proguard-rules.pro
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,3 @@
 | 
				
			|||||||
module Linguist
 | 
					module Linguist
 | 
				
			||||||
  VERSION = "3.4.0"
 | 
					  VERSION = "3.4.1"
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										367
									
								
								samples/APL/UT.dyalog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										367
									
								
								samples/APL/UT.dyalog
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,367 @@
 | 
				
			|||||||
 | 
					:NameSpace UT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sac ← 0
 | 
				
			||||||
 | 
					    expect_orig ← expect ← ⎕NS⍬
 | 
				
			||||||
 | 
					    exception ← ⍬
 | 
				
			||||||
 | 
					    nexpect_orig ← nexpect ← ⎕NS⍬
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ {Z}←{Conf}run Argument;PRE_test;POST_test;TEST_step;COVER_step;FromSpace
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      load_display_if_not_already_loaded
 | 
				
			||||||
 | 
					      load_salt_scripts_into_current_namespace_if_configured
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      FromSpace←1⊃⎕RSI
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      PRE_test←{}
 | 
				
			||||||
 | 
					      POST_test←{}
 | 
				
			||||||
 | 
					      COVER_step←{}
 | 
				
			||||||
 | 
					      :If 0≠⎕NC'Conf'
 | 
				
			||||||
 | 
					          :If Conf has'cover_target'
 | 
				
			||||||
 | 
					              PRE_test←{{}⎕PROFILE'start'}
 | 
				
			||||||
 | 
					              POST_test←{{}⎕PROFILE'stop'}
 | 
				
			||||||
 | 
					          :EndIf
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      :If is_function Argument
 | 
				
			||||||
 | 
					          TEST_step←single_function_test_function
 | 
				
			||||||
 | 
					          COVER_file←Argument,'_coverage.html'
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      :ElseIf is_list_of_functions Argument
 | 
				
			||||||
 | 
					          TEST_step←list_of_functions_test_function
 | 
				
			||||||
 | 
					          COVER_file←'list_coverage.html'
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      :ElseIf is_file Argument
 | 
				
			||||||
 | 
					          TEST_step←file_test_function
 | 
				
			||||||
 | 
					          COVER_file←(get_file_name Argument),'_coverage.html'
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      :ElseIf is_dir Argument
 | 
				
			||||||
 | 
					          test_files←test_files_in_dir Argument
 | 
				
			||||||
 | 
					          TEST_step←test_dir_function
 | 
				
			||||||
 | 
					          Argument←test_files
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      :If 0≠⎕NC'Conf'
 | 
				
			||||||
 | 
					          :If Conf has'cover_target'
 | 
				
			||||||
 | 
					              COVER_step←{Conf,←⊂('cover_file'COVER_file)
 | 
				
			||||||
 | 
					                  generate_coverage_page Conf}
 | 
				
			||||||
 | 
					          :EndIf
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      PRE_test ⍬
 | 
				
			||||||
 | 
					      Z←FromSpace TEST_step Argument
 | 
				
			||||||
 | 
					      POST_test ⍬
 | 
				
			||||||
 | 
					      COVER_step ⍬
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ load_display_if_not_already_loaded
 | 
				
			||||||
 | 
					      :If 0=⎕NC'#.DISPLAY'
 | 
				
			||||||
 | 
					          'DISPLAY'#.⎕CY'display'
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ load_salt_scripts_into_current_namespace_if_configured
 | 
				
			||||||
 | 
					      :If 0≠⎕NC'#.UT.appdir'
 | 
				
			||||||
 | 
					          :If ⍬≢#.UT.appdir
 | 
				
			||||||
 | 
					              ⎕SE.SALT.Load #.UT.appdir,'src/*.dyalog -target=#'
 | 
				
			||||||
 | 
					              ⎕SE.SALT.Load #.UT.appdir,'test/*.dyalog -target=#'
 | 
				
			||||||
 | 
					          :EndIf
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←FromSpace single_function_test_function TestName
 | 
				
			||||||
 | 
					      Z←run_ut FromSpace TestName
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←FromSpace list_of_functions_test_function ListOfNames;t
 | 
				
			||||||
 | 
					      t←⎕TS
 | 
				
			||||||
 | 
					      Z←run_ut¨{FromSpace ⍵}¨ListOfNames
 | 
				
			||||||
 | 
					      t←⎕TS-t
 | 
				
			||||||
 | 
					      ('Test execution report')print_passed_crashed_failed Z t
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←FromSpace file_test_function FilePath;FileNS;Functions;TestFunctions;t
 | 
				
			||||||
 | 
					      FileNS←⎕SE.SALT.Load FilePath,' -target=#'
 | 
				
			||||||
 | 
					      Functions←↓FileNS.⎕NL 3
 | 
				
			||||||
 | 
					      TestFunctions←(is_test¨Functions)/Functions
 | 
				
			||||||
 | 
					      :If (0/⍬,⊂0/'')≡TestFunctions
 | 
				
			||||||
 | 
					          ⎕←'No test functions found'
 | 
				
			||||||
 | 
					          Z←⍬
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          t←⎕TS
 | 
				
			||||||
 | 
					          Z←run_ut¨{FileNS ⍵}¨TestFunctions
 | 
				
			||||||
 | 
					          t←⎕TS-t
 | 
				
			||||||
 | 
					          (FilePath,' tests')print_passed_crashed_failed Z t
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←FromSpace test_dir_function Test_files
 | 
				
			||||||
 | 
					      :If Test_files≡⍬/⍬,⊂''
 | 
				
			||||||
 | 
					          ⎕←'No test files found'
 | 
				
			||||||
 | 
					          Z←⍬
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          Z←#.UT.run¨Test_files
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←get_file_name Argument;separator
 | 
				
			||||||
 | 
					      separator←⊃⌽(Argument∊'/\')/⍳⍴Argument
 | 
				
			||||||
 | 
					      Z←¯7↓separator↓Argument
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ generate_coverage_page Conf;ProfileData;CoverResults;HTML
 | 
				
			||||||
 | 
					      ProfileData←⎕PROFILE'data'
 | 
				
			||||||
 | 
					      ToCover←retrieve_coverables¨(⊃'cover_target'in Conf)
 | 
				
			||||||
 | 
					      :If (⍴ToCover)≡(⍴⊂1)
 | 
				
			||||||
 | 
					          ToCover←⊃ToCover
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					      Representations←get_representation¨ToCover
 | 
				
			||||||
 | 
					      CoverResults←ProfileData∘generate_cover_result¨↓ToCover,[1.5]Representations
 | 
				
			||||||
 | 
					      HTML←generate_html CoverResults
 | 
				
			||||||
 | 
					      Conf write_html_to_page HTML
 | 
				
			||||||
 | 
					      ⎕PROFILE'clear'
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←retrieve_coverables Something;nc;functions
 | 
				
			||||||
 | 
					      nc←⎕NC Something
 | 
				
			||||||
 | 
					      :If nc=3
 | 
				
			||||||
 | 
					          Z←Something
 | 
				
			||||||
 | 
					      :ElseIf nc=9
 | 
				
			||||||
 | 
					          functions←strip¨↓⍎Something,'.⎕NL 3'
 | 
				
			||||||
 | 
					          Z←{(Something,'.',⍵)}¨functions
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←strip input
 | 
				
			||||||
 | 
					      Z←(input≠' ')/input
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←get_representation Function;nc;rep
 | 
				
			||||||
 | 
					      nc←⎕NC⊂Function
 | 
				
			||||||
 | 
					      :If nc=3.1
 | 
				
			||||||
 | 
					          rep←↓⎕CR Function
 | 
				
			||||||
 | 
					          rep[1]←⊂'∇',⊃rep[1]
 | 
				
			||||||
 | 
					          rep,←⊂'∇'
 | 
				
			||||||
 | 
					          rep←↑rep
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          rep←⎕CR Function
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					      Z←rep
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←ProfileData generate_cover_result(name representation);Indices;lines;functionlines;covered_lines
 | 
				
			||||||
 | 
					      Indices←({name≡⍵}¨ProfileData[;1])/⍳⍴ProfileData[;1]
 | 
				
			||||||
 | 
					      lines←ProfileData[Indices;2]
 | 
				
			||||||
 | 
					      nc←⎕NC⊂name
 | 
				
			||||||
 | 
					      :If 3.1=nc
 | 
				
			||||||
 | 
					          functionlines←¯2+⍴↓representation
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          functionlines←⊃⍴↓representation
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					      covered_lines←(⍬∘≢¨lines)/lines
 | 
				
			||||||
 | 
					      Z←(nc lines functionlines covered_lines representation)
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←generate_html CoverResults;Covered;Total;Percentage;CoverageText;ColorizedCode;Timestamp;Page
 | 
				
			||||||
 | 
					      Covered←⊃⊃+/{⍴4⊃⍵}¨CoverResults
 | 
				
			||||||
 | 
					      Total←⊃⊃+/{3⊃⍵}¨CoverResults
 | 
				
			||||||
 | 
					      Percentage←100×Covered÷Total
 | 
				
			||||||
 | 
					      CoverageText←'Coverage: ',Percentage,'% (',Covered,'/',Total,')'
 | 
				
			||||||
 | 
					      ColorizedCode←⊃,/{colorize_code_by_coverage ⍵}¨CoverResults
 | 
				
			||||||
 | 
					      Timestamp←generate_timestamp_text
 | 
				
			||||||
 | 
					      Page←⍬
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'<html>'
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>'
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'<style>pre cov {line-height:80%;}'
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'pre cov {color: green;}'
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'pre uncov {line-height:80%;}'
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'pre uncov {color:red;}</style>'
 | 
				
			||||||
 | 
					      Page,←⊂⍬,CoverageText
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'<pre>'
 | 
				
			||||||
 | 
					      Page,←ColorizedCode
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'</pre>'
 | 
				
			||||||
 | 
					      Page,←Timestamp
 | 
				
			||||||
 | 
					      Page,←⊂⍬,'</html>'
 | 
				
			||||||
 | 
					      Z←Page
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←colorize_code_by_coverage CoverResult;Colors;Ends;Code
 | 
				
			||||||
 | 
					      :If 3.1=⊃CoverResult
 | 
				
			||||||
 | 
					          Colors←(2+3⊃CoverResult)⍴⊂'<uncov>'
 | 
				
			||||||
 | 
					          Colors[1]←⊂''
 | 
				
			||||||
 | 
					          Colors[⍴Colors]←⊂''
 | 
				
			||||||
 | 
					          Ends←(2+3⊃CoverResult)⍴⊂'</uncov>'
 | 
				
			||||||
 | 
					          Ends[1]←⊂''
 | 
				
			||||||
 | 
					          Ends[⍴Ends]←⊂''
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          Colors←(3⊃CoverResult)⍴⊂'<uncov>'
 | 
				
			||||||
 | 
					          Ends←(3⊃CoverResult)⍴⊂'</uncov>'
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					      Colors[1+4⊃CoverResult]←⊂'<cov>'
 | 
				
			||||||
 | 
					      Ends[1+4⊃CoverResult]←⊂'</cov>'
 | 
				
			||||||
 | 
					      Code←↓5⊃CoverResult
 | 
				
			||||||
 | 
					      Z←Colors,[1.5]Code
 | 
				
			||||||
 | 
					      Z←{⍺,(⎕UCS 13),⍵}/Z,Ends
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←generate_timestamp_text;TS;YYMMDD;HHMMSS
 | 
				
			||||||
 | 
					      TS←⎕TS
 | 
				
			||||||
 | 
					      YYMMDD←⊃{⍺,'-',⍵}/3↑TS
 | 
				
			||||||
 | 
					      HHMMSS←⊃{⍺,':',⍵}/3↑3↓TS
 | 
				
			||||||
 | 
					      Z←'Page generated: ',YYMMDD,'|',HHMMSS
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Conf write_html_to_page Page;tie;filename
 | 
				
			||||||
 | 
					      filename←(⊃'cover_out'in Conf),(⊃'cover_file'in Conf)
 | 
				
			||||||
 | 
					      :Trap 22
 | 
				
			||||||
 | 
					          tie←filename ⎕NTIE 0
 | 
				
			||||||
 | 
					          filename ⎕NERASE tie
 | 
				
			||||||
 | 
					          filename ⎕NCREATE tie
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          tie←filename ⎕NCREATE 0
 | 
				
			||||||
 | 
					      :EndTrap
 | 
				
			||||||
 | 
					      Simple_array←⍕⊃,/Page
 | 
				
			||||||
 | 
					      (⎕UCS'UTF-8'⎕UCS Simple_array)⎕NAPPEND tie
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←is_function Argument
 | 
				
			||||||
 | 
					      Z←'_TEST'≡¯5↑Argument
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←is_list_of_functions Argument
 | 
				
			||||||
 | 
					      Z←2=≡Argument
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←is_file Argument
 | 
				
			||||||
 | 
					      Z←'.dyalog'≡¯7↑Argument
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←is_dir Argument;attr
 | 
				
			||||||
 | 
					      :If 'Linux'≡5↑⊃'.'⎕WG'APLVersion'
 | 
				
			||||||
 | 
					          Z←'yes'≡⊃⎕CMD'test -d ',Argument,' && echo yes || echo no'
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          'gfa'⎕NA'I kernel32|GetFileAttributes* <0t'
 | 
				
			||||||
 | 
					          :If Z←¯1≠attr←gfa⊂Argument ⍝ If file exists
 | 
				
			||||||
 | 
					              Z←⊃2 16⊤attr           ⍝ Return bit 4
 | 
				
			||||||
 | 
					          :EndIf
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←test_files_in_dir Argument
 | 
				
			||||||
 | 
					      :If 'Linux'≡5↑⊃'.'⎕WG'APLVersion'
 | 
				
			||||||
 | 
					          Z←⎕SH'find ',Argument,' -name \*_tests.dyalog'
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          #.⎕CY'files'
 | 
				
			||||||
 | 
					          Z←#.Files.Dir Argument,'\*_tests.dyalog'
 | 
				
			||||||
 | 
					          Z←(Argument,'\')∘,¨Z
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←run_ut ut_data;returned;crashed;pass;crash;fail;message
 | 
				
			||||||
 | 
					      (returned crashed time)←execute_function ut_data
 | 
				
			||||||
 | 
					      (pass crash fail)←determine_pass_crash_or_fail returned crashed
 | 
				
			||||||
 | 
					      message←determine_message pass fail crashed(2⊃ut_data)returned time
 | 
				
			||||||
 | 
					      print_message_to_screen message
 | 
				
			||||||
 | 
					      Z←(pass crash fail)
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←execute_function ut_data;function;t
 | 
				
			||||||
 | 
					      reset_UT_globals
 | 
				
			||||||
 | 
					      function←(⍕(⊃ut_data[1])),'.',⊃ut_data[2]
 | 
				
			||||||
 | 
					      :Trap sac
 | 
				
			||||||
 | 
					          :If 3.2≡⎕NC⊂function
 | 
				
			||||||
 | 
					              t←⎕TS
 | 
				
			||||||
 | 
					              Z←(⍎function,' ⍬')0
 | 
				
			||||||
 | 
					              t←⎕TS-t
 | 
				
			||||||
 | 
					          :Else
 | 
				
			||||||
 | 
					              t←⎕TS
 | 
				
			||||||
 | 
					              Z←(⍎function)0
 | 
				
			||||||
 | 
					              t←⎕TS-t
 | 
				
			||||||
 | 
					          :EndIf
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          Z←(↑⎕DM)1
 | 
				
			||||||
 | 
					          :If exception≢⍬
 | 
				
			||||||
 | 
					              expect←exception
 | 
				
			||||||
 | 
					              Z[2]←0
 | 
				
			||||||
 | 
					              t←⎕TS-t
 | 
				
			||||||
 | 
					          :EndIf
 | 
				
			||||||
 | 
					      :EndTrap
 | 
				
			||||||
 | 
					      Z,←⊂t
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ reset_UT_globals
 | 
				
			||||||
 | 
					      expect_orig ← expect← ⎕NS⍬
 | 
				
			||||||
 | 
					      exception←⍬
 | 
				
			||||||
 | 
					      nexpect_orig ← nexpect← ⎕NS⍬
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←is_test FunctionName;wsIndex
 | 
				
			||||||
 | 
					      wsIndex←FunctionName⍳' '
 | 
				
			||||||
 | 
					      FunctionName←(wsIndex-1)↑FunctionName
 | 
				
			||||||
 | 
					      Z←'_TEST'≡¯5↑FunctionName
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Heading print_passed_crashed_failed(ArrayRes time)
 | 
				
			||||||
 | 
					      ⎕←'-----------------------------------------'
 | 
				
			||||||
 | 
					      ⎕←Heading
 | 
				
			||||||
 | 
					      ⎕←'    ⍋  Passed: ',+/{1⊃⍵}¨ArrayRes
 | 
				
			||||||
 | 
					      ⎕←'    ⍟ Crashed: ',+/{2⊃⍵}¨ArrayRes
 | 
				
			||||||
 | 
					      ⎕←'    ⍒  Failed: ',+/{3⊃⍵}¨ArrayRes
 | 
				
			||||||
 | 
					      ⎕←'    ○ Runtime: ',time[5],'m',time[6],'s',time[7],'ms'
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    determine_pass_crash_or_fail←{
 | 
				
			||||||
 | 
					      r c←⍵ ⋄ 0≠c:0 1 0 ⋄ z←(0 0 1)(1 0 0)
 | 
				
			||||||
 | 
					      expect_orig≢expect:(⎕IO+expect≡r)⊃z ⋄ (⎕IO+nexpect≢r)⊃z
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←determine_message(pass fail crashed name returned time)
 | 
				
			||||||
 | 
					      :If crashed
 | 
				
			||||||
 | 
					          Z←'CRASHED: 'failure_message name returned
 | 
				
			||||||
 | 
					      :ElseIf pass
 | 
				
			||||||
 | 
					          Z←'Passed ',time[5],'m',time[6],'s',time[7],'ms'
 | 
				
			||||||
 | 
					      :Else
 | 
				
			||||||
 | 
					          Z←'FAILED: 'failure_message name returned
 | 
				
			||||||
 | 
					      :EndIf
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ print_message_to_screen message
 | 
				
			||||||
 | 
					      ⎕←message
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←term_to_text Term;Text;Rows
 | 
				
			||||||
 | 
					      Text←#.DISPLAY Term
 | 
				
			||||||
 | 
					      Rows←1⊃⍴Text
 | 
				
			||||||
 | 
					      Z←(Rows 4⍴''),Text
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←Cause failure_message(name returned);hdr;exp;expterm;got;gotterm
 | 
				
			||||||
 | 
					      hdr←Cause,name
 | 
				
			||||||
 | 
					      exp←'Expected'
 | 
				
			||||||
 | 
					      expterm←term_to_text #.UT.expect
 | 
				
			||||||
 | 
					      got←'Got'
 | 
				
			||||||
 | 
					      gotterm←term_to_text returned
 | 
				
			||||||
 | 
					      Z←align_and_join_message_parts hdr exp expterm got gotterm
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←align_and_join_message_parts Parts;hdr;exp;expterm;got;gotterm;R1;C1;R2;C2;W
 | 
				
			||||||
 | 
					      (hdr exp expterm got gotterm)←Parts
 | 
				
			||||||
 | 
					      (R1 C1)←⍴expterm
 | 
				
			||||||
 | 
					      (R2 C2)←⍴gotterm
 | 
				
			||||||
 | 
					      W←⊃⊃⌈/C1 C2(⍴hdr)(⍴exp)(⍴got)
 | 
				
			||||||
 | 
					      Z←(W↑hdr),[0.5](W↑exp)
 | 
				
			||||||
 | 
					      Z←Z⍪(R1 W↑expterm)
 | 
				
			||||||
 | 
					      Z←Z⍪(W↑got)
 | 
				
			||||||
 | 
					      Z←Z⍪(R2 W↑gotterm)
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←confparam in config
 | 
				
			||||||
 | 
					      Z←1↓⊃({confparam≡⊃⍵}¨config)/config
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ∇ Z←config has confparam
 | 
				
			||||||
 | 
					      Z←∨/{confparam≡⊃⍵}¨config
 | 
				
			||||||
 | 
					    ∇
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:EndNameSpace
 | 
				
			||||||
							
								
								
									
										66
									
								
								samples/Assembly/External Interrupt.a51
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								samples/Assembly/External Interrupt.a51
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
						ORG	0000h
 | 
				
			||||||
 | 
						SJMP	START
 | 
				
			||||||
 | 
						ORG	0003h
 | 
				
			||||||
 | 
						LCALL	INT0_ISR
 | 
				
			||||||
 | 
						RETI
 | 
				
			||||||
 | 
						ORG	000Bh
 | 
				
			||||||
 | 
						LCALL	T0_ISR
 | 
				
			||||||
 | 
						RETI
 | 
				
			||||||
 | 
						ORG	0013h
 | 
				
			||||||
 | 
						LCALL	INT1_ISR
 | 
				
			||||||
 | 
						RETI
 | 
				
			||||||
 | 
						ORG	001Bh
 | 
				
			||||||
 | 
						LCALL	T1_ISR
 | 
				
			||||||
 | 
						RETI
 | 
				
			||||||
 | 
						ORG	0023h
 | 
				
			||||||
 | 
						LCALL	UART_ISR
 | 
				
			||||||
 | 
						RETI
 | 
				
			||||||
 | 
						ORG	0030h
 | 
				
			||||||
 | 
					START:
 | 
				
			||||||
 | 
						MOV	A,#11111110b
 | 
				
			||||||
 | 
						SETB	IT0	; Set External Interrupt 0 to be falling edge triggered
 | 
				
			||||||
 | 
						SETB	EX0	; Enable External Interrut 0
 | 
				
			||||||
 | 
						SETB	EA	; Enable Interrupt
 | 
				
			||||||
 | 
					LEFT:			
 | 
				
			||||||
 | 
						CJNE	A,#01111111b,LOOP1
 | 
				
			||||||
 | 
						JMP	RIGHT
 | 
				
			||||||
 | 
					LOOP1:
 | 
				
			||||||
 | 
						MOV	P1,A
 | 
				
			||||||
 | 
						RL	A	
 | 
				
			||||||
 | 
						LCALL	DELAY
 | 
				
			||||||
 | 
						SJMP	LEFT	
 | 
				
			||||||
 | 
					RIGHT:
 | 
				
			||||||
 | 
						CJNE	A,#11111110b,LOOP2
 | 
				
			||||||
 | 
						JMP	LEFT
 | 
				
			||||||
 | 
					LOOP2:
 | 
				
			||||||
 | 
						MOV	P1,A
 | 
				
			||||||
 | 
						RR	A	
 | 
				
			||||||
 | 
						LCALL	DELAY
 | 
				
			||||||
 | 
						SJMP	RIGHT
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					INT0_ISR:
 | 
				
			||||||
 | 
						MOV	R1,#3
 | 
				
			||||||
 | 
					FLASH:
 | 
				
			||||||
 | 
						MOV	P1,#00h
 | 
				
			||||||
 | 
						LCALL	DELAY
 | 
				
			||||||
 | 
						MOV	P1,#0FFh
 | 
				
			||||||
 | 
						LCALL	DELAY
 | 
				
			||||||
 | 
						DJNZ	R1,FLASH
 | 
				
			||||||
 | 
						RET
 | 
				
			||||||
 | 
					T0_ISR:
 | 
				
			||||||
 | 
						RET
 | 
				
			||||||
 | 
					INT1_ISR:
 | 
				
			||||||
 | 
						RET
 | 
				
			||||||
 | 
					T1_ISR:
 | 
				
			||||||
 | 
						RET
 | 
				
			||||||
 | 
					UART_ISR:
 | 
				
			||||||
 | 
						RET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DELAY:	MOV	R5,#20	;R5*20 mS
 | 
				
			||||||
 | 
					D1:     MOV	R6,#40
 | 
				
			||||||
 | 
					D2:     MOV	R7,#249
 | 
				
			||||||
 | 
						DJNZ	R7,$
 | 
				
			||||||
 | 
					 	DJNZ	R6,D2
 | 
				
			||||||
 | 
					  	DJNZ	R5,D1
 | 
				
			||||||
 | 
					   	RET
 | 
				
			||||||
 | 
						END
 | 
				
			||||||
							
								
								
									
										795
									
								
								samples/LOLCODE/LOLTracer.lol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										795
									
								
								samples/LOLCODE/LOLTracer.lol
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,795 @@
 | 
				
			|||||||
 | 
					HAI 1.3
 | 
				
			||||||
 | 
					    OBTW
 | 
				
			||||||
 | 
					      Author: Logan Kelly (logan.kelly@gmail.com)
 | 
				
			||||||
 | 
					      Github: https://github.com/LoganKelly/LOLTracer
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW prev is the number used in the randin function.
 | 
				
			||||||
 | 
					         I had to declare it in global scope so that it
 | 
				
			||||||
 | 
					         would retain its value between calls to randin.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    I HAS A prev ITZ 0
 | 
				
			||||||
 | 
					    I HAS A rand_max ITZ 104729
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Equivalent to C's rand() function, except returns
 | 
				
			||||||
 | 
					        a number in the range of 0 to rand_max.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I randin
 | 
				
			||||||
 | 
					        I HAS A a ITZ 33083
 | 
				
			||||||
 | 
					        I HAS A c ITZ 67607
 | 
				
			||||||
 | 
					        prev R MOD OF SUM OF PRODUKT OF prev AN a AN c AN rand_max
 | 
				
			||||||
 | 
					        FOUND YR prev
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    BTW Returns a random number within the range of 0-1.
 | 
				
			||||||
 | 
					    HOW IZ I rand_onein
 | 
				
			||||||
 | 
					        I HAS A rand_num ITZ I IZ randin MKAY
 | 
				
			||||||
 | 
					        rand_num IS NOW A NUMBAR
 | 
				
			||||||
 | 
					        I HAS A rand_max_float ITZ MAEK rand_max A NUMBAR
 | 
				
			||||||
 | 
					        FOUND YR  QUOSHUNT OF rand_num AN rand_max_float
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Equivalent to C ceil() function. Returns the next
 | 
				
			||||||
 | 
					        largest integer for the given number.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I ceilin YR num
 | 
				
			||||||
 | 
					        I HAS A int_num ITZ num
 | 
				
			||||||
 | 
					        int_num IS NOW A NUMBR
 | 
				
			||||||
 | 
					        BOTH SAEM int_num AN num, O RLY?
 | 
				
			||||||
 | 
					            YA RLY, FOUND YR num
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					        DIFFRINT num AN SMALLR OF num AN 0, O RLY?
 | 
				
			||||||
 | 
					            YA RLY
 | 
				
			||||||
 | 
					                int_num R SUM OF int_num AN 1
 | 
				
			||||||
 | 
					                FOUND YR MAEK int_num A NUMBAR
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					        DIFFRINT num AN BIGGR OF num AN 0, O RLY?
 | 
				
			||||||
 | 
					            YA RLY
 | 
				
			||||||
 | 
					                FOUND YR MAEK int_num A NUMBAR
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Convert a number to hexadecimal. This
 | 
				
			||||||
 | 
					         is returned as a string.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I decimal_to_hex YR num
 | 
				
			||||||
 | 
					        I HAS A i ITZ 0
 | 
				
			||||||
 | 
					        I HAS A rem
 | 
				
			||||||
 | 
					        I HAS A hex_num ITZ A BUKKIT
 | 
				
			||||||
 | 
					        I HAS A decimal_num ITZ num
 | 
				
			||||||
 | 
					        IM IN YR num_loop
 | 
				
			||||||
 | 
					            rem R MOD OF decimal_num AN 16
 | 
				
			||||||
 | 
					            I HAS A hex_digit
 | 
				
			||||||
 | 
					            rem, WTF?
 | 
				
			||||||
 | 
					                OMG 10, hex_digit R "A", GTFO
 | 
				
			||||||
 | 
					                OMG 11, hex_digit R "B", GTFO
 | 
				
			||||||
 | 
					                OMG 12, hex_digit R "C", GTFO
 | 
				
			||||||
 | 
					                OMG 13, hex_digit R "D", GTFO
 | 
				
			||||||
 | 
					                OMG 14, hex_digit R "E", GTFO
 | 
				
			||||||
 | 
					                OMG 15, hex_digit R "F", GTFO
 | 
				
			||||||
 | 
					                OMGWTF, hex_digit R rem
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            hex_num HAS A SRS i ITZ hex_digit
 | 
				
			||||||
 | 
					            decimal_num R QUOSHUNT OF decimal_num AN 16
 | 
				
			||||||
 | 
					            BOTH SAEM decimal_num AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					                NO WAI, i R SUM OF i AN 1
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					        IM OUTTA YR num_loop
 | 
				
			||||||
 | 
					        I HAS A hex_string ITZ A YARN
 | 
				
			||||||
 | 
					        IM IN YR string_reverse
 | 
				
			||||||
 | 
					            DIFFRINT i AN BIGGR OF i AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            hex_string R SMOOSH hex_string AN hex_num'Z SRS i MKAY
 | 
				
			||||||
 | 
					            i R DIFF OF i AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR string_reverse
 | 
				
			||||||
 | 
					        FOUND YR hex_string
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Convert a number to binary. This is returned
 | 
				
			||||||
 | 
					         as a bukkit which has slots number 0-N where
 | 
				
			||||||
 | 
					         n is equal to the number of binary digits - 1.
 | 
				
			||||||
 | 
					         It also has a length slot which is equal to
 | 
				
			||||||
 | 
					         the number of binary digits.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I decimal_to_binary YR num
 | 
				
			||||||
 | 
					        I HAS A i ITZ 0
 | 
				
			||||||
 | 
					        I HAS A decimal_num ITZ num
 | 
				
			||||||
 | 
					        I HAS A binary_num ITZ A BUKKIT
 | 
				
			||||||
 | 
					        IM IN YR num_loop
 | 
				
			||||||
 | 
					            binary_num HAS A SRS i ITZ MOD OF decimal_num AN 2
 | 
				
			||||||
 | 
					            decimal_num R QUOSHUNT OF decimal_num AN 2
 | 
				
			||||||
 | 
					            BOTH SAEM decimal_num AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY
 | 
				
			||||||
 | 
					                    I HAS A length ITZ SUM OF i AN 1
 | 
				
			||||||
 | 
					                    binary_num HAS A length ITZ length
 | 
				
			||||||
 | 
					                    GTFO
 | 
				
			||||||
 | 
					                NO WAI, i R SUM OF i AN 1
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					        IM OUTTA YR num_loop
 | 
				
			||||||
 | 
					        FOUND YR binary_num
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Bitwise and two binary numbers. The numbers
 | 
				
			||||||
 | 
					         must be provided in the format returned by
 | 
				
			||||||
 | 
					         decimal_to_binary.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I bitwise_andin YR first_num AN YR second_num
 | 
				
			||||||
 | 
					        I HAS A binary_first_num ITZ I IZ decimal_to_binary YR first_num MKAY
 | 
				
			||||||
 | 
					        I HAS A binary_second_num ITZ I IZ decimal_to_binary YR second_num MKAY
 | 
				
			||||||
 | 
					        I HAS A first_length ITZ binary_first_num'Z length
 | 
				
			||||||
 | 
					        I HAS A second_length ITZ binary_second_num'Z length
 | 
				
			||||||
 | 
					        I HAS A max_length ITZ BIGGR OF first_length AN second_length
 | 
				
			||||||
 | 
					        I HAS A final_binary ITZ A BUKKIT
 | 
				
			||||||
 | 
					        I HAS A final_length ITZ 0
 | 
				
			||||||
 | 
					        I HAS A i ITZ 0
 | 
				
			||||||
 | 
					        IM IN YR num_loop
 | 
				
			||||||
 | 
					            BOTH SAEM i AN max_length, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            I HAS A first_binary ITZ 0
 | 
				
			||||||
 | 
					            I HAS A second_binary ITZ 0
 | 
				
			||||||
 | 
					            DIFFRINT i AN BIGGR OF i AN first_length, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, first_binary R binary_first_num'Z SRS i
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            DIFFRINT i AN BIGGR OF i AN second_length, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, second_binary R binary_second_num'Z SRS i
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            EITHER OF BOTH SAEM first_binary AN 0 AN ...
 | 
				
			||||||
 | 
					                      BOTH SAEM second_binary AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, final_binary HAS A SRS i ITZ 0
 | 
				
			||||||
 | 
					                NO WAI
 | 
				
			||||||
 | 
					                    final_binary HAS A SRS i ITZ 1
 | 
				
			||||||
 | 
					                    final_length R SUM OF i AN 1
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            i R SUM OF i AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR num_loop
 | 
				
			||||||
 | 
					        final_binary HAS A length ITZ final_length
 | 
				
			||||||
 | 
					        FOUND YR final_binary
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Bitshift left a binary number by num_bits.
 | 
				
			||||||
 | 
					         The binary number must be provided in the format
 | 
				
			||||||
 | 
					         returned by decimal_to_binary.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I bit_shift_leftin YR num AN YR num_bits
 | 
				
			||||||
 | 
					        I HAS A binary_num ITZ num
 | 
				
			||||||
 | 
					        I HAS A length ITZ binary_num'Z length
 | 
				
			||||||
 | 
					        I HAS A i ITZ SUM OF DIFF OF length AN 1 AN num_bits
 | 
				
			||||||
 | 
					        I HAS A shifted_binary_num ITZ A BUKKIT
 | 
				
			||||||
 | 
					        IM IN YR num_loop
 | 
				
			||||||
 | 
					            BOTH SAEM i AN -1, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            I HAS A unshifted_index ITZ DIFF OF i AN num_bits
 | 
				
			||||||
 | 
					            BOTH SAEM unshifted_index AN BIGGR OF unshifted_index AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY
 | 
				
			||||||
 | 
					                    shifted_binary_num HAS A SRS i ITZ binary_num'Z SRS unshifted_index
 | 
				
			||||||
 | 
					                NO WAI
 | 
				
			||||||
 | 
					                    shifted_binary_num HAS A SRS i ITZ 0
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            i R DIFF OF i AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR num_loop
 | 
				
			||||||
 | 
					        shifted_binary_num HAS A length ITZ SUM OF binary_num'Z length AN num_bits
 | 
				
			||||||
 | 
					        FOUND YR shifted_binary_num
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Convert a binary number into a decimal number.
 | 
				
			||||||
 | 
					         The binary number must be provided in the format
 | 
				
			||||||
 | 
					         return by decimal_to_binary.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I binary_to_decimal YR binary_num
 | 
				
			||||||
 | 
					        I HAS A length ITZ binary_num'Z length
 | 
				
			||||||
 | 
					        I HAS A decimal_num ITZ 0
 | 
				
			||||||
 | 
					        I HAS A i ITZ 0
 | 
				
			||||||
 | 
					        IM IN YR num_loop
 | 
				
			||||||
 | 
					            BOTH SAEM i AN length, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            I HAS A binary_value ITZ binary_num'Z SRS i
 | 
				
			||||||
 | 
					            I HAS A decimal_value ITZ 0
 | 
				
			||||||
 | 
					            BOTH SAEM binary_value AN 1, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, decimal_value R I IZ power_of YR 2 AN YR i MKAY
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            decimal_num R SUM OF decimal_num AN decimal_value
 | 
				
			||||||
 | 
					            i R SUM OF i AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR num_loop
 | 
				
			||||||
 | 
					        FOUND YR decimal_num
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Equivalent to C's pow() function. Raises
 | 
				
			||||||
 | 
					         base to the power of exponent.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I power_of YR base AN YR exponent
 | 
				
			||||||
 | 
					        I HAS A i ITZ 0
 | 
				
			||||||
 | 
					        I HAS A num ITZ 1
 | 
				
			||||||
 | 
					        IM IN YR num_loop
 | 
				
			||||||
 | 
					            BOTH SAEM i AN exponent, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            num R PRODUKT OF num AN base
 | 
				
			||||||
 | 
					            i R SUM OF i AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR num_loop
 | 
				
			||||||
 | 
					        FOUND YR num
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Return a binary number as a YARN.
 | 
				
			||||||
 | 
					         The binary number must be provided in the format
 | 
				
			||||||
 | 
					         return by decimal_to_binary.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I binary_to_string YR binary_num
 | 
				
			||||||
 | 
					        I HAS A binary_string ITZ A YARN
 | 
				
			||||||
 | 
					        I HAS A i ITZ DIFF OF binary_num'Z length AN 1
 | 
				
			||||||
 | 
					        IM IN YR string_reverse
 | 
				
			||||||
 | 
					            DIFFRINT i AN BIGGR OF i AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            binary_string R SMOOSH binary_string AN binary_num'Z SRS i MKAY
 | 
				
			||||||
 | 
					            i R DIFF OF i AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR string_reverse
 | 
				
			||||||
 | 
					        FOUND YR binary_string
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Converts a hexadecimal number to the character
 | 
				
			||||||
 | 
					         equivalent in UNICODE. This was originally used
 | 
				
			||||||
 | 
					         in an attempt to write out to the P6 format of PPM,
 | 
				
			||||||
 | 
					         but the string produced by VISIBLE didn't seem to be
 | 
				
			||||||
 | 
					         properly formatted for some reason. Instead I fell back
 | 
				
			||||||
 | 
					         to P3 of PPM and wrote out to regular ascii format.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I hex_to_char YR hex_string
 | 
				
			||||||
 | 
					        OBTW This is a hack I found for converting hexadecimal strings
 | 
				
			||||||
 | 
					             into their unicode character equivalents. Instead of using
 | 
				
			||||||
 | 
					             the ":" character directly, we escape it and get it using its
 | 
				
			||||||
 | 
					             unicode hex value (3A). This allows us to assemble the string
 | 
				
			||||||
 | 
					             with our inserted hex value without errors.
 | 
				
			||||||
 | 
					        TLDR
 | 
				
			||||||
 | 
					        FOUND YR SMOOSH ":(3A)" AN "(" AN hex_string AN ")" MKAY
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW Equivalent to C's square() function. However it will only
 | 
				
			||||||
 | 
					         produce accurate results if the number is no larger than
 | 
				
			||||||
 | 
					         1048576. See the note below. This is based upon Newton's
 | 
				
			||||||
 | 
					         Approximation Method as adapted in C at this website (#11):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         http://www.codeproject.com/Articles/69941/Best-Square-Root-Method-Algorithm-Function-Precisi
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I square_rootin YR number
 | 
				
			||||||
 | 
					        OBTW Forcing a comparison between  the accuracy and a number
 | 
				
			||||||
 | 
					             which is so big that its precision is larger than the
 | 
				
			||||||
 | 
					             accuracy causes an infinite loop to occur. For this
 | 
				
			||||||
 | 
					             reason we have to set any number larger than 2^20 to
 | 
				
			||||||
 | 
					             a value below it.
 | 
				
			||||||
 | 
					        TLDR
 | 
				
			||||||
 | 
					        BOTH SAEM number AN BIGGR OF number AN 1048576.00, O RLY?
 | 
				
			||||||
 | 
					            YA RLY, number R 1048575.00
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					        I HAS A accuracy ITZ 0.0001
 | 
				
			||||||
 | 
					        I HAS A lower ITZ A NUMBAR
 | 
				
			||||||
 | 
					        I HAS A upper ITZ A NUMBAR
 | 
				
			||||||
 | 
					        I HAS A guess ITZ A NUMBAR
 | 
				
			||||||
 | 
					        DIFFRINT number AN BIGGR OF number AN 1.0, O RLY?
 | 
				
			||||||
 | 
					            YA RLY
 | 
				
			||||||
 | 
					                lower R number
 | 
				
			||||||
 | 
					                upper R 1.0
 | 
				
			||||||
 | 
					            NO WAI
 | 
				
			||||||
 | 
					                lower R 1.0
 | 
				
			||||||
 | 
					                upper R number
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					        IM IN YR LOOP
 | 
				
			||||||
 | 
					            I HAS A delta ITZ DIFF OF upper AN lower
 | 
				
			||||||
 | 
					            BOTH SAEM delta AN SMALLR OF delta AN accuracy, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            I HAS A guess ITZ QUOSHUNT OF SUM OF lower AN upper AN 2.0
 | 
				
			||||||
 | 
					            I HAS A guess_squared ITZ PRODUKT OF guess AN guess
 | 
				
			||||||
 | 
					            DIFFRINT guess_squared AN SMALLR OF guess_squared AN number, O RLY?
 | 
				
			||||||
 | 
					                YA RLY
 | 
				
			||||||
 | 
					                    upper R guess
 | 
				
			||||||
 | 
					                NO WAI
 | 
				
			||||||
 | 
					                    lower R guess
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					        IM OUTTA YR LOOP
 | 
				
			||||||
 | 
					        FOUND YR QUOSHUNT OF SUM OF lower AN upper AN 2.0
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW
 | 
				
			||||||
 | 
					         The intersection test for line [o, d]
 | 
				
			||||||
 | 
					         Return 2 if a hit was found (and also return distance t and bouncing ray n).
 | 
				
			||||||
 | 
					         Return 0 if no hit was found but ray goes upward
 | 
				
			||||||
 | 
					         Return 1 if no hit was found but ray goes downward
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I tracin YR o AN YR d
 | 
				
			||||||
 | 
					        I HAS A t ITZ 1000000000
 | 
				
			||||||
 | 
					        I HAS A m ITZ 0
 | 
				
			||||||
 | 
					        BOTH SAEM d'Z z AN 0, O RLY?
 | 
				
			||||||
 | 
					            YA RLY, d'Z z R 0.00001
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					        I HAS A p ITZ QUOSHUNT OF DIFF OF 0 AN o'Z z AN d'Z z
 | 
				
			||||||
 | 
					        I HAS A n ITZ LIEK A Vector
 | 
				
			||||||
 | 
					        DIFFRINT p AN SMALLR OF p AN 0.01, O RLY?
 | 
				
			||||||
 | 
					            YA RLY
 | 
				
			||||||
 | 
					                t R p
 | 
				
			||||||
 | 
					                n R Vector IZ constructin YR 0.0 AN YR 0.0 AN YR 1.0 MKAY
 | 
				
			||||||
 | 
					                m R 1
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW The world is encoded in sphere_positions, with 9 lines and 19 columns
 | 
				
			||||||
 | 
					        I HAS A k ITZ 18
 | 
				
			||||||
 | 
					        IM IN YR column_loop BTW For each column of objects
 | 
				
			||||||
 | 
					            BOTH SAEM k AN -1, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            I HAS A j ITZ 8
 | 
				
			||||||
 | 
					            IM IN YR line_loop BTW For each line on that column
 | 
				
			||||||
 | 
					                BOTH SAEM j AN -1, O RLY?
 | 
				
			||||||
 | 
					                    YA RLY, GTFO
 | 
				
			||||||
 | 
					                OIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                I HAS A sphere_positions_line ITZ sphere_positions'Z SRS j
 | 
				
			||||||
 | 
					                sphere_positions_line'Z SRS k, O RLY?
 | 
				
			||||||
 | 
					                    YA RLY
 | 
				
			||||||
 | 
					                       BTW There is a sphere, but does the ray hit it?
 | 
				
			||||||
 | 
					                       p R Vector IZ addin YR o AN YR ...
 | 
				
			||||||
 | 
					                           Vector IZ constructin YR DIFF OF 0 AN k AN ...
 | 
				
			||||||
 | 
					                                                 YR 0 AN ...
 | 
				
			||||||
 | 
					                                                 YR DIFF OF DIFF OF 0 AN j AN 4 MKAY ...
 | 
				
			||||||
 | 
					                           MKAY
 | 
				
			||||||
 | 
					                       I HAS A b ITZ Vector IZ dot_productin YR p AN YR d MKAY
 | 
				
			||||||
 | 
					                       I HAS A q_c ITZ DIFF OF Vector IZ dot_productin YR p AN YR p MKAY AN 1
 | 
				
			||||||
 | 
					                       I HAS A q ITZ DIFF OF PRODUKT OF b AN b AN q_c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                       DIFFRINT q AN SMALLR OF q AN 0, O RLY?
 | 
				
			||||||
 | 
					                           YA RLY
 | 
				
			||||||
 | 
					                               BTW It does, compute the distance camera-sphere
 | 
				
			||||||
 | 
					                               I HAS A s ITZ DIFF OF DIFF OF 0 AN b AN I IZ square_rootin YR q MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                               BOTH OF DIFFRINT s AN BIGGR OF s AN t AN ...
 | 
				
			||||||
 | 
					                                       DIFFRINT s AN SMALLR OF s AN 0.01, O RLY?
 | 
				
			||||||
 | 
					                                   YA RLY
 | 
				
			||||||
 | 
					                                       BTW So far this is the minimum distance, save it. And
 | 
				
			||||||
 | 
					                                       BTW also compute the bouncing ray vector into 'n'
 | 
				
			||||||
 | 
					                                       t R s
 | 
				
			||||||
 | 
					                                       I HAS A bouncing_ray ITZ Vector IZ scalin YR direction AN YR t MKAY
 | 
				
			||||||
 | 
					                                       bouncing_ray R Vector IZ addin YR p AN YR bouncing_ray MKAY
 | 
				
			||||||
 | 
					                                       n R Vector IZ normalizin YR bouncing_ray MKAY
 | 
				
			||||||
 | 
					                                       m R 2
 | 
				
			||||||
 | 
					                               OIC
 | 
				
			||||||
 | 
					                       OIC
 | 
				
			||||||
 | 
					                OIC
 | 
				
			||||||
 | 
					                j R DIFF OF j AN 1
 | 
				
			||||||
 | 
					            IM OUTTA YR line_loop
 | 
				
			||||||
 | 
					            k R DIFF OF k AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR column_loop
 | 
				
			||||||
 | 
					        I HAS A result ITZ A BUKKIT
 | 
				
			||||||
 | 
					        result HAS A m ITZ m
 | 
				
			||||||
 | 
					        result HAS A t ITZ t
 | 
				
			||||||
 | 
					        result HAS A n ITZ n
 | 
				
			||||||
 | 
					        FOUND YR result
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW
 | 
				
			||||||
 | 
					        Sample the world and return the pixel color for
 | 
				
			||||||
 | 
					        a ray [o, d]
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    HOW IZ I samplin YR o AN YR d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Search for an intersection ray Vs. world
 | 
				
			||||||
 | 
					        I HAS A result ITZ I IZ tracin YR o AN YR d MKAY
 | 
				
			||||||
 | 
					        I HAS A m ITZ result'Z m
 | 
				
			||||||
 | 
					        I HAS A t ITZ result'Z t
 | 
				
			||||||
 | 
					        I HAS A n ITZ result'Z n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BOTH SAEM m AN 0, O RLY?
 | 
				
			||||||
 | 
					            YA RLY
 | 
				
			||||||
 | 
					                BTW No sphere found and the ray goes upward: Generate a sky color
 | 
				
			||||||
 | 
					                I HAS A vec_result ITZ Vector IZ constructin YR 0.7 AN YR 0.6 AN YR 1.0 MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                I HAS A z_component ITZ d'Z z
 | 
				
			||||||
 | 
					                DIFFRINT z_component AN BIGGR OF z_component AN 0, O RLY?
 | 
				
			||||||
 | 
					                    YA RLY, z_component R 0
 | 
				
			||||||
 | 
					                OIC
 | 
				
			||||||
 | 
					                I HAS A vec_num ITZ DIFF OF 1 AN z_component
 | 
				
			||||||
 | 
					                vec_num R I IZ power_of YR vec_num AN YR 4 MKAY
 | 
				
			||||||
 | 
					                FOUND YR Vector IZ scalin YR vec_result AN YR vec_num MKAY
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW h = intersection coordinate
 | 
				
			||||||
 | 
					        I HAS A h ITZ Vector IZ scalin YR d AN YR t MKAY
 | 
				
			||||||
 | 
					        h R Vector IZ addin YR o AN YR h MKAY
 | 
				
			||||||
 | 
					        BTW l = direction to light (with random delta for soft shadows)
 | 
				
			||||||
 | 
					        I HAS A l ITZ LIEK A Vector
 | 
				
			||||||
 | 
					        l HAS A x ITZ SUM OF 9 AN I IZ rand_onein MKAY
 | 
				
			||||||
 | 
					        l HAS A y ITZ SUM OF 9 AN I IZ rand_onein MKAY
 | 
				
			||||||
 | 
					        l HAS A z ITZ 16
 | 
				
			||||||
 | 
					        I HAS A l_two ITZ Vector IZ scalin YR h AN YR -1.0 MKAY
 | 
				
			||||||
 | 
					        l R Vector IZ addin YR l AN YR l_two MKAY
 | 
				
			||||||
 | 
					        l R Vector IZ normalizin YR l MKAY
 | 
				
			||||||
 | 
					        BTW r = The half-vector
 | 
				
			||||||
 | 
					        I HAS A r ITZ Vector IZ dot_productin YR n AN YR d MKAY
 | 
				
			||||||
 | 
					        r R PRODUKT OF r AN -2
 | 
				
			||||||
 | 
					        r R Vector IZ scalin YR n AN YR r MKAY
 | 
				
			||||||
 | 
					        r R Vector IZ addin YR d AN YR r MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Calculate the lambertian factor
 | 
				
			||||||
 | 
					        I HAS A b ITZ Vector IZ dot_productin YR l AN YR n MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Calculate illumination factor (lambertian coefficient > 0 or in shadow)?
 | 
				
			||||||
 | 
					        I HAS A illumination_result ITZ I IZ tracin YR h AN YR l MKAY
 | 
				
			||||||
 | 
					        I HAS A i_m ITZ illumination_result'Z m
 | 
				
			||||||
 | 
					        EITHER OF DIFFRINT b AN BIGGR OF b AN 0 AN BOTH SAEM i_m AN 2, O RLY?
 | 
				
			||||||
 | 
					            YA RLY, b R 0
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Calculate the color 'p' with diffuse and specular component
 | 
				
			||||||
 | 
					        I HAS A base
 | 
				
			||||||
 | 
					        DIFFRINT b AN SMALLR OF b AN 0, O RLY?
 | 
				
			||||||
 | 
					            YA RLY, base R 1
 | 
				
			||||||
 | 
					            NO WAI, base R 0
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					        base R Vector IZ scalin YR r AN YR base MKAY
 | 
				
			||||||
 | 
					        base R Vector IZ dot_productin YR l AN YR r MKAY
 | 
				
			||||||
 | 
					        I HAS A p ITZ I IZ power_of YR base AN YR 99 MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BOTH SAEM m AN 1, O RLY?
 | 
				
			||||||
 | 
					            YA RLY
 | 
				
			||||||
 | 
					                BTW No sphere was hit and the ray was going downward: Generate a floor color
 | 
				
			||||||
 | 
					                h R Vector IZ scalin YR h AN YR 0.2 MKAY
 | 
				
			||||||
 | 
					                I HAS A ceil_h_x ITZ I IZ ceilin YR h'Z x MKAY
 | 
				
			||||||
 | 
					                I HAS A ceil_h_y ITZ I IZ ceilin YR h'Z y MKAY
 | 
				
			||||||
 | 
					                I HAS A ceil_h ITZ SUM OF ceil_h_x AN ceil_h_y
 | 
				
			||||||
 | 
					                ceil_h IS NOW A NUMBR
 | 
				
			||||||
 | 
					                I HAS A color_choice ITZ MOD OF ceil_h AN 2
 | 
				
			||||||
 | 
					                I HAS A color ITZ LIEK A Vector
 | 
				
			||||||
 | 
					                color_choice, O RLY?
 | 
				
			||||||
 | 
					                    YA RLY
 | 
				
			||||||
 | 
					                        color HAS A x ITZ 3
 | 
				
			||||||
 | 
					                        color HAS A y ITZ 1
 | 
				
			||||||
 | 
					                        color HAS A z ITZ 1
 | 
				
			||||||
 | 
					                    NO WAI
 | 
				
			||||||
 | 
					                        color HAS A x ITZ 3
 | 
				
			||||||
 | 
					                        color HAS A y ITZ 3
 | 
				
			||||||
 | 
					                        color HAS A z ITZ 3
 | 
				
			||||||
 | 
					                OIC
 | 
				
			||||||
 | 
					                FOUND YR Vector IZ scalin YR color AN YR SUM OF PRODUKT OF b AN 0.2 AN 0.1 MKAY
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW m == 2 A sphere was hit. Cast a ray bouncing from the sphere surface.
 | 
				
			||||||
 | 
					        I HAS A sphere_color ITZ LIEK A Vector
 | 
				
			||||||
 | 
					        sphere_color HAS A x ITZ p
 | 
				
			||||||
 | 
					        sphere_color HAS A y ITZ p
 | 
				
			||||||
 | 
					        sphere_color HAS A z ITZ p
 | 
				
			||||||
 | 
					        I HAS A recursive_color ITZ I IZ samplin YR h AN YR r MKAY
 | 
				
			||||||
 | 
					        BTW Attenuate color by 50% since it is bouncing (* .5)
 | 
				
			||||||
 | 
					        recursive_color R Vector IZ scalin YR recursive_color AN YR 0.5 MKAY
 | 
				
			||||||
 | 
					        FOUND YR Vector IZ addin YR sphere_color AN YR recursive_color MKAY
 | 
				
			||||||
 | 
					    IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW The vector class provides functionality for all the common
 | 
				
			||||||
 | 
					         linear algebra operations performed on vectors.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    O HAI IM Vector
 | 
				
			||||||
 | 
					        I HAS A x ITZ 0
 | 
				
			||||||
 | 
					        I HAS A y ITZ 0
 | 
				
			||||||
 | 
					        I HAS A z ITZ 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Add vector_one and vector_two
 | 
				
			||||||
 | 
					        HOW IZ I addin YR vector_one AN YR vector_two
 | 
				
			||||||
 | 
					            I HAS A result ITZ LIEK A Vector
 | 
				
			||||||
 | 
					            result HAS A x ITZ 0
 | 
				
			||||||
 | 
					            result HAS A y ITZ 0
 | 
				
			||||||
 | 
					            result HAS A z ITZ 0
 | 
				
			||||||
 | 
					            result'Z x R SUM OF vector_one'Z x AN vector_two'Z x
 | 
				
			||||||
 | 
					            result'Z y R SUM OF vector_one'Z y AN vector_two'Z y
 | 
				
			||||||
 | 
					            result'Z z R SUM OF vector_one'Z z AN vector_two'Z z
 | 
				
			||||||
 | 
					            FOUND YR result
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Scale vector_one by value
 | 
				
			||||||
 | 
					    HOW IZ I scalin YR vector_one AN YR value
 | 
				
			||||||
 | 
					            I HAS A result ITZ LIEK A Vector
 | 
				
			||||||
 | 
					            result HAS A x ITZ 0
 | 
				
			||||||
 | 
					            result HAS A y ITZ 0
 | 
				
			||||||
 | 
					            result HAS A z ITZ 0
 | 
				
			||||||
 | 
					            result'Z x R PRODUKT OF vector_one'Z x AN value
 | 
				
			||||||
 | 
					            result'Z y R PRODUKT OF vector_one'Z y AN value
 | 
				
			||||||
 | 
					            result'Z z R PRODUKT OF vector_one'Z z AN value
 | 
				
			||||||
 | 
					            FOUND YR result
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Dot product of vector_one and vector_two
 | 
				
			||||||
 | 
					        HOW IZ I dot_productin YR vector_one AN YR vector_two
 | 
				
			||||||
 | 
					            FOUND YR SUM OF SUM OF PRODUKT OF vector_one'Z x AN vector_two'Z x AN ...
 | 
				
			||||||
 | 
					                                   PRODUKT OF vector_one'Z y AN vector_two'Z y AN ...
 | 
				
			||||||
 | 
					                                   PRODUKT OF vector_one'Z z AN vector_two'Z z
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Cross product of vector_one and vector_two
 | 
				
			||||||
 | 
					        HOW IZ I cross_productin YR vector_one AN YR vector_two
 | 
				
			||||||
 | 
					        I HAS A result ITZ LIEK A Vector
 | 
				
			||||||
 | 
					            result HAS A x ITZ 0
 | 
				
			||||||
 | 
					            result HAS A y ITZ 0
 | 
				
			||||||
 | 
					            result HAS A z ITZ 0
 | 
				
			||||||
 | 
					            result'Z x R DIFF OF PRODUKT OF vector_one'Z y AN vector_two'Z z AN ...
 | 
				
			||||||
 | 
					                                 PRODUKT OF vector_one'Z z AN vector_two'Z y
 | 
				
			||||||
 | 
					            result'Z y R DIFF OF PRODUKT OF vector_one'Z z AN vector_two'Z x AN ...
 | 
				
			||||||
 | 
					                                 PRODUKT OF vector_one'Z x AN vector_two'Z z
 | 
				
			||||||
 | 
					            result'Z z R DIFF OF PRODUKT OF vector_one'Z x AN vector_two'Z y AN ...
 | 
				
			||||||
 | 
					                                 PRODUKT OF vector_one'Z y AN vector_two'Z x
 | 
				
			||||||
 | 
					            FOUND YR result
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Length of vector_one
 | 
				
			||||||
 | 
					        HOW IZ I lengthin YR vector_one
 | 
				
			||||||
 | 
					            FOUND YR I IZ square_rootin YR ...
 | 
				
			||||||
 | 
					                SUM OF SUM OF PRODUKT OF vector_one'Z x AN vector_one'Z x AN ...
 | 
				
			||||||
 | 
					                              PRODUKT OF vector_one'Z y AN vector_one'Z y AN ...
 | 
				
			||||||
 | 
					                              PRODUKT OF vector_one'Z z AN vector_one'Z z MKAY
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Normalize vector_one
 | 
				
			||||||
 | 
					        HOW IZ I normalizin YR vector_one
 | 
				
			||||||
 | 
					            I HAS A result ITZ LIEK A Vector
 | 
				
			||||||
 | 
					            result HAS A x ITZ 0
 | 
				
			||||||
 | 
					            result HAS A y ITZ 0
 | 
				
			||||||
 | 
					            result HAS A z ITZ 0
 | 
				
			||||||
 | 
					            I HAS A length ITZ Vector IZ lengthin YR vector_one MKAY
 | 
				
			||||||
 | 
					            BOTH SAEM length AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY
 | 
				
			||||||
 | 
					                    length R 1
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            result'Z x R QUOSHUNT OF vector_one'Z x AN length
 | 
				
			||||||
 | 
					            result'Z y R QUOSHUNT OF vector_one'Z y AN length
 | 
				
			||||||
 | 
					            result'Z z R QUOSHUNT OF vector_one'Z z AN length
 | 
				
			||||||
 | 
					            FOUND YR result
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Printable YARN version of vector
 | 
				
			||||||
 | 
					        HOW IZ I to_stringin YR vector
 | 
				
			||||||
 | 
					            FOUND YR SMOOSH "[" AN vector'Z x AN ", " ...
 | 
				
			||||||
 | 
					                                AN vector'Z y AN ", " ...
 | 
				
			||||||
 | 
					                                AN vector'Z z AN "]" MKAY
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BTW Create and return a vector with components x, y, and z
 | 
				
			||||||
 | 
					        HOW IZ I constructin YR x AN YR y AN YR z
 | 
				
			||||||
 | 
					            I HAS A result ITZ LIEK A Vector
 | 
				
			||||||
 | 
					            result HAS A x ITZ x
 | 
				
			||||||
 | 
					            result HAS A y ITZ y
 | 
				
			||||||
 | 
					            result HAS A z ITZ z
 | 
				
			||||||
 | 
					            FOUND YR result
 | 
				
			||||||
 | 
					        IF U SAY SO
 | 
				
			||||||
 | 
					    KTHX
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OBTW The positions of the spheres are essentially
 | 
				
			||||||
 | 
					         stored in a 2-D array. This differs from Kensler's
 | 
				
			||||||
 | 
					         version where he used bit flags to store the
 | 
				
			||||||
 | 
					         positions in a compressed and quickly accessed
 | 
				
			||||||
 | 
					         manner. Unfortunately for us, bit operations
 | 
				
			||||||
 | 
					         in LOLCODE were too slow for this to be a tenable
 | 
				
			||||||
 | 
					         solution.
 | 
				
			||||||
 | 
					    TLDR
 | 
				
			||||||
 | 
					    I HAS A sphere_positions ITZ A BUKKIT
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_0 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19
 | 
				
			||||||
 | 
					        sphere_positions_0 HAS A SRS pos_index ITZ FAIL
 | 
				
			||||||
 | 
					    IM OUTTA YR LOOP
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 0 ITZ sphere_positions_0
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_1 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 0 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 0 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 1 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 2 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 2 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 3 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 4 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 4 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 5 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 6 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 7 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 7 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 8 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 9 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 9 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 10 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 11 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 11 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 12 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 13 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 14 ITZ WIN
 | 
				
			||||||
 | 
					    BTWsphere_positions_1 HAS A SRS 14 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 15 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 16 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 16 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 17 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_1 HAS A SRS 18 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_1 HAS A SRS 18 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 1 ITZ sphere_positions_1
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_2 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19
 | 
				
			||||||
 | 
					        sphere_positions_2 HAS A SRS pos_index ITZ FAIL
 | 
				
			||||||
 | 
					    IM OUTTA YR LOOP
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 2 ITZ sphere_positions_2
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_3 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 0 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 1 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 2 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 3 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 4 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_3 HAS A SRS 4 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 5 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 6 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 7 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_3 HAS A SRS 7 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 8 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 9 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 10 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 11 ITZ WIN
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 12 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 13 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 14 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 15 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 16 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 17 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_3 HAS A SRS 18 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_3 HAS A SRS 18 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 3 ITZ sphere_positions_3
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_4 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19
 | 
				
			||||||
 | 
					        sphere_positions_4 HAS A SRS pos_index ITZ FAIL
 | 
				
			||||||
 | 
					    IM OUTTA YR LOOP
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 4 ITZ sphere_positions_4
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_5 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 0 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 1 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 2 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 3 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 4 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_5 HAS A SRS 4 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 5 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 6 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 7 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_5 HAS A SRS 7 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 8 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 9 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_5 HAS A SRS 9 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 10 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 11 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_5 HAS A SRS 11 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 12 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 13 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 14 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 15 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 16 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 17 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions_5 HAS A SRS 18 ITZ WIN
 | 
				
			||||||
 | 
					    BTW sphere_positions_5 HAS A SRS 18 ITZ FAIL
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 5 ITZ sphere_positions_5
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_6 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19
 | 
				
			||||||
 | 
					        sphere_positions_6 HAS A SRS pos_index ITZ FAIL
 | 
				
			||||||
 | 
					    IM OUTTA YR LOOP
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 6 ITZ sphere_positions_6
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_7 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19
 | 
				
			||||||
 | 
					        sphere_positions_7 HAS A SRS pos_index ITZ FAIL
 | 
				
			||||||
 | 
					    IM OUTTA YR LOOP
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 7 ITZ sphere_positions_7
 | 
				
			||||||
 | 
					    I HAS A sphere_positions_8 ITZ A BUKKIT
 | 
				
			||||||
 | 
					    IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19
 | 
				
			||||||
 | 
					        sphere_positions_8 HAS A SRS pos_index ITZ FAIL
 | 
				
			||||||
 | 
					    IM OUTTA YR LOOP
 | 
				
			||||||
 | 
					    sphere_positions HAS A SRS 8 ITZ sphere_positions_8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    BTW Camera direction
 | 
				
			||||||
 | 
					    I HAS A g ITZ Vector IZ constructin YR -6.0 AN YR -16.0 AN YR 0.0 MKAY
 | 
				
			||||||
 | 
					    g R Vector IZ normalizin YR g MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    BTW Camera up vector
 | 
				
			||||||
 | 
					    I HAS A a ITZ Vector IZ constructin YR 0.0 AN YR 0.0 AN YR 1.0 MKAY
 | 
				
			||||||
 | 
					    a R Vector IZ cross_productin YR a AN YR g MKAY
 | 
				
			||||||
 | 
					    a R Vector IZ normalizin YR a MKAY
 | 
				
			||||||
 | 
					    a R Vector IZ scalin YR a AN YR 0.002 MKAY
 | 
				
			||||||
 | 
					    BTW Camera right vector
 | 
				
			||||||
 | 
					    I HAS A b ITZ Vector IZ cross_productin YR g AN YR a MKAY
 | 
				
			||||||
 | 
					    b R Vector IZ normalizin YR b MKAY
 | 
				
			||||||
 | 
					    b R Vector IZ scalin YR b AN YR 0.002 MKAY
 | 
				
			||||||
 | 
					    BTW Camera eye offset
 | 
				
			||||||
 | 
					    I HAS A c ITZ Vector IZ addin YR a AN YR b MKAY
 | 
				
			||||||
 | 
					    c R Vector IZ scalin YR c AN YR -256.0 MKAY
 | 
				
			||||||
 | 
					    c R Vector IZ addin YR c AN YR g MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    I HAS A max_x ITZ 511
 | 
				
			||||||
 | 
					    I HAS A max_y ITZ max_x
 | 
				
			||||||
 | 
					    BTW Issue the PPM Header info
 | 
				
			||||||
 | 
					    VISIBLE "P3 " SUM OF max_x AN 1 " " SUM OF max_y AN 1 " 255"!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    I HAS A viewpoint ITZ Vector IZ constructin YR 17 AN YR 16 AN YR 8 MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    I HAS A y ITZ max_y
 | 
				
			||||||
 | 
					    IM IN YR y_loop
 | 
				
			||||||
 | 
					        BOTH SAEM y AN -1, O RLY?
 | 
				
			||||||
 | 
					            YA RLY, GTFO
 | 
				
			||||||
 | 
					        OIC
 | 
				
			||||||
 | 
					        I HAS A x ITZ max_x
 | 
				
			||||||
 | 
					        IM IN YR x_loop
 | 
				
			||||||
 | 
					            BOTH SAEM x AN -1, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, GTFO
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            I HAS A pixel_color ITZ Vector IZ constructin YR 13 AN YR 13 AN YR 13 MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            I HAS A rays ITZ 64
 | 
				
			||||||
 | 
					            IM IN YR ray_loop
 | 
				
			||||||
 | 
					                BOTH SAEM rays AN 0, O RLY?
 | 
				
			||||||
 | 
					                    YA RLY, GTFO
 | 
				
			||||||
 | 
					                OIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                BTW The delta to apply to the origin of the view (For Depth of View blur).
 | 
				
			||||||
 | 
					                I HAS A a_rand ITZ DIFF OF I IZ rand_onein MKAY AN 0.5
 | 
				
			||||||
 | 
					                I HAS A t_a ITZ Vector IZ scalin YR a AN YR a_rand MKAY
 | 
				
			||||||
 | 
					                t_a R Vector IZ scalin YR t_a AN YR 99.0 MKAY
 | 
				
			||||||
 | 
					                I HAS A b_rand ITZ DIFF OF I IZ rand_onein MKAY AN 0.5
 | 
				
			||||||
 | 
					                I HAS A t_b ITZ Vector IZ scalin YR b AN YR b_rand MKAY
 | 
				
			||||||
 | 
					                t_b R Vector IZ scalin YR t_b AN YR 99.0 MKAY
 | 
				
			||||||
 | 
					                I HAS A t ITZ Vector IZ addin YR t_a AN YR t_b MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                I HAS A origin ITZ Vector IZ addin YR viewpoint AN YR t MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                BTW Ray direction with random deltas for stochastic sampling
 | 
				
			||||||
 | 
					                I HAS A direction_up ITZ SUM OF I IZ rand_onein MKAY AN x
 | 
				
			||||||
 | 
					                direction_up R Vector IZ scalin YR a AN YR direction_up MKAY
 | 
				
			||||||
 | 
					                I HAS A direction_right ITZ SUM OF I IZ rand_onein MKAY AN y
 | 
				
			||||||
 | 
					                direction_right R Vector IZ scalin YR b AN YR direction_right MKAY
 | 
				
			||||||
 | 
					                I HAS A direction_t ITZ Vector IZ scalin YR t AN YR -1 MKAY
 | 
				
			||||||
 | 
					                I HAS A direction ITZ Vector IZ addin YR direction_right AN YR direction_up MKAY
 | 
				
			||||||
 | 
					                direction R Vector IZ addin YR direction AN YR c MKAY
 | 
				
			||||||
 | 
					                direction R Vector IZ scalin YR direction AN YR 16 MKAY
 | 
				
			||||||
 | 
					                direction R Vector IZ addin YR direction AN YR direction_t MKAY
 | 
				
			||||||
 | 
					                direction R Vector IZ normalizin YR direction MKAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                I HAS A sample_color ITZ I IZ samplin YR origin AN YR direction MKAY
 | 
				
			||||||
 | 
					                sample_color R Vector IZ scalin YR sample_color AN YR 3.5 MKAY
 | 
				
			||||||
 | 
					                BTW + pixel_color for color accumulation
 | 
				
			||||||
 | 
					                pixel_color R Vector IZ addin YR sample_color AN YR pixel_color MKAY
 | 
				
			||||||
 | 
					                rays R DIFF OF rays AN 1
 | 
				
			||||||
 | 
					            IM OUTTA YR ray_loop
 | 
				
			||||||
 | 
					            I HAS A write_color ITZ pixel_color
 | 
				
			||||||
 | 
					            write_color'Z x IS NOW A NUMBR
 | 
				
			||||||
 | 
					            write_color'Z y IS NOW A NUMBR
 | 
				
			||||||
 | 
					            write_color'Z z IS NOW A NUMBR
 | 
				
			||||||
 | 
					            DIFFRINT write_color'Z x AN BIGGR OF write_color'Z x AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, write_color'Z x R 0
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            DIFFRINT write_color'Z y AN BIGGR OF write_color'Z y AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, write_color'Z y R 0
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            DIFFRINT write_color'Z z AN BIGGR OF write_color'Z z AN 0, O RLY?
 | 
				
			||||||
 | 
					                YA RLY, write_color'Z z R 0
 | 
				
			||||||
 | 
					            OIC
 | 
				
			||||||
 | 
					            VISIBLE " " write_color'Z x " " ...
 | 
				
			||||||
 | 
					                    " " write_color'Z y " " ...
 | 
				
			||||||
 | 
					                    " " write_color'Z z " "!
 | 
				
			||||||
 | 
					            x R DIFF OF x AN 1
 | 
				
			||||||
 | 
					        IM OUTTA YR x_loop
 | 
				
			||||||
 | 
					        y R DIFF OF y AN 1
 | 
				
			||||||
 | 
					    IM OUTTA YR y_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KTHXBYE
 | 
				
			||||||
							
								
								
									
										28
									
								
								samples/Lua/wsapi.fcgi
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								samples/Lua/wsapi.fcgi
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/lua
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Generic WSAPI FastCGI launcher, extracts application to launch
 | 
				
			||||||
 | 
					-- from SCRIPT_FILENAME/PATH_TRANSLATED, each application (defined
 | 
				
			||||||
 | 
					-- by its script entry point) gets an isolated Lua VM; sequential
 | 
				
			||||||
 | 
					-- requests to the same application go to the same VM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pcall(require,"luarocks.require")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local common = require "wsapi.common"
 | 
				
			||||||
 | 
					local fastcgi = require "wsapi.fastcgi"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local ONE_HOUR = 60 * 60
 | 
				
			||||||
 | 
					local ONE_DAY = 24 * ONE_HOUR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local wsapi_loader = common.make_loader{
 | 
				
			||||||
 | 
					  isolated = true,         -- isolate each script in its own Lua state
 | 
				
			||||||
 | 
					  filename = nil,          -- if you want to force the launch of a single script
 | 
				
			||||||
 | 
					  launcher = "wsapi.fcgi", -- the name of this script
 | 
				
			||||||
 | 
					  reload = false,          -- if you want to reload the application on every request
 | 
				
			||||||
 | 
					  period = ONE_HOUR,       -- frequency of Lua state staleness checks
 | 
				
			||||||
 | 
					  ttl = ONE_DAY,           -- time-to-live for Lua states
 | 
				
			||||||
 | 
					  vars =                   -- order of checking for the path of the script
 | 
				
			||||||
 | 
					   { "SCRIPT_FILENAME",
 | 
				
			||||||
 | 
					     "PATH_TRANSLATED" } 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fastcgi.run(wsapi_loader)
 | 
				
			||||||
							
								
								
									
										3
									
								
								samples/PHP/prefix.fcgi
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								samples/PHP/prefix.fcgi
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					echo $_SERVER[$_GET["var"]];
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
							
								
								
									
										120
									
								
								samples/Python/backstage.fcgi
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										120
									
								
								samples/Python/backstage.fcgi
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,120 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sqlite
 | 
				
			||||||
 | 
					import urllib2
 | 
				
			||||||
 | 
					import csv
 | 
				
			||||||
 | 
					import cgi
 | 
				
			||||||
 | 
					import simplejson
 | 
				
			||||||
 | 
					import jsontemplate
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					log = open('log.txt', 'a')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def urldecode(query):
 | 
				
			||||||
 | 
					   d = {}
 | 
				
			||||||
 | 
					   a = query.split('&')
 | 
				
			||||||
 | 
					   for s in a:
 | 
				
			||||||
 | 
					      if s.find('='):
 | 
				
			||||||
 | 
					         k,v = map(urllib2.unquote, s.split('='))
 | 
				
			||||||
 | 
					         try:
 | 
				
			||||||
 | 
					            d[k].append(v)
 | 
				
			||||||
 | 
					         except KeyError:
 | 
				
			||||||
 | 
					            d[k] = [v]
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   return d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def load_table(uri, cur):
 | 
				
			||||||
 | 
					    table = uri.split('/')[-1]
 | 
				
			||||||
 | 
					    table = table.split('.')[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    contents = urllib2.urlopen(uri)
 | 
				
			||||||
 | 
					    fields = ""
 | 
				
			||||||
 | 
					    for field in contents.readline().strip().split(','):
 | 
				
			||||||
 | 
					      fields += field
 | 
				
			||||||
 | 
					      fields += ","
 | 
				
			||||||
 | 
					    fields = fields.rstrip(',')
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cur.execute("SELECT name FROM sqlite_master WHERE type='table' \
 | 
				
			||||||
 | 
					      AND name='%s';" % (table))
 | 
				
			||||||
 | 
					    if cur.fetchone() == None:
 | 
				
			||||||
 | 
					#      cur.execute("DROP TABLE %s;" % (table))
 | 
				
			||||||
 | 
					      cur.execute("CREATE TABLE %s (%s);" % (table, fields))
 | 
				
			||||||
 | 
					      for line in contents:
 | 
				
			||||||
 | 
					        values = line.strip()
 | 
				
			||||||
 | 
					        values = "','".join([val.strip() for val in values.split(",")])
 | 
				
			||||||
 | 
					        values = "'" + values + "'"
 | 
				
			||||||
 | 
					        sql = "INSERT INTO %s (%s) VALUES (%s);" % (table, fields, values)
 | 
				
			||||||
 | 
					        cur.execute(sql)
 | 
				
			||||||
 | 
					    return table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def build_structure(headings, allresults):
 | 
				
			||||||
 | 
					  results = []
 | 
				
			||||||
 | 
					  for result in allresults:
 | 
				
			||||||
 | 
					    results.append(dict(zip(headings, result)))
 | 
				
			||||||
 | 
					  results = { "query" : results }
 | 
				
			||||||
 | 
					  return results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def build_json(headings, allresults, callback):
 | 
				
			||||||
 | 
					  results = build_structure(headings, allresults)
 | 
				
			||||||
 | 
					  return_str = simplejson.dumps(results)
 | 
				
			||||||
 | 
					  if callback != None:
 | 
				
			||||||
 | 
					    return_str = callback + "(" + return_str + ");";
 | 
				
			||||||
 | 
					  return return_str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def load_template(templatefile):
 | 
				
			||||||
 | 
					  return "".join(urllib2.urlopen(templatefile).readlines())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def build_template(headings, allresults, template_str):
 | 
				
			||||||
 | 
					  results = build_structure(headings, allresults)
 | 
				
			||||||
 | 
					  return jsontemplate.expand(template_str, results)
 | 
				
			||||||
 | 
					  return ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def myapp(environ, start_response):
 | 
				
			||||||
 | 
					    args = cgi.parse_qs(environ['QUERY_STRING'])
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    query = args['query'][0]
 | 
				
			||||||
 | 
					    uri = args['uri'][0]
 | 
				
			||||||
 | 
					    callback = None
 | 
				
			||||||
 | 
					    if 'callback' in args:
 | 
				
			||||||
 | 
					      callback = args['callback'][0]
 | 
				
			||||||
 | 
					    label = "no label"
 | 
				
			||||||
 | 
					    if 'label' in args:
 | 
				
			||||||
 | 
					      label = args['label'][0]
 | 
				
			||||||
 | 
					    templatefile = None
 | 
				
			||||||
 | 
					    if 'templatefile' in args:
 | 
				
			||||||
 | 
					      templatefile = args['templatefile'][0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    con = sqlite.connect('mydatabase.db')
 | 
				
			||||||
 | 
					    cur = con.cursor()
 | 
				
			||||||
 | 
					    table_uris = uri.split(',')
 | 
				
			||||||
 | 
					    tables = [load_table(uri, cur) for uri in table_uris]
 | 
				
			||||||
 | 
					    con.commit() 
 | 
				
			||||||
 | 
					    before = time.time()
 | 
				
			||||||
 | 
					    cur.execute(query)
 | 
				
			||||||
 | 
					    allresults = cur.fetchall()
 | 
				
			||||||
 | 
					    after = time.time()
 | 
				
			||||||
 | 
					    log.write("%s: query time %f\n" % (label, after - before))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    headings = [name[0] for name in cur.description]
 | 
				
			||||||
 | 
					    return_str = ""
 | 
				
			||||||
 | 
					    if templatefile != None:
 | 
				
			||||||
 | 
					      start_response('200 OK', [('Content-Type', 'text/html')])
 | 
				
			||||||
 | 
					      before = time.time()
 | 
				
			||||||
 | 
					      template_str = load_template(templatefile)
 | 
				
			||||||
 | 
					      after = time.time()
 | 
				
			||||||
 | 
					      log.write("%s: template loading time %f\n" % (label, after - before))
 | 
				
			||||||
 | 
					      before = time.time()
 | 
				
			||||||
 | 
					      return_str = build_template(headings, allresults, template_str)
 | 
				
			||||||
 | 
					      after = time.time()
 | 
				
			||||||
 | 
					      log.write("%s: template rendering time %f\n" % (label, after - before))
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					      start_response('200 OK', [('Content-Type', 'text/plain')])
 | 
				
			||||||
 | 
					      before = time.time()
 | 
				
			||||||
 | 
					      return_str = build_json(headings, allresults, callback)
 | 
				
			||||||
 | 
					      after = time.time()
 | 
				
			||||||
 | 
					      log.write("%s: json-making time %f\n" % (label, after - before))
 | 
				
			||||||
 | 
					    return return_str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    from fcgi import WSGIServer
 | 
				
			||||||
 | 
					    WSGIServer(myapp).run()
 | 
				
			||||||
							
								
								
									
										68
									
								
								samples/Ruby/mdata_server.fcgi
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										68
									
								
								samples/Ruby/mdata_server.fcgi
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env ruby
 | 
				
			||||||
 | 
					require "xmlrpc/server"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: force the usage of the pure-ruby version of fcgi. 
 | 
				
			||||||
 | 
					# - this is required by the workaround to get fcgi+xmlrpc working together
 | 
				
			||||||
 | 
					FCGI_PURE_RUBY=true
 | 
				
			||||||
 | 
					require 'fcgi'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require File.join(File.dirname(__FILE__), '../bt_cast/mdata_echo_server/bt_cast_mdata_server_t.rb')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					#			CGI handling for xmlrpc
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					# - for basic xmlrpc via CGI example
 | 
				
			||||||
 | 
					#   - see http://www.ntecs.de/projects/xmlrpc4r/server.html#label-19
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# create the directory needed for Neoip::Cast_mdata_server_t
 | 
				
			||||||
 | 
					Neoip::Cast_mdata_server_t.create_dir_ifneeded();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# init the cgi_server
 | 
				
			||||||
 | 
					cgi_server	= XMLRPC::CGIServer.new     
 | 
				
			||||||
 | 
					# register all the xmlrpc function
 | 
				
			||||||
 | 
					cgi_server.add_handler("set_cast_mdata_pull") do |web2srv_str, cast_name, cast_privtext, cast_id, 
 | 
				
			||||||
 | 
											port_lview, port_pview, uri_pathquery|
 | 
				
			||||||
 | 
						Neoip::Cast_mdata_server_t.set_cast_mdata_pull(web2srv_str, cast_name, cast_privtext, cast_id,
 | 
				
			||||||
 | 
											port_lview, port_pview, uri_pathquery, ENV['REMOTE_ADDR']);
 | 
				
			||||||
 | 
					end 
 | 
				
			||||||
 | 
					cgi_server.add_handler("set_cast_mdata_push") do |web2srv_str, cast_name, cast_privtext, cast_mdata|
 | 
				
			||||||
 | 
						Neoip::Cast_mdata_server_t.set_cast_mdata_push(web2srv_str, cast_name, cast_privtext, cast_mdata);
 | 
				
			||||||
 | 
					end 
 | 
				
			||||||
 | 
					cgi_server.add_handler("get_cast_mdata") do |cast_name, cast_privhash|
 | 
				
			||||||
 | 
						Neoip::Cast_mdata_server_t.get_cast_mdata(cast_name, cast_privhash);
 | 
				
			||||||
 | 
					end 
 | 
				
			||||||
 | 
					cgi_server.add_handler("del_cast_mdata") do |cast_name, cast_privtext|
 | 
				
			||||||
 | 
						Neoip::Cast_mdata_server_t.del_cast_mdata(cast_name, cast_privtext);
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# handle the unknown/bad formered calls
 | 
				
			||||||
 | 
					cgi_server.set_default_handler do |name, *args|
 | 
				
			||||||
 | 
						raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
 | 
				
			||||||
 | 
					                                   " or wrong number of parameters!")
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# server the cgi_server
 | 
				
			||||||
 | 
					#cgi_server.serve
 | 
				
			||||||
 | 
					#exit
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					# experiment at using fast-cgi
 | 
				
			||||||
 | 
					FCGI.each_request do |request|
 | 
				
			||||||
 | 
						# XMLRPC::CGIServer expect some value in ENV[] but FCGI doesnt provides them
 | 
				
			||||||
 | 
						# - so working around by copying them by hand... dirty 
 | 
				
			||||||
 | 
						ENV['REMOTE_ADDR']	= request.env['REMOTE_ADDR'];
 | 
				
			||||||
 | 
						ENV['REQUEST_METHOD']	= request.env['REQUEST_METHOD'];
 | 
				
			||||||
 | 
						ENV['CONTENT_TYPE']	= "text/xml";
 | 
				
			||||||
 | 
						ENV['CONTENT_LENGTH']	= "#{request.in.length}";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# copy the request in/out into the stdin/stdout to act as a CGI
 | 
				
			||||||
 | 
						$stdin	= request.in
 | 
				
			||||||
 | 
						$stdout	= request.out
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# process the cgi itself
 | 
				
			||||||
 | 
						cgi_server.serve
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# mark the request as finished
 | 
				
			||||||
 | 
						request.finish
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										30
									
								
								samples/Shell/build.command
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								samples/Shell/build.command
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "/************/"
 | 
				
			||||||
 | 
					echo "/* BUILDING */"
 | 
				
			||||||
 | 
					echo "/************/"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cd `dirname $0`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cd build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cmake ..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					make
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "/***********/"
 | 
				
			||||||
 | 
					echo "/* TESTING */"
 | 
				
			||||||
 | 
					echo "/***********/"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ctest ..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					make Experimental
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "/***********/"
 | 
				
			||||||
 | 
					echo "/* SUCCESS */"
 | 
				
			||||||
 | 
					echo "/***********/"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
							
								
								
									
										16
									
								
								samples/Shell/php.fcgi
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								samples/Shell/php.fcgi
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					# you can change the PHP version here.
 | 
				
			||||||
 | 
					version="RB_PHP_VERSION_X_Y_Z"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# php.ini file location
 | 
				
			||||||
 | 
					PHPRC=/usr/local/php/phpfarm/inst/php-${version}/lib/php.ini
 | 
				
			||||||
 | 
					export PHPRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PHP_FCGI_CHILDREN=3
 | 
				
			||||||
 | 
					export PHP_FCGI_CHILDREN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PHP_FCGI_MAX_REQUESTS=5000
 | 
				
			||||||
 | 
					export PHP_FCGI_MAX_REQUESTS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# which php-cgi binary to execute
 | 
				
			||||||
 | 
					exec /usr/local/php/inst/php-${version}/bin/php-cgi
 | 
				
			||||||
							
								
								
									
										63
									
								
								samples/Tcl/filenames/owh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										63
									
								
								samples/Tcl/filenames/owh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env tclsh
 | 
				
			||||||
 | 
					# http://wiki.tcl.tk/906
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if {[llength $argv] < 1} {
 | 
				
			||||||
 | 
					   puts "usage: owh ?init? body ?exit?
 | 
				
			||||||
 | 
					   performs body (in Tcl) for each line (\$0) from stdin
 | 
				
			||||||
 | 
					   owh: Ousterhout - Welch - Hobbs, to name a few"
 | 
				
			||||||
 | 
					   exit -1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc awksplit {text {split default}} {
 | 
				
			||||||
 | 
					    set no 0
 | 
				
			||||||
 | 
					    if {$split eq "default"} {
 | 
				
			||||||
 | 
					        set t {}
 | 
				
			||||||
 | 
					        foreach string [split $text] {
 | 
				
			||||||
 | 
					            if {$string ne {}} {
 | 
				
			||||||
 | 
					                lappend t $string
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        set t [list $text $split]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    uplevel 1 [list set NF [llength $t]]
 | 
				
			||||||
 | 
					    foreach i $t {uplevel 1 [list set [incr no] $i]}
 | 
				
			||||||
 | 
					    uplevel 1 {set 0 {};trace variable 0 ru 0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					proc 0 {_name index op} {
 | 
				
			||||||
 | 
					    switch $op {
 | 
				
			||||||
 | 
					        r {
 | 
				
			||||||
 | 
					            uplevel {
 | 
				
			||||||
 | 
					                set 0 {}
 | 
				
			||||||
 | 
					                for {set i 1} {$i <= $NF} {incr i} {lappend 0 [set $i]}
 | 
				
			||||||
 | 
					                set 0 [join $0 $OFS]
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        u {rename 0 {} ;# leave no traces of the trace..}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc print s {if {[catch {puts $s}]} exit} ;# good for broken pipe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set FS default
 | 
				
			||||||
 | 
					set OFS { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if {[llength $argv] > 1} {
 | 
				
			||||||
 | 
					   eval [lindex $argv 0]
 | 
				
			||||||
 | 
					   set _body [lindex $argv 1] ;# strip outer braces
 | 
				
			||||||
 | 
					   set _exit [lindex $argv 2]
 | 
				
			||||||
 | 
					} else {
 | 
				
			||||||
 | 
					   set _body [lindex $argv 0] ;# strip outer braces
 | 
				
			||||||
 | 
					   set _exit {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set NR 1
 | 
				
			||||||
 | 
					while 1 {
 | 
				
			||||||
 | 
					   gets stdin line
 | 
				
			||||||
 | 
					   if {[eof stdin]} break
 | 
				
			||||||
 | 
					   awksplit $line $FS
 | 
				
			||||||
 | 
					   eval $_body
 | 
				
			||||||
 | 
					   incr NR
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					set res [eval $_exit]
 | 
				
			||||||
 | 
					if {[string length $res]} {puts $res}
 | 
				
			||||||
							
								
								
									
										28
									
								
								samples/Tcl/filenames/starfield
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								samples/Tcl/filenames/starfield
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env wish
 | 
				
			||||||
 | 
					# http://wiki.tcl.tk/14140
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					proc stars'go {c factor} {
 | 
				
			||||||
 | 
					    set w [winfo width $c]
 | 
				
			||||||
 | 
					    set h [winfo height $c] 
 | 
				
			||||||
 | 
					    $c scale all [expr {$w/2}] [expr {$h/2}] $factor $factor 
 | 
				
			||||||
 | 
					    foreach item [$c find all] {
 | 
				
			||||||
 | 
					        if {[llength [$c bbox $item]] == 0} {$c delete $item; continue} ;# (1)
 | 
				
			||||||
 | 
					        foreach {x0 y0 x1 y1} [$c bbox $item] break
 | 
				
			||||||
 | 
					        if {$x1<0 || $x0>$w || $y1<0 || $y0>$h} {$c delete $item}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    time {
 | 
				
			||||||
 | 
					        set x [expr {rand()*$w}]
 | 
				
			||||||
 | 
					        set y [expr {rand()*$h}]
 | 
				
			||||||
 | 
					        set col [lpick {white yellow beige bisque cyan}]
 | 
				
			||||||
 | 
					        $c create oval $x $y [expr {$x+1}] [expr {$y+1}] -fill $col \
 | 
				
			||||||
 | 
					                -outline $col
 | 
				
			||||||
 | 
					    } 10
 | 
				
			||||||
 | 
					    after $::ms [info level 0]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					proc lpick list {lindex $list [expr {int(rand()*[llength $list])}]}
 | 
				
			||||||
 | 
					#-- Let's go!
 | 
				
			||||||
 | 
					pack [canvas .c -bg black] -fill both -expand 1
 | 
				
			||||||
 | 
					set ms 40
 | 
				
			||||||
 | 
					bind . <Up> {incr ms -5}
 | 
				
			||||||
 | 
					bind . <Down> {incr ms 5}
 | 
				
			||||||
 | 
					stars'go .c 1.05
 | 
				
			||||||
							
								
								
									
										8
									
								
								samples/VimL/filenames/_vimrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								samples/VimL/filenames/_vimrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					set nocompatible
 | 
				
			||||||
 | 
					set ignorecase
 | 
				
			||||||
 | 
					set incsearch
 | 
				
			||||||
 | 
					set smartcase
 | 
				
			||||||
 | 
					set showmatch
 | 
				
			||||||
 | 
					set showcmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					syntax on
 | 
				
			||||||
							
								
								
									
										18
									
								
								script/cibuild
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										18
									
								
								script/cibuild
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					if [ -d /usr/share/rbenv/shims ]; then
 | 
				
			||||||
 | 
					  export PATH=/usr/share/rbenv/shims:$PATH
 | 
				
			||||||
 | 
					  export RBENV_VERSION=2.1.2-github
 | 
				
			||||||
 | 
					  export RUBY_VERSION=2.1.2-github
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -x
 | 
				
			||||||
 | 
					git log -n 1 HEAD | cat
 | 
				
			||||||
 | 
					ruby -v
 | 
				
			||||||
 | 
					bundle -v
 | 
				
			||||||
 | 
					set +x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir -p ./vendor/gems
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bundle install --local --path ./vendor/gems
 | 
				
			||||||
 | 
					bundle exec rake samples
 | 
				
			||||||
 | 
					bundle exec rake
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/charlock_holmes-0.7.3.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/charlock_holmes-0.7.3.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/coderay-1.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/coderay-1.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/escape_utils-1.0.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/escape_utils-1.0.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/json-1.8.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/json-1.8.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/metaclass-0.0.4.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/metaclass-0.0.4.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/method_source-0.8.2.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/method_source-0.8.2.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/mime-types-1.25.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/mime-types-1.25.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/mocha-1.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/mocha-1.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/posix-spawn-0.3.9.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/posix-spawn-0.3.9.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/pry-0.10.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/pry-0.10.1.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/pygments.rb-0.6.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/pygments.rb-0.6.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/rake-10.3.2.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/rake-10.3.2.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/rugged-0.21.1b2.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/rugged-0.21.1b2.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/slop-3.6.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/slop-3.6.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vendor/cache/yajl-ruby-1.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/cache/yajl-ruby-1.1.0.gem
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user