mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
Merge branch 'master' into 1623-local
Conflicts: lib/linguist/heuristics.rb
This commit is contained in:
@@ -6,6 +6,7 @@ before_install:
|
|||||||
rvm:
|
rvm:
|
||||||
- 1.9.3
|
- 1.9.3
|
||||||
- 2.0.0
|
- 2.0.0
|
||||||
- 2.1.1
|
- 2.1
|
||||||
|
- 2.2
|
||||||
notifications:
|
notifications:
|
||||||
disabled: true
|
disabled: true
|
||||||
|
|||||||
1
Gemfile
1
Gemfile
@@ -1,2 +1,3 @@
|
|||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
gemspec
|
gemspec
|
||||||
|
gem 'test-unit', require: false if RUBY_VERSION >= '2.2'
|
||||||
|
|||||||
@@ -108,6 +108,8 @@ See [Linguist::Generated#generated?](https://github.com/github/linguist/blob/mas
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
Please note that the overrides currently only affect the language statistics for a repository and not the syntax-highlighting of files.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cat .gitattributes
|
$ cat .gitattributes
|
||||||
*.rb linguist-language=Java
|
*.rb linguist-language=Java
|
||||||
|
|||||||
18
Rakefile
18
Rakefile
@@ -1,8 +1,8 @@
|
|||||||
require 'bundler/setup'
|
require 'bundler/setup'
|
||||||
require 'json'
|
|
||||||
require 'rake/clean'
|
require 'rake/clean'
|
||||||
require 'rake/testtask'
|
require 'rake/testtask'
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
|
require 'yajl'
|
||||||
|
|
||||||
task :default => :test
|
task :default => :test
|
||||||
|
|
||||||
@@ -20,15 +20,13 @@ end
|
|||||||
|
|
||||||
task :samples do
|
task :samples do
|
||||||
require 'linguist/samples'
|
require 'linguist/samples'
|
||||||
require 'yajl'
|
json = Yajl.dump(Linguist::Samples.data, :pretty => true)
|
||||||
data = Linguist::Samples.data
|
File.write 'lib/linguist/samples.json', json
|
||||||
json = Yajl::Encoder.encode(data, :pretty => true)
|
|
||||||
File.open('lib/linguist/samples.json', 'w') { |io| io.write json }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
task :build_gem => :samples do
|
task :build_gem => :samples do
|
||||||
languages = YAML.load_file("lib/linguist/languages.yml")
|
languages = YAML.load_file("lib/linguist/languages.yml")
|
||||||
File.write("lib/linguist/languages.json", JSON.dump(languages))
|
File.write("lib/linguist/languages.json", Yajl.dump(languages))
|
||||||
`gem build github-linguist.gemspec`
|
`gem build github-linguist.gemspec`
|
||||||
File.delete("lib/linguist/languages.json")
|
File.delete("lib/linguist/languages.json")
|
||||||
end
|
end
|
||||||
@@ -72,11 +70,11 @@ namespace :benchmark do
|
|||||||
reference_file = ENV["REFERENCE"]
|
reference_file = ENV["REFERENCE"]
|
||||||
candidate_file = ENV["CANDIDATE"]
|
candidate_file = ENV["CANDIDATE"]
|
||||||
|
|
||||||
reference = JSON.parse(File.read(reference_file))
|
reference = Yajl.load(File.read(reference_file))
|
||||||
reference_counts = Hash.new(0)
|
reference_counts = Hash.new(0)
|
||||||
reference.each { |filename, language| reference_counts[language] += 1 }
|
reference.each { |filename, language| reference_counts[language] += 1 }
|
||||||
|
|
||||||
candidate = JSON.parse(File.read(candidate_file))
|
candidate = Yajl.load(File.read(candidate_file))
|
||||||
candidate_counts = Hash.new(0)
|
candidate_counts = Hash.new(0)
|
||||||
candidate.each { |filename, language| candidate_counts[language] += 1 }
|
candidate.each { |filename, language| candidate_counts[language] += 1 }
|
||||||
|
|
||||||
@@ -126,14 +124,12 @@ namespace :classifier do
|
|||||||
|
|
||||||
def each_public_gist
|
def each_public_gist
|
||||||
require 'open-uri'
|
require 'open-uri'
|
||||||
require 'json'
|
|
||||||
|
|
||||||
url = "https://api.github.com/gists/public"
|
url = "https://api.github.com/gists/public"
|
||||||
|
|
||||||
loop do
|
loop do
|
||||||
resp = open(url)
|
resp = open(url)
|
||||||
url = resp.meta['link'][/<([^>]+)>; rel="next"/, 1]
|
url = resp.meta['link'][/<([^>]+)>; rel="next"/, 1]
|
||||||
gists = JSON.parse(resp.read)
|
gists = Yajl.load(resp.read)
|
||||||
|
|
||||||
for gist in gists
|
for gist in gists
|
||||||
for filename, attrs in gist['files']
|
for filename, attrs in gist['files']
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
|
|||||||
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_dependency 'rugged', '~> 0.21.1b2'
|
||||||
|
|
||||||
s.add_development_dependency 'json'
|
|
||||||
s.add_development_dependency 'mocha'
|
s.add_development_dependency 'mocha'
|
||||||
s.add_development_dependency 'pry'
|
s.add_development_dependency 'pry'
|
||||||
s.add_development_dependency 'rake'
|
s.add_development_dependency 'rake'
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ module Linguist
|
|||||||
if languages.all? { |l| ["Scala", "SuperCollider"].include?(l) }
|
if languages.all? { |l| ["Scala", "SuperCollider"].include?(l) }
|
||||||
result = disambiguate_sc(data, languages)
|
result = disambiguate_sc(data, languages)
|
||||||
end
|
end
|
||||||
|
if languages.all? { |l| ["AsciiDoc", "AGS Script"].include?(l) }
|
||||||
|
result = disambiguate_asc(data, languages)
|
||||||
|
end
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -102,6 +105,12 @@ module Linguist
|
|||||||
matches
|
matches
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.disambiguate_asc(data, languages)
|
||||||
|
matches = []
|
||||||
|
matches << Language["AsciiDoc"] if /^=+(\s|\n)/.match(data)
|
||||||
|
matches
|
||||||
|
end
|
||||||
|
|
||||||
def self.active?
|
def self.active?
|
||||||
!!ACTIVE
|
!!ACTIVE
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ require 'escape_utils'
|
|||||||
require 'pygments'
|
require 'pygments'
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
begin
|
begin
|
||||||
require 'json'
|
require 'yajl'
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -533,8 +533,8 @@ module Linguist
|
|||||||
languages_yml = File.expand_path("../languages.yml", __FILE__)
|
languages_yml = File.expand_path("../languages.yml", __FILE__)
|
||||||
languages_json = File.expand_path("../languages.json", __FILE__)
|
languages_json = File.expand_path("../languages.json", __FILE__)
|
||||||
|
|
||||||
if File.exist?(languages_json) && defined?(JSON)
|
if File.exist?(languages_json) && defined?(Yajl)
|
||||||
languages = JSON.load(File.read(languages_json))
|
languages = Yajl.load(File.read(languages_json))
|
||||||
else
|
else
|
||||||
languages = YAML.load_file(languages_yml)
|
languages = YAML.load_file(languages_yml)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -175,6 +181,7 @@ Assembly:
|
|||||||
extensions:
|
extensions:
|
||||||
- .asm
|
- .asm
|
||||||
- .a51
|
- .a51
|
||||||
|
tm_scope: source.asm.x86
|
||||||
|
|
||||||
Augeas:
|
Augeas:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -199,6 +206,7 @@ AutoIt:
|
|||||||
- AutoItScript
|
- AutoItScript
|
||||||
extensions:
|
extensions:
|
||||||
- .au3
|
- .au3
|
||||||
|
tm_scope: source.autoit.3
|
||||||
|
|
||||||
Awk:
|
Awk:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -224,6 +232,7 @@ Batchfile:
|
|||||||
extensions:
|
extensions:
|
||||||
- .bat
|
- .bat
|
||||||
- .cmd
|
- .cmd
|
||||||
|
tm_scope: source.dosbatch
|
||||||
|
|
||||||
Befunge:
|
Befunge:
|
||||||
extensions:
|
extensions:
|
||||||
@@ -237,6 +246,7 @@ BlitzBasic:
|
|||||||
extensions:
|
extensions:
|
||||||
- .bb
|
- .bb
|
||||||
- .decls
|
- .decls
|
||||||
|
tm_scope: source.blitzmax
|
||||||
|
|
||||||
BlitzMax:
|
BlitzMax:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -249,6 +259,7 @@ Bluespec:
|
|||||||
lexer: verilog
|
lexer: verilog
|
||||||
extensions:
|
extensions:
|
||||||
- .bsv
|
- .bsv
|
||||||
|
tm_scope: source.verilog
|
||||||
|
|
||||||
Boo:
|
Boo:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -260,6 +271,7 @@ Brainfuck:
|
|||||||
extensions:
|
extensions:
|
||||||
- .b
|
- .b
|
||||||
- .bf
|
- .bf
|
||||||
|
tm_scope: source.bf
|
||||||
|
|
||||||
Brightscript:
|
Brightscript:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -323,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
|
||||||
@@ -332,6 +345,7 @@ C2hs Haskell:
|
|||||||
- c2hs
|
- c2hs
|
||||||
extensions:
|
extensions:
|
||||||
- .chs
|
- .chs
|
||||||
|
tm_scope: source.haskell
|
||||||
|
|
||||||
CLIPS:
|
CLIPS:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -379,6 +393,7 @@ ChucK:
|
|||||||
lexer: Java
|
lexer: Java
|
||||||
extensions:
|
extensions:
|
||||||
- .ck
|
- .ck
|
||||||
|
tm_scope: source.java
|
||||||
|
|
||||||
Cirru:
|
Cirru:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -442,6 +457,7 @@ ColdFusion:
|
|||||||
- cfml
|
- cfml
|
||||||
extensions:
|
extensions:
|
||||||
- .cfm
|
- .cfm
|
||||||
|
tm_scope: text.html.cfm
|
||||||
|
|
||||||
ColdFusion CFC:
|
ColdFusion CFC:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -454,6 +470,7 @@ ColdFusion CFC:
|
|||||||
- cfc
|
- cfc
|
||||||
extensions:
|
extensions:
|
||||||
- .cfc
|
- .cfc
|
||||||
|
tm_scope: source.cfscript
|
||||||
|
|
||||||
Common Lisp:
|
Common Lisp:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -482,6 +499,7 @@ Component Pascal:
|
|||||||
extensions:
|
extensions:
|
||||||
- .cp
|
- .cp
|
||||||
- .cps
|
- .cps
|
||||||
|
tm_scope: source.pascal
|
||||||
|
|
||||||
Coq:
|
Coq:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -496,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
|
||||||
@@ -510,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
|
||||||
@@ -522,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
|
||||||
@@ -549,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
|
||||||
@@ -558,6 +582,7 @@ DM:
|
|||||||
- .dm
|
- .dm
|
||||||
aliases:
|
aliases:
|
||||||
- byond
|
- byond
|
||||||
|
tm_scope: source.c++
|
||||||
|
|
||||||
DOT:
|
DOT:
|
||||||
type: data
|
type: data
|
||||||
@@ -613,6 +638,7 @@ Ecere Projects:
|
|||||||
lexer: JSON
|
lexer: JSON
|
||||||
extensions:
|
extensions:
|
||||||
- .epj
|
- .epj
|
||||||
|
tm_scope: source.json
|
||||||
|
|
||||||
ECL:
|
ECL:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -629,6 +655,7 @@ Eagle:
|
|||||||
extensions:
|
extensions:
|
||||||
- .sch
|
- .sch
|
||||||
- .brd
|
- .brd
|
||||||
|
tm_scope: text.xml
|
||||||
|
|
||||||
Eiffel:
|
Eiffel:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -649,6 +676,7 @@ Elm:
|
|||||||
lexer: Haskell
|
lexer: Haskell
|
||||||
extensions:
|
extensions:
|
||||||
- .elm
|
- .elm
|
||||||
|
tm_scope: source.haskell
|
||||||
|
|
||||||
Emacs Lisp:
|
Emacs Lisp:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -671,6 +699,7 @@ EmberScript:
|
|||||||
extensions:
|
extensions:
|
||||||
- .em
|
- .em
|
||||||
- .emberscript
|
- .emberscript
|
||||||
|
tm_scope: source.coffee
|
||||||
|
|
||||||
Erlang:
|
Erlang:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -691,6 +720,7 @@ F#:
|
|||||||
- .fs
|
- .fs
|
||||||
- .fsi
|
- .fsi
|
||||||
- .fsx
|
- .fsx
|
||||||
|
tm_scope: source.fsharp
|
||||||
|
|
||||||
FLUX:
|
FLUX:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -745,6 +775,7 @@ Fantom:
|
|||||||
color: "#dbded5"
|
color: "#dbded5"
|
||||||
extensions:
|
extensions:
|
||||||
- .fan
|
- .fan
|
||||||
|
tm_scope: source.fan
|
||||||
|
|
||||||
Forth:
|
Forth:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -762,6 +793,7 @@ Frege:
|
|||||||
lexer: Haskell
|
lexer: Haskell
|
||||||
extensions:
|
extensions:
|
||||||
- .fr
|
- .fr
|
||||||
|
tm_scope: source.haskell
|
||||||
|
|
||||||
G-code:
|
G-code:
|
||||||
type: data
|
type: data
|
||||||
@@ -777,6 +809,7 @@ Game Maker Language:
|
|||||||
lexer: JavaScript
|
lexer: JavaScript
|
||||||
extensions:
|
extensions:
|
||||||
- .gml
|
- .gml
|
||||||
|
tm_scope: source.js
|
||||||
|
|
||||||
GAMS:
|
GAMS:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -826,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
|
||||||
@@ -847,6 +883,7 @@ Gettext Catalog:
|
|||||||
extensions:
|
extensions:
|
||||||
- .po
|
- .po
|
||||||
- .pot
|
- .pot
|
||||||
|
tm_scope: source.po
|
||||||
|
|
||||||
Glyph:
|
Glyph:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -854,6 +891,7 @@ Glyph:
|
|||||||
lexer: Tcl
|
lexer: Tcl
|
||||||
extensions:
|
extensions:
|
||||||
- .glf
|
- .glf
|
||||||
|
tm_scope: source.tcl
|
||||||
|
|
||||||
Gnuplot:
|
Gnuplot:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -880,6 +918,7 @@ Gosu:
|
|||||||
- .gst
|
- .gst
|
||||||
- .gsx
|
- .gsx
|
||||||
- .vark
|
- .vark
|
||||||
|
tm_scope: source.gosu.2
|
||||||
|
|
||||||
Grace:
|
Grace:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -897,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
|
||||||
@@ -914,6 +954,7 @@ Groff:
|
|||||||
- '.5'
|
- '.5'
|
||||||
- '.6'
|
- '.6'
|
||||||
- '.7'
|
- '.7'
|
||||||
|
tm_scope: text.groff
|
||||||
|
|
||||||
Groovy:
|
Groovy:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -921,7 +962,6 @@ Groovy:
|
|||||||
color: "#e69f56"
|
color: "#e69f56"
|
||||||
extensions:
|
extensions:
|
||||||
- .groovy
|
- .groovy
|
||||||
- .gradle
|
|
||||||
- .grt
|
- .grt
|
||||||
- .gtpl
|
- .gtpl
|
||||||
- .gvy
|
- .gvy
|
||||||
@@ -935,6 +975,7 @@ Groovy Server Pages:
|
|||||||
- gsp
|
- gsp
|
||||||
extensions:
|
extensions:
|
||||||
- .gsp
|
- .gsp
|
||||||
|
tm_scope: text.html.jsp
|
||||||
|
|
||||||
HTML:
|
HTML:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -959,7 +1000,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:
|
||||||
@@ -995,6 +1036,7 @@ Handlebars:
|
|||||||
extensions:
|
extensions:
|
||||||
- .handlebars
|
- .handlebars
|
||||||
- .hbs
|
- .hbs
|
||||||
|
tm_scope: text.html.handlebars
|
||||||
|
|
||||||
Harbour:
|
Harbour:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1017,6 +1059,7 @@ Haxe:
|
|||||||
extensions:
|
extensions:
|
||||||
- .hx
|
- .hx
|
||||||
- .hxsl
|
- .hxsl
|
||||||
|
tm_scope: source.haxe.2
|
||||||
|
|
||||||
Hy:
|
Hy:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1046,6 +1089,7 @@ INI:
|
|||||||
- .ini
|
- .ini
|
||||||
- .prefs
|
- .prefs
|
||||||
- .properties
|
- .properties
|
||||||
|
tm_scope: source.ini
|
||||||
|
|
||||||
Inno Setup:
|
Inno Setup:
|
||||||
extensions:
|
extensions:
|
||||||
@@ -1066,6 +1110,7 @@ Inform 7:
|
|||||||
extensions:
|
extensions:
|
||||||
- .ni
|
- .ni
|
||||||
- .i7x
|
- .i7x
|
||||||
|
tm_scope: source.inform
|
||||||
|
|
||||||
Inno Setup:
|
Inno Setup:
|
||||||
extensions:
|
extensions:
|
||||||
@@ -1131,6 +1176,7 @@ JSON5:
|
|||||||
lexer: JavaScript
|
lexer: JavaScript
|
||||||
extensions:
|
extensions:
|
||||||
- .json5
|
- .json5
|
||||||
|
tm_scope: source.js
|
||||||
|
|
||||||
JSONLD:
|
JSONLD:
|
||||||
type: data
|
type: data
|
||||||
@@ -1139,6 +1185,7 @@ JSONLD:
|
|||||||
lexer: JavaScript
|
lexer: JavaScript
|
||||||
extensions:
|
extensions:
|
||||||
- .jsonld
|
- .jsonld
|
||||||
|
tm_scope: source.js
|
||||||
|
|
||||||
JSONiq:
|
JSONiq:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1146,12 +1193,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
|
||||||
@@ -1168,6 +1217,7 @@ Java Server Pages:
|
|||||||
- jsp
|
- jsp
|
||||||
extensions:
|
extensions:
|
||||||
- .jsp
|
- .jsp
|
||||||
|
tm_scope: text.html.jsp
|
||||||
|
|
||||||
JavaScript:
|
JavaScript:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1219,6 +1269,7 @@ Kit:
|
|||||||
ace_mode: html
|
ace_mode: html
|
||||||
extensions:
|
extensions:
|
||||||
- .kit
|
- .kit
|
||||||
|
tm_scope: text.html.basic
|
||||||
|
|
||||||
Kotlin:
|
Kotlin:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1226,6 +1277,7 @@ Kotlin:
|
|||||||
- .kt
|
- .kt
|
||||||
- .ktm
|
- .ktm
|
||||||
- .kts
|
- .kts
|
||||||
|
tm_scope: source.Kotlin
|
||||||
|
|
||||||
LFE:
|
LFE:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1234,11 +1286,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
|
||||||
@@ -1264,6 +1324,7 @@ Lasso:
|
|||||||
- .las
|
- .las
|
||||||
- .lasso9
|
- .lasso9
|
||||||
- .ldml
|
- .ldml
|
||||||
|
tm_scope: file.lasso
|
||||||
|
|
||||||
Latte:
|
Latte:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -1272,6 +1333,7 @@ Latte:
|
|||||||
lexer: Smarty
|
lexer: Smarty
|
||||||
extensions:
|
extensions:
|
||||||
- .latte
|
- .latte
|
||||||
|
tm_scope: source.smarty
|
||||||
|
|
||||||
Less:
|
Less:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -1279,6 +1341,7 @@ Less:
|
|||||||
lexer: CSS
|
lexer: CSS
|
||||||
extensions:
|
extensions:
|
||||||
- .less
|
- .less
|
||||||
|
tm_scope: source.css
|
||||||
|
|
||||||
LilyPond:
|
LilyPond:
|
||||||
lexer: Text only
|
lexer: Text only
|
||||||
@@ -1319,6 +1382,7 @@ Literate Haskell:
|
|||||||
- lhs
|
- lhs
|
||||||
extensions:
|
extensions:
|
||||||
- .lhs
|
- .lhs
|
||||||
|
tm_scope: text.tex.latex.haskell
|
||||||
|
|
||||||
LiveScript:
|
LiveScript:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1350,6 +1414,7 @@ LookML:
|
|||||||
color: "#652B81"
|
color: "#652B81"
|
||||||
extensions:
|
extensions:
|
||||||
- .lookml
|
- .lookml
|
||||||
|
tm_scope: source.yaml
|
||||||
|
|
||||||
Lua:
|
Lua:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1372,6 +1437,7 @@ M:
|
|||||||
extensions:
|
extensions:
|
||||||
- .mumps
|
- .mumps
|
||||||
- .m
|
- .m
|
||||||
|
tm_scope: source.lisp
|
||||||
|
|
||||||
MTML:
|
MTML:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -1379,6 +1445,7 @@ MTML:
|
|||||||
color: "#0095d9"
|
color: "#0095d9"
|
||||||
extensions:
|
extensions:
|
||||||
- .mtml
|
- .mtml
|
||||||
|
tm_scope: text.html.basic
|
||||||
|
|
||||||
Makefile:
|
Makefile:
|
||||||
aliases:
|
aliases:
|
||||||
@@ -1397,6 +1464,7 @@ Mako:
|
|||||||
extensions:
|
extensions:
|
||||||
- .mako
|
- .mako
|
||||||
- .mao
|
- .mao
|
||||||
|
tm_scope: text.html.mako
|
||||||
|
|
||||||
Markdown:
|
Markdown:
|
||||||
type: prose
|
type: prose
|
||||||
@@ -1410,6 +1478,7 @@ Markdown:
|
|||||||
- .mkdn
|
- .mkdn
|
||||||
- .mkdown
|
- .mkdown
|
||||||
- .ron
|
- .ron
|
||||||
|
tm_scope: text.html.markdown
|
||||||
|
|
||||||
Mask:
|
Mask:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -1418,6 +1487,7 @@ Mask:
|
|||||||
ace_mode: scss
|
ace_mode: scss
|
||||||
extensions:
|
extensions:
|
||||||
- .mask
|
- .mask
|
||||||
|
tm_scope: source.scss
|
||||||
|
|
||||||
Mathematica:
|
Mathematica:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1448,6 +1518,7 @@ Max:
|
|||||||
- .maxproj
|
- .maxproj
|
||||||
- .mxt
|
- .mxt
|
||||||
- .pat
|
- .pat
|
||||||
|
tm_scope: source.json
|
||||||
|
|
||||||
MediaWiki:
|
MediaWiki:
|
||||||
type: prose
|
type: prose
|
||||||
@@ -1464,6 +1535,7 @@ Mercury:
|
|||||||
extensions:
|
extensions:
|
||||||
- .m
|
- .m
|
||||||
- .moo
|
- .moo
|
||||||
|
tm_scope: source.prolog
|
||||||
|
|
||||||
MiniD: # Legacy
|
MiniD: # Legacy
|
||||||
searchable: false
|
searchable: false
|
||||||
@@ -1480,6 +1552,7 @@ Mirah:
|
|||||||
- .duby
|
- .duby
|
||||||
- .mir
|
- .mir
|
||||||
- .mirah
|
- .mirah
|
||||||
|
tm_scope: source.ruby
|
||||||
|
|
||||||
Monkey:
|
Monkey:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1497,6 +1570,8 @@ MoonScript:
|
|||||||
type: programming
|
type: programming
|
||||||
extensions:
|
extensions:
|
||||||
- .moon
|
- .moon
|
||||||
|
interpreters:
|
||||||
|
- moon
|
||||||
|
|
||||||
Myghty:
|
Myghty:
|
||||||
extensions:
|
extensions:
|
||||||
@@ -1519,12 +1594,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
|
||||||
@@ -1556,6 +1633,7 @@ Nu:
|
|||||||
- .nu
|
- .nu
|
||||||
filenames:
|
filenames:
|
||||||
- Nukefile
|
- Nukefile
|
||||||
|
tm_scope: source.scheme
|
||||||
|
|
||||||
NumPy:
|
NumPy:
|
||||||
group: Python
|
group: Python
|
||||||
@@ -1582,6 +1660,7 @@ ObjDump:
|
|||||||
lexer: objdump
|
lexer: objdump
|
||||||
extensions:
|
extensions:
|
||||||
- .objdump
|
- .objdump
|
||||||
|
tm_scope: objdump.x86asm
|
||||||
|
|
||||||
Objective-C:
|
Objective-C:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1612,6 +1691,7 @@ Objective-J:
|
|||||||
extensions:
|
extensions:
|
||||||
- .j
|
- .j
|
||||||
- .sj
|
- .sj
|
||||||
|
tm_scope: source.js.objj
|
||||||
|
|
||||||
Omgrofl:
|
Omgrofl:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1639,6 +1719,7 @@ OpenCL:
|
|||||||
extensions:
|
extensions:
|
||||||
- .cl
|
- .cl
|
||||||
- .opencl
|
- .opencl
|
||||||
|
tm_scope: source.c
|
||||||
|
|
||||||
OpenEdge ABL:
|
OpenEdge ABL:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1649,6 +1730,7 @@ OpenEdge ABL:
|
|||||||
extensions:
|
extensions:
|
||||||
- .p
|
- .p
|
||||||
- .cls
|
- .cls
|
||||||
|
tm_scope: source.abl
|
||||||
|
|
||||||
OpenSCAD:
|
OpenSCAD:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1684,6 +1766,7 @@ PAWN:
|
|||||||
color: "#dbb284"
|
color: "#dbb284"
|
||||||
extensions:
|
extensions:
|
||||||
- .pwn
|
- .pwn
|
||||||
|
tm_scope: source.c++
|
||||||
|
|
||||||
PHP:
|
PHP:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1712,6 +1795,13 @@ Pan:
|
|||||||
extensions:
|
extensions:
|
||||||
- .pan
|
- .pan
|
||||||
|
|
||||||
|
Papyrus:
|
||||||
|
type: programming
|
||||||
|
color: "#6600cc"
|
||||||
|
lexer: Text only
|
||||||
|
extensions:
|
||||||
|
- .psc
|
||||||
|
|
||||||
Parrot:
|
Parrot:
|
||||||
type: programming
|
type: programming
|
||||||
color: "#f3ca0a"
|
color: "#f3ca0a"
|
||||||
@@ -1815,6 +1905,7 @@ PostScript:
|
|||||||
extensions:
|
extensions:
|
||||||
- .ps
|
- .ps
|
||||||
- .eps
|
- .eps
|
||||||
|
tm_scope: source.postscript
|
||||||
|
|
||||||
PowerShell:
|
PowerShell:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1857,6 +1948,7 @@ Protocol Buffer:
|
|||||||
- Protocol Buffers
|
- Protocol Buffers
|
||||||
extensions:
|
extensions:
|
||||||
- .proto
|
- .proto
|
||||||
|
tm_scope: source.protobuf
|
||||||
|
|
||||||
Puppet:
|
Puppet:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1879,6 +1971,7 @@ PureScript:
|
|||||||
lexer: Haskell
|
lexer: Haskell
|
||||||
extensions:
|
extensions:
|
||||||
- .purs
|
- .purs
|
||||||
|
tm_scope: source.haskell
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1916,6 +2009,7 @@ QML:
|
|||||||
color: "#44a51c"
|
color: "#44a51c"
|
||||||
extensions:
|
extensions:
|
||||||
- .qml
|
- .qml
|
||||||
|
tm_scope: source.qml
|
||||||
|
|
||||||
QMake:
|
QMake:
|
||||||
lexer: Text only
|
lexer: Text only
|
||||||
@@ -1948,6 +2042,7 @@ RDoc:
|
|||||||
wrap: true
|
wrap: true
|
||||||
extensions:
|
extensions:
|
||||||
- .rdoc
|
- .rdoc
|
||||||
|
tm_scope: text.rdoc
|
||||||
|
|
||||||
REALbasic:
|
REALbasic:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -1959,12 +2054,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
|
||||||
@@ -1984,6 +2081,7 @@ Racket:
|
|||||||
- .rktd
|
- .rktd
|
||||||
- .rktl
|
- .rktl
|
||||||
- .scrbl
|
- .scrbl
|
||||||
|
tm_scope: source.scheme
|
||||||
|
|
||||||
Ragel in Ruby Host:
|
Ragel in Ruby Host:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2027,6 +2125,7 @@ RobotFramework:
|
|||||||
extensions:
|
extensions:
|
||||||
- .robot
|
- .robot
|
||||||
# - .txt
|
# - .txt
|
||||||
|
tm_scope: text.robot
|
||||||
|
|
||||||
Rouge:
|
Rouge:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2035,6 +2134,7 @@ Rouge:
|
|||||||
color: "#cc0088"
|
color: "#cc0088"
|
||||||
extensions:
|
extensions:
|
||||||
- .rg
|
- .rg
|
||||||
|
tm_scope: source.clojure
|
||||||
|
|
||||||
Ruby:
|
Ruby:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2110,6 +2210,7 @@ SQF:
|
|||||||
extensions:
|
extensions:
|
||||||
- .sqf
|
- .sqf
|
||||||
- .hqf
|
- .hqf
|
||||||
|
tm_scope: source.c++
|
||||||
|
|
||||||
SQL:
|
SQL:
|
||||||
type: data
|
type: data
|
||||||
@@ -2128,6 +2229,7 @@ STON:
|
|||||||
lexer: JSON
|
lexer: JSON
|
||||||
extensions:
|
extensions:
|
||||||
- .ston
|
- .ston
|
||||||
|
tm_scope: source.json
|
||||||
|
|
||||||
Sage:
|
Sage:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2135,6 +2237,7 @@ Sage:
|
|||||||
group: Python
|
group: Python
|
||||||
extensions:
|
extensions:
|
||||||
- .sage
|
- .sage
|
||||||
|
tm_scope: source.python
|
||||||
|
|
||||||
Sass:
|
Sass:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -2158,6 +2261,7 @@ Scaml:
|
|||||||
type: markup
|
type: markup
|
||||||
extensions:
|
extensions:
|
||||||
- .scaml
|
- .scaml
|
||||||
|
tm_scope: source.scaml
|
||||||
|
|
||||||
Scheme:
|
Scheme:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2192,7 +2296,7 @@ Shell:
|
|||||||
type: programming
|
type: programming
|
||||||
lexer: Bash
|
lexer: Bash
|
||||||
search_term: bash
|
search_term: bash
|
||||||
color: "#5861ce"
|
color: "#89e051"
|
||||||
aliases:
|
aliases:
|
||||||
- sh
|
- sh
|
||||||
- bash
|
- bash
|
||||||
@@ -2202,6 +2306,7 @@ Shell:
|
|||||||
- .bash
|
- .bash
|
||||||
- .bats
|
- .bats
|
||||||
- .cgi
|
- .cgi
|
||||||
|
- .command
|
||||||
- .fcgi
|
- .fcgi
|
||||||
- .tmux
|
- .tmux
|
||||||
- .zsh
|
- .zsh
|
||||||
@@ -2230,6 +2335,7 @@ Slash:
|
|||||||
color: "#007eff"
|
color: "#007eff"
|
||||||
extensions:
|
extensions:
|
||||||
- .sl
|
- .sl
|
||||||
|
tm_scope: text.html.slash
|
||||||
|
|
||||||
Slim:
|
Slim:
|
||||||
group: HTML
|
group: HTML
|
||||||
@@ -2256,12 +2362,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
|
||||||
@@ -2273,6 +2381,7 @@ Standard ML:
|
|||||||
- .fun
|
- .fun
|
||||||
- .sig
|
- .sig
|
||||||
- .sml
|
- .sml
|
||||||
|
tm_scope: source.ml
|
||||||
|
|
||||||
Stata:
|
Stata:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2321,6 +2430,7 @@ TOML:
|
|||||||
type: data
|
type: data
|
||||||
extensions:
|
extensions:
|
||||||
- .toml
|
- .toml
|
||||||
|
tm_scope: source.toml
|
||||||
|
|
||||||
TXL:
|
TXL:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2345,6 +2455,7 @@ Tcsh:
|
|||||||
extensions:
|
extensions:
|
||||||
- .tcsh
|
- .tcsh
|
||||||
- .csh
|
- .csh
|
||||||
|
tm_scope: source.shell
|
||||||
|
|
||||||
TeX:
|
TeX:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -2374,6 +2485,7 @@ Tea:
|
|||||||
type: markup
|
type: markup
|
||||||
extensions:
|
extensions:
|
||||||
- .tea
|
- .tea
|
||||||
|
tm_scope: source.tea
|
||||||
|
|
||||||
Textile:
|
Textile:
|
||||||
type: prose
|
type: prose
|
||||||
@@ -2397,6 +2509,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
|
||||||
@@ -2405,6 +2518,7 @@ TypeScript:
|
|||||||
- ts
|
- ts
|
||||||
extensions:
|
extensions:
|
||||||
- .ts
|
- .ts
|
||||||
|
tm_scope: source.ts
|
||||||
|
|
||||||
Unified Parallel C:
|
Unified Parallel C:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2414,6 +2528,7 @@ Unified Parallel C:
|
|||||||
color: "#755223"
|
color: "#755223"
|
||||||
extensions:
|
extensions:
|
||||||
- .upc
|
- .upc
|
||||||
|
tm_scope: source.c
|
||||||
|
|
||||||
UnrealScript:
|
UnrealScript:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2421,6 +2536,7 @@ UnrealScript:
|
|||||||
lexer: Java
|
lexer: Java
|
||||||
extensions:
|
extensions:
|
||||||
- .uc
|
- .uc
|
||||||
|
tm_scope: source.java
|
||||||
|
|
||||||
VCL:
|
VCL:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2429,6 +2545,7 @@ VCL:
|
|||||||
color: "#0298c3"
|
color: "#0298c3"
|
||||||
extensions:
|
extensions:
|
||||||
- .vcl
|
- .vcl
|
||||||
|
tm_scope: source.perl
|
||||||
|
|
||||||
VHDL:
|
VHDL:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2486,6 +2603,7 @@ Visual Basic:
|
|||||||
- .vba
|
- .vba
|
||||||
- .vbhtml
|
- .vbhtml
|
||||||
- .vbs
|
- .vbs
|
||||||
|
tm_scope: source.vbnet
|
||||||
|
|
||||||
Volt:
|
Volt:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2493,12 +2611,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
|
||||||
@@ -2569,6 +2689,7 @@ XML:
|
|||||||
filenames:
|
filenames:
|
||||||
- .classpath
|
- .classpath
|
||||||
- .project
|
- .project
|
||||||
|
- build.xml.dist
|
||||||
- phpunit.xml.dist
|
- phpunit.xml.dist
|
||||||
|
|
||||||
XProc:
|
XProc:
|
||||||
@@ -2577,6 +2698,7 @@ XProc:
|
|||||||
extensions:
|
extensions:
|
||||||
- .xpl
|
- .xpl
|
||||||
- .xproc
|
- .xproc
|
||||||
|
tm_scope: text.xml
|
||||||
|
|
||||||
XQuery:
|
XQuery:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2592,6 +2714,7 @@ XS:
|
|||||||
lexer: C
|
lexer: C
|
||||||
extensions:
|
extensions:
|
||||||
- .xs
|
- .xs
|
||||||
|
tm_scope: source.c
|
||||||
|
|
||||||
XSLT:
|
XSLT:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2600,6 +2723,7 @@ XSLT:
|
|||||||
extensions:
|
extensions:
|
||||||
- .xslt
|
- .xslt
|
||||||
- .xsl
|
- .xsl
|
||||||
|
tm_scope: text.xml.xsl
|
||||||
|
|
||||||
Xojo:
|
Xojo:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2611,6 +2735,7 @@ Xojo:
|
|||||||
- .xojo_script
|
- .xojo_script
|
||||||
- .xojo_toolbar
|
- .xojo_toolbar
|
||||||
- .xojo_window
|
- .xojo_window
|
||||||
|
tm_scope: source.vbnet
|
||||||
|
|
||||||
Xtend:
|
Xtend:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2634,6 +2759,7 @@ Zephir:
|
|||||||
color: "#118f9e"
|
color: "#118f9e"
|
||||||
extensions:
|
extensions:
|
||||||
- .zep
|
- .zep
|
||||||
|
tm_scope: text.html.php
|
||||||
|
|
||||||
Zimpl:
|
Zimpl:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2657,6 +2783,7 @@ edn:
|
|||||||
color: "#db5855"
|
color: "#db5855"
|
||||||
extensions:
|
extensions:
|
||||||
- .edn
|
- .edn
|
||||||
|
tm_scope: source.clojure
|
||||||
|
|
||||||
fish:
|
fish:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -2701,6 +2828,7 @@ wisp:
|
|||||||
color: "#7582D1"
|
color: "#7582D1"
|
||||||
extensions:
|
extensions:
|
||||||
- .wisp
|
- .wisp
|
||||||
|
tm_scope: source.clojure
|
||||||
|
|
||||||
xBase:
|
xBase:
|
||||||
type: programming
|
type: programming
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
begin
|
begin
|
||||||
require 'json'
|
require 'yajl'
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
end
|
end
|
||||||
@@ -19,7 +19,7 @@ module Linguist
|
|||||||
# Hash of serialized samples object
|
# Hash of serialized samples object
|
||||||
def self.cache
|
def self.cache
|
||||||
@cache ||= begin
|
@cache ||= begin
|
||||||
serializer = defined?(JSON) ? JSON : YAML
|
serializer = defined?(Yajl) ? Yajl : YAML
|
||||||
serializer.load(File.read(PATH))
|
serializer.load(File.read(PATH))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -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
|
||||||
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
|
||||||
68
samples/Papyrus/CAMTEST_OverShoulderME.psc
Normal file
68
samples/Papyrus/CAMTEST_OverShoulderME.psc
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
Scriptname CAMTEST_OverShoulderME extends activemagiceffect
|
||||||
|
{Play with camera effects}
|
||||||
|
|
||||||
|
;--=== Imports ===--
|
||||||
|
|
||||||
|
Import Utility
|
||||||
|
Import Game
|
||||||
|
|
||||||
|
;--=== Properties ===--
|
||||||
|
|
||||||
|
Actor Property PlayerRef Auto
|
||||||
|
ActorBase Property CAMTEST_CameraActor Auto
|
||||||
|
|
||||||
|
;--=== Variables ===--
|
||||||
|
|
||||||
|
Actor Player
|
||||||
|
|
||||||
|
Actor Camera
|
||||||
|
|
||||||
|
Actor Target
|
||||||
|
|
||||||
|
Float PosX
|
||||||
|
Float PosY
|
||||||
|
Float PosZ
|
||||||
|
Float SpeedMult
|
||||||
|
|
||||||
|
ObjectReference Mist
|
||||||
|
ObjectReference Fog
|
||||||
|
|
||||||
|
;--=== Events ===--
|
||||||
|
|
||||||
|
Event OnInit()
|
||||||
|
Player = PlayerRef
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
Event onEffectStart(Actor akTarget, Actor akCaster)
|
||||||
|
Camera = Player.PlaceActorAtMe(CAMTEST_CameraActor)
|
||||||
|
Camera.EnableAI(False)
|
||||||
|
Camera.SetScale(0.1)
|
||||||
|
Camera.TranslateTo(Player.X + 40,Player.Y,Player.Z,0,0,0,800,30)
|
||||||
|
DisablePlayerControls(abMovement = true, abFighting = true, abCamSwitch = true, abLooking = true, abSneaking = true, abMenu = true, abActivate = true, abJournalTabs = false)
|
||||||
|
SetPlayerAIDriven(True)
|
||||||
|
ForceThirdPerson()
|
||||||
|
SetHUDCartMode()
|
||||||
|
SetInChargen(True, True, False)
|
||||||
|
SetCameraTarget(Camera)
|
||||||
|
ForceFirstPerson()
|
||||||
|
Wait(1)
|
||||||
|
Camera.SplineTranslateTo(Player.X + 4000,Player.Y,Player.Z + 1000,15,0,Camera.GetHeadingAngle(Player) + Camera.GetAngleZ(),1800,800,100)
|
||||||
|
; Camera.SetLookAt(Player)
|
||||||
|
Wait(10)
|
||||||
|
Camera.SplineTranslateTo(Player.X + 1000,Player.Y - 500,Player.Z + 500,25,0,Camera.GetHeadingAngle(Player) + Camera.GetAngleZ(),1800,800,100)
|
||||||
|
Wait(10)
|
||||||
|
SetHUDCartMode(False)
|
||||||
|
SetCameraTarget(Player)
|
||||||
|
SetInChargen(False, False, False)
|
||||||
|
EnablePlayerControls()
|
||||||
|
SetPlayerAIDriven(False)
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
Event onUpdate()
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
Event onEffectFinish(Actor akTarget, Actor akCaster)
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
;--=== Functions ===--
|
||||||
|
|
||||||
1
samples/Papyrus/vMFX_FXPlugin.psc
Normal file
1
samples/Papyrus/vMFX_FXPlugin.psc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Scriptname vMFX_FXPlugin extends Quest
|
||||||
120
samples/Papyrus/vSCM_MetaQuestScript.psc
Normal file
120
samples/Papyrus/vSCM_MetaQuestScript.psc
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
Scriptname vSCM_MetaQuestScript extends Quest
|
||||||
|
{Do initialization and track variables for scripts}
|
||||||
|
|
||||||
|
;--=== Imports ===--
|
||||||
|
|
||||||
|
Import Utility
|
||||||
|
Import Game
|
||||||
|
|
||||||
|
;--=== Properties ===--
|
||||||
|
|
||||||
|
Actor Property PlayerRef Auto
|
||||||
|
|
||||||
|
Float Property ModVersion Auto Hidden
|
||||||
|
|
||||||
|
String Property ModName = "Smarter Combat Music" Auto Hidden
|
||||||
|
|
||||||
|
Message Property vSCM_ModLoadedMSG Auto
|
||||||
|
Message Property vSCM_ModUpdatedMSG Auto
|
||||||
|
|
||||||
|
;--=== Variables ===--
|
||||||
|
|
||||||
|
Float _CurrentVersion
|
||||||
|
String _sCurrentVersion
|
||||||
|
|
||||||
|
Bool _Running
|
||||||
|
|
||||||
|
Float _ScriptLatency
|
||||||
|
Float _StartTime
|
||||||
|
Float _EndTime
|
||||||
|
|
||||||
|
;--=== Events ===--
|
||||||
|
|
||||||
|
Event OnInit()
|
||||||
|
If ModVersion == 0
|
||||||
|
DoUpkeep(True)
|
||||||
|
EndIf
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
Event OnReset()
|
||||||
|
Debug.Trace("SCM: Metaquest event: OnReset")
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
Event OnGameReloaded()
|
||||||
|
Debug.Trace("SCM: Metaquest event: OnGameReloaded")
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
;--=== Functions ===--
|
||||||
|
|
||||||
|
Function DoUpkeep(Bool DelayedStart = True)
|
||||||
|
;FIXME: CHANGE THIS WHEN UPDATING!
|
||||||
|
_CurrentVersion = 0.01
|
||||||
|
_sCurrentVersion = GetVersionString(_CurrentVersion)
|
||||||
|
String sErrorMessage
|
||||||
|
If DelayedStart
|
||||||
|
Wait(RandomFloat(2,4))
|
||||||
|
EndIf
|
||||||
|
Debug.Trace("SCM: " + ModName)
|
||||||
|
Debug.Trace("SCM: Performing upkeep...")
|
||||||
|
Debug.Trace("SCM: Loaded version is " + GetVersionString(ModVersion) + ", Current version is " + _sCurrentVersion)
|
||||||
|
If ModVersion == 0
|
||||||
|
Debug.Trace("SCM: Newly installed, doing initialization...")
|
||||||
|
DoInit()
|
||||||
|
If ModVersion == _CurrentVersion
|
||||||
|
Debug.Trace("SCM: Initialization succeeded.")
|
||||||
|
Else
|
||||||
|
Debug.Trace("SCM: WARNING! Initialization had a problem!")
|
||||||
|
EndIf
|
||||||
|
ElseIf ModVersion < _CurrentVersion
|
||||||
|
Debug.Trace("SCM: Installed version is older. Starting the upgrade...")
|
||||||
|
DoUpgrade()
|
||||||
|
If ModVersion != _CurrentVersion
|
||||||
|
Debug.Trace("SCM: WARNING! Upgrade failed!")
|
||||||
|
Debug.MessageBox("WARNING! " + ModName + " upgrade failed for some reason. You should report this to the mod author.")
|
||||||
|
EndIf
|
||||||
|
Debug.Trace("SCM: Upgraded to " + _CurrentVersion)
|
||||||
|
vSCM_ModUpdatedMSG.Show(_CurrentVersion)
|
||||||
|
Else
|
||||||
|
Debug.Trace("SCM: Loaded, no updates.")
|
||||||
|
;CheckForOrphans()
|
||||||
|
EndIf
|
||||||
|
CheckForExtras()
|
||||||
|
UpdateConfig()
|
||||||
|
Debug.Trace("SCM: Upkeep complete!")
|
||||||
|
EndFunction
|
||||||
|
|
||||||
|
Function DoInit()
|
||||||
|
Debug.Trace("SCM: Initializing...")
|
||||||
|
_Running = True
|
||||||
|
ModVersion = _CurrentVersion
|
||||||
|
vSCM_ModLoadedMSG.Show(_CurrentVersion)
|
||||||
|
EndFunction
|
||||||
|
|
||||||
|
Function DoUpgrade()
|
||||||
|
_Running = False
|
||||||
|
If ModVersion < 0.01
|
||||||
|
Debug.Trace("SCM: Upgrading to 0.01...")
|
||||||
|
ModVersion = 0.01
|
||||||
|
EndIf
|
||||||
|
_Running = True
|
||||||
|
Debug.Trace("SCM: Upgrade complete!")
|
||||||
|
EndFunction
|
||||||
|
|
||||||
|
Function UpdateConfig()
|
||||||
|
Debug.Trace("SCM: Updating configuration...")
|
||||||
|
|
||||||
|
Debug.Trace("SCM: Updated configuration values, some scripts may update in the background!")
|
||||||
|
EndFunction
|
||||||
|
|
||||||
|
String Function GetVersionString(Float fVersion)
|
||||||
|
Int Major = Math.Floor(fVersion) as Int
|
||||||
|
Int Minor = ((fVersion - (Major as Float)) * 100.0) as Int
|
||||||
|
If Minor < 10
|
||||||
|
Return Major + ".0" + Minor
|
||||||
|
Else
|
||||||
|
Return Major + "." + Minor
|
||||||
|
EndIf
|
||||||
|
EndFunction
|
||||||
|
|
||||||
|
Function CheckForExtras()
|
||||||
|
EndFunction
|
||||||
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 ""
|
||||||
@@ -14,4 +14,5 @@ set +x
|
|||||||
mkdir -p ./vendor/gems
|
mkdir -p ./vendor/gems
|
||||||
|
|
||||||
bundle install --local --path ./vendor/gems
|
bundle install --local --path ./vendor/gems
|
||||||
|
bundle exec rake samples
|
||||||
bundle exec rake
|
bundle exec rake
|
||||||
|
|||||||
@@ -77,6 +77,12 @@ class TestHeuristcs < Test::Unit::TestCase
|
|||||||
assert_equal Language["IDL"], results.first
|
assert_equal Language["IDL"], results.first
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_asc_asciidoc_by_heuristics
|
||||||
|
languages = ["AGS Script", "AsciiDoc"]
|
||||||
|
results = Heuristics.disambiguate_asc(fixture("AsciiDoc/list.asc"), languages)
|
||||||
|
assert_equal Language["AsciiDoc"], results.first
|
||||||
|
end
|
||||||
|
|
||||||
def test_ts_typescript_by_heuristics
|
def test_ts_typescript_by_heuristics
|
||||||
languages = ["TypeScript", "XML"]
|
languages = ["TypeScript", "XML"]
|
||||||
results = Heuristics.disambiguate_ts(fixture("TypeScript/classes.ts"), languages)
|
results = Heuristics.disambiguate_ts(fixture("TypeScript/classes.ts"), languages)
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ class TestSamples < Test::Unit::TestCase
|
|||||||
warn "Samples database is out of date. Run `bundle exec rake samples`."
|
warn "Samples database is out of date. Run `bundle exec rake samples`."
|
||||||
|
|
||||||
expected = Tempfile.new('expected.json')
|
expected = Tempfile.new('expected.json')
|
||||||
expected.write Yajl::Encoder.encode(serialized, :pretty => true)
|
expected.write Yajl.dump(serialized, :pretty => true)
|
||||||
expected.close
|
expected.close
|
||||||
|
|
||||||
actual = Tempfile.new('actual.json')
|
actual = Tempfile.new('actual.json')
|
||||||
actual.write Yajl::Encoder.encode(latest, :pretty => true)
|
actual.write Yajl.dump(latest, :pretty => true)
|
||||||
actual.close
|
actual.close
|
||||||
|
|
||||||
expected.unlink
|
expected.unlink
|
||||||
|
|||||||
Reference in New Issue
Block a user