mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-12-08 20:38:47 +00:00
Merge branch 'master' into cpp-c-improvements
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,3 +5,4 @@ lib/linguist/samples.json
|
|||||||
/grammars
|
/grammars
|
||||||
/node_modules
|
/node_modules
|
||||||
test/fixtures/ace_modes.json
|
test/fixtures/ace_modes.json
|
||||||
|
/vendor/gems/
|
||||||
|
|||||||
534
.gitmodules
vendored
Normal file
534
.gitmodules
vendored
Normal file
@@ -0,0 +1,534 @@
|
|||||||
|
[submodule "vendor/grammars/go-tmbundle"]
|
||||||
|
path = vendor/grammars/go-tmbundle
|
||||||
|
url = https://github.com/AlanQuatermain/go-tmbundle
|
||||||
|
[submodule "vendor/grammars/PHP-Twig.tmbundle"]
|
||||||
|
path = vendor/grammars/PHP-Twig.tmbundle
|
||||||
|
url = https://github.com/Anomareh/PHP-Twig.tmbundle
|
||||||
|
[submodule "vendor/grammars/sublime-cirru"]
|
||||||
|
path = vendor/grammars/sublime-cirru
|
||||||
|
url = https://github.com/Cirru/sublime-cirru
|
||||||
|
[submodule "vendor/grammars/Sublime-Logos"]
|
||||||
|
path = vendor/grammars/Sublime-Logos
|
||||||
|
url = https://github.com/Cykey/Sublime-Logos
|
||||||
|
[submodule "vendor/grammars/SublimeBrainfuck"]
|
||||||
|
path = vendor/grammars/SublimeBrainfuck
|
||||||
|
url = https://github.com/Drako/SublimeBrainfuck
|
||||||
|
[submodule "vendor/grammars/awk-sublime"]
|
||||||
|
path = vendor/grammars/awk-sublime
|
||||||
|
url = https://github.com/JohnNilsson/awk-sublime
|
||||||
|
[submodule "vendor/grammars/Sublime-SQF-Language"]
|
||||||
|
path = vendor/grammars/Sublime-SQF-Language
|
||||||
|
url = https://github.com/JonBons/Sublime-SQF-Language
|
||||||
|
[submodule "vendor/grammars/SCSS.tmbundle"]
|
||||||
|
path = vendor/grammars/SCSS.tmbundle
|
||||||
|
url = https://github.com/MarioRicalde/SCSS.tmbundle
|
||||||
|
[submodule "vendor/grammars/Sublime-REBOL"]
|
||||||
|
path = vendor/grammars/Sublime-REBOL
|
||||||
|
url = https://github.com/Oldes/Sublime-REBOL
|
||||||
|
[submodule "vendor/grammars/Sublime-Inform"]
|
||||||
|
path = vendor/grammars/Sublime-Inform
|
||||||
|
url = https://github.com/PogiNate/Sublime-Inform
|
||||||
|
[submodule "vendor/grammars/autoitv3-tmbundle"]
|
||||||
|
path = vendor/grammars/autoitv3-tmbundle
|
||||||
|
url = https://github.com/Red-Nova-Technologies/autoitv3-tmbundle
|
||||||
|
[submodule "vendor/grammars/Sublime-VimL"]
|
||||||
|
path = vendor/grammars/Sublime-VimL
|
||||||
|
url = https://github.com/SalGnt/Sublime-VimL
|
||||||
|
[submodule "vendor/grammars/boo-sublime"]
|
||||||
|
path = vendor/grammars/boo-sublime
|
||||||
|
url = https://github.com/Shammah/boo-sublime
|
||||||
|
[submodule "vendor/grammars/ColdFusion"]
|
||||||
|
path = vendor/grammars/ColdFusion
|
||||||
|
url = https://github.com/SublimeText/ColdFusion
|
||||||
|
[submodule "vendor/grammars/NSIS"]
|
||||||
|
path = vendor/grammars/NSIS
|
||||||
|
url = https://github.com/SublimeText/NSIS
|
||||||
|
[submodule "vendor/grammars/NimLime"]
|
||||||
|
path = vendor/grammars/NimLime
|
||||||
|
url = https://github.com/Varriount/NimLime
|
||||||
|
[submodule "vendor/grammars/gradle.tmbundle"]
|
||||||
|
path = vendor/grammars/gradle.tmbundle
|
||||||
|
url = https://github.com/alkemist/gradle.tmbundle
|
||||||
|
[submodule "vendor/grammars/Sublime-Loom"]
|
||||||
|
path = vendor/grammars/Sublime-Loom
|
||||||
|
url = https://github.com/ambethia/Sublime-Loom
|
||||||
|
[submodule "vendor/grammars/VBDotNetSyntax"]
|
||||||
|
path = vendor/grammars/VBDotNetSyntax
|
||||||
|
url = https://github.com/angryant0007/VBDotNetSyntax
|
||||||
|
[submodule "vendor/grammars/cool-tmbundle"]
|
||||||
|
path = vendor/grammars/cool-tmbundle
|
||||||
|
url = https://github.com/anunayk/cool-tmbundle
|
||||||
|
[submodule "vendor/grammars/Docker.tmbundle"]
|
||||||
|
path = vendor/grammars/Docker.tmbundle
|
||||||
|
url = https://github.com/asbjornenge/Docker.tmbundle
|
||||||
|
[submodule "vendor/grammars/jasmin-sublime"]
|
||||||
|
path = vendor/grammars/jasmin-sublime
|
||||||
|
url = https://github.com/atmarksharp/jasmin-sublime
|
||||||
|
[submodule "vendor/grammars/language-clojure"]
|
||||||
|
path = vendor/grammars/language-clojure
|
||||||
|
url = https://github.com/atom/language-clojure
|
||||||
|
[submodule "vendor/grammars/language-coffee-script"]
|
||||||
|
path = vendor/grammars/language-coffee-script
|
||||||
|
url = https://github.com/atom/language-coffee-script
|
||||||
|
[submodule "vendor/grammars/language-csharp"]
|
||||||
|
path = vendor/grammars/language-csharp
|
||||||
|
url = https://github.com/atom/language-csharp
|
||||||
|
[submodule "vendor/grammars/language-gfm"]
|
||||||
|
path = vendor/grammars/language-gfm
|
||||||
|
url = https://github.com/atom/language-gfm
|
||||||
|
[submodule "vendor/grammars/language-javascript"]
|
||||||
|
path = vendor/grammars/language-javascript
|
||||||
|
url = https://github.com/atom/language-javascript
|
||||||
|
[submodule "vendor/grammars/language-python"]
|
||||||
|
path = vendor/grammars/language-python
|
||||||
|
url = https://github.com/atom/language-python
|
||||||
|
[submodule "vendor/grammars/language-sass"]
|
||||||
|
path = vendor/grammars/language-sass
|
||||||
|
url = https://github.com/atom/language-sass
|
||||||
|
[submodule "vendor/grammars/language-shellscript"]
|
||||||
|
path = vendor/grammars/language-shellscript
|
||||||
|
url = https://github.com/atom/language-shellscript
|
||||||
|
[submodule "vendor/grammars/language-yaml"]
|
||||||
|
path = vendor/grammars/language-yaml
|
||||||
|
url = https://github.com/atom/language-yaml
|
||||||
|
[submodule "vendor/grammars/sublime-sourcepawn"]
|
||||||
|
path = vendor/grammars/sublime-sourcepawn
|
||||||
|
url = https://github.com/austinwagner/sublime-sourcepawn
|
||||||
|
[submodule "vendor/grammars/Sublime-Lasso"]
|
||||||
|
path = vendor/grammars/Sublime-Lasso
|
||||||
|
url = https://github.com/bfad/Sublime-Lasso
|
||||||
|
[submodule "vendor/grammars/chapel-tmbundle"]
|
||||||
|
path = vendor/grammars/chapel-tmbundle
|
||||||
|
url = https://github.com/bholt/chapel-tmbundle
|
||||||
|
[submodule "vendor/grammars/sublime-nginx"]
|
||||||
|
path = vendor/grammars/sublime-nginx
|
||||||
|
url = https://github.com/brandonwamboldt/sublime-nginx
|
||||||
|
[submodule "vendor/grammars/bro-sublime"]
|
||||||
|
path = vendor/grammars/bro-sublime
|
||||||
|
url = https://github.com/bro/bro-sublime
|
||||||
|
[submodule "vendor/grammars/sublime_man_page_support"]
|
||||||
|
path = vendor/grammars/sublime_man_page_support
|
||||||
|
url = https://github.com/carsonoid/sublime_man_page_support
|
||||||
|
[submodule "vendor/grammars/sublime-MuPAD"]
|
||||||
|
path = vendor/grammars/sublime-MuPAD
|
||||||
|
url = https://github.com/ccreutzig/sublime-MuPAD
|
||||||
|
[submodule "vendor/grammars/nesC.tmbundle"]
|
||||||
|
path = vendor/grammars/nesC.tmbundle
|
||||||
|
url = https://github.com/cdwilson/nesC.tmbundle
|
||||||
|
[submodule "vendor/grammars/racket-tmbundle"]
|
||||||
|
path = vendor/grammars/racket-tmbundle
|
||||||
|
url = https://github.com/christophevg/racket-tmbundle
|
||||||
|
[submodule "vendor/grammars/haxe-sublime-bundle"]
|
||||||
|
path = vendor/grammars/haxe-sublime-bundle
|
||||||
|
url = https://github.com/clemos/haxe-sublime-bundle
|
||||||
|
[submodule "vendor/grammars/cucumber-tmbundle"]
|
||||||
|
path = vendor/grammars/cucumber-tmbundle
|
||||||
|
url = https://github.com/cucumber/cucumber-tmbundle
|
||||||
|
[submodule "vendor/grammars/Handlebars"]
|
||||||
|
path = vendor/grammars/Handlebars
|
||||||
|
url = https://github.com/daaain/Handlebars
|
||||||
|
[submodule "vendor/grammars/powershell.tmbundle"]
|
||||||
|
path = vendor/grammars/powershell.tmbundle
|
||||||
|
url = https://github.com/davidpeckham/powershell.tmbundle
|
||||||
|
[submodule "vendor/grammars/jade-tmbundle"]
|
||||||
|
path = vendor/grammars/jade-tmbundle
|
||||||
|
url = https://github.com/davidrios/jade-tmbundle
|
||||||
|
[submodule "vendor/grammars/elixir-tmbundle"]
|
||||||
|
path = vendor/grammars/elixir-tmbundle
|
||||||
|
url = https://github.com/elixir-lang/elixir-tmbundle
|
||||||
|
[submodule "vendor/grammars/sublime-glsl"]
|
||||||
|
path = vendor/grammars/sublime-glsl
|
||||||
|
url = https://github.com/euler0/sublime-glsl
|
||||||
|
[submodule "vendor/grammars/fancy-tmbundle"]
|
||||||
|
path = vendor/grammars/fancy-tmbundle
|
||||||
|
url = https://github.com/fancy-lang/fancy-tmbundle
|
||||||
|
[submodule "vendor/grammars/fsharpbinding"]
|
||||||
|
path = vendor/grammars/fsharpbinding
|
||||||
|
url = https://github.com/fsharp/fsharpbinding
|
||||||
|
[submodule "vendor/grammars/monkey.tmbundle"]
|
||||||
|
path = vendor/grammars/monkey.tmbundle
|
||||||
|
url = https://github.com/gingerbeardman/monkey.tmbundle
|
||||||
|
[submodule "vendor/grammars/dart-sublime-bundle"]
|
||||||
|
path = vendor/grammars/dart-sublime-bundle
|
||||||
|
url = https://github.com/guillermooo/dart-sublime-bundle
|
||||||
|
[submodule "vendor/grammars/sublimetext-cuda-cpp"]
|
||||||
|
path = vendor/grammars/sublimetext-cuda-cpp
|
||||||
|
url = https://github.com/harrism/sublimetext-cuda-cpp
|
||||||
|
[submodule "vendor/grammars/pike-textmate"]
|
||||||
|
path = vendor/grammars/pike-textmate
|
||||||
|
url = https://github.com/hww3/pike-textmate
|
||||||
|
[submodule "vendor/grammars/ceylon-sublimetext"]
|
||||||
|
path = vendor/grammars/ceylon-sublimetext
|
||||||
|
url = https://github.com/jeancharles-roger/ceylon-sublimetext
|
||||||
|
[submodule "vendor/grammars/Sublime-Text-2-OpenEdge-ABL"]
|
||||||
|
path = vendor/grammars/Sublime-Text-2-OpenEdge-ABL
|
||||||
|
url = https://github.com/jfairbank/Sublime-Text-2-OpenEdge-ABL
|
||||||
|
[submodule "vendor/grammars/sublime-rust"]
|
||||||
|
path = vendor/grammars/sublime-rust
|
||||||
|
url = https://github.com/jhasse/sublime-rust
|
||||||
|
[submodule "vendor/grammars/sublime-befunge"]
|
||||||
|
path = vendor/grammars/sublime-befunge
|
||||||
|
url = https://github.com/johanasplund/sublime-befunge
|
||||||
|
[submodule "vendor/grammars/RDoc.tmbundle"]
|
||||||
|
path = vendor/grammars/RDoc.tmbundle
|
||||||
|
url = https://github.com/joshaven/RDoc.tmbundle
|
||||||
|
[submodule "vendor/grammars/Textmate-Gosu-Bundle"]
|
||||||
|
path = vendor/grammars/Textmate-Gosu-Bundle
|
||||||
|
url = https://github.com/jpcamara/Textmate-Gosu-Bundle
|
||||||
|
[submodule "vendor/grammars/jquery-tmbundle"]
|
||||||
|
path = vendor/grammars/jquery-tmbundle
|
||||||
|
url = https://github.com/kswedberg/jquery-tmbundle
|
||||||
|
[submodule "vendor/grammars/fish-tmbundle"]
|
||||||
|
path = vendor/grammars/fish-tmbundle
|
||||||
|
url = https://github.com/l15n/fish-tmbundle
|
||||||
|
[submodule "vendor/grammars/sublime-idris"]
|
||||||
|
path = vendor/grammars/sublime-idris
|
||||||
|
url = https://github.com/laughedelic/sublime-idris
|
||||||
|
[submodule "vendor/grammars/sublime-better-typescript"]
|
||||||
|
path = vendor/grammars/sublime-better-typescript
|
||||||
|
url = https://github.com/lavrton/sublime-better-typescript
|
||||||
|
[submodule "vendor/grammars/moonscript-tmbundle"]
|
||||||
|
path = vendor/grammars/moonscript-tmbundle
|
||||||
|
url = https://github.com/leafo/moonscript-tmbundle
|
||||||
|
[submodule "vendor/grammars/Isabelle.tmbundle"]
|
||||||
|
path = vendor/grammars/Isabelle.tmbundle
|
||||||
|
url = https://github.com/lsf37/Isabelle.tmbundle
|
||||||
|
[submodule "vendor/grammars/x86-assembly-textmate-bundle"]
|
||||||
|
path = vendor/grammars/x86-assembly-textmate-bundle
|
||||||
|
url = https://github.com/lunixbochs/x86-assembly-textmate-bundle
|
||||||
|
[submodule "vendor/grammars/Alloy.tmbundle"]
|
||||||
|
path = vendor/grammars/Alloy.tmbundle
|
||||||
|
url = https://github.com/macekond/Alloy.tmbundle
|
||||||
|
[submodule "vendor/grammars/opa.tmbundle"]
|
||||||
|
path = vendor/grammars/opa.tmbundle
|
||||||
|
url = https://github.com/mads379/opa.tmbundle
|
||||||
|
[submodule "vendor/grammars/scala.tmbundle"]
|
||||||
|
path = vendor/grammars/scala.tmbundle
|
||||||
|
url = https://github.com/mads379/scala.tmbundle
|
||||||
|
[submodule "vendor/grammars/mako-tmbundle"]
|
||||||
|
path = vendor/grammars/mako-tmbundle
|
||||||
|
url = https://github.com/marconi/mako-tmbundle
|
||||||
|
[submodule "vendor/grammars/gnuplot-tmbundle"]
|
||||||
|
path = vendor/grammars/gnuplot-tmbundle
|
||||||
|
url = https://github.com/mattfoster/gnuplot-tmbundle
|
||||||
|
[submodule "vendor/grammars/idl.tmbundle"]
|
||||||
|
path = vendor/grammars/idl.tmbundle
|
||||||
|
url = https://github.com/mgalloy/idl.tmbundle
|
||||||
|
[submodule "vendor/grammars/protobuf-tmbundle"]
|
||||||
|
path = vendor/grammars/protobuf-tmbundle
|
||||||
|
url = https://github.com/michaeledgar/protobuf-tmbundle
|
||||||
|
[submodule "vendor/grammars/Sublime-Coq"]
|
||||||
|
path = vendor/grammars/Sublime-Coq
|
||||||
|
url = https://github.com/mkolosick/Sublime-Coq
|
||||||
|
[submodule "vendor/grammars/Agda.tmbundle"]
|
||||||
|
path = vendor/grammars/Agda.tmbundle
|
||||||
|
url = https://github.com/mokus0/Agda.tmbundle
|
||||||
|
[submodule "vendor/grammars/Julia.tmbundle"]
|
||||||
|
path = vendor/grammars/Julia.tmbundle
|
||||||
|
url = https://github.com/nanoant/Julia.tmbundle
|
||||||
|
[submodule "vendor/grammars/assembly.tmbundle"]
|
||||||
|
path = vendor/grammars/assembly.tmbundle
|
||||||
|
url = https://github.com/nanoant/assembly.tmbundle
|
||||||
|
[submodule "vendor/grammars/ooc.tmbundle"]
|
||||||
|
path = vendor/grammars/ooc.tmbundle
|
||||||
|
url = https://github.com/nilium/ooc.tmbundle
|
||||||
|
[submodule "vendor/grammars/LiveScript.tmbundle"]
|
||||||
|
path = vendor/grammars/LiveScript.tmbundle
|
||||||
|
url = https://github.com/paulmillr/LiveScript.tmbundle
|
||||||
|
[submodule "vendor/grammars/sublime-tea"]
|
||||||
|
path = vendor/grammars/sublime-tea
|
||||||
|
url = https://github.com/pferruggiaro/sublime-tea
|
||||||
|
[submodule "vendor/grammars/puppet-textmate-bundle"]
|
||||||
|
path = vendor/grammars/puppet-textmate-bundle
|
||||||
|
url = https://github.com/puppet-textmate-bundle/puppet-textmate-bundle
|
||||||
|
[submodule "vendor/grammars/abap.tmbundle"]
|
||||||
|
path = vendor/grammars/abap.tmbundle
|
||||||
|
url = https://github.com/pvl/abap.tmbundle
|
||||||
|
[submodule "vendor/grammars/mercury-tmlanguage"]
|
||||||
|
path = vendor/grammars/mercury-tmlanguage
|
||||||
|
url = https://github.com/sebgod/mercury-tmlanguage
|
||||||
|
[submodule "vendor/grammars/mathematica-tmbundle"]
|
||||||
|
path = vendor/grammars/mathematica-tmbundle
|
||||||
|
url = https://github.com/shadanan/mathematica-tmbundle
|
||||||
|
[submodule "vendor/grammars/sublime-robot-plugin"]
|
||||||
|
path = vendor/grammars/sublime-robot-plugin
|
||||||
|
url = https://github.com/shellderp/sublime-robot-plugin
|
||||||
|
[submodule "vendor/grammars/actionscript3-tmbundle"]
|
||||||
|
path = vendor/grammars/actionscript3-tmbundle
|
||||||
|
url = https://github.com/simongregory/actionscript3-tmbundle
|
||||||
|
[submodule "vendor/grammars/Sublime-QML"]
|
||||||
|
path = vendor/grammars/Sublime-QML
|
||||||
|
url = https://github.com/skozlovf/Sublime-QML
|
||||||
|
[submodule "vendor/grammars/Slash.tmbundle"]
|
||||||
|
path = vendor/grammars/Slash.tmbundle
|
||||||
|
url = https://github.com/slash-lang/Slash.tmbundle
|
||||||
|
[submodule "vendor/grammars/factor"]
|
||||||
|
path = vendor/grammars/factor
|
||||||
|
url = https://github.com/slavapestov/factor
|
||||||
|
[submodule "vendor/grammars/ruby-slim.tmbundle"]
|
||||||
|
path = vendor/grammars/ruby-slim.tmbundle
|
||||||
|
url = https://github.com/slim-template/ruby-slim.tmbundle
|
||||||
|
[submodule "vendor/grammars/SublimeXtend"]
|
||||||
|
path = vendor/grammars/SublimeXtend
|
||||||
|
url = https://github.com/staltz/SublimeXtend
|
||||||
|
[submodule "vendor/grammars/Stata.tmbundle"]
|
||||||
|
path = vendor/grammars/Stata.tmbundle
|
||||||
|
url = https://github.com/statatmbundle/Stata.tmbundle
|
||||||
|
[submodule "vendor/grammars/Vala-TMBundle"]
|
||||||
|
path = vendor/grammars/Vala-TMBundle
|
||||||
|
url = https://github.com/technosophos/Vala-TMBundle
|
||||||
|
[submodule "vendor/grammars/ant.tmbundle"]
|
||||||
|
path = vendor/grammars/ant.tmbundle
|
||||||
|
url = https://github.com/textmate/ant.tmbundle
|
||||||
|
[submodule "vendor/grammars/antlr.tmbundle"]
|
||||||
|
path = vendor/grammars/antlr.tmbundle
|
||||||
|
url = https://github.com/textmate/antlr.tmbundle
|
||||||
|
[submodule "vendor/grammars/apache.tmbundle"]
|
||||||
|
path = vendor/grammars/apache.tmbundle
|
||||||
|
url = https://github.com/textmate/apache.tmbundle
|
||||||
|
[submodule "vendor/grammars/applescript.tmbundle"]
|
||||||
|
path = vendor/grammars/applescript.tmbundle
|
||||||
|
url = https://github.com/textmate/applescript.tmbundle
|
||||||
|
[submodule "vendor/grammars/asp.tmbundle"]
|
||||||
|
path = vendor/grammars/asp.tmbundle
|
||||||
|
url = https://github.com/textmate/asp.tmbundle
|
||||||
|
[submodule "vendor/grammars/bison.tmbundle"]
|
||||||
|
path = vendor/grammars/bison.tmbundle
|
||||||
|
url = https://github.com/textmate/bison.tmbundle
|
||||||
|
[submodule "vendor/grammars/capnproto.tmbundle"]
|
||||||
|
path = vendor/grammars/capnproto.tmbundle
|
||||||
|
url = https://github.com/textmate/capnproto.tmbundle
|
||||||
|
[submodule "vendor/grammars/cmake.tmbundle"]
|
||||||
|
path = vendor/grammars/cmake.tmbundle
|
||||||
|
url = https://github.com/textmate/cmake.tmbundle
|
||||||
|
[submodule "vendor/grammars/cpp-qt.tmbundle"]
|
||||||
|
path = vendor/grammars/cpp-qt.tmbundle
|
||||||
|
url = https://github.com/textmate/cpp-qt.tmbundle
|
||||||
|
[submodule "vendor/grammars/css.tmbundle"]
|
||||||
|
path = vendor/grammars/css.tmbundle
|
||||||
|
url = https://github.com/textmate/css.tmbundle
|
||||||
|
[submodule "vendor/grammars/d.tmbundle"]
|
||||||
|
path = vendor/grammars/d.tmbundle
|
||||||
|
url = https://github.com/textmate/d.tmbundle
|
||||||
|
[submodule "vendor/grammars/diff.tmbundle"]
|
||||||
|
path = vendor/grammars/diff.tmbundle
|
||||||
|
url = https://github.com/textmate/diff.tmbundle
|
||||||
|
[submodule "vendor/grammars/dylan.tmbundle"]
|
||||||
|
path = vendor/grammars/dylan.tmbundle
|
||||||
|
url = https://github.com/textmate/dylan.tmbundle
|
||||||
|
[submodule "vendor/grammars/eiffel.tmbundle"]
|
||||||
|
path = vendor/grammars/eiffel.tmbundle
|
||||||
|
url = https://github.com/textmate/eiffel.tmbundle
|
||||||
|
[submodule "vendor/grammars/erlang.tmbundle"]
|
||||||
|
path = vendor/grammars/erlang.tmbundle
|
||||||
|
url = https://github.com/textmate/erlang.tmbundle
|
||||||
|
[submodule "vendor/grammars/fortran.tmbundle"]
|
||||||
|
path = vendor/grammars/fortran.tmbundle
|
||||||
|
url = https://github.com/textmate/fortran.tmbundle
|
||||||
|
[submodule "vendor/grammars/gettext.tmbundle"]
|
||||||
|
path = vendor/grammars/gettext.tmbundle
|
||||||
|
url = https://github.com/textmate/gettext.tmbundle
|
||||||
|
[submodule "vendor/grammars/graphviz.tmbundle"]
|
||||||
|
path = vendor/grammars/graphviz.tmbundle
|
||||||
|
url = https://github.com/textmate/graphviz.tmbundle
|
||||||
|
[submodule "vendor/grammars/groovy.tmbundle"]
|
||||||
|
path = vendor/grammars/groovy.tmbundle
|
||||||
|
url = https://github.com/textmate/groovy.tmbundle
|
||||||
|
[submodule "vendor/grammars/haskell.tmbundle"]
|
||||||
|
path = vendor/grammars/haskell.tmbundle
|
||||||
|
url = https://github.com/textmate/haskell.tmbundle
|
||||||
|
[submodule "vendor/grammars/html.tmbundle"]
|
||||||
|
path = vendor/grammars/html.tmbundle
|
||||||
|
url = https://github.com/textmate/html.tmbundle
|
||||||
|
[submodule "vendor/grammars/ini.tmbundle"]
|
||||||
|
path = vendor/grammars/ini.tmbundle
|
||||||
|
url = https://github.com/textmate/ini.tmbundle
|
||||||
|
[submodule "vendor/grammars/io.tmbundle"]
|
||||||
|
path = vendor/grammars/io.tmbundle
|
||||||
|
url = https://github.com/textmate/io.tmbundle
|
||||||
|
[submodule "vendor/grammars/java.tmbundle"]
|
||||||
|
path = vendor/grammars/java.tmbundle
|
||||||
|
url = https://github.com/textmate/java.tmbundle
|
||||||
|
[submodule "vendor/grammars/javadoc.tmbundle"]
|
||||||
|
path = vendor/grammars/javadoc.tmbundle
|
||||||
|
url = https://github.com/textmate/javadoc.tmbundle
|
||||||
|
[submodule "vendor/grammars/javascript-objective-j.tmbundle"]
|
||||||
|
path = vendor/grammars/javascript-objective-j.tmbundle
|
||||||
|
url = https://github.com/textmate/javascript-objective-j.tmbundle
|
||||||
|
[submodule "vendor/grammars/json.tmbundle"]
|
||||||
|
path = vendor/grammars/json.tmbundle
|
||||||
|
url = https://github.com/textmate/json.tmbundle
|
||||||
|
[submodule "vendor/grammars/latex.tmbundle"]
|
||||||
|
path = vendor/grammars/latex.tmbundle
|
||||||
|
url = https://github.com/textmate/latex.tmbundle
|
||||||
|
[submodule "vendor/grammars/less.tmbundle"]
|
||||||
|
path = vendor/grammars/less.tmbundle
|
||||||
|
url = https://github.com/textmate/less.tmbundle
|
||||||
|
[submodule "vendor/grammars/lilypond.tmbundle"]
|
||||||
|
path = vendor/grammars/lilypond.tmbundle
|
||||||
|
url = https://github.com/textmate/lilypond.tmbundle
|
||||||
|
[submodule "vendor/grammars/lisp.tmbundle"]
|
||||||
|
path = vendor/grammars/lisp.tmbundle
|
||||||
|
url = https://github.com/textmate/lisp.tmbundle
|
||||||
|
[submodule "vendor/grammars/logtalk.tmbundle"]
|
||||||
|
path = vendor/grammars/logtalk.tmbundle
|
||||||
|
url = https://github.com/textmate/logtalk.tmbundle
|
||||||
|
[submodule "vendor/grammars/lua.tmbundle"]
|
||||||
|
path = vendor/grammars/lua.tmbundle
|
||||||
|
url = https://github.com/textmate/lua.tmbundle
|
||||||
|
[submodule "vendor/grammars/make.tmbundle"]
|
||||||
|
path = vendor/grammars/make.tmbundle
|
||||||
|
url = https://github.com/textmate/make.tmbundle
|
||||||
|
[submodule "vendor/grammars/matlab.tmbundle"]
|
||||||
|
path = vendor/grammars/matlab.tmbundle
|
||||||
|
url = https://github.com/textmate/matlab.tmbundle
|
||||||
|
[submodule "vendor/grammars/maven.tmbundle"]
|
||||||
|
path = vendor/grammars/maven.tmbundle
|
||||||
|
url = https://github.com/textmate/maven.tmbundle
|
||||||
|
[submodule "vendor/grammars/nemerle.tmbundle"]
|
||||||
|
path = vendor/grammars/nemerle.tmbundle
|
||||||
|
url = https://github.com/textmate/nemerle.tmbundle
|
||||||
|
[submodule "vendor/grammars/ninja.tmbundle"]
|
||||||
|
path = vendor/grammars/ninja.tmbundle
|
||||||
|
url = https://github.com/textmate/ninja.tmbundle
|
||||||
|
[submodule "vendor/grammars/objective-c.tmbundle"]
|
||||||
|
path = vendor/grammars/objective-c.tmbundle
|
||||||
|
url = https://github.com/textmate/objective-c.tmbundle
|
||||||
|
[submodule "vendor/grammars/ocaml.tmbundle"]
|
||||||
|
path = vendor/grammars/ocaml.tmbundle
|
||||||
|
url = https://github.com/textmate/ocaml.tmbundle
|
||||||
|
[submodule "vendor/grammars/pascal.tmbundle"]
|
||||||
|
path = vendor/grammars/pascal.tmbundle
|
||||||
|
url = https://github.com/textmate/pascal.tmbundle
|
||||||
|
[submodule "vendor/grammars/perl.tmbundle"]
|
||||||
|
path = vendor/grammars/perl.tmbundle
|
||||||
|
url = https://github.com/textmate/perl.tmbundle
|
||||||
|
[submodule "vendor/grammars/php-smarty.tmbundle"]
|
||||||
|
path = vendor/grammars/php-smarty.tmbundle
|
||||||
|
url = https://github.com/textmate/php-smarty.tmbundle
|
||||||
|
[submodule "vendor/grammars/php.tmbundle"]
|
||||||
|
path = vendor/grammars/php.tmbundle
|
||||||
|
url = https://github.com/textmate/php.tmbundle
|
||||||
|
[submodule "vendor/grammars/postscript.tmbundle"]
|
||||||
|
path = vendor/grammars/postscript.tmbundle
|
||||||
|
url = https://github.com/textmate/postscript.tmbundle
|
||||||
|
[submodule "vendor/grammars/processing.tmbundle"]
|
||||||
|
path = vendor/grammars/processing.tmbundle
|
||||||
|
url = https://github.com/textmate/processing.tmbundle
|
||||||
|
[submodule "vendor/grammars/prolog.tmbundle"]
|
||||||
|
path = vendor/grammars/prolog.tmbundle
|
||||||
|
url = https://github.com/textmate/prolog.tmbundle
|
||||||
|
[submodule "vendor/grammars/python-django.tmbundle"]
|
||||||
|
path = vendor/grammars/python-django.tmbundle
|
||||||
|
url = https://github.com/textmate/python-django.tmbundle
|
||||||
|
[submodule "vendor/grammars/r.tmbundle"]
|
||||||
|
path = vendor/grammars/r.tmbundle
|
||||||
|
url = https://github.com/textmate/r.tmbundle
|
||||||
|
[submodule "vendor/grammars/restructuredtext.tmbundle"]
|
||||||
|
path = vendor/grammars/restructuredtext.tmbundle
|
||||||
|
url = https://github.com/textmate/restructuredtext.tmbundle
|
||||||
|
[submodule "vendor/grammars/ruby-haml.tmbundle"]
|
||||||
|
path = vendor/grammars/ruby-haml.tmbundle
|
||||||
|
url = https://github.com/textmate/ruby-haml.tmbundle
|
||||||
|
[submodule "vendor/grammars/ruby-on-rails-tmbundle"]
|
||||||
|
path = vendor/grammars/ruby-on-rails-tmbundle
|
||||||
|
url = https://github.com/textmate/ruby-on-rails-tmbundle
|
||||||
|
[submodule "vendor/grammars/scheme.tmbundle"]
|
||||||
|
path = vendor/grammars/scheme.tmbundle
|
||||||
|
url = https://github.com/textmate/scheme.tmbundle
|
||||||
|
[submodule "vendor/grammars/scilab.tmbundle"]
|
||||||
|
path = vendor/grammars/scilab.tmbundle
|
||||||
|
url = https://github.com/textmate/scilab.tmbundle
|
||||||
|
[submodule "vendor/grammars/sql.tmbundle"]
|
||||||
|
path = vendor/grammars/sql.tmbundle
|
||||||
|
url = https://github.com/textmate/sql.tmbundle
|
||||||
|
[submodule "vendor/grammars/standard-ml.tmbundle"]
|
||||||
|
path = vendor/grammars/standard-ml.tmbundle
|
||||||
|
url = https://github.com/textmate/standard-ml.tmbundle
|
||||||
|
[submodule "vendor/grammars/swift.tmbundle"]
|
||||||
|
path = vendor/grammars/swift.tmbundle
|
||||||
|
url = https://github.com/textmate/swift.tmbundle
|
||||||
|
[submodule "vendor/grammars/tcl.tmbundle"]
|
||||||
|
path = vendor/grammars/tcl.tmbundle
|
||||||
|
url = https://github.com/textmate/tcl.tmbundle
|
||||||
|
[submodule "vendor/grammars/text.tmbundle"]
|
||||||
|
path = vendor/grammars/text.tmbundle
|
||||||
|
url = https://github.com/textmate/text.tmbundle
|
||||||
|
[submodule "vendor/grammars/textile.tmbundle"]
|
||||||
|
path = vendor/grammars/textile.tmbundle
|
||||||
|
url = https://github.com/textmate/textile.tmbundle
|
||||||
|
[submodule "vendor/grammars/textmate.tmbundle"]
|
||||||
|
path = vendor/grammars/textmate.tmbundle
|
||||||
|
url = https://github.com/textmate/textmate.tmbundle
|
||||||
|
[submodule "vendor/grammars/thrift.tmbundle"]
|
||||||
|
path = vendor/grammars/thrift.tmbundle
|
||||||
|
url = https://github.com/textmate/thrift.tmbundle
|
||||||
|
[submodule "vendor/grammars/toml.tmbundle"]
|
||||||
|
path = vendor/grammars/toml.tmbundle
|
||||||
|
url = https://github.com/textmate/toml.tmbundle
|
||||||
|
[submodule "vendor/grammars/verilog.tmbundle"]
|
||||||
|
path = vendor/grammars/verilog.tmbundle
|
||||||
|
url = https://github.com/textmate/verilog.tmbundle
|
||||||
|
[submodule "vendor/grammars/xml.tmbundle"]
|
||||||
|
path = vendor/grammars/xml.tmbundle
|
||||||
|
url = https://github.com/textmate/xml.tmbundle
|
||||||
|
[submodule "vendor/grammars/smalltalk-tmbundle"]
|
||||||
|
path = vendor/grammars/smalltalk-tmbundle
|
||||||
|
url = https://github.com/tomas-stefano/smalltalk-tmbundle
|
||||||
|
[submodule "vendor/grammars/ioke-outdated"]
|
||||||
|
path = vendor/grammars/ioke-outdated
|
||||||
|
url = https://github.com/vic/ioke-outdated
|
||||||
|
[submodule "vendor/grammars/kotlin-sublime-package"]
|
||||||
|
path = vendor/grammars/kotlin-sublime-package
|
||||||
|
url = https://github.com/vkostyukov/kotlin-sublime-package
|
||||||
|
[submodule "vendor/grammars/c.tmbundle"]
|
||||||
|
path = vendor/grammars/c.tmbundle
|
||||||
|
url = https://github.com/vmg/c.tmbundle
|
||||||
|
[submodule "vendor/grammars/zephir-sublime"]
|
||||||
|
path = vendor/grammars/zephir-sublime
|
||||||
|
url = https://github.com/vmg/zephir-sublime
|
||||||
|
[submodule "vendor/grammars/llvm.tmbundle"]
|
||||||
|
path = vendor/grammars/llvm.tmbundle
|
||||||
|
url = https://github.com/whitequark/llvm.tmbundle
|
||||||
|
[submodule "vendor/grammars/sublime-nix"]
|
||||||
|
path = vendor/grammars/sublime-nix
|
||||||
|
url = https://github.com/wmertens/sublime-nix
|
||||||
|
[submodule "vendor/grammars/ada.tmbundle"]
|
||||||
|
path = vendor/grammars/ada.tmbundle
|
||||||
|
url = https://github.com/aroben/ada.tmbundle
|
||||||
|
branch = better-with-highlighting
|
||||||
|
[submodule "vendor/grammars/oz-tmbundle"]
|
||||||
|
path = vendor/grammars/oz-tmbundle
|
||||||
|
url = https://github.com/eregon/oz-tmbundle
|
||||||
|
[submodule "vendor/grammars/ebundles"]
|
||||||
|
path = vendor/grammars/ebundles
|
||||||
|
url = https://github.com/ericzou/ebundles
|
||||||
|
[submodule "vendor/grammars/sublime-mask"]
|
||||||
|
path = vendor/grammars/sublime-mask
|
||||||
|
url = https://github.com/tenbits/sublime-mask
|
||||||
|
branch = release
|
||||||
|
[submodule "vendor/grammars/sublime_cobol"]
|
||||||
|
path = vendor/grammars/sublime_cobol
|
||||||
|
url = https://bitbucket.org/bitlang/sublime_cobol
|
||||||
|
[submodule "vendor/grammars/ruby.tmbundle"]
|
||||||
|
path = vendor/grammars/ruby.tmbundle
|
||||||
|
url = https://github.com/aroben/ruby.tmbundle
|
||||||
|
branch = pl
|
||||||
|
[submodule "vendor/grammars/IDL-Syntax"]
|
||||||
|
path = vendor/grammars/IDL-Syntax
|
||||||
|
url = https://github.com/andik/IDL-Syntax
|
||||||
|
[submodule "vendor/grammars/sas.tmbundle"]
|
||||||
|
path = vendor/grammars/sas.tmbundle
|
||||||
|
url = https://github.com/rpardee/sas.tmbundle
|
||||||
|
[submodule "vendor/grammars/atom-salt"]
|
||||||
|
path = vendor/grammars/atom-salt
|
||||||
|
url = https://github.com/saltstack/atom-salt
|
||||||
|
[submodule "vendor/grammars/Scalate.tmbundle"]
|
||||||
|
path = vendor/grammars/Scalate.tmbundle
|
||||||
|
url = https://github.com/scalate/Scalate.tmbundle
|
||||||
|
[submodule "vendor/grammars/Elm.tmLanguage"]
|
||||||
|
path = vendor/grammars/Elm.tmLanguage
|
||||||
|
url = https://github.com/deadfoxygrandpa/Elm.tmLanguage
|
||||||
|
[submodule "vendor/grammars/sublime-bsv"]
|
||||||
|
path = vendor/grammars/sublime-bsv
|
||||||
|
url = https://github.com/thotypous/sublime-bsv
|
||||||
@@ -4,6 +4,9 @@ before_install:
|
|||||||
- git fetch origin test/attributes:test/attributes
|
- git fetch origin test/attributes:test/attributes
|
||||||
- git fetch origin test/master:test/master
|
- git fetch origin test/master:test/master
|
||||||
- sudo apt-get install libicu-dev -y
|
- sudo apt-get install libicu-dev -y
|
||||||
|
- git submodule init
|
||||||
|
- git submodule sync --quiet
|
||||||
|
- script/fast-submodule-update
|
||||||
rvm:
|
rvm:
|
||||||
- 1.9.3
|
- 1.9.3
|
||||||
- 2.0.0
|
- 2.0.0
|
||||||
@@ -11,3 +14,5 @@ rvm:
|
|||||||
- 2.2
|
- 2.2
|
||||||
notifications:
|
notifications:
|
||||||
disabled: true
|
disabled: true
|
||||||
|
git:
|
||||||
|
submodules: false
|
||||||
|
|||||||
@@ -21,9 +21,19 @@ Once the bug has been fixed upstream, please let us know and we'll pick it up fo
|
|||||||
Great! You'll need to:
|
Great! You'll need to:
|
||||||
|
|
||||||
0. Add an entry for your language to [`languages.yml`][languages].
|
0. Add an entry for your language to [`languages.yml`][languages].
|
||||||
0. Add a grammar for your language to [`grammars.yml`][grammars] by running `script/download-grammars --add URL`. Please only add grammars that have a license that permits redistribution.
|
0. Add a grammar for your language. Please only add grammars that have a license that permits redistribution.
|
||||||
|
0. Add your grammar as a submodule: `git submodule add https://github.com/JaneSmith/MyGrammar vendor/grammars/MyGrammar`.
|
||||||
|
0. Add your grammar to [`grammars.yml`][grammars] by running `script/download-grammars --add vendor/grammars/MyGrammar`.
|
||||||
0. Add samples for your language to the [samples directory][samples].
|
0. Add samples for your language to the [samples directory][samples].
|
||||||
|
|
||||||
|
In addition, if your new language defines an extension that's already listed in [`languages.yml`][languages] (such as `.foo`) then sometimes a few more steps will need to be taken:
|
||||||
|
|
||||||
|
0. Make sure that example `.foo` files are present in the [samples directory][samples] for each language that uses `.foo`.
|
||||||
|
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files.
|
||||||
|
0. If the Bayesian classifier does a bad job with the sample `.foo` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
|
||||||
|
|
||||||
|
Remember, the goal here is to try and avoid false positives!
|
||||||
|
|
||||||
We try only to add languages once they have some usage on GitHub, so please note in-the-wild usage examples in your pull request. In most cases we prefer that languages already be in use in hundreds of repositories before supporting them in Linguist.
|
We try only to add languages once they have some usage on GitHub, so please note in-the-wild usage examples in your pull request. In most cases we prefer that languages already be in use in hundreds of repositories before supporting them in Linguist.
|
||||||
|
|
||||||
[grammars]: /grammars.yml
|
[grammars]: /grammars.yml
|
||||||
|
|||||||
1
Gemfile
1
Gemfile
@@ -1,5 +1,4 @@
|
|||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
gemspec :name => "github-linguist"
|
gemspec :name => "github-linguist"
|
||||||
gemspec :name => "github-linguist-grammars"
|
gemspec :name => "github-linguist-grammars"
|
||||||
gem 'test-unit', require: false if RUBY_VERSION >= '2.2'
|
|
||||||
gem 'byebug' if RUBY_VERSION >= '2.0'
|
gem 'byebug' if RUBY_VERSION >= '2.0'
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ But for development you are going to want to checkout out the source. To get it,
|
|||||||
|
|
||||||
git clone https://github.com/github/linguist.git
|
git clone https://github.com/github/linguist.git
|
||||||
cd linguist/
|
cd linguist/
|
||||||
bundle install
|
script/bootstrap
|
||||||
|
|
||||||
To run the tests:
|
To run the tests:
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@ Here's our current build status, which is hopefully green: [.
|
0. Bump gem version in `lib/linguist/version.rb`. For example, [like this](https://github.com/github/linguist/commit/8d2ea90a5ba3b2fe6e1508b7155aa4632eea2985).
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
|
|||||||
s.add_dependency 'mime-types', '>= 1.19'
|
s.add_dependency 'mime-types', '>= 1.19'
|
||||||
s.add_dependency 'rugged', '~> 0.22.0b4'
|
s.add_dependency 'rugged', '~> 0.22.0b4'
|
||||||
|
|
||||||
|
s.add_development_dependency 'minitest', '>= 5.0'
|
||||||
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'
|
||||||
|
|||||||
661
grammars.yml
661
grammars.yml
@@ -18,411 +18,436 @@ http://svn.textmate.org/trunk/Review/Bundles/XQuery.tmbundle:
|
|||||||
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
|
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
|
||||||
- source.systemverilog
|
- source.systemverilog
|
||||||
- source.ucfconstraints
|
- source.ucfconstraints
|
||||||
https://bitbucket.org/bitlang/sublime_cobol/raw/b0e9c44ac5f7a2fb553421aa986b35854cbfda4a/COBOL.tmLanguage:
|
|
||||||
- source.cobol
|
|
||||||
https://fan.googlecode.com/hg-history/Build%201.0.55/adm/tools/textmate/Fan.tmbundle/Syntaxes/Fan.tmLanguage:
|
https://fan.googlecode.com/hg-history/Build%201.0.55/adm/tools/textmate/Fan.tmbundle/Syntaxes/Fan.tmLanguage:
|
||||||
- source.fan
|
- source.fan
|
||||||
https://github.com/AlanQuatermain/go-tmbundle:
|
vendor/grammars/Agda.tmbundle:
|
||||||
- source.go
|
- source.agda
|
||||||
https://github.com/Anomareh/PHP-Twig.tmbundle:
|
vendor/grammars/Alloy.tmbundle:
|
||||||
- text.html.twig
|
- source.alloy
|
||||||
https://github.com/Cirru/sublime-cirru/raw/master/Cirru.tmLanguage:
|
vendor/grammars/ColdFusion:
|
||||||
- source.cirru
|
|
||||||
https://github.com/Cykey/Sublime-Logos:
|
|
||||||
- source.logos
|
|
||||||
https://github.com/Drako/SublimeBrainfuck/raw/master/Brainfuck.tmLanguage:
|
|
||||||
- source.bf
|
|
||||||
https://github.com/JohnNilsson/awk-sublime/raw/master/AWK.tmLanguage:
|
|
||||||
- source.awk
|
|
||||||
https://github.com/JonBons/Sublime-SQF-Language:
|
|
||||||
- source.sqf
|
|
||||||
https://github.com/MarioRicalde/SCSS.tmbundle:
|
|
||||||
- source.scss
|
|
||||||
https://github.com/Oldes/Sublime-REBOL:
|
|
||||||
- source.rebol
|
|
||||||
https://github.com/PogiNate/Sublime-Inform:
|
|
||||||
- source.Inform7
|
|
||||||
https://github.com/Red-Nova-Technologies/autoitv3-tmbundle:
|
|
||||||
- source.autoit.3
|
|
||||||
https://github.com/SalGnt/Sublime-VimL:
|
|
||||||
- source.viml
|
|
||||||
https://github.com/Shammah/boo-sublime/raw/master/Boo.tmLanguage:
|
|
||||||
- source.boo
|
|
||||||
https://github.com/SublimeText/ColdFusion:
|
|
||||||
- source.cfscript
|
- source.cfscript
|
||||||
- source.cfscript.cfc
|
- source.cfscript.cfc
|
||||||
- text.cfml.basic
|
- text.cfml.basic
|
||||||
- text.html.cfm
|
- text.html.cfm
|
||||||
https://github.com/SublimeText/NSIS:
|
vendor/grammars/Docker.tmbundle:
|
||||||
|
- source.dockerfile
|
||||||
|
vendor/grammars/Elm.tmLanguage:
|
||||||
|
- source.elm
|
||||||
|
vendor/grammars/Handlebars:
|
||||||
|
- text.html.handlebars
|
||||||
|
vendor/grammars/IDL-Syntax:
|
||||||
|
- source.webidl
|
||||||
|
vendor/grammars/Isabelle.tmbundle:
|
||||||
|
- source.isabelle.root
|
||||||
|
- source.isabelle.theory
|
||||||
|
vendor/grammars/Julia.tmbundle:
|
||||||
|
- source.julia
|
||||||
|
vendor/grammars/LiveScript.tmbundle:
|
||||||
|
- source.livescript
|
||||||
|
vendor/grammars/NSIS:
|
||||||
- source.nsis
|
- source.nsis
|
||||||
https://github.com/Varriount/NimLime:
|
vendor/grammars/NimLime:
|
||||||
- source.nimrod
|
- source.nimrod
|
||||||
- source.nimrod_filter
|
- source.nimrod_filter
|
||||||
- source.nimrodcfg
|
- source.nimrodcfg
|
||||||
https://github.com/alkemist/gradle.tmbundle:
|
vendor/grammars/PHP-Twig.tmbundle:
|
||||||
- source.groovy.gradle
|
- text.html.twig
|
||||||
https://github.com/ambethia/Sublime-Loom:
|
vendor/grammars/RDoc.tmbundle:
|
||||||
- source.loomscript
|
- text.rdoc
|
||||||
https://github.com/angryant0007/VBDotNetSyntax:
|
vendor/grammars/SCSS.tmbundle:
|
||||||
- source.vbnet
|
- source.scss
|
||||||
https://github.com/anunayk/cool-tmbundle:
|
vendor/grammars/Scalate.tmbundle:
|
||||||
- source.cool
|
- source.scaml
|
||||||
https://github.com/aroben/ada.tmbundle/raw/c45eed4d5f98fe3bcbbffbb9e436601ab5bbde4b/Syntaxes/Ada.plist:
|
- text.html.ssp
|
||||||
- source.ada
|
vendor/grammars/Slash.tmbundle:
|
||||||
https://github.com/aroben/ruby.tmbundle@4636a3023153c3034eb6ffc613899ba9cf33b41f:
|
- text.html.slash
|
||||||
- source.ruby
|
vendor/grammars/Stata.tmbundle:
|
||||||
- text.html.erb
|
- source.mata
|
||||||
https://github.com/asbjornenge/Docker.tmbundle:
|
- source.stata
|
||||||
- source.dockerfile
|
vendor/grammars/Sublime-Coq:
|
||||||
https://github.com/atom/language-clojure:
|
- source.coq
|
||||||
- source.clojure
|
vendor/grammars/Sublime-Inform:
|
||||||
https://github.com/atom/language-coffee-script:
|
- source.Inform7
|
||||||
- source.coffee
|
vendor/grammars/Sublime-Lasso:
|
||||||
- source.litcoffee
|
|
||||||
https://github.com/atom/language-csharp:
|
|
||||||
- source.cs
|
|
||||||
- source.csx
|
|
||||||
- source.nant-build
|
|
||||||
https://github.com/atom/language-gfm:
|
|
||||||
- text.html.markdown
|
|
||||||
https://github.com/atom/language-javascript:
|
|
||||||
- source.js
|
|
||||||
- source.js.regexp
|
|
||||||
https://github.com/atom/language-python:
|
|
||||||
- source.python
|
|
||||||
- source.regexp.python
|
|
||||||
- text.python.traceback
|
|
||||||
https://github.com/atom/language-sass:
|
|
||||||
- source.css.scss
|
|
||||||
- source.sass
|
|
||||||
https://github.com/atom/language-shellscript:
|
|
||||||
- source.shell
|
|
||||||
- text.shell-session
|
|
||||||
https://github.com/austinwagner/sublime-sourcepawn:
|
|
||||||
- source.sp
|
|
||||||
https://github.com/bfad/Sublime-Lasso:
|
|
||||||
- file.lasso
|
- file.lasso
|
||||||
https://github.com/bholt/chapel-tmbundle:
|
vendor/grammars/Sublime-Logos:
|
||||||
- source.chapel
|
- source.logos
|
||||||
https://github.com/brandonwamboldt/sublime-nginx:
|
vendor/grammars/Sublime-Loom:
|
||||||
- source.nginx
|
- source.loomscript
|
||||||
https://github.com/bro/bro-sublime:
|
vendor/grammars/Sublime-QML:
|
||||||
|
- source.qml
|
||||||
|
vendor/grammars/Sublime-REBOL:
|
||||||
|
- source.rebol
|
||||||
|
vendor/grammars/Sublime-SQF-Language:
|
||||||
|
- source.sqf
|
||||||
|
vendor/grammars/Sublime-Text-2-OpenEdge-ABL:
|
||||||
|
- source.abl
|
||||||
|
vendor/grammars/Sublime-VimL:
|
||||||
|
- source.viml
|
||||||
|
vendor/grammars/SublimeBrainfuck:
|
||||||
|
- source.bf
|
||||||
|
vendor/grammars/SublimeXtend:
|
||||||
|
- source.xtend
|
||||||
|
vendor/grammars/Textmate-Gosu-Bundle:
|
||||||
|
- source.gosu.2
|
||||||
|
vendor/grammars/VBDotNetSyntax:
|
||||||
|
- source.vbnet
|
||||||
|
vendor/grammars/Vala-TMBundle:
|
||||||
|
- source.vala
|
||||||
|
vendor/grammars/abap.tmbundle:
|
||||||
|
- source.abap
|
||||||
|
vendor/grammars/actionscript3-tmbundle:
|
||||||
|
- source.actionscript.3
|
||||||
|
- text.html.asdoc
|
||||||
|
- text.xml.flex-config
|
||||||
|
vendor/grammars/ada.tmbundle:
|
||||||
|
- source.ada
|
||||||
|
vendor/grammars/ant.tmbundle:
|
||||||
|
- text.xml.ant
|
||||||
|
vendor/grammars/antlr.tmbundle:
|
||||||
|
- source.antlr
|
||||||
|
vendor/grammars/apache.tmbundle:
|
||||||
|
- source.apache-config
|
||||||
|
- source.apache-config.mod_perl
|
||||||
|
vendor/grammars/applescript.tmbundle:
|
||||||
|
- source.applescript
|
||||||
|
vendor/grammars/asp.tmbundle:
|
||||||
|
- source.asp
|
||||||
|
- text.html.asp
|
||||||
|
vendor/grammars/assembly.tmbundle:
|
||||||
|
- objdump.x86asm
|
||||||
|
- source.x86asm
|
||||||
|
vendor/grammars/atom-salt:
|
||||||
|
- source.python.salt
|
||||||
|
- source.yaml.salt
|
||||||
|
vendor/grammars/autoitv3-tmbundle:
|
||||||
|
- source.autoit.3
|
||||||
|
vendor/grammars/awk-sublime:
|
||||||
|
- source.awk
|
||||||
|
vendor/grammars/bison.tmbundle:
|
||||||
|
- source.bison
|
||||||
|
vendor/grammars/boo-sublime:
|
||||||
|
- source.boo
|
||||||
|
vendor/grammars/bro-sublime:
|
||||||
- source.bro
|
- source.bro
|
||||||
https://github.com/carsonoid/sublime_man_page_support/raw/master/man-groff.tmLanguage:
|
vendor/grammars/c.tmbundle:
|
||||||
- text.groff
|
- source.c
|
||||||
https://github.com/ccreutzig/sublime-MuPAD:
|
- source.c++
|
||||||
- source.mupad
|
- source.c.platform
|
||||||
https://github.com/cdwilson/nesC.tmbundle:
|
vendor/grammars/capnproto.tmbundle:
|
||||||
- source.nesc
|
- source.capnp
|
||||||
https://github.com/christophevg/racket-tmbundle:
|
vendor/grammars/ceylon-sublimetext:
|
||||||
- source.racket
|
- module.ceylon
|
||||||
https://github.com/clemos/haxe-sublime-bundle:
|
- source.ceylon
|
||||||
|
vendor/grammars/chapel-tmbundle:
|
||||||
|
- source.chapel
|
||||||
|
vendor/grammars/cmake.tmbundle:
|
||||||
|
- source.cache.cmake
|
||||||
|
- source.cmake
|
||||||
|
vendor/grammars/cool-tmbundle:
|
||||||
|
- source.cool
|
||||||
|
vendor/grammars/cpp-qt.tmbundle:
|
||||||
|
- source.c++.qt
|
||||||
|
- source.qmake
|
||||||
|
vendor/grammars/css.tmbundle:
|
||||||
|
- source.css
|
||||||
|
vendor/grammars/cucumber-tmbundle:
|
||||||
|
- source.ruby.rspec.cucumber.steps
|
||||||
|
- text.gherkin.feature
|
||||||
|
vendor/grammars/d.tmbundle:
|
||||||
|
- source.d
|
||||||
|
vendor/grammars/dart-sublime-bundle:
|
||||||
|
- source.dart
|
||||||
|
- source.pubspec
|
||||||
|
- text.dart-doccomments
|
||||||
|
vendor/grammars/diff.tmbundle:
|
||||||
|
- source.diff
|
||||||
|
vendor/grammars/dylan.tmbundle:
|
||||||
|
- source.dylan
|
||||||
|
- source.lid
|
||||||
|
- source.makegen
|
||||||
|
vendor/grammars/ebundles/Bundles/MSDOS batch file.tmbundle:
|
||||||
|
- source.dosbatch
|
||||||
|
vendor/grammars/eiffel.tmbundle:
|
||||||
|
- source.eiffel
|
||||||
|
vendor/grammars/elixir-tmbundle:
|
||||||
|
- source.elixir
|
||||||
|
- text.elixir
|
||||||
|
- text.html.elixir
|
||||||
|
vendor/grammars/erlang.tmbundle:
|
||||||
|
- source.erlang
|
||||||
|
- text.html.erlang.yaws
|
||||||
|
vendor/grammars/factor:
|
||||||
|
- source.factor
|
||||||
|
- text.html.factor
|
||||||
|
vendor/grammars/fancy-tmbundle:
|
||||||
|
- source.fancy
|
||||||
|
vendor/grammars/fish-tmbundle:
|
||||||
|
- source.fish
|
||||||
|
vendor/grammars/fortran.tmbundle:
|
||||||
|
- source.fortran
|
||||||
|
- source.fortran.modern
|
||||||
|
vendor/grammars/fsharpbinding:
|
||||||
|
- source.fsharp
|
||||||
|
vendor/grammars/gettext.tmbundle:
|
||||||
|
- source.po
|
||||||
|
vendor/grammars/gnuplot-tmbundle:
|
||||||
|
- source.gnuplot
|
||||||
|
vendor/grammars/go-tmbundle:
|
||||||
|
- source.go
|
||||||
|
vendor/grammars/gradle.tmbundle:
|
||||||
|
- source.groovy.gradle
|
||||||
|
vendor/grammars/graphviz.tmbundle:
|
||||||
|
- source.dot
|
||||||
|
vendor/grammars/groovy.tmbundle:
|
||||||
|
- source.groovy
|
||||||
|
vendor/grammars/haskell.tmbundle:
|
||||||
|
- source.haskell
|
||||||
|
- text.tex.latex.haskell
|
||||||
|
vendor/grammars/haxe-sublime-bundle:
|
||||||
- source.erazor
|
- source.erazor
|
||||||
- source.haxe.2
|
- source.haxe.2
|
||||||
- source.hss.1
|
- source.hss.1
|
||||||
- source.hxml
|
- source.hxml
|
||||||
- source.nmml
|
- source.nmml
|
||||||
https://github.com/cucumber/cucumber-tmbundle:
|
vendor/grammars/html.tmbundle:
|
||||||
- source.ruby.rspec.cucumber.steps
|
- text.html.basic
|
||||||
- text.gherkin.feature
|
vendor/grammars/idl.tmbundle:
|
||||||
https://github.com/daaain/Handlebars/raw/master/Handlebars.tmLanguage:
|
|
||||||
- text.html.handlebars
|
|
||||||
https://github.com/davidpeckham/powershell.tmbundle:
|
|
||||||
- source.powershell
|
|
||||||
https://github.com/davidrios/jade-tmbundle:
|
|
||||||
- source.jade
|
|
||||||
- source.pyjade
|
|
||||||
https://github.com/elixir-lang/elixir-tmbundle:
|
|
||||||
- source.elixir
|
|
||||||
- text.elixir
|
|
||||||
- text.html.elixir
|
|
||||||
https://github.com/ericzou/ebundles/raw/master/Bundles/MSDOS%20batch%20file.tmbundle/Syntaxes/MSDOS%20batch%20file.tmLanguage:
|
|
||||||
- source.dosbatch
|
|
||||||
https://github.com/euler0/sublime-glsl/raw/master/GLSL.tmLanguage:
|
|
||||||
- source.glsl
|
|
||||||
https://github.com/fancy-lang/fancy-tmbundle:
|
|
||||||
- source.fancy
|
|
||||||
https://github.com/fsharp/fsharpbinding:
|
|
||||||
- source.fsharp
|
|
||||||
https://github.com/gingerbeardman/monkey.tmbundle:
|
|
||||||
- source.monkey
|
|
||||||
https://github.com/guillermooo/dart-sublime-bundle/raw/master/Dart.tmLanguage:
|
|
||||||
- source.dart
|
|
||||||
https://github.com/harrism/sublimetext-cuda-cpp/raw/master/cuda-c%2B%2B.tmLanguage:
|
|
||||||
- source.cuda-c++
|
|
||||||
https://github.com/hww3/pike-textmate:
|
|
||||||
- source.pike
|
|
||||||
https://github.com/jeancharles-roger/ceylon-sublimetext/raw/master/Ceylon.tmLanguage:
|
|
||||||
- source.ceylon
|
|
||||||
https://github.com/jfairbank/Sublime-Text-2-OpenEdge-ABL:
|
|
||||||
- source.abl
|
|
||||||
https://github.com/jhasse/sublime-rust:
|
|
||||||
- source.rust
|
|
||||||
https://github.com/johanasplund/sublime-befunge/raw/master/Befunge-93.tmLanguage:
|
|
||||||
- source.befunge
|
|
||||||
https://github.com/joshaven/RDoc.tmbundle:
|
|
||||||
- text.rdoc
|
|
||||||
https://github.com/jpcamara/Textmate-Gosu-Bundle/raw/master/Gosu.tmbundle/Syntaxes/Gosu.tmLanguage:
|
|
||||||
- source.gosu.2
|
|
||||||
https://github.com/kswedberg/jquery-tmbundle:
|
|
||||||
- source.js.jquery
|
|
||||||
https://github.com/laughedelic/sublime-idris/raw/master/Idris.tmLanguage:
|
|
||||||
- source.idris
|
|
||||||
https://github.com/lavrton/sublime-better-typescript:
|
|
||||||
- source.ts
|
|
||||||
https://github.com/leafo/moonscript-tmbundle:
|
|
||||||
- source.moonscript
|
|
||||||
https://github.com/lsf37/Isabelle.tmbundle:
|
|
||||||
- source.isabelle.root
|
|
||||||
- source.isabelle.theory
|
|
||||||
https://github.com/lunixbochs/x86-assembly-textmate-bundle:
|
|
||||||
- source.asm.x86
|
|
||||||
https://github.com/macekond/Alloy.tmbundle:
|
|
||||||
- source.alloy
|
|
||||||
https://github.com/mads379/opa.tmbundle:
|
|
||||||
- source.opa
|
|
||||||
https://github.com/mads379/scala.tmbundle:
|
|
||||||
- source.sbt
|
|
||||||
- source.scala
|
|
||||||
https://github.com/marconi/mako-tmbundle:
|
|
||||||
- text.html.mako
|
|
||||||
https://github.com/mattfoster/gnuplot-tmbundle:
|
|
||||||
- source.gnuplot
|
|
||||||
https://github.com/mgalloy/idl.tmbundle:
|
|
||||||
- source.idl
|
- source.idl
|
||||||
- source.idl-dlm
|
- source.idl-dlm
|
||||||
- text.idl-idldoc
|
- text.idl-idldoc
|
||||||
https://github.com/michaeledgar/protobuf-tmbundle:
|
vendor/grammars/ini.tmbundle:
|
||||||
- source.protobuf
|
|
||||||
https://github.com/mkolosick/Sublime-Coq/raw/master/Coq.tmLanguage:
|
|
||||||
- source.coq
|
|
||||||
https://github.com/mokus0/Agda.tmbundle:
|
|
||||||
- source.agda
|
|
||||||
https://github.com/nanoant/Julia.tmbundle:
|
|
||||||
- source.julia
|
|
||||||
https://github.com/nanoant/assembly.tmbundle/raw/master/Syntaxes/objdump%20C%2B%2B.tmLanguage:
|
|
||||||
- objdump.x86asm
|
|
||||||
https://github.com/nilium/ooc.tmbundle:
|
|
||||||
- source.ooc
|
|
||||||
https://github.com/paulmillr/LiveScript.tmbundle:
|
|
||||||
- source.livescript
|
|
||||||
https://github.com/pferruggiaro/sublime-tea:
|
|
||||||
- source.tea
|
|
||||||
https://github.com/puppet-textmate-bundle/puppet-textmate-bundle:
|
|
||||||
- source.puppet
|
|
||||||
https://github.com/pvl/abap.tmbundle:
|
|
||||||
- source.abap
|
|
||||||
https://github.com/scalate/Scalate.tmbundle:
|
|
||||||
- source.scaml
|
|
||||||
- text.html.ssp
|
|
||||||
https://github.com/shadanan/mathematica-tmbundle:
|
|
||||||
- source.mathematica
|
|
||||||
https://github.com/shellderp/sublime-robot-plugin:
|
|
||||||
- text.robot
|
|
||||||
https://github.com/simongregory/actionscript3-tmbundle:
|
|
||||||
- source.actionscript.3
|
|
||||||
- text.html.asdoc
|
|
||||||
- text.xml.flex-config
|
|
||||||
https://github.com/skozlovf/Sublime-QML:
|
|
||||||
- source.qml
|
|
||||||
https://github.com/slash-lang/Slash.tmbundle:
|
|
||||||
- text.html.slash
|
|
||||||
https://github.com/slavapestov/factor/raw/master/misc/Factor.tmbundle/Syntaxes/Factor.tmLanguage:
|
|
||||||
- source.factor
|
|
||||||
https://github.com/slim-template/ruby-slim.tmbundle:
|
|
||||||
- text.slim
|
|
||||||
https://github.com/staltz/SublimeXtend:
|
|
||||||
- source.xtend
|
|
||||||
https://github.com/statatmbundle/Stata.tmbundle:
|
|
||||||
- source.mata
|
|
||||||
- source.stata
|
|
||||||
https://github.com/technosophos/Vala-TMBundle:
|
|
||||||
- source.vala
|
|
||||||
https://github.com/textmate/ant.tmbundle:
|
|
||||||
- text.xml.ant
|
|
||||||
https://github.com/textmate/antlr.tmbundle:
|
|
||||||
- source.antlr
|
|
||||||
https://github.com/textmate/apache.tmbundle:
|
|
||||||
- source.apache-config
|
|
||||||
- source.apache-config.mod_perl
|
|
||||||
https://github.com/textmate/applescript.tmbundle:
|
|
||||||
- source.applescript
|
|
||||||
https://github.com/textmate/asp.tmbundle:
|
|
||||||
- source.asp
|
|
||||||
- text.html.asp
|
|
||||||
https://github.com/textmate/bison.tmbundle:
|
|
||||||
- source.bison
|
|
||||||
https://github.com/textmate/c.tmbundle:
|
|
||||||
- source.c
|
|
||||||
- source.c++
|
|
||||||
- source.c.platform
|
|
||||||
https://github.com/textmate/capnproto.tmbundle:
|
|
||||||
- source.capnp
|
|
||||||
https://github.com/textmate/cmake.tmbundle:
|
|
||||||
- source.cache.cmake
|
|
||||||
- source.cmake
|
|
||||||
https://github.com/textmate/cpp-qt.tmbundle:
|
|
||||||
- source.c++.qt
|
|
||||||
- source.qmake
|
|
||||||
https://github.com/textmate/css.tmbundle:
|
|
||||||
- source.css
|
|
||||||
https://github.com/textmate/d.tmbundle:
|
|
||||||
- source.d
|
|
||||||
https://github.com/textmate/diff.tmbundle:
|
|
||||||
- source.diff
|
|
||||||
https://github.com/textmate/dylan.tmbundle:
|
|
||||||
- source.dylan
|
|
||||||
- source.lid
|
|
||||||
- source.makegen
|
|
||||||
https://github.com/textmate/eiffel.tmbundle:
|
|
||||||
- source.eiffel
|
|
||||||
https://github.com/textmate/erlang.tmbundle:
|
|
||||||
- source.erlang
|
|
||||||
- text.html.erlang.yaws
|
|
||||||
https://github.com/textmate/fortran.tmbundle:
|
|
||||||
- source.fortran
|
|
||||||
- source.fortran.modern
|
|
||||||
https://github.com/textmate/gettext.tmbundle:
|
|
||||||
- source.po
|
|
||||||
https://github.com/textmate/graphviz.tmbundle:
|
|
||||||
- source.dot
|
|
||||||
https://github.com/textmate/groovy.tmbundle:
|
|
||||||
- source.groovy
|
|
||||||
https://github.com/textmate/haskell.tmbundle:
|
|
||||||
- source.haskell
|
|
||||||
- text.tex.latex.haskell
|
|
||||||
https://github.com/textmate/html.tmbundle:
|
|
||||||
- text.html.basic
|
|
||||||
https://github.com/textmate/ini.tmbundle:
|
|
||||||
- source.ini
|
- source.ini
|
||||||
https://github.com/textmate/io.tmbundle:
|
vendor/grammars/io.tmbundle:
|
||||||
- source.io
|
- source.io
|
||||||
https://github.com/textmate/java.tmbundle:
|
vendor/grammars/ioke-outdated:
|
||||||
|
- source.ioke
|
||||||
|
vendor/grammars/jade-tmbundle:
|
||||||
|
- source.jade
|
||||||
|
- source.pyjade
|
||||||
|
vendor/grammars/jasmin-sublime:
|
||||||
|
- source.jasmin
|
||||||
|
vendor/grammars/java.tmbundle:
|
||||||
- source.java
|
- source.java
|
||||||
- source.java-properties
|
- source.java-properties
|
||||||
- text.html.jsp
|
- text.html.jsp
|
||||||
- text.junit-test-report
|
- text.junit-test-report
|
||||||
https://github.com/textmate/javadoc.tmbundle:
|
vendor/grammars/javadoc.tmbundle:
|
||||||
- text.html.javadoc
|
- text.html.javadoc
|
||||||
https://github.com/textmate/javascript-objective-j.tmbundle:
|
vendor/grammars/javascript-objective-j.tmbundle:
|
||||||
- source.js.objj
|
- source.js.objj
|
||||||
https://github.com/textmate/json.tmbundle:
|
vendor/grammars/jquery-tmbundle:
|
||||||
|
- source.js.jquery
|
||||||
|
vendor/grammars/json.tmbundle:
|
||||||
- source.json
|
- source.json
|
||||||
https://github.com/textmate/latex.tmbundle:
|
vendor/grammars/kotlin-sublime-package:
|
||||||
|
- source.Kotlin
|
||||||
|
vendor/grammars/language-clojure:
|
||||||
|
- source.clojure
|
||||||
|
vendor/grammars/language-coffee-script:
|
||||||
|
- source.coffee
|
||||||
|
- source.litcoffee
|
||||||
|
vendor/grammars/language-csharp:
|
||||||
|
- source.cs
|
||||||
|
- source.csx
|
||||||
|
- source.nant-build
|
||||||
|
vendor/grammars/language-gfm:
|
||||||
|
- source.gfm
|
||||||
|
vendor/grammars/language-javascript:
|
||||||
|
- source.js
|
||||||
|
- source.js.regexp
|
||||||
|
vendor/grammars/language-python:
|
||||||
|
- source.python
|
||||||
|
- source.regexp.python
|
||||||
|
- text.python.traceback
|
||||||
|
vendor/grammars/language-sass:
|
||||||
|
- source.css.scss
|
||||||
|
- source.sass
|
||||||
|
vendor/grammars/language-shellscript:
|
||||||
|
- source.shell
|
||||||
|
- text.shell-session
|
||||||
|
vendor/grammars/language-yaml:
|
||||||
|
- source.yaml
|
||||||
|
vendor/grammars/latex.tmbundle:
|
||||||
- text.bibtex
|
- text.bibtex
|
||||||
- text.log.latex
|
- text.log.latex
|
||||||
- text.tex
|
- text.tex
|
||||||
- text.tex.latex
|
- text.tex.latex
|
||||||
- text.tex.latex.beamer
|
- text.tex.latex.beamer
|
||||||
- text.tex.latex.memoir
|
- text.tex.latex.memoir
|
||||||
https://github.com/textmate/less.tmbundle:
|
vendor/grammars/less.tmbundle:
|
||||||
- source.css.less
|
- source.css.less
|
||||||
https://github.com/textmate/lilypond.tmbundle:
|
vendor/grammars/lilypond.tmbundle:
|
||||||
- source.lilypond
|
- source.lilypond
|
||||||
https://github.com/textmate/lisp.tmbundle:
|
vendor/grammars/lisp.tmbundle:
|
||||||
- source.lisp
|
- source.lisp
|
||||||
https://github.com/textmate/logtalk.tmbundle:
|
vendor/grammars/llvm.tmbundle:
|
||||||
|
- source.llvm
|
||||||
|
vendor/grammars/logtalk.tmbundle:
|
||||||
- source.logtalk
|
- source.logtalk
|
||||||
https://github.com/textmate/lua.tmbundle:
|
vendor/grammars/lua.tmbundle:
|
||||||
- source.lua
|
- source.lua
|
||||||
https://github.com/textmate/make.tmbundle:
|
vendor/grammars/make.tmbundle:
|
||||||
- source.makefile
|
- source.makefile
|
||||||
https://github.com/textmate/matlab.tmbundle:
|
vendor/grammars/mako-tmbundle:
|
||||||
|
- text.html.mako
|
||||||
|
vendor/grammars/mathematica-tmbundle:
|
||||||
|
- source.mathematica
|
||||||
|
vendor/grammars/matlab.tmbundle:
|
||||||
- source.matlab
|
- source.matlab
|
||||||
- source.octave
|
- source.octave
|
||||||
https://github.com/textmate/maven.tmbundle:
|
vendor/grammars/maven.tmbundle:
|
||||||
- text.xml.pom
|
- text.xml.pom
|
||||||
https://github.com/textmate/nemerle.tmbundle:
|
vendor/grammars/mercury-tmlanguage:
|
||||||
|
- source.mercury
|
||||||
|
vendor/grammars/monkey.tmbundle:
|
||||||
|
- source.monkey
|
||||||
|
vendor/grammars/moonscript-tmbundle:
|
||||||
|
- source.moonscript
|
||||||
|
vendor/grammars/nemerle.tmbundle:
|
||||||
- source.nemerle
|
- source.nemerle
|
||||||
https://github.com/textmate/ninja.tmbundle:
|
vendor/grammars/nesC.tmbundle:
|
||||||
|
- source.nesc
|
||||||
|
vendor/grammars/ninja.tmbundle:
|
||||||
- source.ninja
|
- source.ninja
|
||||||
https://github.com/textmate/objective-c.tmbundle:
|
vendor/grammars/objective-c.tmbundle:
|
||||||
- source.objc
|
- source.objc
|
||||||
- source.objc++
|
- source.objc++
|
||||||
- source.objc.platform
|
- source.objc.platform
|
||||||
- source.strings
|
- source.strings
|
||||||
https://github.com/textmate/ocaml.tmbundle:
|
vendor/grammars/ocaml.tmbundle:
|
||||||
- source.camlp4.ocaml
|
- source.camlp4.ocaml
|
||||||
- source.ocaml
|
- source.ocaml
|
||||||
- source.ocamllex
|
- source.ocamllex
|
||||||
- source.ocamlyacc
|
- source.ocamlyacc
|
||||||
https://github.com/textmate/pascal.tmbundle:
|
vendor/grammars/ooc.tmbundle:
|
||||||
|
- source.ooc
|
||||||
|
vendor/grammars/opa.tmbundle:
|
||||||
|
- source.opa
|
||||||
|
vendor/grammars/oz-tmbundle/Syntaxes/Oz.tmLanguage:
|
||||||
|
- source.oz
|
||||||
|
vendor/grammars/pascal.tmbundle:
|
||||||
- source.pascal
|
- source.pascal
|
||||||
https://github.com/textmate/perl.tmbundle:
|
vendor/grammars/perl.tmbundle:
|
||||||
- source.perl
|
- source.perl
|
||||||
https://github.com/textmate/php-smarty.tmbundle:
|
vendor/grammars/php-smarty.tmbundle:
|
||||||
- source.smarty
|
- source.smarty
|
||||||
https://github.com/textmate/php.tmbundle:
|
vendor/grammars/php.tmbundle:
|
||||||
- text.html.php
|
- text.html.php
|
||||||
https://github.com/textmate/postscript.tmbundle:
|
vendor/grammars/pike-textmate:
|
||||||
|
- source.pike
|
||||||
|
vendor/grammars/postscript.tmbundle:
|
||||||
- source.postscript
|
- source.postscript
|
||||||
https://github.com/textmate/processing.tmbundle:
|
vendor/grammars/powershell.tmbundle:
|
||||||
|
- source.powershell
|
||||||
|
vendor/grammars/processing.tmbundle:
|
||||||
- source.processing
|
- source.processing
|
||||||
https://github.com/textmate/prolog.tmbundle:
|
vendor/grammars/prolog.tmbundle:
|
||||||
- source.prolog
|
- source.prolog
|
||||||
https://github.com/textmate/python-django.tmbundle:
|
vendor/grammars/protobuf-tmbundle:
|
||||||
|
- source.protobuf
|
||||||
|
vendor/grammars/puppet-textmate-bundle:
|
||||||
|
- source.puppet
|
||||||
|
vendor/grammars/python-django.tmbundle:
|
||||||
- source.python.django
|
- source.python.django
|
||||||
- text.html.django
|
- text.html.django
|
||||||
https://github.com/textmate/r.tmbundle:
|
vendor/grammars/r.tmbundle:
|
||||||
- source.r
|
- source.r
|
||||||
- text.tex.latex.rd
|
- text.tex.latex.rd
|
||||||
https://github.com/textmate/restructuredtext.tmbundle:
|
vendor/grammars/racket-tmbundle:
|
||||||
|
- source.racket
|
||||||
|
vendor/grammars/restructuredtext.tmbundle:
|
||||||
- text.restructuredtext
|
- text.restructuredtext
|
||||||
https://github.com/textmate/ruby-haml.tmbundle:
|
vendor/grammars/ruby-haml.tmbundle:
|
||||||
- text.haml
|
- text.haml
|
||||||
https://github.com/textmate/ruby-on-rails-tmbundle:
|
vendor/grammars/ruby-on-rails-tmbundle:
|
||||||
- source.js.erb.rails
|
- source.js.erb.rails
|
||||||
- source.ruby.rails
|
- source.ruby.rails
|
||||||
- source.ruby.rails.rjs
|
- source.ruby.rails.rjs
|
||||||
- source.sql.ruby
|
- source.sql.ruby
|
||||||
- text.html.erb.rails
|
- text.html.erb.rails
|
||||||
https://github.com/textmate/scheme.tmbundle:
|
vendor/grammars/ruby-slim.tmbundle:
|
||||||
|
- text.slim
|
||||||
|
vendor/grammars/ruby.tmbundle:
|
||||||
|
- source.ruby
|
||||||
|
- text.html.erb
|
||||||
|
vendor/grammars/sas.tmbundle:
|
||||||
|
- source.SASLog
|
||||||
|
- source.sas
|
||||||
|
vendor/grammars/scala.tmbundle:
|
||||||
|
- source.sbt
|
||||||
|
- source.scala
|
||||||
|
vendor/grammars/scheme.tmbundle:
|
||||||
- source.scheme
|
- source.scheme
|
||||||
https://github.com/textmate/scilab.tmbundle:
|
vendor/grammars/scilab.tmbundle:
|
||||||
- source.scilab
|
- source.scilab
|
||||||
https://github.com/textmate/sql.tmbundle:
|
vendor/grammars/smalltalk-tmbundle:
|
||||||
|
- source.smalltalk
|
||||||
|
vendor/grammars/sql.tmbundle:
|
||||||
- source.sql
|
- source.sql
|
||||||
https://github.com/textmate/standard-ml.tmbundle:
|
vendor/grammars/standard-ml.tmbundle:
|
||||||
- source.cm
|
- source.cm
|
||||||
- source.ml
|
- source.ml
|
||||||
https://github.com/textmate/swift.tmbundle:
|
vendor/grammars/sublime-MuPAD:
|
||||||
|
- source.mupad
|
||||||
|
vendor/grammars/sublime-befunge:
|
||||||
|
- source.befunge
|
||||||
|
vendor/grammars/sublime-better-typescript:
|
||||||
|
- source.ts
|
||||||
|
vendor/grammars/sublime-bsv:
|
||||||
|
- source.bsv
|
||||||
|
vendor/grammars/sublime-cirru:
|
||||||
|
- source.cirru
|
||||||
|
vendor/grammars/sublime-glsl:
|
||||||
|
- source.essl
|
||||||
|
- source.glsl
|
||||||
|
vendor/grammars/sublime-idris:
|
||||||
|
- source.idris
|
||||||
|
vendor/grammars/sublime-mask:
|
||||||
|
- source.mask
|
||||||
|
vendor/grammars/sublime-nginx:
|
||||||
|
- source.nginx
|
||||||
|
vendor/grammars/sublime-nix:
|
||||||
|
- source.nix
|
||||||
|
vendor/grammars/sublime-robot-plugin:
|
||||||
|
- text.robot
|
||||||
|
vendor/grammars/sublime-rust:
|
||||||
|
- source.rust
|
||||||
|
vendor/grammars/sublime-sourcepawn:
|
||||||
|
- source.sp
|
||||||
|
vendor/grammars/sublime-tea:
|
||||||
|
- source.tea
|
||||||
|
vendor/grammars/sublime_cobol:
|
||||||
|
- source.acucobol
|
||||||
|
- source.cobol
|
||||||
|
- source.opencobol
|
||||||
|
vendor/grammars/sublime_man_page_support:
|
||||||
|
- source.man
|
||||||
|
- text.groff
|
||||||
|
vendor/grammars/sublimetext-cuda-cpp:
|
||||||
|
- source.cuda-c++
|
||||||
|
vendor/grammars/swift.tmbundle:
|
||||||
- source.swift
|
- source.swift
|
||||||
https://github.com/textmate/tcl.tmbundle:
|
vendor/grammars/tcl.tmbundle:
|
||||||
- source.tcl
|
- source.tcl
|
||||||
- text.html.tcl
|
- text.html.tcl
|
||||||
https://github.com/textmate/text.tmbundle:
|
vendor/grammars/text.tmbundle:
|
||||||
- text.plain
|
- text.plain
|
||||||
https://github.com/textmate/textile.tmbundle:
|
vendor/grammars/textile.tmbundle:
|
||||||
- text.html.textile
|
- text.html.textile
|
||||||
https://github.com/textmate/textmate.tmbundle:
|
vendor/grammars/textmate.tmbundle:
|
||||||
- source.regexp.oniguruma
|
- source.regexp.oniguruma
|
||||||
- source.tm-properties
|
- source.tm-properties
|
||||||
https://github.com/textmate/thrift.tmbundle:
|
vendor/grammars/thrift.tmbundle:
|
||||||
- source.thrift
|
- source.thrift
|
||||||
https://github.com/textmate/toml.tmbundle:
|
vendor/grammars/toml.tmbundle:
|
||||||
- source.toml
|
- source.toml
|
||||||
https://github.com/textmate/verilog.tmbundle:
|
vendor/grammars/verilog.tmbundle:
|
||||||
- source.verilog
|
- source.verilog
|
||||||
https://github.com/textmate/xml.tmbundle:
|
vendor/grammars/x86-assembly-textmate-bundle:
|
||||||
|
- source.asm.x86
|
||||||
|
vendor/grammars/xml.tmbundle:
|
||||||
- text.xml
|
- text.xml
|
||||||
- text.xml.xsl
|
- text.xml.xsl
|
||||||
https://github.com/textmate/yaml.tmbundle:
|
vendor/grammars/zephir-sublime:
|
||||||
- source.yaml
|
|
||||||
https://github.com/tomas-stefano/smalltalk-tmbundle:
|
|
||||||
- source.smalltalk
|
|
||||||
https://github.com/vic/ioke-outdated/raw/master/share/TextMate/Ioke.tmbundle/Syntaxes/Ioke.tmLanguage:
|
|
||||||
- source.ioke
|
|
||||||
https://github.com/vkostyukov/kotlin-sublime-package:
|
|
||||||
- source.Kotlin
|
|
||||||
https://github.com/vmg/zephir-sublime:
|
|
||||||
- source.php.zephir
|
- source.php.zephir
|
||||||
https://github.com/whitequark/llvm.tmbundle:
|
|
||||||
- source.llvm
|
|
||||||
https://github.com/wmertens/sublime-nix:
|
|
||||||
- source.nix
|
|
||||||
https://raw.githubusercontent.com/eregon/oz-tmbundle/master/Syntaxes/Oz.tmLanguage:
|
|
||||||
- source.oz
|
|
||||||
https://raw.githubusercontent.com/tenbits/sublime-mask/release/Syntaxes/mask.tmLanguage:
|
|
||||||
- source.mask
|
|
||||||
https://raw.githubusercontent.com/andik/IDL-Syntax/master/IDL.tmLanguage:
|
|
||||||
- source.webidl
|
|
||||||
|
|||||||
@@ -51,20 +51,20 @@ module Linguist
|
|||||||
#
|
#
|
||||||
# Return true or false
|
# Return true or false
|
||||||
def generated?
|
def generated?
|
||||||
minified_files? ||
|
|
||||||
compiled_coffeescript? ||
|
|
||||||
xcode_file? ||
|
xcode_file? ||
|
||||||
generated_parser? ||
|
|
||||||
generated_net_docfile? ||
|
|
||||||
generated_net_designer_file? ||
|
generated_net_designer_file? ||
|
||||||
generated_postscript? ||
|
|
||||||
generated_protocol_buffer? ||
|
|
||||||
generated_jni_header? ||
|
|
||||||
composer_lock? ||
|
composer_lock? ||
|
||||||
node_modules? ||
|
node_modules? ||
|
||||||
godeps? ||
|
godeps? ||
|
||||||
vcr_cassette? ||
|
generated_by_zephir? ||
|
||||||
generated_by_zephir?
|
minified_files? ||
|
||||||
|
compiled_coffeescript? ||
|
||||||
|
generated_parser? ||
|
||||||
|
generated_net_docfile? ||
|
||||||
|
generated_postscript? ||
|
||||||
|
generated_protocol_buffer? ||
|
||||||
|
generated_jni_header? ||
|
||||||
|
vcr_cassette?
|
||||||
end
|
end
|
||||||
|
|
||||||
# Internal: Is the blob an Xcode file?
|
# Internal: Is the blob an Xcode file?
|
||||||
|
|||||||
@@ -548,7 +548,7 @@ module Linguist
|
|||||||
|
|
||||||
if extnames = extensions[name]
|
if extnames = extensions[name]
|
||||||
extnames.each do |extname|
|
extnames.each do |extname|
|
||||||
if !options['extensions'].include?(extname)
|
if !options['extensions'].index { |x| x.end_with? extname }
|
||||||
warn "#{name} has a sample with extension (#{extname}) that isn't explicitly defined in languages.yml" unless extname == '.script!'
|
warn "#{name} has a sample with extension (#{extname}) that isn't explicitly defined in languages.yml" unless extname == '.script!'
|
||||||
options['extensions'] << extname
|
options['extensions'] << extname
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ Bluespec:
|
|||||||
type: programming
|
type: programming
|
||||||
extensions:
|
extensions:
|
||||||
- .bsv
|
- .bsv
|
||||||
tm_scope: source.verilog
|
tm_scope: source.bsv
|
||||||
ace_mode: verilog
|
ace_mode: verilog
|
||||||
|
|
||||||
Boo:
|
Boo:
|
||||||
@@ -449,6 +449,14 @@ Cap'n Proto:
|
|||||||
- .capnp
|
- .capnp
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
|
CartoCSS:
|
||||||
|
aliases:
|
||||||
|
- Carto
|
||||||
|
extensions:
|
||||||
|
- .mss
|
||||||
|
ace_mode: text
|
||||||
|
tm_scope: none
|
||||||
|
|
||||||
Ceylon:
|
Ceylon:
|
||||||
type: programming
|
type: programming
|
||||||
extensions:
|
extensions:
|
||||||
@@ -787,9 +795,10 @@ Elixir:
|
|||||||
|
|
||||||
Elm:
|
Elm:
|
||||||
type: programming
|
type: programming
|
||||||
|
color: "#60B5CC"
|
||||||
extensions:
|
extensions:
|
||||||
- .elm
|
- .elm
|
||||||
tm_scope: source.haskell
|
tm_scope: source.elm
|
||||||
ace_mode: elm
|
ace_mode: elm
|
||||||
|
|
||||||
Emacs Lisp:
|
Emacs Lisp:
|
||||||
@@ -990,8 +999,8 @@ Game Maker Language:
|
|||||||
color: "#8ad353"
|
color: "#8ad353"
|
||||||
extensions:
|
extensions:
|
||||||
- .gml
|
- .gml
|
||||||
tm_scope: source.js
|
tm_scope: source.c++
|
||||||
ace_mode: javascript
|
ace_mode: c_cpp
|
||||||
|
|
||||||
Genshi:
|
Genshi:
|
||||||
extensions:
|
extensions:
|
||||||
@@ -1211,7 +1220,7 @@ Hack:
|
|||||||
extensions:
|
extensions:
|
||||||
- .hh
|
- .hh
|
||||||
- .php
|
- .php
|
||||||
tm_scope: none
|
tm_scope: text.html.php
|
||||||
|
|
||||||
Haml:
|
Haml:
|
||||||
group: HTML
|
group: HTML
|
||||||
@@ -1413,6 +1422,13 @@ Jade:
|
|||||||
tm_scope: source.jade
|
tm_scope: source.jade
|
||||||
ace_mode: jade
|
ace_mode: jade
|
||||||
|
|
||||||
|
Jasmin:
|
||||||
|
type: programming
|
||||||
|
ace_mode: java
|
||||||
|
extensions:
|
||||||
|
- .j
|
||||||
|
tm_scope: source.jasmin
|
||||||
|
|
||||||
Java:
|
Java:
|
||||||
type: programming
|
type: programming
|
||||||
ace_mode: java
|
ace_mode: java
|
||||||
@@ -1718,7 +1734,7 @@ Markdown:
|
|||||||
- .mkdn
|
- .mkdn
|
||||||
- .mkdown
|
- .mkdown
|
||||||
- .ron
|
- .ron
|
||||||
tm_scope: text.html.markdown
|
tm_scope: source.gfm
|
||||||
|
|
||||||
Mask:
|
Mask:
|
||||||
type: markup
|
type: markup
|
||||||
@@ -1789,7 +1805,7 @@ Mercury:
|
|||||||
extensions:
|
extensions:
|
||||||
- .m
|
- .m
|
||||||
- .moo
|
- .moo
|
||||||
tm_scope: source.prolog
|
tm_scope: source.mercury
|
||||||
ace_mode: prolog
|
ace_mode: prolog
|
||||||
|
|
||||||
MiniD: # Legacy
|
MiniD: # Legacy
|
||||||
@@ -2306,6 +2322,15 @@ Pure Data:
|
|||||||
tm_scope: none
|
tm_scope: none
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
|
PureBasic:
|
||||||
|
type: programming
|
||||||
|
color: "#5a6986"
|
||||||
|
extensions:
|
||||||
|
- .pb
|
||||||
|
- .pbi
|
||||||
|
tm_scope: none
|
||||||
|
ace_mode: text
|
||||||
|
|
||||||
PureScript:
|
PureScript:
|
||||||
type: programming
|
type: programming
|
||||||
color: "#bcdc53"
|
color: "#bcdc53"
|
||||||
@@ -2569,7 +2594,7 @@ SAS:
|
|||||||
color: "#1E90FF"
|
color: "#1E90FF"
|
||||||
extensions:
|
extensions:
|
||||||
- .sas
|
- .sas
|
||||||
tm_scope: none
|
tm_scope: source.sas
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
SCSS:
|
SCSS:
|
||||||
@@ -2616,6 +2641,17 @@ Sage:
|
|||||||
tm_scope: source.python
|
tm_scope: source.python
|
||||||
ace_mode: python
|
ace_mode: python
|
||||||
|
|
||||||
|
SaltStack:
|
||||||
|
type: data
|
||||||
|
group: YAML
|
||||||
|
aliases:
|
||||||
|
- saltstate
|
||||||
|
- salt
|
||||||
|
extensions:
|
||||||
|
- .sls
|
||||||
|
tm_scope: source.yaml.salt
|
||||||
|
ace_mode: yaml
|
||||||
|
|
||||||
Sass:
|
Sass:
|
||||||
type: markup
|
type: markup
|
||||||
tm_scope: source.sass
|
tm_scope: source.sass
|
||||||
@@ -2695,6 +2731,7 @@ Shell:
|
|||||||
- .zsh
|
- .zsh
|
||||||
interpreters:
|
interpreters:
|
||||||
- bash
|
- bash
|
||||||
|
- rc
|
||||||
- sh
|
- sh
|
||||||
- zsh
|
- zsh
|
||||||
ace_mode: sh
|
ace_mode: sh
|
||||||
@@ -2738,6 +2775,7 @@ Smalltalk:
|
|||||||
color: "#596706"
|
color: "#596706"
|
||||||
extensions:
|
extensions:
|
||||||
- .st
|
- .st
|
||||||
|
- .cs
|
||||||
aliases:
|
aliases:
|
||||||
- squeak
|
- squeak
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
@@ -3068,6 +3106,7 @@ XML:
|
|||||||
- .dita
|
- .dita
|
||||||
- .ditamap
|
- .ditamap
|
||||||
- .ditaval
|
- .ditaval
|
||||||
|
- .dll.config
|
||||||
- .filters
|
- .filters
|
||||||
- .fsproj
|
- .fsproj
|
||||||
- .glade
|
- .glade
|
||||||
@@ -3115,18 +3154,18 @@ XML:
|
|||||||
- .xlf
|
- .xlf
|
||||||
- .xliff
|
- .xliff
|
||||||
- .xmi
|
- .xmi
|
||||||
|
- .xml.dist
|
||||||
- .xsd
|
- .xsd
|
||||||
- .xul
|
- .xul
|
||||||
- .zcml
|
- .zcml
|
||||||
filenames:
|
filenames:
|
||||||
- .classpath
|
- .classpath
|
||||||
- .project
|
- .project
|
||||||
|
- Settings.StyleCop
|
||||||
- Web.Debug.config
|
- Web.Debug.config
|
||||||
- Web.Release.config
|
- Web.Release.config
|
||||||
- Web.config
|
- Web.config
|
||||||
- build.xml.dist
|
|
||||||
- packages.config
|
- packages.config
|
||||||
- phpunit.xml.dist
|
|
||||||
|
|
||||||
XProc:
|
XProc:
|
||||||
type: programming
|
type: programming
|
||||||
@@ -3232,7 +3271,7 @@ fish:
|
|||||||
group: Shell
|
group: Shell
|
||||||
extensions:
|
extensions:
|
||||||
- .fish
|
- .fish
|
||||||
tm_scope: none
|
tm_scope: source.fish
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
mupad:
|
mupad:
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
module Linguist
|
module Linguist
|
||||||
VERSION = "4.2.3"
|
VERSION = "4.2.5"
|
||||||
end
|
end
|
||||||
|
|||||||
26
samples/C#/AssemblyInfo.cs
Normal file
26
samples/C#/AssemblyInfo.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
// Information about this assembly is defined by the following attributes.
|
||||||
|
// Change them to the values specific to your project.
|
||||||
|
|
||||||
|
[assembly: AssemblyTitle("Simple")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("")]
|
||||||
|
[assembly: AssemblyCopyright("")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
|
||||||
|
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
|
||||||
|
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
|
||||||
|
|
||||||
|
[assembly: AssemblyVersion("1.0.*")]
|
||||||
|
|
||||||
|
// The following attributes are used to specify the signing key for the assembly,
|
||||||
|
// if desired. See the Mono documentation for more information about signing.
|
||||||
|
|
||||||
|
//[assembly: AssemblyDelaySign(false)]
|
||||||
|
//[assembly: AssemblyKeyFile("")]
|
||||||
20
samples/C#/BsonPropertyValue.cs
Normal file
20
samples/C#/BsonPropertyValue.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MongoDB.Serialization.Descriptors
|
||||||
|
{
|
||||||
|
internal class BsonPropertyValue
|
||||||
|
{
|
||||||
|
public bool IsDictionary { get; private set; }
|
||||||
|
|
||||||
|
public Type Type { get; private set; }
|
||||||
|
|
||||||
|
public object Value { get; private set; }
|
||||||
|
|
||||||
|
public BsonPropertyValue(Type type, object value, bool isDictionary)
|
||||||
|
{
|
||||||
|
Type = type;
|
||||||
|
Value = value;
|
||||||
|
IsDictionary = isDictionary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
153
samples/C#/MongoExpressionVisitor.cs
Normal file
153
samples/C#/MongoExpressionVisitor.cs
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
|
||||||
|
namespace MongoDB.Linq.Expressions
|
||||||
|
{
|
||||||
|
internal class MongoExpressionVisitor : ExpressionVisitor
|
||||||
|
{
|
||||||
|
protected override Expression Visit(Expression exp)
|
||||||
|
{
|
||||||
|
if (exp == null)
|
||||||
|
return null;
|
||||||
|
switch ((MongoExpressionType)exp.NodeType)
|
||||||
|
{
|
||||||
|
case MongoExpressionType.Collection:
|
||||||
|
return VisitCollection((CollectionExpression)exp);
|
||||||
|
case MongoExpressionType.Field:
|
||||||
|
return VisitField((FieldExpression)exp);
|
||||||
|
case MongoExpressionType.Projection:
|
||||||
|
return VisitProjection((ProjectionExpression)exp);
|
||||||
|
case MongoExpressionType.Select:
|
||||||
|
return VisitSelect((SelectExpression)exp);
|
||||||
|
case MongoExpressionType.Aggregate:
|
||||||
|
return VisitAggregate((AggregateExpression)exp);
|
||||||
|
case MongoExpressionType.AggregateSubquery:
|
||||||
|
return VisitAggregateSubquery((AggregateSubqueryExpression)exp);
|
||||||
|
case MongoExpressionType.Scalar:
|
||||||
|
return VisitScalar((ScalarExpression)exp);
|
||||||
|
default:
|
||||||
|
return base.Visit(exp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitAggregate(AggregateExpression aggregate)
|
||||||
|
{
|
||||||
|
var exp = Visit(aggregate.Argument);
|
||||||
|
if (exp != aggregate.Argument)
|
||||||
|
return new AggregateExpression(aggregate.Type, aggregate.AggregateType, exp, aggregate.Distinct);
|
||||||
|
|
||||||
|
return aggregate;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitAggregateSubquery(AggregateSubqueryExpression aggregateSubquery)
|
||||||
|
{
|
||||||
|
Expression e = Visit(aggregateSubquery.AggregateAsSubquery);
|
||||||
|
ScalarExpression subquery = (ScalarExpression)e;
|
||||||
|
if (subquery != aggregateSubquery.AggregateAsSubquery)
|
||||||
|
return new AggregateSubqueryExpression(aggregateSubquery.GroupByAlias, aggregateSubquery.AggregateInGroupSelect, subquery);
|
||||||
|
return aggregateSubquery;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitCollection(CollectionExpression collection)
|
||||||
|
{
|
||||||
|
return collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitField(FieldExpression field)
|
||||||
|
{
|
||||||
|
var e = Visit(field.Expression);
|
||||||
|
if (field.Expression != e)
|
||||||
|
field = new FieldExpression(e, field.Alias, field.Name);
|
||||||
|
|
||||||
|
return field;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitProjection(ProjectionExpression projection)
|
||||||
|
{
|
||||||
|
var source = (SelectExpression)Visit(projection.Source);
|
||||||
|
var projector = Visit(projection.Projector);
|
||||||
|
if (source != projection.Source || projector != projection.Projector)
|
||||||
|
return new ProjectionExpression(source, projector, projection.Aggregator);
|
||||||
|
return projection;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ReadOnlyCollection<OrderExpression> VisitOrderBy(ReadOnlyCollection<OrderExpression> orderBys)
|
||||||
|
{
|
||||||
|
if (orderBys != null)
|
||||||
|
{
|
||||||
|
List<OrderExpression> alternate = null;
|
||||||
|
for (int i = 0, n = orderBys.Count; i < n; i++)
|
||||||
|
{
|
||||||
|
OrderExpression expr = orderBys[i];
|
||||||
|
Expression e = this.Visit(expr.Expression);
|
||||||
|
if (alternate == null && e != expr.Expression)
|
||||||
|
alternate = orderBys.Take(i).ToList();
|
||||||
|
if (alternate != null)
|
||||||
|
alternate.Add(new OrderExpression(expr.OrderType, e));
|
||||||
|
}
|
||||||
|
if (alternate != null)
|
||||||
|
return alternate.AsReadOnly();
|
||||||
|
}
|
||||||
|
return orderBys;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitScalar(ScalarExpression scalar)
|
||||||
|
{
|
||||||
|
SelectExpression select = (SelectExpression)Visit(scalar.Select);
|
||||||
|
if (select != scalar.Select)
|
||||||
|
return new ScalarExpression(scalar.Type, select);
|
||||||
|
return scalar;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitSelect(SelectExpression select)
|
||||||
|
{
|
||||||
|
var from = VisitSource(select.From);
|
||||||
|
var where = Visit(select.Where);
|
||||||
|
var groupBy = Visit(select.GroupBy);
|
||||||
|
var orderBy = VisitOrderBy(select.OrderBy);
|
||||||
|
var skip = Visit(select.Skip);
|
||||||
|
var take = Visit(select.Take);
|
||||||
|
var fields = VisitFieldDeclarationList(select.Fields);
|
||||||
|
if (from != select.From || where != select.Where || orderBy != select.OrderBy || groupBy != select.GroupBy || skip != select.Skip || take != select.Take || fields != select.Fields)
|
||||||
|
return new SelectExpression(select.Alias, fields, from, where, orderBy, groupBy, select.IsDistinct, skip, take);
|
||||||
|
return select;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitSource(Expression source)
|
||||||
|
{
|
||||||
|
return Visit(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual Expression VisitSubquery(SubqueryExpression subquery)
|
||||||
|
{
|
||||||
|
switch ((MongoExpressionType)subquery.NodeType)
|
||||||
|
{
|
||||||
|
case MongoExpressionType.Scalar:
|
||||||
|
return VisitScalar((ScalarExpression)subquery);
|
||||||
|
}
|
||||||
|
return subquery;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual ReadOnlyCollection<FieldDeclaration> VisitFieldDeclarationList(ReadOnlyCollection<FieldDeclaration> fields)
|
||||||
|
{
|
||||||
|
if (fields == null)
|
||||||
|
return fields;
|
||||||
|
|
||||||
|
List<FieldDeclaration> alternate = null;
|
||||||
|
for (int i = 0, n = fields.Count; i < n; i++)
|
||||||
|
{
|
||||||
|
var f = fields[i];
|
||||||
|
var e = Visit(f.Expression);
|
||||||
|
if (f.Expression != e && alternate == null)
|
||||||
|
alternate = fields.Take(i).ToList();
|
||||||
|
if (alternate != null)
|
||||||
|
alternate.Add(new FieldDeclaration(f.Name, e));
|
||||||
|
}
|
||||||
|
if (alternate != null)
|
||||||
|
return alternate.AsReadOnly();
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1879
samples/CartoCSS/amenity-points.mss
Normal file
1879
samples/CartoCSS/amenity-points.mss
Normal file
File diff suppressed because it is too large
Load Diff
56
samples/Jasmin/if1.j
Normal file
56
samples/Jasmin/if1.j
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
.class public if1
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If556261059
|
||||||
|
goto IfElse556261059
|
||||||
|
If556261059:
|
||||||
|
.line 3
|
||||||
|
.line 3
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone556261059
|
||||||
|
IfElse556261059:
|
||||||
|
.line 5
|
||||||
|
.line 5
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x2
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfDone556261059:
|
||||||
|
|
||||||
|
.line 6
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x3
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
|
||||||
|
.line 7
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpne IfNot-920218690
|
||||||
|
.line 8
|
||||||
|
.line 8
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x4
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfNot-920218690:
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
167
samples/Jasmin/if2.j
Normal file
167
samples/Jasmin/if2.j
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
.class public if2
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq Cmp1893841232
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone1893841232
|
||||||
|
Cmp1893841232:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone1893841232:
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If-1736765035
|
||||||
|
goto IfElse-1736765035
|
||||||
|
If-1736765035:
|
||||||
|
.line 2
|
||||||
|
.line 3
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone-1736765035
|
||||||
|
IfElse-1736765035:
|
||||||
|
.line 4
|
||||||
|
.line 4
|
||||||
|
ldc 0x2
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq Cmp-1460884369
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-1460884369
|
||||||
|
Cmp-1460884369:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-1460884369:
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If-247349760
|
||||||
|
goto IfElse-247349760
|
||||||
|
If-247349760:
|
||||||
|
.line 4
|
||||||
|
.line 5
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x2
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone-247349760
|
||||||
|
IfElse-247349760:
|
||||||
|
.line 6
|
||||||
|
.line 7
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x3
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfDone-247349760:
|
||||||
|
IfDone-1736765035:
|
||||||
|
|
||||||
|
.line 10
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x2
|
||||||
|
if_icmpeq Cmp933554851
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone933554851
|
||||||
|
Cmp933554851:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone933554851:
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If1623625546
|
||||||
|
goto IfElse1623625546
|
||||||
|
If1623625546:
|
||||||
|
.line 10
|
||||||
|
.line 11
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone1623625546
|
||||||
|
IfElse1623625546:
|
||||||
|
.line 12
|
||||||
|
.line 12
|
||||||
|
ldc 0x2
|
||||||
|
ldc 0x2
|
||||||
|
if_icmpeq Cmp1572138409
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone1572138409
|
||||||
|
Cmp1572138409:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone1572138409:
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If126354425
|
||||||
|
goto IfElse126354425
|
||||||
|
If126354425:
|
||||||
|
.line 12
|
||||||
|
.line 13
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x2
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone126354425
|
||||||
|
IfElse126354425:
|
||||||
|
.line 14
|
||||||
|
.line 15
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x3
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfDone126354425:
|
||||||
|
IfDone1623625546:
|
||||||
|
|
||||||
|
.line 18
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x2
|
||||||
|
if_icmpeq Cmp126493150
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone126493150
|
||||||
|
Cmp126493150:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone126493150:
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If1522284422
|
||||||
|
goto IfElse1522284422
|
||||||
|
If1522284422:
|
||||||
|
.line 18
|
||||||
|
.line 19
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone1522284422
|
||||||
|
IfElse1522284422:
|
||||||
|
.line 20
|
||||||
|
.line 20
|
||||||
|
ldc 0x2
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq Cmp-906666545
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-906666545
|
||||||
|
Cmp-906666545:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-906666545:
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If1083939031
|
||||||
|
goto IfElse1083939031
|
||||||
|
If1083939031:
|
||||||
|
.line 20
|
||||||
|
.line 21
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x2
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone1083939031
|
||||||
|
IfElse1083939031:
|
||||||
|
.line 22
|
||||||
|
.line 23
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x3
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfDone1083939031:
|
||||||
|
IfDone1522284422:
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
55
samples/Jasmin/if3.j
Normal file
55
samples/Jasmin/if3.j
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
.class public if3
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If-811796083
|
||||||
|
goto IfElse-811796083
|
||||||
|
If-811796083:
|
||||||
|
.line 3
|
||||||
|
.line 3
|
||||||
|
ldc 0x0
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq If-1001319390
|
||||||
|
goto IfElse-1001319390
|
||||||
|
If-1001319390:
|
||||||
|
.line 4
|
||||||
|
.line 4
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
goto IfDone-1001319390
|
||||||
|
IfElse-1001319390:
|
||||||
|
.line 6
|
||||||
|
.line 6
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x2
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfDone-1001319390:
|
||||||
|
goto IfDone-811796083
|
||||||
|
IfElse-811796083:
|
||||||
|
.line 8
|
||||||
|
.line 8
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x3
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfDone-811796083:
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
37
samples/Jasmin/if4.j
Normal file
37
samples/Jasmin/if4.j
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
.class public if4
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpne IfNot1919266740
|
||||||
|
.line 2
|
||||||
|
.line 2
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpne IfNot613368541
|
||||||
|
.line 2
|
||||||
|
.line 2
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
invokevirtual java/io/PrintStream/print(I)V
|
||||||
|
IfNot613368541:
|
||||||
|
IfNot1919266740:
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
54
samples/Jasmin/op1.j
Normal file
54
samples/Jasmin/op1.j
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
.class public op1
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
iadd
|
||||||
|
invokevirtual java/io/PrintStream/println(I)V
|
||||||
|
|
||||||
|
.line 3
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0xa
|
||||||
|
ldc 0x5
|
||||||
|
isub
|
||||||
|
invokevirtual java/io/PrintStream/println(I)V
|
||||||
|
|
||||||
|
.line 4
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x15
|
||||||
|
ldc 0x3
|
||||||
|
idiv
|
||||||
|
invokevirtual java/io/PrintStream/println(I)V
|
||||||
|
|
||||||
|
.line 5
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x159
|
||||||
|
ldc 0x38
|
||||||
|
imul
|
||||||
|
invokevirtual java/io/PrintStream/println(I)V
|
||||||
|
|
||||||
|
.line 6
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x52
|
||||||
|
ldc 0x9
|
||||||
|
irem
|
||||||
|
invokevirtual java/io/PrintStream/println(I)V
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
34
samples/Jasmin/op2.j
Normal file
34
samples/Jasmin/op2.j
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
.class public op2
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x0
|
||||||
|
iand
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
.line 3
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x0
|
||||||
|
ior
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
68
samples/Jasmin/op3.j
Normal file
68
samples/Jasmin/op3.j
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
.class public op3
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x0
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq Cmp-1307183590
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-1307183590
|
||||||
|
Cmp-1307183590:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-1307183590:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
.line 3
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x0
|
||||||
|
ldc 0x0
|
||||||
|
if_icmpeq Cmp-1443270821
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-1443270821
|
||||||
|
Cmp-1443270821:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-1443270821:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
.line 4
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpeq Cmp1759327329
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone1759327329
|
||||||
|
Cmp1759327329:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone1759327329:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
.line 5
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x0
|
||||||
|
if_icmpeq Cmp-678570146
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-678570146
|
||||||
|
Cmp-678570146:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-678570146:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
68
samples/Jasmin/op4.j
Normal file
68
samples/Jasmin/op4.j
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
.class public op4
|
||||||
|
.super java/lang/Object
|
||||||
|
;
|
||||||
|
; standard initializer (calls java.lang.Object's initializer)
|
||||||
|
;
|
||||||
|
.method public <init>()V
|
||||||
|
aload_0
|
||||||
|
invokenonvirtual java/lang/Object/<init>()V
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
|
||||||
|
.limit locals 1
|
||||||
|
.limit stack 5
|
||||||
|
BeginGlobal:
|
||||||
|
.line 2
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x0
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpne Cmp-191731100
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-191731100
|
||||||
|
Cmp-191731100:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-191731100:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
.line 3
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x0
|
||||||
|
ldc 0x0
|
||||||
|
if_icmpne Cmp-901585603
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-901585603
|
||||||
|
Cmp-901585603:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-901585603:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
.line 4
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x1
|
||||||
|
if_icmpne Cmp1522577937
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone1522577937
|
||||||
|
Cmp1522577937:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone1522577937:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
.line 5
|
||||||
|
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||||
|
ldc 0x1
|
||||||
|
ldc 0x0
|
||||||
|
if_icmpne Cmp-1653028684
|
||||||
|
ldc 0x0
|
||||||
|
goto CmpDone-1653028684
|
||||||
|
Cmp-1653028684:
|
||||||
|
ldc 0x1
|
||||||
|
CmpDone-1653028684:
|
||||||
|
invokevirtual java/io/PrintStream/println(Z)V
|
||||||
|
|
||||||
|
EndGlobal:
|
||||||
|
return
|
||||||
|
.end method
|
||||||
|
|
||||||
434
samples/Objective-J/AppController.j
Normal file
434
samples/Objective-J/AppController.j
Normal file
@@ -0,0 +1,434 @@
|
|||||||
|
//
|
||||||
|
// AppController.j
|
||||||
|
// FlickrPhoto
|
||||||
|
//
|
||||||
|
// Created by Ross Boucher.
|
||||||
|
// Copyright 2008 - 2010, 280 North, Inc. All rights reserved.
|
||||||
|
|
||||||
|
@import <Foundation/Foundation.j>
|
||||||
|
@import <AppKit/AppKit.j>
|
||||||
|
|
||||||
|
var SliderToolbarItemIdentifier = "SliderToolbarItemIdentifier",
|
||||||
|
AddToolbarItemIdentifier = "AddToolbarItemIdentifier",
|
||||||
|
RemoveToolbarItemIdentifier = "RemoveToolbarItemIdentifier";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Important note about CPJSONPConnection: CPJSONPConnection is ONLY for JSONP APIs.
|
||||||
|
If aren't sure you NEED JSONP (see http://ajaxian.com/archives/jsonp-json-with-padding ),
|
||||||
|
you most likely don't want to use CPJSONPConnection, but rather the more standard
|
||||||
|
CPURLConnection. CPJSONPConnection is designed for cross-domain
|
||||||
|
connections, and if you are making requests to the same domain (as most web
|
||||||
|
applications do), you do not need it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@implementation AppController : CPObject
|
||||||
|
{
|
||||||
|
CPString lastIdentifier;
|
||||||
|
CPDictionary photosets;
|
||||||
|
|
||||||
|
CPCollectionView listCollectionView;
|
||||||
|
CPCollectionView photosCollectionView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||||
|
{
|
||||||
|
//the first thing we need to do is create a window to take up the full screen
|
||||||
|
//we'll also create a toolbar to go with it, and grab its size for future reference
|
||||||
|
|
||||||
|
var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
|
||||||
|
contentView = [theWindow contentView],
|
||||||
|
toolbar = [[CPToolbar alloc] initWithIdentifier:"Photos"],
|
||||||
|
bounds = [contentView bounds];
|
||||||
|
|
||||||
|
//we tell the toolbar that we want to be its delegate and attach it to theWindow
|
||||||
|
[toolbar setDelegate:self];
|
||||||
|
[toolbar setVisible:true];
|
||||||
|
[theWindow setToolbar:toolbar];
|
||||||
|
|
||||||
|
photosets = [CPDictionary dictionary]; //storage for our sets of photos return from Flickr
|
||||||
|
|
||||||
|
//now we create a scroll view to contain the list of collections of photos (photosets)
|
||||||
|
//inside the scroll view, we'll place our collection view, which manages a collection of "cells"
|
||||||
|
//each cell will represent one photo collection, and choosing cells will select that collection
|
||||||
|
|
||||||
|
var listScrollView = [[CPScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, CGRectGetHeight(bounds) - 58)];
|
||||||
|
[listScrollView setAutohidesScrollers:YES];
|
||||||
|
[listScrollView setAutoresizingMask:CPViewHeightSizable];
|
||||||
|
[[listScrollView contentView] setBackgroundColor:[CPColor colorWithRed:213.0 / 255.0 green:221.0 / 255.0 blue:230.0 / 255.0 alpha:1.0]];
|
||||||
|
|
||||||
|
//we create the collection view cells by creating a single prototype (CPCollectionViewItem) and setting its view.
|
||||||
|
//the CPCollectionView class will then duplicate this item as many times as it needs
|
||||||
|
|
||||||
|
var photosListItem = [[CPCollectionViewItem alloc] init];
|
||||||
|
[photosListItem setView:[[PhotosListCell alloc] initWithFrame:CGRectMakeZero()]];
|
||||||
|
|
||||||
|
listCollectionView = [[CPCollectionView alloc] initWithFrame:CGRectMake(0, 0, 200, 0)];
|
||||||
|
|
||||||
|
[listCollectionView setDelegate:self]; //we want delegate methods
|
||||||
|
[listCollectionView setItemPrototype:photosListItem]; //set the item prototype
|
||||||
|
|
||||||
|
[listCollectionView setMinItemSize:CGSizeMake(20.0, 45.0)];
|
||||||
|
[listCollectionView setMaxItemSize:CGSizeMake(1000.0, 45.0)];
|
||||||
|
[listCollectionView setMaxNumberOfColumns:1]; //setting a single column will make this appear as a vertical list
|
||||||
|
|
||||||
|
[listCollectionView setVerticalMargin:0.0];
|
||||||
|
[listCollectionView setAutoresizingMask:CPViewWidthSizable];
|
||||||
|
|
||||||
|
//finally, we put our collection view inside the scroll view as it's document view, so it can be scrolled
|
||||||
|
[listScrollView setDocumentView:listCollectionView];
|
||||||
|
|
||||||
|
//and we add it to the window's content view, so it will show up on the screen
|
||||||
|
[contentView addSubview:listScrollView];
|
||||||
|
|
||||||
|
//repeat the process with another collection view for the actual photos
|
||||||
|
//this time we'll use a different view for the prototype (PhotoCell)
|
||||||
|
|
||||||
|
var photoItem = [[CPCollectionViewItem alloc] init];
|
||||||
|
[photoItem setView:[[PhotoCell alloc] initWithFrame:CGRectMake(0, 0, 150, 150)]];
|
||||||
|
|
||||||
|
var scrollView = [[CPScrollView alloc] initWithFrame:CGRectMake(200, 0, CGRectGetWidth(bounds) - 200, CGRectGetHeight(bounds) - 58)];
|
||||||
|
|
||||||
|
photosCollectionView = [[CPCollectionView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(bounds) - 200, 0)];
|
||||||
|
|
||||||
|
[photosCollectionView setDelegate:self];
|
||||||
|
[photosCollectionView setItemPrototype:photoItem];
|
||||||
|
|
||||||
|
[photosCollectionView setMinItemSize:CGSizeMake(150, 150)];
|
||||||
|
[photosCollectionView setMaxItemSize:CGSizeMake(150, 150)];
|
||||||
|
[photosCollectionView setAutoresizingMask:CPViewWidthSizable];
|
||||||
|
|
||||||
|
[scrollView setAutoresizingMask:CPViewHeightSizable | CPViewWidthSizable];
|
||||||
|
[scrollView setDocumentView:photosCollectionView];
|
||||||
|
[scrollView setAutohidesScrollers:YES];
|
||||||
|
|
||||||
|
[[scrollView contentView] setBackgroundColor:[CPColor colorWithCalibratedWhite:0.25 alpha:1.0]];
|
||||||
|
|
||||||
|
[contentView addSubview:scrollView];
|
||||||
|
|
||||||
|
//bring forward the window to display it
|
||||||
|
[theWindow orderFront:self];
|
||||||
|
|
||||||
|
//get the most interesting photos on flickr
|
||||||
|
var request = [CPURLRequest requestWithURL:"http://www.flickr.com/services/rest/?method=flickr.interestingness.getList&per_page=20&format=json&api_key=ca4dd89d3dfaeaf075144c3fdec76756"];
|
||||||
|
|
||||||
|
// see important note about CPJSONPConnection above
|
||||||
|
var connection = [CPJSONPConnection sendRequest:request callback:"jsoncallback" delegate:self];
|
||||||
|
|
||||||
|
lastIdentifier = "Interesting Photos";
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)add:(id)sender
|
||||||
|
{
|
||||||
|
var string = prompt("Enter a tag to search Flickr for photos.");
|
||||||
|
|
||||||
|
if (string)
|
||||||
|
{
|
||||||
|
//create a new request for the photos with the tag returned from the javascript prompt
|
||||||
|
var request = [CPURLRequest requestWithURL:"http://www.flickr.com/services/rest/?"+
|
||||||
|
"method=flickr.photos.search&tags="+encodeURIComponent(string)+
|
||||||
|
"&media=photos&machine_tag_mode=any&per_page=20&format=json&api_key=ca4dd89d3dfaeaf075144c3fdec76756"];
|
||||||
|
|
||||||
|
// see important note about CPJSONPConnection above
|
||||||
|
[CPJSONPConnection sendRequest:request callback:"jsoncallback" delegate:self];
|
||||||
|
|
||||||
|
lastIdentifier = string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)remove:(id)sender
|
||||||
|
{
|
||||||
|
//remove this photo
|
||||||
|
[self removeImageListWithIdentifier:[[photosets allKeys] objectAtIndex:[[listCollectionView selectionIndexes] firstIndex]]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)addImageList:(CPArray)images withIdentifier:(CPString)aString
|
||||||
|
{
|
||||||
|
[photosets setObject:images forKey:aString];
|
||||||
|
|
||||||
|
[listCollectionView setContent:[[photosets allKeys] copy]];
|
||||||
|
[listCollectionView setSelectionIndexes:[CPIndexSet indexSetWithIndex:[[photosets allKeys] indexOfObject:aString]]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)removeImageListWithIdentifier:(CPString)aString
|
||||||
|
{
|
||||||
|
var nextIndex = MAX([[listCollectionView content] indexOfObject:aString] - 1, 0);
|
||||||
|
|
||||||
|
[photosets removeObjectForKey:aString];
|
||||||
|
|
||||||
|
[listCollectionView setContent:[[photosets allKeys] copy]];
|
||||||
|
[listCollectionView setSelectionIndexes:[CPIndexSet indexSetWithIndex:nextIndex]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)adjustImageSize:(id)sender
|
||||||
|
{
|
||||||
|
var newSize = [sender value];
|
||||||
|
|
||||||
|
[photosCollectionView setMinItemSize:CGSizeMake(newSize, newSize)];
|
||||||
|
[photosCollectionView setMaxItemSize:CGSizeMake(newSize, newSize)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)collectionViewDidChangeSelection:(CPCollectionView)aCollectionView
|
||||||
|
{
|
||||||
|
if (aCollectionView == listCollectionView)
|
||||||
|
{
|
||||||
|
var listIndex = [[listCollectionView selectionIndexes] firstIndex];
|
||||||
|
|
||||||
|
if (listIndex === CPNotFound)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var key = [listCollectionView content][listIndex];
|
||||||
|
|
||||||
|
[photosCollectionView setContent:[photosets objectForKey:key]];
|
||||||
|
[photosCollectionView setSelectionIndexes:[CPIndexSet indexSet]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)connection:(CPJSONPConnection)aConnection didReceiveData:(CPString)data
|
||||||
|
{
|
||||||
|
//this method is called when the network request returns. the data is the returned
|
||||||
|
//information from flickr. we set the array of photo urls as the data to our collection view
|
||||||
|
|
||||||
|
[self addImageList:data.photos.photo withIdentifier:lastIdentifier];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)connection:(CPJSONPConnection)aConnection didFailWithError:(CPString)error
|
||||||
|
{
|
||||||
|
alert(error); //a network error occurred
|
||||||
|
}
|
||||||
|
|
||||||
|
//these two methods are the toolbar delegate methods, and tell the toolbar what it should display to the user
|
||||||
|
|
||||||
|
- (CPArray)toolbarAllowedItemIdentifiers:(CPToolbar)aToolbar
|
||||||
|
{
|
||||||
|
return [self toolbarDefaultItemIdentifiers:aToolbar];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPArray)toolbarDefaultItemIdentifiers:(CPToolbar)aToolbar
|
||||||
|
{
|
||||||
|
return [AddToolbarItemIdentifier, RemoveToolbarItemIdentifier, CPToolbarFlexibleSpaceItemIdentifier, SliderToolbarItemIdentifier];
|
||||||
|
}
|
||||||
|
|
||||||
|
//this delegate method returns the actual toolbar item for the given identifier
|
||||||
|
|
||||||
|
- (CPToolbarItem)toolbar:(CPToolbar)aToolbar itemForItemIdentifier:(CPString)anItemIdentifier willBeInsertedIntoToolbar:(BOOL)aFlag
|
||||||
|
{
|
||||||
|
var toolbarItem = [[CPToolbarItem alloc] initWithItemIdentifier:anItemIdentifier];
|
||||||
|
|
||||||
|
if (anItemIdentifier == SliderToolbarItemIdentifier)
|
||||||
|
{
|
||||||
|
[toolbarItem setView:[[PhotoResizeView alloc] initWithFrame:CGRectMake(0, 0, 180, 32)]];
|
||||||
|
[toolbarItem setMinSize:CGSizeMake(180, 32)];
|
||||||
|
[toolbarItem setMaxSize:CGSizeMake(180, 32)];
|
||||||
|
[toolbarItem setLabel:"Scale"];
|
||||||
|
}
|
||||||
|
else if (anItemIdentifier == AddToolbarItemIdentifier)
|
||||||
|
{
|
||||||
|
var image = [[CPImage alloc] initWithContentsOfFile:[[CPBundle mainBundle] pathForResource:"add.png"] size:CPSizeMake(30, 25)],
|
||||||
|
highlighted = [[CPImage alloc] initWithContentsOfFile:[[CPBundle mainBundle] pathForResource:"addHighlighted.png"] size:CPSizeMake(30, 25)];
|
||||||
|
|
||||||
|
[toolbarItem setImage:image];
|
||||||
|
[toolbarItem setAlternateImage:highlighted];
|
||||||
|
|
||||||
|
[toolbarItem setTarget:self];
|
||||||
|
[toolbarItem setAction:@selector(add:)];
|
||||||
|
[toolbarItem setLabel:"Add Photo List"];
|
||||||
|
|
||||||
|
[toolbarItem setMinSize:CGSizeMake(32, 32)];
|
||||||
|
[toolbarItem setMaxSize:CGSizeMake(32, 32)];
|
||||||
|
}
|
||||||
|
else if (anItemIdentifier == RemoveToolbarItemIdentifier)
|
||||||
|
{
|
||||||
|
var image = [[CPImage alloc] initWithContentsOfFile:[[CPBundle mainBundle] pathForResource:"remove.png"] size:CPSizeMake(30, 25)],
|
||||||
|
highlighted = [[CPImage alloc] initWithContentsOfFile:[[CPBundle mainBundle] pathForResource:"removeHighlighted.png"] size:CPSizeMake(30, 25)];
|
||||||
|
|
||||||
|
[toolbarItem setImage:image];
|
||||||
|
[toolbarItem setAlternateImage:highlighted];
|
||||||
|
|
||||||
|
[toolbarItem setTarget:self];
|
||||||
|
[toolbarItem setAction:@selector(remove:)];
|
||||||
|
[toolbarItem setLabel:"Remove Photo List"];
|
||||||
|
|
||||||
|
[toolbarItem setMinSize:CGSizeMake(32, 32)];
|
||||||
|
[toolbarItem setMaxSize:CGSizeMake(32, 32)];
|
||||||
|
}
|
||||||
|
|
||||||
|
return toolbarItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
/*
|
||||||
|
This code demonstrates how to add a category to an existing class.
|
||||||
|
In this case, we are adding the class method +flickr_labelWithText: to
|
||||||
|
the CPTextField class. Later on, we can call [CPTextField flickr_labelWithText:"foo"]
|
||||||
|
to return a new text field with the string foo.
|
||||||
|
Best practices suggest prefixing category methods with your unique prefix, to prevent collisions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@implementation CPTextField (CreateLabel)
|
||||||
|
|
||||||
|
+ (CPTextField)flickr_labelWithText:(CPString)aString
|
||||||
|
{
|
||||||
|
var label = [[CPTextField alloc] initWithFrame:CGRectMakeZero()];
|
||||||
|
|
||||||
|
[label setStringValue:aString];
|
||||||
|
[label sizeToFit];
|
||||||
|
[label setTextShadowColor:[CPColor whiteColor]];
|
||||||
|
[label setTextShadowOffset:CGSizeMake(0, 1)];
|
||||||
|
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
// This class wraps our slider + labels combo
|
||||||
|
|
||||||
|
@implementation PhotoResizeView : CPView
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id)initWithFrame:(CGRect)aFrame
|
||||||
|
{
|
||||||
|
self = [super initWithFrame:aFrame];
|
||||||
|
|
||||||
|
var slider = [[CPSlider alloc] initWithFrame:CGRectMake(30, CGRectGetHeight(aFrame) / 2.0 - 8, CGRectGetWidth(aFrame) - 65, 24)];
|
||||||
|
|
||||||
|
[slider setMinValue:50.0];
|
||||||
|
[slider setMaxValue:250.0];
|
||||||
|
[slider setIntValue:150.0];
|
||||||
|
[slider setAction:@selector(adjustImageSize:)];
|
||||||
|
|
||||||
|
[self addSubview:slider];
|
||||||
|
|
||||||
|
var label = [CPTextField flickr_labelWithText:"50"];
|
||||||
|
[label setFrameOrigin:CGPointMake(0, CGRectGetHeight(aFrame) / 2.0 - 4.0)];
|
||||||
|
[self addSubview:label];
|
||||||
|
|
||||||
|
label = [CPTextField flickr_labelWithText:"250"];
|
||||||
|
[label setFrameOrigin:CGPointMake(CGRectGetWidth(aFrame) - CGRectGetWidth([label frame]), CGRectGetHeight(aFrame) / 2.0 - 4.0)];
|
||||||
|
[self addSubview:label];
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
// This class displays a single photo collection inside our list of photo collecitions
|
||||||
|
|
||||||
|
@implementation PhotosListCell : CPView
|
||||||
|
{
|
||||||
|
CPTextField label;
|
||||||
|
CPView highlightView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setRepresentedObject:(JSObject)anObject
|
||||||
|
{
|
||||||
|
if (!label)
|
||||||
|
{
|
||||||
|
label = [[CPTextField alloc] initWithFrame:CGRectInset([self bounds], 4, 4)];
|
||||||
|
|
||||||
|
[label setFont:[CPFont systemFontOfSize:16.0]];
|
||||||
|
[label setTextShadowColor:[CPColor whiteColor]];
|
||||||
|
[label setTextShadowOffset:CGSizeMake(0, 1)];
|
||||||
|
|
||||||
|
[self addSubview:label];
|
||||||
|
}
|
||||||
|
|
||||||
|
[label setStringValue:anObject];
|
||||||
|
[label sizeToFit];
|
||||||
|
|
||||||
|
[label setFrameOrigin:CGPointMake(10,CGRectGetHeight([label bounds]) / 2.0)];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setSelected:(BOOL)flag
|
||||||
|
{
|
||||||
|
if (!highlightView)
|
||||||
|
{
|
||||||
|
highlightView = [[CPView alloc] initWithFrame:CGRectCreateCopy([self bounds])];
|
||||||
|
[highlightView setBackgroundColor:[CPColor blueColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag)
|
||||||
|
{
|
||||||
|
[self addSubview:highlightView positioned:CPWindowBelow relativeTo:label];
|
||||||
|
[label setTextColor:[CPColor whiteColor]];
|
||||||
|
[label setTextShadowColor:[CPColor blackColor]];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[highlightView removeFromSuperview];
|
||||||
|
[label setTextColor:[CPColor blackColor]];
|
||||||
|
[label setTextShadowColor:[CPColor whiteColor]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
// This class displays a single photo from our collection
|
||||||
|
|
||||||
|
@implementation PhotoCell : CPView
|
||||||
|
{
|
||||||
|
CPImage image;
|
||||||
|
CPImageView imageView;
|
||||||
|
CPView highlightView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setRepresentedObject:(JSObject)anObject
|
||||||
|
{
|
||||||
|
if (!imageView)
|
||||||
|
{
|
||||||
|
imageView = [[CPImageView alloc] initWithFrame:CGRectMakeCopy([self bounds])];
|
||||||
|
[imageView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
|
||||||
|
[imageView setImageScaling:CPScaleProportionally];
|
||||||
|
[imageView setHasShadow:YES];
|
||||||
|
[self addSubview:imageView];
|
||||||
|
}
|
||||||
|
|
||||||
|
[image setDelegate:nil];
|
||||||
|
|
||||||
|
image = [[CPImage alloc] initWithContentsOfFile:thumbForFlickrPhoto(anObject)];
|
||||||
|
|
||||||
|
[image setDelegate:self];
|
||||||
|
|
||||||
|
if ([image loadStatus] == CPImageLoadStatusCompleted)
|
||||||
|
[imageView setImage:image];
|
||||||
|
else
|
||||||
|
[imageView setImage:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)imageDidLoad:(CPImage)anImage
|
||||||
|
{
|
||||||
|
[imageView setImage:anImage];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setSelected:(BOOL)flag
|
||||||
|
{
|
||||||
|
if (!highlightView)
|
||||||
|
{
|
||||||
|
highlightView = [[CPView alloc] initWithFrame:[self bounds]];
|
||||||
|
[highlightView setBackgroundColor:[CPColor colorWithCalibratedWhite:0.8 alpha:0.6]];
|
||||||
|
[highlightView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag)
|
||||||
|
{
|
||||||
|
[highlightView setFrame:[self bounds]];
|
||||||
|
[self addSubview:highlightView positioned:CPWindowBelow relativeTo:imageView];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
[highlightView removeFromSuperview];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
// helper javascript functions for turning a Flickr photo object into a URL for getting the image
|
||||||
|
|
||||||
|
function urlForFlickrPhoto(photo)
|
||||||
|
{
|
||||||
|
return "http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id+"_" + photo.secret + ".jpg";
|
||||||
|
}
|
||||||
|
|
||||||
|
function thumbForFlickrPhoto(photo)
|
||||||
|
{
|
||||||
|
return "http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_m.jpg";
|
||||||
|
}
|
||||||
88
samples/Objective-J/LightsOff.j
Normal file
88
samples/Objective-J/LightsOff.j
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
@import <Foundation/CPObject.j>
|
||||||
|
@import <AppKit/CPView.j>
|
||||||
|
@import <AppKit/CPButton.j>
|
||||||
|
@import <AppKit/CPWebView.j>
|
||||||
|
@import "LOBoard.j"
|
||||||
|
|
||||||
|
@implementation LOInfoView : CPView
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)drawRect:(CGRect)r
|
||||||
|
{
|
||||||
|
[[CPColor whiteColor] setFill]
|
||||||
|
var path = [CPBezierPath bezierPath];
|
||||||
|
[path appendBezierPathWithRoundedRect:CGRectMake(5, 0, CGRectGetWidth([self bounds]) - 10.0, CGRectGetHeight([self bounds])) xRadius:10 yRadius:10];
|
||||||
|
[path fill];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation AppController : CPObject
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPPanel)initInfoWindow
|
||||||
|
{
|
||||||
|
var infoWindow = [[CPPanel alloc] initWithContentRect:CGRectMake(400, 50, 320, 480) styleMask:CPHUDBackgroundWindowMask | CPResizableWindowMask];
|
||||||
|
[infoWindow setFloatingPanel:YES];
|
||||||
|
|
||||||
|
var _infoContent = [infoWindow contentView],
|
||||||
|
_iconImage = [[CPImage alloc] initWithContentsOfFile:"Resources/icon.png" size:CPSizeMake(59, 60)],
|
||||||
|
_iconView = [[CPImageView alloc] initWithFrame:CGRectMake(125, 0, 59, 60)];
|
||||||
|
|
||||||
|
[_iconView setImage:_iconImage];
|
||||||
|
[_infoContent addSubview:_iconView];
|
||||||
|
|
||||||
|
var _infoView = [[LOInfoView alloc] initWithFrame:CGRectMake(0, 65, 320, 395)],
|
||||||
|
_webView = [[CPWebView alloc] initWithFrame:CGRectMake(20, 0, 270, 370)];
|
||||||
|
|
||||||
|
[_webView loadHTMLString:@"<center><h3>Lights Off</h3></center> <p>Lights Off is a fantastic game exclusively for iPhone and iPod touch and inspired by Tiger Electronic's 'Lights Out'.</p> <p>The goal of the game is simply to switch all of the lights off, but it's harder than it looks! Give the first few levels a try in the playable demo to the left.</p><center><img src='Resources/avail_on_app_store.png'></center>"];
|
||||||
|
|
||||||
|
[_infoView addSubview:_webView];
|
||||||
|
|
||||||
|
[_infoContent addSubview:_infoView];
|
||||||
|
|
||||||
|
return infoWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||||
|
{
|
||||||
|
/* Enable Logging (DEBUG) */
|
||||||
|
// CPLogRegister(CPLogPopup);
|
||||||
|
|
||||||
|
var rootWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask];
|
||||||
|
[rootWindow setBackgroundColor:[CPColor grayColor]];
|
||||||
|
[rootWindow orderFront:self];
|
||||||
|
|
||||||
|
var infoWindow = [self initInfoWindow],
|
||||||
|
gameWindow = [[CPPanel alloc] initWithContentRect:CGRectMake(50, 50, 324, 482) styleMask:CPHUDBackgroundWindowMask];
|
||||||
|
[gameWindow setFloatingPanel:YES];
|
||||||
|
[gameWindow setTitle:@"Lights Off"];
|
||||||
|
|
||||||
|
contentView = [gameWindow contentView];
|
||||||
|
|
||||||
|
var _board = [[LOBoard alloc] initWithFrame:CGRectMake(2, 0, 320, 480)],
|
||||||
|
_bgImage = [[CPImage alloc] initWithContentsOfFile:"Resources/lo-background.png" size:CPSizeMake(320, 480)];
|
||||||
|
[_board setImage:_bgImage];
|
||||||
|
[_board resetBoard];
|
||||||
|
|
||||||
|
var _buttonImage = [[CPImage alloc] initWithContentsOfFile:"Resources/button-reset.png" size:CPSizeMake(90, 28)],
|
||||||
|
_buttonPressImage = [[CPImage alloc] initWithContentsOfFile:"Resources/button-reset-press.png" size:CPSizeMake(90, 28)],
|
||||||
|
_resetButton = [[CPButton alloc] initWithFrame:CGRectMake(195, 422, 90, 28)];
|
||||||
|
|
||||||
|
[_resetButton setImage:_buttonImage];
|
||||||
|
[_resetButton setAlternateImage:_buttonPressImage];
|
||||||
|
[_resetButton setBordered:NO];
|
||||||
|
|
||||||
|
[contentView addSubview:_board];
|
||||||
|
[contentView addSubview:_resetButton];
|
||||||
|
|
||||||
|
[_resetButton setTarget:_board];
|
||||||
|
[_resetButton setAction:@selector(resetBoard)];
|
||||||
|
|
||||||
|
[gameWindow orderFront:self];
|
||||||
|
[infoWindow orderFront:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
47
samples/Objective-J/iTunesLayout.j
Normal file
47
samples/Objective-J/iTunesLayout.j
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
@import <Foundation/CPObject.j>
|
||||||
|
|
||||||
|
|
||||||
|
@implementation AppController : CPObject
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||||
|
{
|
||||||
|
// The end result of this layout will be the kind of master/detail/auxilliary view
|
||||||
|
// found in iTunes, Mail, and many other apps.
|
||||||
|
|
||||||
|
var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
|
||||||
|
contentView = [theWindow contentView];
|
||||||
|
|
||||||
|
var navigationArea = [[CPView alloc] initWithFrame:CGRectMake(0.0, 0.0, 150.0, CGRectGetHeight([contentView bounds]) - 150.0)];
|
||||||
|
|
||||||
|
[navigationArea setBackgroundColor:[CPColor redColor]];
|
||||||
|
|
||||||
|
// This view will grow in height, but stay fixed width attached to the left side of the screen.
|
||||||
|
[navigationArea setAutoresizingMask:CPViewHeightSizable | CPViewMaxXMargin];
|
||||||
|
|
||||||
|
[contentView addSubview:navigationArea];
|
||||||
|
|
||||||
|
var metaDataArea = [[CPView alloc] initWithFrame:CGRectMake(0.0, CGRectGetMaxY([navigationArea frame]), 150.0, 150.0)];
|
||||||
|
|
||||||
|
[metaDataArea setBackgroundColor:[CPColor greenColor]];
|
||||||
|
|
||||||
|
// This view will stay the same size in both directions, and fixed to the lower left corner.
|
||||||
|
[metaDataArea setAutoresizingMask:CPViewMinYMargin | CPViewMaxXMargin];
|
||||||
|
|
||||||
|
[contentView addSubview:metaDataArea];
|
||||||
|
|
||||||
|
var contentArea = [[CPView alloc] initWithFrame:CGRectMake(150.0, 0.0, CGRectGetWidth([contentView bounds]) - 150.0, CGRectGetHeight([contentView bounds]))];
|
||||||
|
|
||||||
|
[contentArea setBackgroundColor:[CPColor blueColor]];
|
||||||
|
|
||||||
|
// This view will grow in both height an width.
|
||||||
|
[contentArea setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
|
||||||
|
|
||||||
|
[contentView addSubview:contentArea];
|
||||||
|
|
||||||
|
[theWindow orderFront:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
137
samples/PureBasic/Example_Sine.pb
Normal file
137
samples/PureBasic/Example_Sine.pb
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
EnableExplicit
|
||||||
|
|
||||||
|
; ##################################################### Includes ####################################################
|
||||||
|
|
||||||
|
XIncludeFile "Includes/AudioOut.pbi"
|
||||||
|
|
||||||
|
; ##################################################### Prototypes ##################################################
|
||||||
|
|
||||||
|
; ##################################################### Structures ##################################################
|
||||||
|
|
||||||
|
; ##################################################### Constants ###################################################
|
||||||
|
|
||||||
|
#Samplerate = 44100
|
||||||
|
|
||||||
|
; ##################################################### Structures ##################################################
|
||||||
|
|
||||||
|
Structure Main
|
||||||
|
*AudioOut
|
||||||
|
|
||||||
|
Quit.i
|
||||||
|
EndStructure
|
||||||
|
Global Main.Main
|
||||||
|
|
||||||
|
Structure Main_Window
|
||||||
|
ID.i
|
||||||
|
|
||||||
|
TrackBar.i [10]
|
||||||
|
EndStructure
|
||||||
|
Global Main_Window.Main_Window
|
||||||
|
|
||||||
|
; ##################################################### Variables ###################################################
|
||||||
|
|
||||||
|
Global Frequency.d = 1000
|
||||||
|
Global Amplitude.d = 0.25
|
||||||
|
|
||||||
|
; ##################################################### Procedures ##################################################
|
||||||
|
|
||||||
|
Procedure Main_Window_Open()
|
||||||
|
Main_Window\ID = OpenWindow(#PB_Any, 0, 0, 800, 100, "AudioOut Example", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
|
||||||
|
|
||||||
|
If Main_Window\ID
|
||||||
|
|
||||||
|
Main_Window\TrackBar[0] = TrackBarGadget(#PB_Any, 10, 10, 780, 30, 0, 20000)
|
||||||
|
SetGadgetState(Main_Window\TrackBar[0], Frequency)
|
||||||
|
|
||||||
|
Main_Window\TrackBar[1] = TrackBarGadget(#PB_Any, 10, 40, 780, 30, 0, 1000)
|
||||||
|
SetGadgetState(Main_Window\TrackBar[1], Amplitude*1000)
|
||||||
|
|
||||||
|
EndIf
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure Notifier_CallBack(*AudioOut)
|
||||||
|
Protected *Temp, Temp_Size.i
|
||||||
|
Static Rotation.d
|
||||||
|
|
||||||
|
While AudioOut::GetQueuedBlocks(*AudioOut) <= 3
|
||||||
|
|
||||||
|
Temp_Size = AudioOut::GetBufferBlocksize(*AudioOut)
|
||||||
|
If Temp_Size > 0
|
||||||
|
*Temp = AllocateMemory(Temp_Size)
|
||||||
|
|
||||||
|
Define Left.d, Right.d, i
|
||||||
|
For i = 0 To Temp_Size / 4 - 1
|
||||||
|
Left = Sin(Rotation) * Amplitude
|
||||||
|
Right = Sin(Rotation) * Amplitude
|
||||||
|
|
||||||
|
PokeW(*Temp + i*4 , Left*32767)
|
||||||
|
PokeW(*Temp + i*4 + 2, Right*32767)
|
||||||
|
|
||||||
|
Rotation + 2.0*#PI / #Samplerate * Frequency
|
||||||
|
Next
|
||||||
|
|
||||||
|
AudioOut::Write_Data(Main\AudioOut, *Temp, Temp_Size)
|
||||||
|
|
||||||
|
FreeMemory(*Temp)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Wend
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
; ##################################################### Initialisation ##############################################
|
||||||
|
|
||||||
|
Main_Window_Open()
|
||||||
|
|
||||||
|
AudioOut::GetDevices()
|
||||||
|
|
||||||
|
ForEach AudioOut::Device()
|
||||||
|
Debug PeekS(AudioOut::@Device()\szPname)
|
||||||
|
Next
|
||||||
|
|
||||||
|
Main\AudioOut = AudioOut::Initialize(#WAVE_MAPPER, #Samplerate, 2, 16, @Notifier_CallBack())
|
||||||
|
|
||||||
|
If Not Main\AudioOut
|
||||||
|
Debug AudioOut::GetError()
|
||||||
|
End
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Notifier_CallBack(Main\AudioOut)
|
||||||
|
|
||||||
|
; ##################################################### Main ########################################################
|
||||||
|
|
||||||
|
Repeat
|
||||||
|
|
||||||
|
Repeat
|
||||||
|
Select WaitWindowEvent(100)
|
||||||
|
Case #PB_Event_Gadget
|
||||||
|
Select EventGadget()
|
||||||
|
Case Main_Window\TrackBar[0]
|
||||||
|
Frequency = GetGadgetState(Main_Window\TrackBar[0])
|
||||||
|
Debug Frequency
|
||||||
|
|
||||||
|
Case Main_Window\TrackBar[1]
|
||||||
|
Amplitude = GetGadgetState(Main_Window\TrackBar[1]) / 1000
|
||||||
|
|
||||||
|
EndSelect
|
||||||
|
|
||||||
|
Case #PB_Event_CloseWindow
|
||||||
|
Main\Quit = #True
|
||||||
|
|
||||||
|
Case 0
|
||||||
|
Break
|
||||||
|
EndSelect
|
||||||
|
ForEver
|
||||||
|
|
||||||
|
Until Main\Quit
|
||||||
|
|
||||||
|
; ##################################################### End #########################################################
|
||||||
|
|
||||||
|
AudioOut::Deinitialize(Main\AudioOut)
|
||||||
|
|
||||||
|
; IDE Options = PureBasic 5.30 Beta 2 (Windows - x64)
|
||||||
|
; CursorPosition = 109
|
||||||
|
; FirstLine = 79
|
||||||
|
; Folding = -
|
||||||
|
; EnableUnicode
|
||||||
|
; EnableThread
|
||||||
|
; EnableXP
|
||||||
203
samples/PureBasic/Memory.pbi
Normal file
203
samples/PureBasic/Memory.pbi
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
|
||||||
|
Structure Memory_Operation
|
||||||
|
Src_Offset.q
|
||||||
|
Src_Size.q
|
||||||
|
|
||||||
|
Dst_Offset.q
|
||||||
|
Dst_Size.q
|
||||||
|
|
||||||
|
Copy_Size.q
|
||||||
|
EndStructure
|
||||||
|
|
||||||
|
; #### Cuts the Offset's / Sizes of the memory operation to prevent memory violations
|
||||||
|
Procedure Memory_Operation_Check(*Memory_Operation.Memory_Operation)
|
||||||
|
Protected Temp.q
|
||||||
|
|
||||||
|
If *Memory_Operation\Src_Offset < 0
|
||||||
|
*Memory_Operation\Copy_Size + *Memory_Operation\Src_Offset
|
||||||
|
*Memory_Operation\Dst_Offset - *Memory_Operation\Src_Offset
|
||||||
|
*Memory_Operation\Src_Offset - *Memory_Operation\Src_Offset
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If *Memory_Operation\Dst_Offset < 0
|
||||||
|
*Memory_Operation\Copy_Size + *Memory_Operation\Dst_Offset
|
||||||
|
*Memory_Operation\Src_Offset - *Memory_Operation\Dst_Offset
|
||||||
|
*Memory_Operation\Dst_Offset - *Memory_Operation\Dst_Offset
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Temp = *Memory_Operation\Src_Size - *Memory_Operation\Src_Offset
|
||||||
|
If *Memory_Operation\Copy_Size > Temp
|
||||||
|
*Memory_Operation\Copy_Size = Temp
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Temp = *Memory_Operation\Dst_Size - *Memory_Operation\Dst_Offset
|
||||||
|
If *Memory_Operation\Copy_Size > Temp
|
||||||
|
*Memory_Operation\Copy_Size = Temp
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If *Memory_Operation\Copy_Size < 0
|
||||||
|
*Memory_Operation\Copy_Size = 0
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
ProcedureReturn #True
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
; #### Fills a *Destination with a specified amount of data.
|
||||||
|
; #### It cuts everything, to prevent memory violations
|
||||||
|
Procedure Memory_Range_Fill(Ascii.a, Fill_Size.q, *Dst, Dst_Offset.q, Dst_Size.q=-1)
|
||||||
|
Protected Temp.q
|
||||||
|
|
||||||
|
If Not *Dst
|
||||||
|
ProcedureReturn #False
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Dst_Size = -1
|
||||||
|
Dst_Size.q = MemorySize(*Dst)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Dst_Offset < 0
|
||||||
|
Fill_Size + Dst_Offset
|
||||||
|
Dst_Offset - Dst_Offset
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Temp = Dst_Size - Dst_Offset
|
||||||
|
If Fill_Size > Temp
|
||||||
|
Fill_Size = Temp
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Fill_Size > 0
|
||||||
|
FillMemory(*Dst+Dst_Offset, Fill_Size, Ascii)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
ProcedureReturn #True
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
; #### Copies a specified amount of data (Copy_Size) from the source to the destination.
|
||||||
|
; #### It cuts everything, to prevent memory violations
|
||||||
|
Procedure Memory_Range_Copy(*Src, Src_Offset.q, *Dst, Dst_Offset.q, Copy_Size.q, Src_Size.q=-1, Dst_Size.q=-1)
|
||||||
|
Protected Temp.q
|
||||||
|
If Not *Src
|
||||||
|
ProcedureReturn #False
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Not *Dst
|
||||||
|
ProcedureReturn #False
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Src_Size = -1
|
||||||
|
Src_Size.q = MemorySize(*Src)
|
||||||
|
EndIf
|
||||||
|
If Dst_Size = -1
|
||||||
|
Dst_Size.q = MemorySize(*Dst)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Src_Offset < 0
|
||||||
|
Copy_Size + Src_Offset
|
||||||
|
Dst_Offset - Src_Offset
|
||||||
|
Src_Offset - Src_Offset
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Dst_Offset < 0
|
||||||
|
Copy_Size + Dst_Offset
|
||||||
|
Src_Offset - Dst_Offset
|
||||||
|
Dst_Offset - Dst_Offset
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Temp = Src_Size - Src_Offset
|
||||||
|
If Copy_Size > Temp
|
||||||
|
Copy_Size = Temp
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Temp = Dst_Size - Dst_Offset
|
||||||
|
If Copy_Size > Temp
|
||||||
|
Copy_Size = Temp
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Copy_Size > 0
|
||||||
|
CopyMemory(*Src+Src_Offset, *Dst+Dst_Offset, Copy_Size)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
ProcedureReturn #True
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
; #### Copies (MoveMemory) a specified amount of data (Copy_Size) from the source to the destination.
|
||||||
|
; #### It cuts everything, to prevent memory violations
|
||||||
|
Procedure Memory_Range_Move(*Src, Src_Offset.q, *Dst, Dst_Offset.q, Copy_Size.q, Src_Size.q=-1, Dst_Size.q=-1)
|
||||||
|
Protected Temp.q
|
||||||
|
If Not *Src
|
||||||
|
ProcedureReturn #False
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Not *Dst
|
||||||
|
ProcedureReturn #False
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Src_Size = -1
|
||||||
|
Src_Size.q = MemorySize(*Src)
|
||||||
|
EndIf
|
||||||
|
If Dst_Size = -1
|
||||||
|
Dst_Size.q = MemorySize(*Dst)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Src_Offset < 0
|
||||||
|
Copy_Size + Src_Offset
|
||||||
|
Dst_Offset - Src_Offset
|
||||||
|
Src_Offset - Src_Offset
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Dst_Offset < 0
|
||||||
|
Copy_Size + Dst_Offset
|
||||||
|
Src_Offset - Dst_Offset
|
||||||
|
Dst_Offset - Dst_Offset
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Temp = Src_Size - Src_Offset
|
||||||
|
If Copy_Size > Temp
|
||||||
|
Copy_Size = Temp
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Temp = Dst_Size - Dst_Offset
|
||||||
|
If Copy_Size > Temp
|
||||||
|
Copy_Size = Temp
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Copy_Size > 0
|
||||||
|
MoveMemory(*Src+Src_Offset, *Dst+Dst_Offset, Copy_Size)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
ProcedureReturn #True
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
; #### Mirrors the memory, usable for little/big endian switching
|
||||||
|
Procedure Memory_Mirror(*Memory, Memory_Size)
|
||||||
|
Protected Elements, i
|
||||||
|
Protected Temp.a, *A.Ascii, *B.Ascii
|
||||||
|
|
||||||
|
If Not *Memory
|
||||||
|
ProcedureReturn #False
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If Memory_Size < 1
|
||||||
|
ProcedureReturn #True
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
Elements = Memory_Size/2
|
||||||
|
*A = *Memory
|
||||||
|
*B = *Memory + Memory_Size - 1
|
||||||
|
|
||||||
|
For i = 0 To Elements - 1
|
||||||
|
Temp = *A\a
|
||||||
|
*A\a = *B\a
|
||||||
|
*B\a = Temp
|
||||||
|
*A + 1
|
||||||
|
*B - 1
|
||||||
|
Next
|
||||||
|
|
||||||
|
ProcedureReturn #True
|
||||||
|
EndProcedure
|
||||||
|
; IDE Options = PureBasic 5.31 (Windows - x64)
|
||||||
|
; CursorPosition = 190
|
||||||
|
; FirstLine = 177
|
||||||
|
; Folding = -
|
||||||
|
; EnableXP
|
||||||
|
; DisableDebugger
|
||||||
275
samples/SAS/detect_phi.sas
Normal file
275
samples/SAS/detect_phi.sas
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
%macro check_dataset(dset =, obs_lim = max, eldest_age = 89) ;
|
||||||
|
%local i ;
|
||||||
|
%local inset_name ;
|
||||||
|
%let inset_name = &dset ;
|
||||||
|
|
||||||
|
%if %lowcase(&obs_lim) = max %then %do ;
|
||||||
|
%** Nothing ;
|
||||||
|
%end ;
|
||||||
|
%else %do ;
|
||||||
|
proc surveyselect
|
||||||
|
data = &inset_name
|
||||||
|
out = __sub_dset
|
||||||
|
method = srs
|
||||||
|
sampsize = &obs_lim SELECTALL
|
||||||
|
seed = 1234567
|
||||||
|
noprint
|
||||||
|
;
|
||||||
|
run;
|
||||||
|
%let dset = __sub_dset ;
|
||||||
|
%end ;
|
||||||
|
|
||||||
|
%macro check_varname(regx, msg) ;
|
||||||
|
create table possible_bad_vars as
|
||||||
|
select name, label
|
||||||
|
from these_vars
|
||||||
|
where prxmatch(compress("/(®x)/i"), name)
|
||||||
|
;
|
||||||
|
|
||||||
|
%if &sqlobs > 0 %then %do ;
|
||||||
|
insert into phi_warnings(dset, variable, label, warning)
|
||||||
|
select "&inset_name" as dset, name, label, "&msg"
|
||||||
|
from possible_bad_vars
|
||||||
|
;
|
||||||
|
%end ;
|
||||||
|
|
||||||
|
%mend check_varname ;
|
||||||
|
|
||||||
|
%macro check_vars_for_mrn(length_limit = 6, obs_lim = max) ;
|
||||||
|
%local char ;
|
||||||
|
%let char = 2 ;
|
||||||
|
proc sql noprint ;
|
||||||
|
select name
|
||||||
|
into :mrn_array separated by ' '
|
||||||
|
from these_vars
|
||||||
|
where type = &char and length ge &length_limit
|
||||||
|
;
|
||||||
|
quit ;
|
||||||
|
%if &sqlobs > 0 %then %do ;
|
||||||
|
%put Checking these vars for possible MRN contents: &mrn_array ;
|
||||||
|
data __gnu ;
|
||||||
|
retain
|
||||||
|
mrn_regex_handle
|
||||||
|
badcount
|
||||||
|
;
|
||||||
|
set &inset_name (obs = &obs_lim keep = &mrn_array) ;
|
||||||
|
if _n_ = 1 then do ;
|
||||||
|
mrn_regex_handle = prxparse("/&mrn_regex/") ;
|
||||||
|
badcount = 0 ;
|
||||||
|
end ;
|
||||||
|
array p &mrn_array ;
|
||||||
|
do i = 1 to dim(p) ;
|
||||||
|
if prxmatch(mrn_regex_handle, p{i}) then do ;
|
||||||
|
badvar = vname(p{i}) ;
|
||||||
|
badvalue = p{i} ;
|
||||||
|
badcount = _n_ ;
|
||||||
|
output ;
|
||||||
|
end ;
|
||||||
|
keep badvar badvalue badcount ;
|
||||||
|
end ;
|
||||||
|
run ;
|
||||||
|
proc sql noprint ;
|
||||||
|
select compress(put(max(badcount), best.))
|
||||||
|
into :badcount
|
||||||
|
from __gnu
|
||||||
|
;
|
||||||
|
insert into phi_warnings(dset, variable, warning)
|
||||||
|
select distinct "&inset_name", badvar, "Could this var hold MRN values? Contents of %trim(&badcount) records match the pattern given for MRN values. MRNs should never move across sites."
|
||||||
|
from __gnu ;
|
||||||
|
drop table __gnu ;
|
||||||
|
quit ;
|
||||||
|
%end ;
|
||||||
|
%mend check_vars_for_mrn ;
|
||||||
|
|
||||||
|
%macro check_vars_for_oldsters(eldest_age = 89, obs_lim = max) ;
|
||||||
|
%local dtfmts ;
|
||||||
|
%let dtfmts = 'B8601DA','B8601DN','B8601DT','B8601DZ','B8601LZ','B8601TM','B8601TZ','DATE','DATEAMPM','DATETIME','DAY','DDMMYY',
|
||||||
|
'DDMMYYB','DDMMYYC','DDMMYYD','DDMMYYN','DDMMYYP','DDMMYYS','DOWNAME','DTDATE','DTMONYY','DTWKDATX','DTYEAR',
|
||||||
|
'DTYYQC','E8601DA','E8601DN','E8601DT','E8601DZ','E8601LZ','E8601TM','E8601TZ','HHMM','HOUR','JULDAY','JULIAN',
|
||||||
|
'MMDDYY','MMDDYYB','MMDDYYC','MMDDYYD','MMDDYYN','MMDDYYP','MMDDYYS','MMSS','MMYY','MMYY','MONNAME','MONTH','MONYY',
|
||||||
|
'PDJULG','PDJULI','QTR','QTRR','WEEKDATE','WEEKDATX','WEEKDAY','WEEKU','WEEKV','WEEKW','WORDDATE','WORDDATX',
|
||||||
|
'YEAR','YYMM','YYMMC','YYMMD','YYMMN','YYMMP','YYMMS','YYMMDD','YYMMDDB','YYMMDDC','YYMMDDD','YYMMDDN','YYMMDDP',
|
||||||
|
'YYMMDDS','YYMON','YYQ','YYQC','YYQD','YYQN','YYQP','YYQS','YYQR','YYQRC','YYQRD','YYQRN','YYQRP','YYQRS' ;
|
||||||
|
|
||||||
|
%local num ;
|
||||||
|
%let num = 1 ;
|
||||||
|
|
||||||
|
proc sql noprint ;
|
||||||
|
select name
|
||||||
|
into :dat_array separated by ' '
|
||||||
|
from these_vars
|
||||||
|
where type = &num and (format in (&dtfmts) or lowcase(name) like '%date%')
|
||||||
|
;
|
||||||
|
/* added by cb to shorten the process of looking at all dates */
|
||||||
|
%if &sqlobs > 0 %then %do ;
|
||||||
|
%put Checking these vars for possible DOB contents: &dat_array ;
|
||||||
|
select 'min(' || trim(name) || ') as ' || name into :var_list separated by ','
|
||||||
|
from these_vars
|
||||||
|
where type = &num and (format in (&dtfmts) or lowcase(name) like '%date%')
|
||||||
|
;
|
||||||
|
create table __gnu as
|
||||||
|
select &var_list from &inset_name
|
||||||
|
;
|
||||||
|
/* end cb additions */
|
||||||
|
quit ;
|
||||||
|
data __gnu ;
|
||||||
|
set __gnu (obs = &obs_lim keep = &dat_array) ;
|
||||||
|
array d &dat_array ;
|
||||||
|
do i = 1 to dim(d) ;
|
||||||
|
if n(d{i}) then maybe_age = %calcage(bdtvar = d{i}, refdate = "&sysdate9."d) ;
|
||||||
|
if maybe_age ge &eldest_age then do ;
|
||||||
|
badvar = vname(d{i}) ;
|
||||||
|
badvalue = d{i} ;
|
||||||
|
output ;
|
||||||
|
end ;
|
||||||
|
keep badvar badvalue maybe_age ;
|
||||||
|
end ;
|
||||||
|
run ;
|
||||||
|
proc sql outobs = 30 nowarn ;
|
||||||
|
insert into phi_warnings(dset, variable, warning)
|
||||||
|
select distinct "&inset_name", badvar, "If this is a date, at least one value is " || compress(put(maybe_age, best.)) || " years ago, which is older than &eldest_age.. " ||
|
||||||
|
"If this date applies to a person, the record is probably PHI."
|
||||||
|
from __gnu ;
|
||||||
|
drop table __gnu ;
|
||||||
|
quit ;
|
||||||
|
%end ;
|
||||||
|
%else %do ;
|
||||||
|
%put No obvious date variables found in &inset_name.--skipping age checks. ;
|
||||||
|
%end ;
|
||||||
|
%mend check_vars_for_oldsters ;
|
||||||
|
|
||||||
|
proc contents noprint data = &inset_name out = these_vars ;
|
||||||
|
run ;
|
||||||
|
|
||||||
|
proc sql noprint ;
|
||||||
|
create table phi_warnings (dset char(50), variable char(256), label char(256), warning char(200)) ;
|
||||||
|
|
||||||
|
%check_varname(regx = mrn|hrn , msg = %str(Name suggests this var may be an MRN, which should never move across sites.)) ;
|
||||||
|
%check_varname(regx = birth_date|BirthDate|DOB|BDate , msg = %str(Name suggests this var may be a date of birth.)) ;
|
||||||
|
%check_varname(regx = SSN|SocialSecurityNumber|social_security_number|socsec, msg = %str(Name suggests this var may be a social security number.)) ;
|
||||||
|
|
||||||
|
%if %symexist(locally_forbidden_varnames) %then %do ;
|
||||||
|
%check_varname(regx = &locally_forbidden_varnames, msg = %str(May be on the locally defined list of variables not allowed to be sent to other sites.)) ;
|
||||||
|
%end ;
|
||||||
|
|
||||||
|
quit ;
|
||||||
|
|
||||||
|
%check_vars_for_mrn(obs_lim = &obs_lim) ;
|
||||||
|
%check_vars_for_oldsters(obs_lim = &obs_lim, eldest_age = &eldest_age) ;
|
||||||
|
|
||||||
|
title3 "WARNINGS for dataset &inset_name:" ;
|
||||||
|
|
||||||
|
proc sql noprint ;
|
||||||
|
select count(*) as num_warns into :num_warns from phi_warnings ;
|
||||||
|
|
||||||
|
%if &num_warns = 0 %then %do ;
|
||||||
|
reset print outobs = 5 NOWARN ;
|
||||||
|
select "No obvious PHI-like data elements in &inset_name--BUT PLEASE INSPECT THE CONTENTS AND PRINTs TO FOLLOW" as x label = "No warnings for &inset_name"
|
||||||
|
from &inset_name
|
||||||
|
;
|
||||||
|
%do i = 1 %to 5 ;
|
||||||
|
%put No obvious phi-like data elements in &inset_name. BUT PLEASE INSPECT THE CONTENTS AND PRINTs CAREFULLY TO MAKE SURE OF THIS! ;
|
||||||
|
%end ;
|
||||||
|
%end ;
|
||||||
|
%else %do ;
|
||||||
|
reset print ;
|
||||||
|
select variable, warning from phi_warnings
|
||||||
|
order by variable, warning
|
||||||
|
;
|
||||||
|
quit ;
|
||||||
|
%end ;
|
||||||
|
title3 "Dataset &inset_name" ;
|
||||||
|
proc contents data = &inset_name varnum ;
|
||||||
|
run ;
|
||||||
|
/*
|
||||||
|
proc print data = &inset_name (obs = 20) ;
|
||||||
|
run ;
|
||||||
|
*/
|
||||||
|
** TODO: make the print print out recs that trip the value warnings. ;
|
||||||
|
proc sql number ;
|
||||||
|
select *
|
||||||
|
from &inset_name (obs = 20)
|
||||||
|
;
|
||||||
|
quit ;
|
||||||
|
|
||||||
|
quit ;
|
||||||
|
|
||||||
|
%RemoveDset(dset = __sub_dset) ;
|
||||||
|
%RemoveDset(dset = possible_bad_vars) ;
|
||||||
|
%RemoveDset(dset = phi_warnings) ;
|
||||||
|
%RemoveDset(dset = these_vars) ;
|
||||||
|
|
||||||
|
%mend check_dataset ;
|
||||||
|
|
||||||
|
%macro detect_phi(transfer_lib, obs_lim = max, eldest_age = 89) ;
|
||||||
|
|
||||||
|
%put ;
|
||||||
|
%put ;
|
||||||
|
%put ============================================================== ;
|
||||||
|
%put ;
|
||||||
|
%put Macro detect_phi: ;
|
||||||
|
%put ;
|
||||||
|
%put Checking all datasets found in %sysfunc(pathname(&transfer_lib)) for the following signs of PHI: ;
|
||||||
|
%put - Variable names signifying sensitive items like 'MRN', 'birth_date', 'SSN' and so forth. ;
|
||||||
|
%if %symexist(locally_forbidden_varnames) %then %do ;
|
||||||
|
%put - Variable names on the list defined in the standard macro variable locally_forbidden_varnames (here those names are: &locally_forbidden_varnames). ;
|
||||||
|
%end ;
|
||||||
|
%put - Contents of CHARACTER variables that match the pattern given in the standard macro variable mrn_regex (here that var is &mrn_regex) ;
|
||||||
|
%put Please note that numeric variables ARE NOT CHECKED FOR MRN-LIKE CONTENT. ;
|
||||||
|
%put - The contents of date variables (as divined by their formats) for values that, if they were DOBs, would indicate a person older than &eldest_age years. ;
|
||||||
|
%put ;
|
||||||
|
%put THIS IS BETA SOFTWARE-PLEASE SCRUTINIZE THE RESULTS AND REPORT PROBLEMS TO pardee.r@ghc.org. ;
|
||||||
|
%put ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put THIS MACRO IS NOT A SUBSTITUTE FOR HUMAN INSPECTION AND THOUGHT--PLEASE CAREFULLY INSPECT ALL VARIABLES--WHETHER ;
|
||||||
|
%put OR NOT THEY TRIP A WARNING--TO MAKE SURE THE DATA COMPORTS WITH YOUR DATA SHARING AGREEMENT!!! ;
|
||||||
|
%put ;
|
||||||
|
%put ;
|
||||||
|
%put ============================================================== ;
|
||||||
|
%put ;
|
||||||
|
%put ;
|
||||||
|
|
||||||
|
title1 "PHI-Detection Report for the datasets in %sysfunc(pathname(&transfer_lib))." ;
|
||||||
|
title2 "please inspect all output carefully to make sure it comports with your data sharing agreement!!!" ;
|
||||||
|
|
||||||
|
proc sql noprint ;
|
||||||
|
** describe table dictionary.tables ;
|
||||||
|
|
||||||
|
select trim(libname) || '.' || memname as dset
|
||||||
|
into :d1-:d999
|
||||||
|
from dictionary.tables
|
||||||
|
where libname = "%upcase(&transfer_lib)" AND
|
||||||
|
memtype = 'DATA'
|
||||||
|
;
|
||||||
|
%local num_dsets ;
|
||||||
|
%let num_dsets = &sqlobs ;
|
||||||
|
quit ;
|
||||||
|
|
||||||
|
%local i ;
|
||||||
|
|
||||||
|
%if &num_dsets = 0 %then %do i = 1 %to 10 ;
|
||||||
|
%put ERROR: NO DATASETS FOUND IN &transfer_lib!!!! ;
|
||||||
|
%end ;
|
||||||
|
|
||||||
|
%do i = 1 %to &num_dsets ;
|
||||||
|
%put about to check &&d&i ;
|
||||||
|
%check_dataset(dset = &&d&i, obs_lim = &obs_lim, eldest_age = &eldest_age) ;
|
||||||
|
%end ;
|
||||||
|
|
||||||
|
%mend detect_phi ;
|
||||||
48
samples/SaltStack/eval.sls
Normal file
48
samples/SaltStack/eval.sls
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
ceph:
|
||||||
|
pkg.installed:
|
||||||
|
- refresh: True
|
||||||
|
service:
|
||||||
|
- dead
|
||||||
|
- enable: False
|
||||||
|
- require:
|
||||||
|
- file: /etc/eval.conf
|
||||||
|
{% if grains['os'] == 'Ubuntu'%}
|
||||||
|
- file: /etc/apt/sources.list.d/ceph.list
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
ceph-mds:
|
||||||
|
pkg.installed:
|
||||||
|
- require:
|
||||||
|
- pkg: ceph
|
||||||
|
|
||||||
|
include:
|
||||||
|
- ceph.extras
|
||||||
|
|
||||||
|
{% if grains['os'] == 'Ubuntu'%}
|
||||||
|
/etc/apt/sources.list.d/ceph.list:
|
||||||
|
file.managed:
|
||||||
|
- source: salt://ceph/apt.list
|
||||||
|
- template: jinja
|
||||||
|
- require:
|
||||||
|
- cmd: repo-key
|
||||||
|
|
||||||
|
repo-key:
|
||||||
|
cmd.run:
|
||||||
|
- name: 'wget -q -O - https://raw.github.com/release.asc | sudo apt-key add -'
|
||||||
|
- unless: 'apt-key list | grep -q -i ceph'
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
/etc/ceph/ceph.conf:
|
||||||
|
file.managed:
|
||||||
|
- source: salt://ceph/eval.conf
|
||||||
|
- template: jinja
|
||||||
|
- makedirs: true
|
||||||
|
|
||||||
|
/var/lib/ceph:
|
||||||
|
file.directory:
|
||||||
|
- names:
|
||||||
|
{% for dir in 'mon.a','osd.0','osd.1','mds.a' %}
|
||||||
|
- /var/lib/ceph/{{ dir.split('.')[0] }}/ceph-{{ dir.split('.')[1] }}
|
||||||
|
{% endfor %}
|
||||||
|
- require:
|
||||||
|
- pkg: ceph
|
||||||
4
samples/SaltStack/top.sls
Normal file
4
samples/SaltStack/top.sls
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
base:
|
||||||
|
'*':
|
||||||
|
- packages
|
||||||
|
- coffeestats
|
||||||
46
samples/Scheme/lambdastar.sls
Normal file
46
samples/Scheme/lambdastar.sls
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
(library (lambdastar)
|
||||||
|
(export (rename (lambda* lambda)))
|
||||||
|
(import (rnrs))
|
||||||
|
|
||||||
|
(define-syntax lambda*
|
||||||
|
(syntax-rules ()
|
||||||
|
((_ a* e* ...)
|
||||||
|
( lambda*-h a* (let () e* ...)))))
|
||||||
|
|
||||||
|
(define-syntax lambda*-h
|
||||||
|
(syntax-rules ()
|
||||||
|
((_ () e)
|
||||||
|
(lambda a* (if (null? a*) e (apply (e) a*))))
|
||||||
|
((_ (a a* ...) e) (posary-h (a a* ...) e))
|
||||||
|
((_ (a a* ... . rest) e)
|
||||||
|
(polyvariadic-h (a a* ... . rest) e))
|
||||||
|
((_ a* e) (lambda a* e))))
|
||||||
|
|
||||||
|
(define-syntax posary-h
|
||||||
|
(syntax-rules ()
|
||||||
|
((_ (a a* ...) e)
|
||||||
|
(letrec
|
||||||
|
((rec
|
||||||
|
(case-lambda
|
||||||
|
(() rec)
|
||||||
|
((a a* ...) e)
|
||||||
|
((a a* ... . rest)
|
||||||
|
(apply (rec a a* ...) rest))
|
||||||
|
(some (get-more rec some)))))
|
||||||
|
rec))))
|
||||||
|
|
||||||
|
(define-syntax polyvariadic-h
|
||||||
|
(syntax-rules ()
|
||||||
|
((_ (a a* ... . rest) e)
|
||||||
|
(letrec
|
||||||
|
((rec
|
||||||
|
(case-lambda
|
||||||
|
(() rec)
|
||||||
|
((a a* ... . rest) e)
|
||||||
|
(some (get-more rec some)))))
|
||||||
|
rec))))
|
||||||
|
|
||||||
|
(define get-more
|
||||||
|
(lambda (rec some)
|
||||||
|
(lambda more
|
||||||
|
(apply rec (append some more))))))
|
||||||
55
samples/Shell/filenames/9fs
Normal file
55
samples/Shell/filenames/9fs
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/rc
|
||||||
|
# 9fs filesystem [mountpoint] - srv & mount filesystem, usually from plan 9
|
||||||
|
|
||||||
|
rfork e
|
||||||
|
switch($1){
|
||||||
|
case ''
|
||||||
|
echo usage: 9fs service '[mountpoint]' >[1=2]
|
||||||
|
exit usage
|
||||||
|
case kfs
|
||||||
|
if(! test -f /srv/kfs)
|
||||||
|
disk/kfs
|
||||||
|
mount -c /srv/kfs /n/kfs
|
||||||
|
case dump
|
||||||
|
mount /srv/boot /n/dump dump >[2]/dev/null ||
|
||||||
|
mount /srv/boot /n/dump main/archive ||
|
||||||
|
mount /srv/boot /n/dump dump # again to print error
|
||||||
|
case snap
|
||||||
|
mount /srv/boot /n/snap main/snapshot
|
||||||
|
case other
|
||||||
|
mount -C /srv/boot /n/other other
|
||||||
|
case juke # ye olde file server
|
||||||
|
srv -q il!jukefs && mount /srv/il!jukefs /n/juke
|
||||||
|
case sources
|
||||||
|
srv -nq tcp!sources.cs.bell-labs.com sources /n/sources
|
||||||
|
case sourcesdump
|
||||||
|
9fs sources
|
||||||
|
mount -n /srv/sources /n/sourcesdump main/archive
|
||||||
|
case sourcessnap
|
||||||
|
9fs sources
|
||||||
|
mount -n /srv/sources /n/sourcessnap main/snapshot
|
||||||
|
# arbitrary venti archives
|
||||||
|
case vac:*
|
||||||
|
vacfs <{echo $1}
|
||||||
|
case *.vac
|
||||||
|
if (test -e $1)
|
||||||
|
score=$1
|
||||||
|
if not if (! ~ $1 /* && test -e $home/lib/vac/$1)
|
||||||
|
score=$home/lib/vac/$1
|
||||||
|
if not if (! ~ $1 /* && test -e /lib/vac/$1)
|
||||||
|
score=/lib/vac/$1
|
||||||
|
if not {
|
||||||
|
echo $0: $1: no such score file >[1=2]
|
||||||
|
exit 'no score file'
|
||||||
|
}
|
||||||
|
vacfs -m /n/`{basename $1 .vac} `{cat $score}
|
||||||
|
case wiki
|
||||||
|
srv -m 'net!plan9.bell-labs.com!wiki' wiki /mnt/wiki
|
||||||
|
case *
|
||||||
|
switch($#*){
|
||||||
|
case 1
|
||||||
|
srv -m $1
|
||||||
|
case *
|
||||||
|
srv -m $1 $1 $2
|
||||||
|
}
|
||||||
|
}
|
||||||
149
samples/Shell/filenames/man
Normal file
149
samples/Shell/filenames/man
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
#!/bin/rc
|
||||||
|
# man - print manual pages
|
||||||
|
rfork e
|
||||||
|
|
||||||
|
. /sys/man/fonts
|
||||||
|
|
||||||
|
cmd=n
|
||||||
|
sec=()
|
||||||
|
S=/sys/man
|
||||||
|
d=0
|
||||||
|
|
||||||
|
fn roff {
|
||||||
|
preproc=()
|
||||||
|
postproc=cat
|
||||||
|
x=`{doctype $2}
|
||||||
|
if (~ $1 t) {
|
||||||
|
if(~ $x *grap*)
|
||||||
|
preproc=($preproc grap)
|
||||||
|
if(~ $x *pic*)
|
||||||
|
preproc=($preproc pic)
|
||||||
|
Nflag=-Tutf
|
||||||
|
}
|
||||||
|
if not {
|
||||||
|
Nflag='-N'
|
||||||
|
Lflag='-rL1000i'
|
||||||
|
# setting L changes page length to infinity (sed script removes empty lines)
|
||||||
|
if (grep -s '^\.(2C|sp *[0-9]*\.)' $2)
|
||||||
|
postproc=col
|
||||||
|
}
|
||||||
|
if(~ $x *eqn*)
|
||||||
|
preproc=($preproc eqn)
|
||||||
|
if(~ $x *tbl*)
|
||||||
|
preproc=($preproc tbl)
|
||||||
|
{echo -n $FONTS; cat $2 </dev/null} |
|
||||||
|
switch($#preproc) {
|
||||||
|
case 0
|
||||||
|
troff $Nflag $Lflag -$MAN
|
||||||
|
case 1
|
||||||
|
$preproc | troff $Nflag $Lflag -$MAN
|
||||||
|
case 2
|
||||||
|
$preproc(1) | $preproc(2) | troff $Nflag $Lflag -$MAN
|
||||||
|
case 3
|
||||||
|
$preproc(1) | $preproc(2) | $preproc(3) |
|
||||||
|
troff $Nflag $Lflag -$MAN
|
||||||
|
case *
|
||||||
|
$preproc(1) | $preproc(2) | $preproc(3) |
|
||||||
|
$preproc(4) | troff $Nflag $Lflag -$MAN
|
||||||
|
} | $postproc
|
||||||
|
}
|
||||||
|
|
||||||
|
fn page {
|
||||||
|
if(test -d /mnt/wsys/acme)
|
||||||
|
/bin/page -w
|
||||||
|
if not
|
||||||
|
/bin/page
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
search=yes
|
||||||
|
while(~ $d 0) {
|
||||||
|
if(~ $#* 0) {
|
||||||
|
echo 'Usage: man [-bntpPSw] [0-9] [0-9] ... name1 name2 ...' >[1=2]
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
if(test -d $S/$1){
|
||||||
|
sec=($sec $1)
|
||||||
|
shift
|
||||||
|
}
|
||||||
|
if not
|
||||||
|
switch($1) {
|
||||||
|
case -b ; cmd=b ; shift
|
||||||
|
case -n ; cmd=n ; shift
|
||||||
|
case -P ; cmd=P ; shift
|
||||||
|
case -p ; cmd=p ; shift
|
||||||
|
case -S ; search=no ; shift
|
||||||
|
case -t ; cmd=t ; shift
|
||||||
|
case -w ; cmd=w ; shift
|
||||||
|
case * ; d=1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(~ $#sec 0) {
|
||||||
|
sec=`{ls -pd $S/[0-9]* }
|
||||||
|
}
|
||||||
|
ix=$S/$sec/INDEX
|
||||||
|
if(~ $#* 1) pat='^'^$1^' '
|
||||||
|
if not pat='^('^`{echo $* | sed 's/ /|/g'}^') '
|
||||||
|
fils=()
|
||||||
|
if(~ $search yes)
|
||||||
|
for(i in $S/$sec){
|
||||||
|
if(/bin/test -f $i/INDEX){
|
||||||
|
try=`{grep -i $pat $i/INDEX | sed 's/^[^ ]* //' | sort -u}
|
||||||
|
if(! ~ $#try 0)
|
||||||
|
fils=($fils $i/$try)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# bug: should also do following loop if not all pages found
|
||||||
|
if(~ $#fils 0) {
|
||||||
|
# nothing in INDEX. try for file of given name
|
||||||
|
for(i) {
|
||||||
|
if(~ $i intro) i=0intro
|
||||||
|
for(n in $sec) {
|
||||||
|
try=`{echo $S/$n/$i | tr A-Z a-z}
|
||||||
|
if (/bin/test -f $try)
|
||||||
|
fils=($fils $try)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(~ $#fils 0) {
|
||||||
|
echo 'man: no manual page' >[1=2]
|
||||||
|
exit 'no man'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(i in $fils) {
|
||||||
|
if(! /bin/test -f $i)
|
||||||
|
echo need $i >[1=2]
|
||||||
|
if not {
|
||||||
|
switch($cmd) {
|
||||||
|
case w
|
||||||
|
echo $i
|
||||||
|
|
||||||
|
case t
|
||||||
|
roff t $i
|
||||||
|
|
||||||
|
case p
|
||||||
|
roff t $i | grep -v '^x X html' | proof
|
||||||
|
|
||||||
|
case P
|
||||||
|
roff t $i | page
|
||||||
|
|
||||||
|
case n
|
||||||
|
roff n $i | sed '
|
||||||
|
${
|
||||||
|
/^$/p
|
||||||
|
}
|
||||||
|
//N
|
||||||
|
/^\n$/D'
|
||||||
|
|
||||||
|
case b
|
||||||
|
x=`{echo $i | sed 's;/sys/man/(.*)/(.*);\1 \2;'}
|
||||||
|
if(~ $x(2) 0intro) x=($x(1) intro)
|
||||||
|
roff n $i | sed '
|
||||||
|
${
|
||||||
|
/^$/p
|
||||||
|
}
|
||||||
|
//N
|
||||||
|
/^\n$/D' |
|
||||||
|
plumb -i -d edit -a 'action=showdata filename=/man/'$x(2)^'('$x(1)^')'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
samples/Smalltalk/Booleans.cs
Normal file
1
samples/Smalltalk/Booleans.cs
Normal file
File diff suppressed because one or more lines are too long
1
samples/Smalltalk/Collections.cs
Normal file
1
samples/Smalltalk/Collections.cs
Normal file
File diff suppressed because one or more lines are too long
6
samples/XML/libsomething.dll.config
Normal file
6
samples/XML/libsomething.dll.config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<configuration>
|
||||||
|
<dllmap dll="libsomething">
|
||||||
|
<dllentry dll="libdifferent.so" name="somefunction" target="differentfunction" />
|
||||||
|
<dllentry os="solaris,freebsd" dll="libanother.so" name="somefunction" target="differentfunction" />
|
||||||
|
</dllmap>
|
||||||
|
</configuration>
|
||||||
14
samples/XML/phpunit.xml.dist
Normal file
14
samples/XML/phpunit.xml.dist
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phpunit bootstrap="./tests/bootstrap.php"
|
||||||
|
colors="true">
|
||||||
|
<testsuites>
|
||||||
|
<testsuite>
|
||||||
|
<directory>tests</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
<filter>
|
||||||
|
<whitelist>
|
||||||
|
<directory suffix=".php">src</directory>
|
||||||
|
</whitelist>
|
||||||
|
</filter>
|
||||||
|
</phpunit>
|
||||||
13
script/bootstrap
Executable file
13
script/bootstrap
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
bundle config --local path vendor/gems
|
||||||
|
|
||||||
|
bundle check > /dev/null 2>&1 || bundle install
|
||||||
|
|
||||||
|
git submodule init
|
||||||
|
git submodule sync --quiet
|
||||||
|
script/fast-submodule-update
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
if [ -d /usr/share/rbenv/shims ]; then
|
if [ -d /usr/share/rbenv/shims ]; then
|
||||||
export PATH=/usr/share/rbenv/shims:$PATH
|
export PATH=/usr/share/rbenv/shims:$PATH
|
||||||
export RBENV_VERSION=2.1.2-github
|
export RBENV_VERSION=2.1.2-github
|
||||||
@@ -11,11 +14,9 @@ ruby -v
|
|||||||
bundle -v
|
bundle -v
|
||||||
set +x
|
set +x
|
||||||
|
|
||||||
mkdir -p ./vendor/gems
|
|
||||||
|
|
||||||
# Clean out any unversioned files
|
# Clean out any unversioned files
|
||||||
git clean -fd
|
git clean -fd
|
||||||
|
|
||||||
bundle install --local --path ./vendor/gems
|
script/bootstrap
|
||||||
bundle exec rake samples
|
bundle exec rake samples
|
||||||
bundle exec rake
|
bundle exec rake
|
||||||
|
|||||||
@@ -8,21 +8,28 @@ require 'tmpdir'
|
|||||||
require 'uri'
|
require 'uri'
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
|
|
||||||
GRAMMARS_PATH = File.expand_path("../../grammars", __FILE__)
|
ROOT = File.expand_path("../..", __FILE__)
|
||||||
SOURCES_FILE = File.expand_path("../../grammars.yml", __FILE__)
|
GRAMMARS_PATH = File.join(ROOT, "grammars")
|
||||||
CSONC = File.expand_path("../../node_modules/.bin/csonc", __FILE__)
|
SOURCES_FILE = File.join(ROOT, "grammars.yml")
|
||||||
|
CSONC = File.join(ROOT, "node_modules", ".bin", "csonc")
|
||||||
|
|
||||||
class TarballPackage
|
class SingleFile
|
||||||
def self.fetch(tmp_dir, url)
|
def initialize(path)
|
||||||
`curl --silent --location --max-time 10 --output "#{tmp_dir}/archive" "#{url}"`
|
@path = path
|
||||||
raise "Failed to fetch GH package: #{url} #{$?.to_s}" unless $?.success?
|
end
|
||||||
|
|
||||||
output = File.join(tmp_dir, 'extracted')
|
def url
|
||||||
Dir.mkdir(output)
|
@path
|
||||||
`tar -C "#{output}" -xf "#{tmp_dir}/archive"`
|
end
|
||||||
raise "Failed to uncompress tarball: #{tmp_dir}/archive (from #{url}) #{$?.to_s}" unless $?.success?
|
|
||||||
|
|
||||||
Dir["#{output}/**/*"].select do |path|
|
def fetch(tmp_dir)
|
||||||
|
[@path]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class DirectoryPackage
|
||||||
|
def self.fetch(dir)
|
||||||
|
Dir["#{dir}/**/*"].select do |path|
|
||||||
case File.extname(path.downcase)
|
case File.extname(path.downcase)
|
||||||
when '.plist'
|
when '.plist'
|
||||||
path.split('/')[-2] == 'Syntaxes'
|
path.split('/')[-2] == 'Syntaxes'
|
||||||
@@ -36,6 +43,32 @@ class TarballPackage
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def initialize(directory)
|
||||||
|
@directory = directory
|
||||||
|
end
|
||||||
|
|
||||||
|
def url
|
||||||
|
@directory
|
||||||
|
end
|
||||||
|
|
||||||
|
def fetch(tmp_dir)
|
||||||
|
self.class.fetch(File.join(ROOT, @directory))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class TarballPackage
|
||||||
|
def self.fetch(tmp_dir, url)
|
||||||
|
`curl --silent --location --max-time 30 --output "#{tmp_dir}/archive" "#{url}"`
|
||||||
|
raise "Failed to fetch GH package: #{url} #{$?.to_s}" unless $?.success?
|
||||||
|
|
||||||
|
output = File.join(tmp_dir, 'extracted')
|
||||||
|
Dir.mkdir(output)
|
||||||
|
`tar -C "#{output}" -xf "#{tmp_dir}/archive"`
|
||||||
|
raise "Failed to uncompress tarball: #{tmp_dir}/archive (from #{url}) #{$?.to_s}" unless $?.success?
|
||||||
|
|
||||||
|
DirectoryPackage.fetch(output)
|
||||||
|
end
|
||||||
|
|
||||||
attr_reader :url
|
attr_reader :url
|
||||||
|
|
||||||
def initialize(url)
|
def initialize(url)
|
||||||
@@ -116,7 +149,16 @@ def load_grammar(path)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def install_grammar(tmp_dir, source, all_scopes)
|
def install_grammar(tmp_dir, source, all_scopes)
|
||||||
p = if source.end_with?('.tmLanguage', '.plist')
|
is_url = source.start_with?("http:", "https:")
|
||||||
|
is_single_file = source.end_with?('.tmLanguage', '.plist')
|
||||||
|
|
||||||
|
p = if !is_url
|
||||||
|
if is_single_file
|
||||||
|
SingleFile.new(source)
|
||||||
|
else
|
||||||
|
DirectoryPackage.new(source)
|
||||||
|
end
|
||||||
|
elsif is_single_file
|
||||||
SingleGrammar.new(source)
|
SingleGrammar.new(source)
|
||||||
elsif source.start_with?('https://github.com')
|
elsif source.start_with?('https://github.com')
|
||||||
GitHubPackage.new(source)
|
GitHubPackage.new(source)
|
||||||
|
|||||||
67
script/fast-submodule-update
Executable file
67
script/fast-submodule-update
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require "thread"
|
||||||
|
|
||||||
|
ROOT = File.expand_path("../..", __FILE__).freeze
|
||||||
|
Dir.chdir(ROOT)
|
||||||
|
|
||||||
|
SUBMODULES = `git config --list --file .gitmodules`.lines.grep(/\.path=/).map { |line| line.chomp.split("=", 2).last }.freeze
|
||||||
|
SLOW_SUBMODULES = %w[
|
||||||
|
vendor/grammars/factor
|
||||||
|
vendor/grammars/fsharpbinding
|
||||||
|
vendor/grammars/ioke-outdated
|
||||||
|
]
|
||||||
|
|
||||||
|
class TaskResult < Struct.new(:submodule, :output, :status); end
|
||||||
|
|
||||||
|
def run_process(*args)
|
||||||
|
read, write = IO.pipe
|
||||||
|
pid = Process.spawn(*args, in: :close, out: write, err: [:child, :out])
|
||||||
|
write.close
|
||||||
|
output = read.read
|
||||||
|
read.close
|
||||||
|
Process.wait(pid)
|
||||||
|
[output, $?]
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_submodule(submodule)
|
||||||
|
output, status = run_process("git", "submodule", "update", "--", submodule)
|
||||||
|
TaskResult.new(submodule, output, status)
|
||||||
|
end
|
||||||
|
|
||||||
|
def run_thread(submodules, results)
|
||||||
|
loop do
|
||||||
|
begin
|
||||||
|
submodule = submodules.pop(true)
|
||||||
|
rescue ThreadError
|
||||||
|
# The queue is empty.
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
results.push(update_submodule(submodule))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
submodules = Queue.new
|
||||||
|
results = Queue.new
|
||||||
|
|
||||||
|
# Update the slow submodules first so they can update in the background while
|
||||||
|
# the fast ones run.
|
||||||
|
SUBMODULES.partition { |submodule| SLOW_SUBMODULES.include?(submodule) }.flatten.each do |submodule|
|
||||||
|
submodules.push(submodule)
|
||||||
|
end
|
||||||
|
|
||||||
|
8.times do
|
||||||
|
Thread.new { run_thread(submodules, results) }
|
||||||
|
end
|
||||||
|
|
||||||
|
success = true
|
||||||
|
SUBMODULES.each do
|
||||||
|
result = results.pop
|
||||||
|
unless result.status.success?
|
||||||
|
success = false
|
||||||
|
puts "Error updating #{result.submodule}"
|
||||||
|
end
|
||||||
|
puts result.output if result.output =~ /\S/
|
||||||
|
end
|
||||||
|
exit success ? 0 : 1
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
require "bundler/setup"
|
require "bundler/setup"
|
||||||
require "test/unit"
|
require "minitest/autorun"
|
||||||
require "mocha/setup"
|
require "mocha/setup"
|
||||||
require "linguist"
|
require "linguist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestBlob < Test::Unit::TestCase
|
class TestBlob < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestClassifier < Test::Unit::TestCase
|
class TestClassifier < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def samples_path
|
def samples_path
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
require 'linguist/file_blob'
|
require_relative "./helper"
|
||||||
require 'test/unit'
|
|
||||||
|
|
||||||
class TestFileBlob < Test::Unit::TestCase
|
class TestFileBlob < Minitest::Test
|
||||||
def test_extensions
|
def test_extensions
|
||||||
assert_equal [".gitignore"], Linguist::FileBlob.new(".gitignore").extensions
|
assert_equal [".gitignore"], Linguist::FileBlob.new(".gitignore").extensions
|
||||||
assert_equal [".xml"], Linguist::FileBlob.new("build.xml").extensions
|
assert_equal [".xml"], Linguist::FileBlob.new("build.xml").extensions
|
||||||
|
|||||||
55
test/test_generated.rb
Normal file
55
test/test_generated.rb
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
require_relative "./helper"
|
||||||
|
|
||||||
|
class TestGenerated < Minitest::Test
|
||||||
|
include Linguist
|
||||||
|
|
||||||
|
def samples_path
|
||||||
|
File.expand_path("../../samples", __FILE__)
|
||||||
|
end
|
||||||
|
|
||||||
|
class DataLoadedError < StandardError; end
|
||||||
|
|
||||||
|
def generated_without_loading_data(name)
|
||||||
|
blob = File.join(samples_path, name)
|
||||||
|
begin
|
||||||
|
assert Generated.generated?(blob, lambda { raise DataLoadedError.new }), "#{name} was not recognized as a generated file"
|
||||||
|
rescue DataLoadedError
|
||||||
|
assert false, "Data was loaded when calling generated? on #{name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def generated_loading_data(name)
|
||||||
|
blob = File.join(samples_path, name)
|
||||||
|
assert_raises(DataLoadedError, "Data wasn't loaded when calling generated? on #{name}") do
|
||||||
|
Generated.generated?(blob, lambda { raise DataLoadedError.new })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_check_generated_without_loading_data
|
||||||
|
# Xcode project files
|
||||||
|
generated_without_loading_data("Binary/MainMenu.nib")
|
||||||
|
generated_without_loading_data("Dummy/foo.xcworkspacedata")
|
||||||
|
generated_without_loading_data("Dummy/foo.xcuserstate")
|
||||||
|
|
||||||
|
# .NET designer file
|
||||||
|
generated_without_loading_data("Dummu/foo.designer.cs")
|
||||||
|
|
||||||
|
# Composer generated composer.lock file
|
||||||
|
generated_without_loading_data("JSON/composer.lock")
|
||||||
|
|
||||||
|
# Node modules
|
||||||
|
generated_without_loading_data("Dummy/node_modules/foo.js")
|
||||||
|
|
||||||
|
# Godep saved dependencies
|
||||||
|
generated_without_loading_data("Godeps/Godeps.json")
|
||||||
|
generated_without_loading_data("Godeps/_workspace/src/github.com/kr/s3/sign.go")
|
||||||
|
|
||||||
|
# Generated by Zephir
|
||||||
|
generated_without_loading_data("Zephir/filenames/exception.zep.c")
|
||||||
|
generated_without_loading_data("Zephir/filenames/exception.zep.h")
|
||||||
|
generated_without_loading_data("Zephir/filenames/exception.zep.php")
|
||||||
|
|
||||||
|
# Minified files
|
||||||
|
generated_loading_data("JavaScript/jquery-1.6.1.min.js")
|
||||||
|
end
|
||||||
|
end
|
||||||
39
test/test_grammars.rb
Normal file
39
test/test_grammars.rb
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
require_relative "./helper"
|
||||||
|
|
||||||
|
class TestGrammars < Minitest::Test
|
||||||
|
ROOT = File.expand_path("../..", __FILE__)
|
||||||
|
|
||||||
|
def setup
|
||||||
|
@grammars = YAML.load(File.read(File.join(ROOT, "grammars.yml")))
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_no_duplicate_scopes
|
||||||
|
scopes = @grammars.values.flatten
|
||||||
|
duplicates = scopes.group_by { |s| s }.select { |k, v| v.length > 1 }.map(&:first)
|
||||||
|
assert duplicates.empty?, "The following scopes appear in grammars.yml more than once:\n#{duplicates.sort.join("\n")}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_submodules_are_in_sync
|
||||||
|
submodules = `git config --list --file "#{File.join(ROOT, ".gitmodules")}"`.lines.grep(/\.path=/).map { |line| line.chomp.split("=", 2).last }
|
||||||
|
# Strip off paths inside the submodule so that just the submodule path remains.
|
||||||
|
listed_submodules = @grammars.keys.grep(/vendor\/grammars/).map { |source| source[%r{vendor/grammars/[^/]+}] }
|
||||||
|
|
||||||
|
nonexistent_submodules = listed_submodules - submodules
|
||||||
|
unlisted_submodules = submodules - listed_submodules
|
||||||
|
|
||||||
|
message = ""
|
||||||
|
unless nonexistent_submodules.empty?
|
||||||
|
message << "The following submodules are listed in grammars.yml but don't seem to exist in the repository.\n"
|
||||||
|
message << "Either add them using `git submodule add` or remove them from grammars.yml.\n"
|
||||||
|
message << nonexistent_submodules.sort.join("\n")
|
||||||
|
end
|
||||||
|
unless unlisted_submodules.empty?
|
||||||
|
message << "\n" unless message.empty?
|
||||||
|
message << "The following submodules exist in the repository but aren't listed in grammars.yml.\n"
|
||||||
|
message << "Either add them to grammars.yml or remove them from the repository using `git rm`.\n"
|
||||||
|
message << unlisted_submodules.sort.join("\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
assert nonexistent_submodules.empty? && unlisted_submodules.empty?, message
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestHeuristcs < Test::Unit::TestCase
|
class TestHeuristcs < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def samples_path
|
def samples_path
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestLanguage < Test::Unit::TestCase
|
class TestLanguage < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def test_find_by_alias
|
def test_find_by_alias
|
||||||
@@ -198,7 +198,7 @@ class TestLanguage < Test::Unit::TestCase
|
|||||||
def test_find_all_by_extension
|
def test_find_all_by_extension
|
||||||
Language.all.each do |language|
|
Language.all.each do |language|
|
||||||
language.extensions.each do |extension|
|
language.extensions.each do |extension|
|
||||||
assert_include Language.find_by_extension(extension), language
|
assert_includes Language.find_by_extension(extension), language
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -283,7 +283,7 @@ class TestLanguage < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_error_without_name
|
def test_error_without_name
|
||||||
assert_raise ArgumentError do
|
assert_raises ArgumentError do
|
||||||
Language.new :name => nil
|
Language.new :name => nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestMD5 < Test::Unit::TestCase
|
class TestMD5 < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def test_hexdigest_string
|
def test_hexdigest_string
|
||||||
@@ -12,28 +12,28 @@ class TestMD5 < Test::Unit::TestCase
|
|||||||
assert_equal "450c1ae043459546517b3dd2f98250f0", MD5.hexdigest(:foo)
|
assert_equal "450c1ae043459546517b3dd2f98250f0", MD5.hexdigest(:foo)
|
||||||
assert_equal "f06967526af9d7a512594b0a81b31ede", MD5.hexdigest(:bar)
|
assert_equal "f06967526af9d7a512594b0a81b31ede", MD5.hexdigest(:bar)
|
||||||
|
|
||||||
assert_not_equal MD5.hexdigest("foo"), MD5.hexdigest(:foo)
|
refute_equal MD5.hexdigest("foo"), MD5.hexdigest(:foo)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_hexdigest_integer
|
def test_hexdigest_integer
|
||||||
assert_equal "7605ec17fd7fd213fdcd23cac302cbb4", MD5.hexdigest(1)
|
assert_equal "7605ec17fd7fd213fdcd23cac302cbb4", MD5.hexdigest(1)
|
||||||
assert_equal "097c311a46d330e4e119ba2b1dc0f9a5", MD5.hexdigest(2)
|
assert_equal "097c311a46d330e4e119ba2b1dc0f9a5", MD5.hexdigest(2)
|
||||||
|
|
||||||
assert_not_equal MD5.hexdigest("1"), MD5.hexdigest(1)
|
refute_equal MD5.hexdigest("1"), MD5.hexdigest(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_hexdigest_boolean
|
def test_hexdigest_boolean
|
||||||
assert_equal "a690a0615820e2e5c53901d8b8958509", MD5.hexdigest(true)
|
assert_equal "a690a0615820e2e5c53901d8b8958509", MD5.hexdigest(true)
|
||||||
assert_equal "fca6a9b459e702fa93513c6a8b8c5dfe", MD5.hexdigest(false)
|
assert_equal "fca6a9b459e702fa93513c6a8b8c5dfe", MD5.hexdigest(false)
|
||||||
|
|
||||||
assert_not_equal MD5.hexdigest("true"), MD5.hexdigest(true)
|
refute_equal MD5.hexdigest("true"), MD5.hexdigest(true)
|
||||||
assert_not_equal MD5.hexdigest("false"), MD5.hexdigest(false)
|
refute_equal MD5.hexdigest("false"), MD5.hexdigest(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_hexdigest_nil
|
def test_hexdigest_nil
|
||||||
assert_equal "35589a1cc0b3ca90fc52d0e711c0c434", MD5.hexdigest(nil)
|
assert_equal "35589a1cc0b3ca90fc52d0e711c0c434", MD5.hexdigest(nil)
|
||||||
|
|
||||||
assert_not_equal MD5.hexdigest("nil"), MD5.hexdigest(nil)
|
refute_equal MD5.hexdigest("nil"), MD5.hexdigest(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_hexdigest_array
|
def test_hexdigest_array
|
||||||
@@ -49,7 +49,7 @@ class TestMD5 < Test::Unit::TestCase
|
|||||||
assert_equal "868ee214faf277829a85667cf332749f", MD5.hexdigest({:a => 1})
|
assert_equal "868ee214faf277829a85667cf332749f", MD5.hexdigest({:a => 1})
|
||||||
assert_equal "fa9df957c2b26de6fcca9d062ea8701e", MD5.hexdigest({:b => 2})
|
assert_equal "fa9df957c2b26de6fcca9d062ea8701e", MD5.hexdigest({:b => 2})
|
||||||
|
|
||||||
assert_not_equal MD5.hexdigest([:b, 2]), MD5.hexdigest({:b => 2})
|
refute_equal MD5.hexdigest([:b, 2]), MD5.hexdigest({:b => 2})
|
||||||
|
|
||||||
assert_equal MD5.hexdigest({:b => 2, :a => 1}), MD5.hexdigest({:a => 1, :b => 2})
|
assert_equal MD5.hexdigest({:b => 2, :a => 1}), MD5.hexdigest({:a => 1, :b => 2})
|
||||||
assert_equal MD5.hexdigest({:c => 3, :b => 2, :a => 1}), MD5.hexdigest({:a => 1, :b => 2, :c => 3})
|
assert_equal MD5.hexdigest({:c => 3, :b => 2, :a => 1}), MD5.hexdigest({:a => 1, :b => 2, :c => 3})
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestPedantic < Test::Unit::TestCase
|
class TestPedantic < Minitest::Test
|
||||||
filename = File.expand_path("../../lib/linguist/languages.yml", __FILE__)
|
filename = File.expand_path("../../lib/linguist/languages.yml", __FILE__)
|
||||||
LANGUAGES = YAML.load(File.read(filename))
|
LANGUAGES = YAML.load(File.read(filename))
|
||||||
|
GRAMMARS = YAML.load(File.read(File.expand_path("../../grammars.yml", __FILE__)))
|
||||||
|
|
||||||
def test_language_names_are_sorted
|
def test_language_names_are_sorted
|
||||||
assert_sorted LANGUAGES.keys
|
assert_sorted LANGUAGES.keys
|
||||||
@@ -21,6 +22,16 @@ class TestPedantic < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_grammars_are_sorted
|
||||||
|
assert_sorted GRAMMARS.keys
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_scopes_are_sorted
|
||||||
|
GRAMMARS.values.each do |scopes|
|
||||||
|
assert_sorted scopes
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def assert_sorted(list)
|
def assert_sorted(list)
|
||||||
list.each_cons(2) do |previous, item|
|
list.each_cons(2) do |previous, item|
|
||||||
flunk "#{previous} should come after #{item}" if previous > item
|
flunk "#{previous} should come after #{item}" if previous > item
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestRepository < Test::Unit::TestCase
|
class TestRepository < Minitest::Test
|
||||||
def rugged_repository
|
def rugged_repository
|
||||||
@rugged ||= Rugged::Repository.new(File.expand_path("../../.git", __FILE__))
|
@rugged ||= Rugged::Repository.new(File.expand_path("../../.git", __FILE__))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
require "tempfile"
|
require "tempfile"
|
||||||
|
|
||||||
class TestSamples < Test::Unit::TestCase
|
class TestSamples < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def test_up_to_date
|
def test_up_to_date
|
||||||
@@ -43,7 +43,7 @@ class TestSamples < Test::Unit::TestCase
|
|||||||
if extnames = Samples.cache['extnames'][name]
|
if extnames = Samples.cache['extnames'][name]
|
||||||
extnames.each do |extname|
|
extnames.each do |extname|
|
||||||
next if extname == '.script!'
|
next if extname == '.script!'
|
||||||
assert options['extensions'].include?(extname), "#{name} has a sample with extension (#{extname}) that isn't explicitly defined in languages.yml"
|
assert options['extensions'].index { |x| x.end_with? extname }, "#{name} has a sample with extension (#{extname}) that isn't explicitly defined in languages.yml"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestShebang < Test::Unit::TestCase
|
class TestShebang < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def assert_interpreter(interpreter, body)
|
def assert_interpreter(interpreter, body)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative "./helper"
|
require_relative "./helper"
|
||||||
|
|
||||||
class TestTokenizer < Test::Unit::TestCase
|
class TestTokenizer < Minitest::Test
|
||||||
include Linguist
|
include Linguist
|
||||||
|
|
||||||
def samples_path
|
def samples_path
|
||||||
|
|||||||
BIN
vendor/cache/byebug-3.5.1.gem
vendored
BIN
vendor/cache/byebug-3.5.1.gem
vendored
Binary file not shown.
BIN
vendor/cache/charlock_holmes-0.7.3.gem
vendored
BIN
vendor/cache/charlock_holmes-0.7.3.gem
vendored
Binary file not shown.
BIN
vendor/cache/coderay-1.1.0.gem
vendored
BIN
vendor/cache/coderay-1.1.0.gem
vendored
Binary file not shown.
BIN
vendor/cache/columnize-0.8.9.gem
vendored
BIN
vendor/cache/columnize-0.8.9.gem
vendored
Binary file not shown.
BIN
vendor/cache/debugger-linecache-1.2.0.gem
vendored
BIN
vendor/cache/debugger-linecache-1.2.0.gem
vendored
Binary file not shown.
BIN
vendor/cache/escape_utils-1.0.1.gem
vendored
BIN
vendor/cache/escape_utils-1.0.1.gem
vendored
Binary file not shown.
BIN
vendor/cache/metaclass-0.0.4.gem
vendored
BIN
vendor/cache/metaclass-0.0.4.gem
vendored
Binary file not shown.
BIN
vendor/cache/method_source-0.8.2.gem
vendored
BIN
vendor/cache/method_source-0.8.2.gem
vendored
Binary file not shown.
BIN
vendor/cache/mime-types-2.4.3.gem
vendored
BIN
vendor/cache/mime-types-2.4.3.gem
vendored
Binary file not shown.
BIN
vendor/cache/mocha-1.1.0.gem
vendored
BIN
vendor/cache/mocha-1.1.0.gem
vendored
Binary file not shown.
BIN
vendor/cache/plist-3.1.0.gem
vendored
BIN
vendor/cache/plist-3.1.0.gem
vendored
Binary file not shown.
BIN
vendor/cache/pry-0.10.1.gem
vendored
BIN
vendor/cache/pry-0.10.1.gem
vendored
Binary file not shown.
BIN
vendor/cache/rake-10.3.2.gem
vendored
BIN
vendor/cache/rake-10.3.2.gem
vendored
Binary file not shown.
BIN
vendor/cache/rugged-0.22.0b4.gem
vendored
BIN
vendor/cache/rugged-0.22.0b4.gem
vendored
Binary file not shown.
BIN
vendor/cache/slop-3.6.0.gem
vendored
BIN
vendor/cache/slop-3.6.0.gem
vendored
Binary file not shown.
BIN
vendor/cache/yajl-ruby-1.1.0.gem
vendored
BIN
vendor/cache/yajl-ruby-1.1.0.gem
vendored
Binary file not shown.
1
vendor/grammars/Agda.tmbundle
vendored
Submodule
1
vendor/grammars/Agda.tmbundle
vendored
Submodule
Submodule vendor/grammars/Agda.tmbundle added at 784f435f09
1
vendor/grammars/Alloy.tmbundle
vendored
Submodule
1
vendor/grammars/Alloy.tmbundle
vendored
Submodule
Submodule vendor/grammars/Alloy.tmbundle added at dfcc81df44
1
vendor/grammars/ColdFusion
vendored
Submodule
1
vendor/grammars/ColdFusion
vendored
Submodule
Submodule vendor/grammars/ColdFusion added at ee54c80589
1
vendor/grammars/Docker.tmbundle
vendored
Submodule
1
vendor/grammars/Docker.tmbundle
vendored
Submodule
Submodule vendor/grammars/Docker.tmbundle added at 8f28cd8714
1
vendor/grammars/Elm.tmLanguage
vendored
Submodule
1
vendor/grammars/Elm.tmLanguage
vendored
Submodule
Submodule vendor/grammars/Elm.tmLanguage added at 1d2e096301
1
vendor/grammars/Handlebars
vendored
Submodule
1
vendor/grammars/Handlebars
vendored
Submodule
Submodule vendor/grammars/Handlebars added at 87669eb08d
1
vendor/grammars/IDL-Syntax
vendored
Submodule
1
vendor/grammars/IDL-Syntax
vendored
Submodule
Submodule vendor/grammars/IDL-Syntax added at 9473b7faaf
1
vendor/grammars/Isabelle.tmbundle
vendored
Submodule
1
vendor/grammars/Isabelle.tmbundle
vendored
Submodule
Submodule vendor/grammars/Isabelle.tmbundle added at b13c44c30f
1
vendor/grammars/Julia.tmbundle
vendored
Submodule
1
vendor/grammars/Julia.tmbundle
vendored
Submodule
Submodule vendor/grammars/Julia.tmbundle added at 6541d86c1f
1
vendor/grammars/LiveScript.tmbundle
vendored
Submodule
1
vendor/grammars/LiveScript.tmbundle
vendored
Submodule
Submodule vendor/grammars/LiveScript.tmbundle added at 801cfac602
1
vendor/grammars/NSIS
vendored
Submodule
1
vendor/grammars/NSIS
vendored
Submodule
Submodule vendor/grammars/NSIS added at 53b64a0a11
1
vendor/grammars/NimLime
vendored
Submodule
1
vendor/grammars/NimLime
vendored
Submodule
Submodule vendor/grammars/NimLime added at 7a2fb4e73a
1
vendor/grammars/PHP-Twig.tmbundle
vendored
Submodule
1
vendor/grammars/PHP-Twig.tmbundle
vendored
Submodule
Submodule vendor/grammars/PHP-Twig.tmbundle added at ad0f5147e6
1
vendor/grammars/RDoc.tmbundle
vendored
Submodule
1
vendor/grammars/RDoc.tmbundle
vendored
Submodule
Submodule vendor/grammars/RDoc.tmbundle added at 6a403e7e2f
1
vendor/grammars/SCSS.tmbundle
vendored
Submodule
1
vendor/grammars/SCSS.tmbundle
vendored
Submodule
Submodule vendor/grammars/SCSS.tmbundle added at d6188e579f
1
vendor/grammars/Scalate.tmbundle
vendored
Submodule
1
vendor/grammars/Scalate.tmbundle
vendored
Submodule
Submodule vendor/grammars/Scalate.tmbundle added at 4f85314fca
1
vendor/grammars/Slash.tmbundle
vendored
Submodule
1
vendor/grammars/Slash.tmbundle
vendored
Submodule
Submodule vendor/grammars/Slash.tmbundle added at 48e678eb27
1
vendor/grammars/Stata.tmbundle
vendored
Submodule
1
vendor/grammars/Stata.tmbundle
vendored
Submodule
Submodule vendor/grammars/Stata.tmbundle added at bc1e36344d
1
vendor/grammars/Sublime-Coq
vendored
Submodule
1
vendor/grammars/Sublime-Coq
vendored
Submodule
Submodule vendor/grammars/Sublime-Coq added at 964eb8f914
1
vendor/grammars/Sublime-Inform
vendored
Submodule
1
vendor/grammars/Sublime-Inform
vendored
Submodule
Submodule vendor/grammars/Sublime-Inform added at c52a11e506
1
vendor/grammars/Sublime-Lasso
vendored
Submodule
1
vendor/grammars/Sublime-Lasso
vendored
Submodule
Submodule vendor/grammars/Sublime-Lasso added at c755cf53be
1
vendor/grammars/Sublime-Logos
vendored
Submodule
1
vendor/grammars/Sublime-Logos
vendored
Submodule
Submodule vendor/grammars/Sublime-Logos added at 9a7aa2fb92
1
vendor/grammars/Sublime-Loom
vendored
Submodule
1
vendor/grammars/Sublime-Loom
vendored
Submodule
Submodule vendor/grammars/Sublime-Loom added at 725228409c
1
vendor/grammars/Sublime-QML
vendored
Submodule
1
vendor/grammars/Sublime-QML
vendored
Submodule
Submodule vendor/grammars/Sublime-QML added at e3e058a21f
1
vendor/grammars/Sublime-REBOL
vendored
Submodule
1
vendor/grammars/Sublime-REBOL
vendored
Submodule
Submodule vendor/grammars/Sublime-REBOL added at 977ba9bb58
1
vendor/grammars/Sublime-SQF-Language
vendored
Submodule
1
vendor/grammars/Sublime-SQF-Language
vendored
Submodule
Submodule vendor/grammars/Sublime-SQF-Language added at 708c78a0ba
1
vendor/grammars/Sublime-Text-2-OpenEdge-ABL
vendored
Submodule
1
vendor/grammars/Sublime-Text-2-OpenEdge-ABL
vendored
Submodule
Submodule vendor/grammars/Sublime-Text-2-OpenEdge-ABL added at 7b02e1e244
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user