Compare commits

..

33 Commits

Author SHA1 Message Date
Arfon Smith
e78e9e4747 Merge pull request #3071 from github/cut-release-4.8.7
Cut release 4.8.7
2016-06-21 10:30:45 -06:00
Arfon Smith
81f9079f43 Bumping version to v4.8.7 2016-06-21 09:57:23 -06:00
Arfon Smith
16eaa533b6 Updating gitsubmodules 2016-06-21 09:34:05 -06:00
Arfon Smith
2e521a6c74 Grammars update 2016-06-21 09:28:33 -06:00
Sahil Dua
56a65d0975 Add ace-builds to vendored files (#3061) 2016-06-21 06:45:37 -06:00
Paul Chaignon
e4c6c1d245 Remove pragma keyword from PLSQL heuristic rule (#3066)
The pragma keyword is not specific to PLSQL and can be found in other SQL languages
2016-06-21 06:45:05 -06:00
Lars Brinkhoff
a9f366aed2 Merge pull request #3054 from Alhadis/srt
Add support for SubRip Text files and SRecode Templates
2016-06-20 07:35:31 +02:00
Arfon Smith
96bd08e391 Adding some words about maintainers (#3051)
* Update CONTRIBUTING.md

* Move maintainers to bottom

* 📝
2016-06-18 08:28:53 -06:00
Alhadis
02fe28eb25 Crank luminosity of SRecode Template language's colour 2016-06-16 19:50:39 +10:00
Alhadis
e77530b390 Classify SRecode Templates as a separate language 2016-06-16 19:34:26 +10:00
Alhadis
d0370a3b4c Add a heuristic to disambiguate SubRip text files 2016-06-15 21:17:35 +10:00
Alhadis
ebce4890b2 Add grammar to supply syntax highlighting for SubRip files 2016-06-15 21:09:19 +10:00
Alhadis
1bc87aadb3 Define SubRip Text language and add sample 2016-06-15 21:06:45 +10:00
Alhadis
53a532dc76 Add .srt to Emacs Lisp extensions 2016-06-15 16:51:36 +10:00
John Gardner
0669a83e40 Define TextMate grammar scope for Turing (#3053) 2016-06-14 19:54:25 -06:00
John Gardner
c4ab3b276f Add syntax highlighting for Turing (#3052)
* Change Turing's colour to red

* Add a grammar for Turing
2016-06-14 13:16:26 -06:00
John Gardner
920f825496 Add heuristic for Perl6 and Turing (#3049) 2016-06-13 13:11:56 -06:00
Arfon Smith
f28573420e Set encoding when writing out samples (#3046) 2016-06-13 13:11:04 -06:00
Charlie Briggs
c471990aa3 Add npm-shrinkwrap.json to generated files (#3048)
This file is generated by the `npm shrinkwrap` command. It's large,
generated, and has a noisey diff. One similar file, php composer lock
files, is already ignored.

Closes https://github.com/github/linguist/issues/3045
2016-06-13 13:10:13 -06:00
Horatiu Lazu
baf56666d4 Improve Turing sample (#3040)
* Improve Turing sample

* Move more complex sample to different file

* Undo changes to original file
2016-06-07 06:13:12 -06:00
Arfon Smith
cbbc05f7b8 Merge pull request #3007 from russelldavis/russell-fix-docs
Fix incorrect docs on vendored files & restore docs on generated files
2016-06-07 06:06:18 -06:00
Arfon Smith
051906727b Merge pull request #3038 from Alhadis/rst-switch
Switch grammar used for reStructuredText highlighting
2016-06-05 10:22:03 -06:00
Alhadis
cfd5cbaba0 Remove "orphaned" grammar module 2016-06-05 20:28:24 +10:00
Alhadis
caaad886c3 Kick Travis 2016-06-05 20:11:22 +10:00
Alhadis
2305f9051c Add new grammar 2016-06-05 07:27:32 +10:00
Alhadis
392ab2960f Remove existing reStructuredText grammar 2016-06-05 07:23:10 +10:00
Arfon Smith
1e134b5754 Merge pull request #3037 from Alhadis/clean-grammar
Add syntax highlighting for the Clean language
2016-06-03 14:03:10 -06:00
Alhadis
d356ea28af Add syntax highlighting for the Clean language 2016-06-04 03:57:08 +10:00
Arfon Smith
a015138dcd Merge pull request #3035 from github/cut-release-v4.8.6
Cut release v4.8.6
2016-06-02 19:11:46 -06:00
Arfon Smith
ff99d1bac8 Removing grammar that is breaking the build. 2016-06-02 18:30:51 -06:00
Arfon Smith
f4af4727a1 Bumping to v4.8.6 2016-06-02 11:35:29 -06:00
Arfon Smith
2c3069db77 Grammar updates 2016-06-02 11:33:17 -06:00
Russell Davis
6c07476c45 Fix incorrect docs on vendored files & restore docs on generated files 2016-05-17 23:48:01 -07:00
67 changed files with 1203 additions and 92 deletions

19
.gitmodules vendored
View File

@@ -364,9 +364,6 @@
[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
@@ -678,8 +675,8 @@
path = vendor/grammars/pig-latin
url = https://github.com/goblindegook/sublime-text-pig-latin
[submodule "vendor/grammars/sourcepawn"]
path = vendor/grammars/sourcepawn
url = https://github.com/austinwagner/sublime-sourcepawn
path = vendor/grammars/sourcepawn
url = https://github.com/austinwagner/sublime-sourcepawn
[submodule "vendor/grammars/gdscript"]
path = vendor/grammars/gdscript
url = https://github.com/beefsack/GDScript-sublime
@@ -737,3 +734,15 @@
[submodule "vendor/grammars/Elm"]
path = vendor/grammars/Elm
url = https://github.com/elm-community/Elm.tmLanguage
[submodule "vendor/grammars/language-restructuredtext"]
path = vendor/grammars/language-restructuredtext
url = https://github.com/Lukasa/language-restructuredtext
[submodule "vendor/grammars/atom-language-clean"]
path = vendor/grammars/atom-language-clean
url = https://github.com/timjs/atom-language-clean.git
[submodule "vendor/grammars/language-turing"]
path = vendor/grammars/language-turing
url = https://github.com/Alhadis/language-turing
[submodule "vendor/grammars/atom-language-srt"]
path = vendor/grammars/atom-language-srt
url = https://github.com/314eter/atom-language-srt

View File

@@ -77,8 +77,20 @@ Sometimes getting the tests running can be too much work, especially if you don'
Here's our current build status: [![Build Status](https://api.travis-ci.org/github/linguist.svg?branch=master)](https://travis-ci.org/github/linguist)
## Maintainers
## Releasing
Linguist is maintained with :heart: by:
- @arfon (GitHub Staff)
- @larsbrinkhoff
- @pchaigno
As Linguist is a production dependency for GitHub we have a couple of workflow restrictions:
- Anyone with commit rights can merge Pull Requests provided that there is a :+1: from a GitHub member of staff
- Releases are performed by GitHub staff so we can ensure GitHub.com always stays up to date with the latest release of Linguist and there are no regressions in production.
### Releasing
If you are the current maintainer of this gem:

View File

@@ -43,7 +43,7 @@ special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false
```
Similar to vendored files, Linguist excludes documentation files from your project's language stats. (Unlike vendored files, documentation files are displayed in diffs on github.com.) [lib/linguist/documentation.yml](lib/linguist/documentation.yml) lists common documentation paths and excludes them from the language statistics for your repository.
Just like vendored files, Linguist excludes documentation files from your project's language stats. [lib/linguist/documentation.yml](lib/linguist/documentation.yml) lists common documentation paths and excludes them from the language statistics for your repository.
Use the `linguist-documentation` attribute to mark or unmark paths as documentation.
@@ -53,6 +53,16 @@ project-docs/* linguist-documentation
docs/formatter.rb linguist-documentation=false
```
#### Generated file detection
Not all plain text files are true source files. Generated files like minified js and compiled CoffeeScript can be detected and excluded from language stats. As an added bonus, unlike vendored and documentation files, these files are suppressed in diffs.
```ruby
Linguist::FileBlob.new("underscore.min.js").generated? # => true
```
See [Linguist::Generated#generated?](https://github.com/github/linguist/blob/master/lib/linguist/generated.rb).
### Using Emacs or Vim modelines
Alternatively, you can use Vim or Emacs style modelines to set the language for a single file. Modelines can be placed anywhere within a file and are respected when determining how to syntax-highlight a file on GitHub.com

View File

@@ -18,8 +18,6 @@ http://svn.textmate.org/trunk/Review/Bundles/XQuery.tmbundle:
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
- source.systemverilog
- source.ucfconstraints
https://fan.googlecode.com/hg-history/Build%201.0.55/adm/tools/textmate/Fan.tmbundle/Syntaxes/Fan.tmLanguage:
- source.fan
vendor/grammars/Agda.tmbundle:
- source.agda
vendor/grammars/Alloy.tmbundle:
@@ -178,8 +176,12 @@ vendor/grammars/atom-fsharp/:
- source.fsharp.fsi
- source.fsharp.fsl
- source.fsharp.fsx
vendor/grammars/atom-language-clean:
- source.clean
vendor/grammars/atom-language-purescript/:
- source.purescript
vendor/grammars/atom-language-srt:
- text.srt
vendor/grammars/atom-language-stan/:
- source.stan
vendor/grammars/atom-salt:
@@ -377,6 +379,8 @@ vendor/grammars/language-python:
- text.python.traceback
vendor/grammars/language-renpy:
- source.renpy
vendor/grammars/language-restructuredtext:
- text.restructuredtext
vendor/grammars/language-shellscript:
- source.shell
- text.shell-session
@@ -384,6 +388,8 @@ vendor/grammars/language-supercollider:
- source.supercollider
vendor/grammars/language-toc-wow:
- source.toc
vendor/grammars/language-turing:
- source.turing
vendor/grammars/language-wavefront:
- source.wavefront.mtl
- source.wavefront.obj
@@ -492,8 +498,6 @@ vendor/grammars/python-django.tmbundle:
vendor/grammars/r.tmbundle:
- source.r
- text.tex.latex.rd
vendor/grammars/restructuredtext.tmbundle:
- text.restructuredtext
vendor/grammars/ruby-haml.tmbundle:
- text.haml
vendor/grammars/ruby-slim.tmbundle:
@@ -502,8 +506,8 @@ vendor/grammars/ruby.tmbundle:
- source.ruby
- text.html.erb
vendor/grammars/sas.tmbundle:
- source.SASLog
- source.sas
- source.sas_log
vendor/grammars/sass-textmate-bundle:
- source.sass
vendor/grammars/scala.tmbundle:

View File

@@ -56,6 +56,7 @@ module Linguist
generated_net_specflow_feature_file? ||
composer_lock? ||
node_modules? ||
npm_shrinkwrap? ||
godeps? ||
generated_by_zephir? ||
minified_files? ||
@@ -109,11 +110,11 @@ module Linguist
#
# We assume that if one of the last 2 lines starts with a source map
# reference, then the current file was generated from other files.
#
#
# We use the last 2 lines because the last line might be empty.
#
#
# We only handle JavaScript, no CSS support yet.
#
#
# Returns true or false.
def has_source_map?
return false unless extname.downcase == '.js'
@@ -303,6 +304,13 @@ module Linguist
!!name.match(/node_modules\//)
end
# Internal: Is the blob a generated npm shrinkwrap file.
#
# Returns true or false.
def npm_shrinkwrap?
!!name.match(/npm-shrinkwrap\.json/)
end
# Internal: Is the blob part of Godeps/,
# which are not meant for humans in pull requests.
#
@@ -355,14 +363,14 @@ module Linguist
# on the first line.
#
# GFortran module files contain:
# GFORTRAN module version 'x' created from
# GFORTRAN module version 'x' created from
# on the first line.
#
# Return true of false
def generated_module?
return false unless extname == '.mod'
return false unless lines.count > 1
return lines[0].include?("PCBNEW-LibModule-V") ||
return lines[0].include?("PCBNEW-LibModule-V") ||
lines[0].include?("GFORTRAN module version '")
end

View File

@@ -382,7 +382,7 @@ module Linguist
elsif /(alter module)|(language sql)|(begin( NOT)+ atomic)/i.match(data) || /signal SQLSTATE '[0-9]+'/i.match(data)
#IBM db2
Language["SQLPL"]
elsif /pragma|\$\$PLSQL_|XMLTYPE|sysdate|systimestamp|\.nextval|connect by|AUTHID (DEFINER|CURRENT_USER)/i.match(data) || /constructor\W+function/i.match(data)
elsif /\$\$PLSQL_|XMLTYPE|sysdate|systimestamp|\.nextval|connect by|AUTHID (DEFINER|CURRENT_USER)/i.match(data) || /constructor\W+function/i.match(data)
#Oracle
Language["PLSQL"]
elsif ! /begin|boolean|package|exception/i.match(data)
@@ -391,6 +391,20 @@ module Linguist
end
end
disambiguate ".srt" do |data|
if /^(\d{2}:\d{2}:\d{2},\d{3})\s*(-->)\s*(\d{2}:\d{2}:\d{2},\d{3})$/.match(data)
Language["SubRip Text"]
end
end
disambiguate ".t" do |data|
if /^\s*%|^\s*var\s+\w+\s*:\s*\w+/.match(data)
Language["Turing"]
elsif /^\s*use\s+v6\s*;/.match(data)
Language["Perl6"]
end
end
disambiguate ".toc" do |data|
if /^## |@no-lib-strip@/.match(data)
Language["World of Warcraft Addon Data"]

View File

@@ -571,7 +571,7 @@ Clean:
extensions:
- .icl
- .dcl
tm_scope: none
tm_scope: source.clean
ace_mode: text
Click:
@@ -1083,7 +1083,7 @@ Fantom:
color: "#dbded5"
extensions:
- .fan
tm_scope: source.fan
tm_scope: none
ace_mode: text
Filterscript:
@@ -1443,7 +1443,7 @@ HTML+Django:
- html+jinja
- htmldjango
ace_mode: django
HTML+ECR:
type: markup
tm_scope: text.html.ecr
@@ -3336,6 +3336,14 @@ SQLPL:
- .sql
- .db2
SRecode Template:
type: markup
color: "#348a34"
tm_scope: source.lisp
ace_mode: lisp
extensions:
- .srt
STON:
type: data
group: Smalltalk
@@ -3585,6 +3593,13 @@ Stylus:
tm_scope: source.stylus
ace_mode: stylus
SubRip Text:
type: data
extensions:
- .srt
ace_mode: text
tm_scope: text.srt
SuperCollider:
type: programming
color: "#46390b"
@@ -3738,11 +3753,11 @@ Thrift:
Turing:
type: programming
color: "#45f715"
color: "#cf142b"
extensions:
- .t
- .tu
tm_scope: none
tm_scope: source.turing
ace_mode: text
Turtle:

View File

@@ -21,7 +21,7 @@ module Linguist
def self.cache
@cache ||= begin
serializer = defined?(Yajl) ? Yajl : YAML
serializer.load(File.read(PATH))
serializer.load(File.read(PATH, encoding: 'utf-8'))
end
end

View File

@@ -153,6 +153,9 @@
- (^|/)tiny_mce([^.]*)\.js$
- (^|/)tiny_mce/(langs|plugins|themes|utils)
# Ace Editor
- (^|/)ace-builds/
# MathJax
- (^|/)MathJax/

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "4.8.5"
VERSION = "4.8.7"
end

View File

@@ -0,0 +1,45 @@
;;; linguist.srt --- Template for linguist-example-mode
;; Not copyrighted whatsoever.
;;
;; GPL can bite my shiny metal ass.
;;
;; GitHub: 1
;; Stallman: 0
set mode "default"
set comment_start ";"
set LICENSE "It's public domain, baby. This was written for the sole
purpose of the format's inclusion and recognition by GitHub Linguist.
This block of multiline text was added because every other .srt file
I could find was GPL-licensed and had long-winded copyright blobs in
the file's header. Also, check out my sick line-wrapping abilities."
set DOLLAR "$"
context file
template license
----
{{LICENSE:srecode-comment-prefix}}
----
template filecomment :file :user :time
----
{{comment_start}} {{FILENAME}} --- {{^}}
{{comment_prefix}} YUO WAN GPL?
{{comment_prefix}}
{{comment_prefix}} Copyright (C) {{YEAR}} {{?AUTHOR}}
{{comment_prefix}}
{{comment_prefix}} TUO BAD
{{comment_prefix}} WE EXPAT PEOPLE
{{comment_prefix}} {{EXPLETIVE}} YOU!
{{>:copyright}}
{{comment_end}}
----
;; end

View File

@@ -0,0 +1,240 @@
1
00:00:01,250 --> 00:00:03,740
Adding NCL language.
2
00:00:04,600 --> 00:00:08,730
Thanks for the pull request! Do you know if these files are NCL too?
3
00:00:09,800 --> 00:00:13,700
Those are poorly-named documentation files for NCL functions.
4
00:00:14,560 --> 00:00:17,200
- What's better?
- This is better.
5
00:00:18,500 --> 00:00:23,000
- Would it be correct to recognise these files as text?
- Yes.
6
00:00:23,890 --> 00:00:30,000
In that case, could you add "NCL" to the text entry in languages.yml too?
7
00:00:30,540 --> 00:00:35,250
I added the example to "Text" and updated the license in the grammar submodule.
8
00:00:38,500 --> 00:00:42,360
Cloning the submodule fails for me in local with this URL.
9
00:00:42,360 --> 00:00:45,250
Could you use Git or HTTPS...?
10
00:00:46,810 --> 00:00:50,000
I updated the grammar submodule link to HTTPS.
11
00:00:51,100 --> 00:00:57,000
It's still failing locally. I don't think you can just update the .gitmodules file.
12
00:00:57,750 --> 00:01:03,000
You'll probably have to remove the submodule and add it again to be sure.
13
00:01:04,336 --> 00:01:11,800
- I'll see first if it's not an issue on my side...
- I removed the submodule and added it back with HTTPS.
14
00:01:13,670 --> 00:01:18,000
I tested the detection of NCL files with 2000 samples.
15
00:01:18,000 --> 00:01:25,000
The Bayesian classifier doesn't seem to be very good at distinguishing text from NCL.
16
00:01:25,000 --> 00:01:30,740
We could try to improve it by adding more samples, or we can define a new heuristic rule.
17
00:01:31,300 --> 00:01:36,200
- Do you want me to send you the sample files?
- Yes, please do.
18
00:01:37,500 --> 00:01:39,500
In your inbox.
19
00:01:41,285 --> 00:01:48,216
- So if I manually go through these and sort out the errors, would that help?
- Not really.
20
00:01:48,540 --> 00:01:55,145
It's a matter of keywords so there's not much to do there except for adding new samples.
21
00:01:55,447 --> 00:02:02,000
If adding a few more samples doesn't improve things, we'll see how to define a new heuristic rule.
22
00:02:04,740 --> 00:02:09,600
- I added quite a few NCL samples.
- That's a bit over the top, isn't it?
23
00:02:10,250 --> 00:02:16,000
We currently can't add too many samples because of #2117.
24
00:02:18,000 --> 00:02:20,830
(sigh) I decreased the number of added samples.
25
00:02:21,630 --> 00:02:25,300
Could you test the detection results in local with the samples I gave you?
26
00:02:26,000 --> 00:02:28,670
- What is the command to run that test?
- Here...
27
00:02:28,716 --> 00:02:38,650
[Coding intensifies]
28
00:02:38,650 --> 00:02:43,330
It is getting hung up on a false detection of Frege in one of the Text samples.
29
00:02:43,540 --> 00:02:46,115
Do you have any suggestions for implementing a heuristic?
30
00:02:47,640 --> 00:02:55,200
#2441 should fix this. In the meantime, you can change this in "test_heuristics.rb"
31
00:02:55,165 --> 00:02:57,240
Why did you have to change this?
32
00:02:57,777 --> 00:03:04,480
- It doesn't work for me unless I do that.
- Hum, same for me. Arfon, does it work for you?
33
00:03:04,920 --> 00:03:08,830
Requiring linguist/language doesn't work for me either.
34
00:03:09,300 --> 00:03:13,885
We restructured some of the requires a while ago and I think this is just out-of-date code.
35
00:03:14,065 --> 00:03:20,950
From a large sample of known NCL files taken from Github, it's now predicting with about 98% accuracy.
36
00:03:21,183 --> 00:03:28,000
For a large sample of other files with the NCL extension, it is around 92%.
37
00:03:27,880 --> 00:03:30,950
From those, nearly all of the errors come from one GitHub repository,
38
00:03:30,950 --> 00:03:34,160
and they all contain the text strings, "The URL" and "The Title".
39
00:03:35,660 --> 00:03:43,260
- Do you mean 92% files correctly identified as text?
- Yes, it correctly identifies 92% as text.
40
00:03:44,000 --> 00:03:46,150
I'd really like to see this dramatically reduced.
41
00:03:46,150 --> 00:03:51,150
What happens if we reduce to around 5 NCL sample files?
42
00:03:51,150 --> 00:03:52,600
Does Linguist still do a reasonable job?
43
00:03:53,470 --> 00:03:58,190
I reduced it to 16 NCL samples and 8 text samples.
44
00:03:58,190 --> 00:04:01,720
It correctly classifies my whole set of known NCL files.
45
00:04:01,870 --> 00:04:05,730
I tried with 5 samples but could not get the same level of accuracy.
46
00:04:06,670 --> 00:04:10,400
It incorrectly classifies all of the NCL files in this GitHub repository.
47
00:04:11,130 --> 00:04:14,660
All of these files contain the text strings, "THE_URL:" and "THE_TITLE:".
48
00:04:14,660 --> 00:04:19,500
It did not misclassify any other text-files with the extension NCL.
49
00:04:19,970 --> 00:04:25,188
With 100% accuracy? Does that mean it that the results are better with less samples??
50
00:04:25,610 --> 00:04:31,190
I also removed a sample text-file which should have been classified as an NCL file.
51
00:04:31,000 --> 00:04:35,895
I think that probably made most of the difference, although I didn't test it atomically.
52
00:04:35,895 --> 00:04:38,370
Okay, that makes more sense.
53
00:04:39,515 --> 00:04:43,450
I don't get the same results for the text files. Full results here.
54
00:04:44,650 --> 00:04:50,000
They all look correctly classified to me, except for the ones in Fanghuan's repository.
55
00:04:50,000 --> 00:04:55,920
I manually went through all of the ones where I didn't already know based on the filename or the repository owner.
56
00:04:56,526 --> 00:05:00,000
[Presses button] It now correctly classifies all of my test files.
57
00:05:00,000 --> 00:05:05,970
R. Pavlick, thanks for this. These changes will be live in the next release of Linguist. In the next couple of weeks.
58
00:05:05,970 --> 00:05:07,450
Great! Thanks.

662
samples/Turing/simplegame.t Normal file
View File

@@ -0,0 +1,662 @@
%This is a comment
var x : array 0 .. 100 of int
var rangeX, rangeY, loopFor : int := 0
setscreen ("graphics:696;400,nobuttonbar")
setscreen ("nocursor")
setscreen ("noecho")
var colourP : string := "Yellow"
var title : int := Font.New ("Algerian:60")
var subtitle : int := Font.New ("Algerian:20")
var xValue, yValue, font1, font2, instructionsTitle : int
var scoreR, scoreY, button : int := 0
var scoreRS, scoreYS, PreventFor : string
var win : string := "N"
var full, samePlayer : boolean := false
font1 := Font.New ("Algerian:20")
font2 := Font.New ("TimesNewRoman:15")
instructionsTitle := Font.New ("Algerian:35")
var shouldPlay : boolean := true
forward proc game
for i : 0 .. 100
x (i) := 0
end for
proc pauseProgram
var reply : string (1)
getch (reply)
end pauseProgram
process backgroundMusic
loop
exit when shouldPlay = false
Music.PlayFile ("music.MP3")
end loop
end backgroundMusic
proc winner
cls
win := "N"
for i : 1 .. 100
x (i) := 0
end for
drawfillbox (0, 0, 696, 400, black)
scoreRS := "Red Wins: " + intstr (scoreR)
scoreYS := "Yellow Wins: " + intstr (scoreY)
Font.Draw ("", 190, 320, title, 48)
Font.Draw (scoreRS, 0, 250, font1, 52)
Font.Draw (scoreYS, 0, 220, font1, 52)
Font.Draw ("Press any Key to continue.", 180, 100, subtitle, 12)
pauseProgram
game
end winner
body proc game
for i : 1 .. 100
x (i) := 0
end for
cls
drawfillbox (0, 0, 700, 400, black)%Grid
Draw.ThickLine (0, 400, 0, 0, 5, 48)
Draw.ThickLine (696, 400, 696, 0, 5, 48)
Draw.ThickLine (3, 0, 696, 0, 5, 48)
Draw.ThickLine (696, 0, 696, 70, 5, 48)
Draw.ThickLine (610, 70, 87, 70, 5, 48)
Draw.ThickLine (87, 70, 87, 400, 5, 48)
Draw.ThickLine (87, 400, 0, 400, 5, 48)
Draw.ThickLine (173, 70, 173, 400, 5, 48)
Draw.ThickLine (260, 70, 260, 400, 5, 48)
Draw.ThickLine (347, 70, 347, 400, 5, 48)
Draw.ThickLine (435, 70, 435, 400, 5, 48)
Draw.ThickLine (521, 70, 521, 400, 5, 48)
Draw.ThickLine (609, 70, 609, 400, 5, 48)
Draw.ThickLine (0, 70, 87, 70, 2, 11) %NEW!
Draw.ThickLine (0, 120, 87, 120, 2, 11)
Draw.ThickLine (0, 170, 87, 170, 2, 11)
Draw.ThickLine (0, 220, 87, 220, 2, 11)
Draw.ThickLine (0, 270, 87, 270, 2, 11)
Draw.ThickLine (0, 320, 87, 320, 2, 11)
Draw.ThickLine (0, 370, 87, 370, 2, 11)
Draw.ThickLine (609, 70, 696, 70, 2, 11) %Part 2
Draw.ThickLine (609, 120, 696, 120, 2, 11)
Draw.ThickLine (609, 170, 696, 170, 2, 11)
Draw.ThickLine (609, 220, 696, 220, 2, 11)
Draw.ThickLine (609, 270, 696, 270, 2, 11)
Draw.ThickLine (609, 320, 696, 320, 2, 11)
Draw.ThickLine (609, 370, 696, 370, 2, 11)
loop
if colourP = "Yellow" then
if button = 1 then
if (rangeX >= 87 and rangeX <= 173) then
%Drop on right corner (now verifies height)
if x (1) = 0 then
x (1) := 1
loopFor := 300
elsif x (2) = 0 then
x (2) := 1
loopFor := 250
elsif x (3) = 0 then
x (3) := 1
loopFor := 200
elsif x (4) = 0 then
x (4) := 1
loopFor := 150
elsif x (5) = 0 then
x (5) := 1
loopFor := 100
elsif x (6) = 0 then
x (6) := 1
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (135, 401 - i, 25, 25, black)
drawfilloval (135, 400 - i, 25, 25, yellow)
delay (1)
end for
end if
elsif (rangeX >= 174 and rangeX <= 260) then
if x (7) = 0 then %Drop on right corner (now verifies height)
x (7) := 1
loopFor := 300
elsif x (8) = 0 then
x (8) := 1
loopFor := 250
elsif x (9) = 0 then
x (9) := 1
loopFor := 200
elsif x (10) = 0 then
x (10) := 1
loopFor := 150
elsif x (11) = 0 then
x (11) := 1
loopFor := 100
elsif x (12) = 0 then
x (12) := 1
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (222, 401 - i, 25, 25, black)
drawfilloval (222, 400 - i, 25, 25, yellow)
delay (1)
end for
end if
elsif (rangeX >= 261 and rangeX <= 347) then
if x (13) = 0 then%Drop on right corner (now verifies height)
x (13) := 1
loopFor := 300
elsif x (14) = 0 then
x (14) := 1
loopFor := 250
elsif x (15) = 0 then
x (15) := 1
loopFor := 200
elsif x (16) = 0 then
x (16) := 1
loopFor := 150
elsif x (17) = 0 then
x (17) := 1
loopFor := 100
elsif x (18) = 0 then
x (18) := 1
loopFor := 50
else
full := true
end if
if full = true then
full := false
samePlayer := true
else
for i : 1 .. loopFor
drawfilloval (309, 401 - i, 25, 25, black)
drawfilloval (309, 400 - i, 25, 25, yellow)
delay (1)
end for
end if
elsif (rangeX >= 348 and rangeX <= 434) then
if x (19) = 0 then %Drop on right corner (now verifies height)
x (19) := 1
loopFor := 300
elsif x (20) = 0 then
x (20) := 1
loopFor := 250
elsif x (21) = 0 then
x (21) := 1
loopFor := 200
elsif x (22) = 0 then
x (22) := 1
loopFor := 150
elsif x (23) = 0 then
x (23) := 1
loopFor := 100
elsif x (24) = 0 then
x (24) := 1
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (396, 401 - i, 25, 25, black)
drawfilloval (396, 400 - i, 25, 25, yellow)
delay (1)
end for
end if
elsif (rangeX >= 435 and rangeX <= 521) then
if x (25) = 0 then %Drop on right corner (now verifies height)
x (25) := 1
loopFor := 300
elsif x (26) = 0 then
x (26) := 1
loopFor := 250
elsif x (27) = 0 then
x (27) := 1
loopFor := 200
elsif x (28) = 0 then
x (28) := 1
loopFor := 150
elsif x (29) = 0 then
x (29) := 1
loopFor := 100
elsif x (30) = 0 then
x (30) := 1
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (483, 401 - i, 25, 25, black)
drawfilloval (483, 400 - i, 25, 25, yellow)
delay (1)
end for
end if
elsif (rangeX >= 522 and rangeX <= 609) then
if x (31) = 0 then %Drop on right corner (now verifies height)
x (31) := 1
loopFor := 300
elsif x (32) = 0 then
x (32) := 1
loopFor := 250
elsif x (33) = 0 then
x (33) := 1
loopFor := 200
elsif x (34) = 0 then
x (34) := 1
loopFor := 150
elsif x (35) = 0 then
x (35) := 1
loopFor := 100
elsif x (36) = 0 then
x (36) := 1
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (570, 401 - i, 25, 25, black)
drawfilloval (570, 400 - i, 25, 25, yellow)
delay (1)
end for
end if
end if
if samePlayer = true then
samePlayer := false
else
colourP := "Red"
end if
end if
else
if button = 1 then
if (rangeX >= 87 and rangeX <= 173) then
if x (1) = 0 then %Drop on right corner (now verifies height)
x (1) := 2
loopFor := 300
elsif x (2) = 0 then
x (2) := 2
loopFor := 250
elsif x (3) = 0 then
x (3) := 2
loopFor := 200
elsif x (4) = 0 then
x (4) := 2
loopFor := 150
elsif x (5) = 0 then
x (5) := 2
loopFor := 100
elsif x (6) = 0 then
x (6) := 2
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (135, 401 - i, 25, 25, black)
drawfilloval (135, 400 - i, 25, 25, 12)
delay (1)
end for
end if
elsif (rangeX >= 174 and rangeX <= 260) then
if x (7) = 0 then %Drop on right corner (now verifies height)
x (7) := 2
loopFor := 300
elsif x (8) = 0 then
x (8) := 2
loopFor := 250
elsif x (9) = 0 then
x (9) := 2
loopFor := 200
elsif x (10) = 0 then
x (10) := 2
loopFor := 150
elsif x (11) = 0 then
x (11) := 2
loopFor := 100
elsif x (12) = 0 then
x (12) := 2
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (222, 401 - i, 25, 25, black)
drawfilloval (222, 400 - i, 25, 25, 12)
delay (1)
end for
end if
elsif (rangeX >= 261 and rangeX <= 347) then
if x (13) = 0 then %Drop on right corner (now verifies height)
x (13) := 2
loopFor := 300
elsif x (14) = 0 then
x (14) := 2
loopFor := 250
elsif x (15) = 0 then
x (15) := 2
loopFor := 200
elsif x (16) = 0 then
x (16) := 2
loopFor := 150
elsif x (17) = 0 then
x (17) := 2
loopFor := 100
elsif x (18) = 0 then
x (18) := 2
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
samePlayer := true
else
for i : 1 .. loopFor
drawfilloval (309, 401 - i, 25, 25, black)
drawfilloval (309, 400 - i, 25, 25, 12)
delay (1)
end for
end if
elsif (rangeX >= 348 and rangeX <= 434) then
%Drop on right corner (now verifies height)
if x (19) = 0 then
x (19) := 2
loopFor := 300
elsif x (20) = 0 then
x (20) := 2
loopFor := 250
elsif x (21) = 0 then
x (21) := 2
loopFor := 200
elsif x (22) = 0 then
x (22) := 2
loopFor := 150
elsif x (23) = 0 then
x (23) := 2
loopFor := 100
elsif x (24) = 0 then
x (24) := 2
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (396, 401 - i, 25, 25, black)
drawfilloval (396, 400 - i, 25, 25, 12)
delay (1)
end for
end if
elsif (rangeX >= 435 and rangeX <= 521) then
%Drop on right corner (now verifies height)
if x (25) = 0 then
x (25) := 2
loopFor := 300
elsif x (26) = 0 then
x (26) := 2
loopFor := 250
elsif x (27) = 0 then
x (27) := 2
loopFor := 200
elsif x (28) = 0 then
x (28) := 2
loopFor := 150
elsif x (29) = 0 then
x (29) := 2
loopFor := 100
elsif x (30) = 0 then
x (30) := 2
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (483, 401 - i, 25, 25, black)
drawfilloval (483, 400 - i, 25, 25, 12)
delay (1)
end for
end if
elsif (rangeX >= 522 and rangeX <= 609) then
%Drop on right corner (now verifies height)
if x (31) = 0 then
x (31) := 2
loopFor := 300
elsif x (32) = 0 then
x (32) := 2
loopFor := 250
elsif x (33) = 0 then
x (33) := 2
loopFor := 200
elsif x (34) = 0 then
x (34) := 2
loopFor := 150
elsif x (35) = 0 then
x (35) := 2
loopFor := 100
elsif x (36) = 0 then
x (36) := 2
loopFor := 50
else
full := true
samePlayer := true
end if
if full = true then
full := false
else
for i : 1 .. loopFor
drawfilloval (570, 401 - i, 25, 25, black)
drawfilloval (570, 400 - i, 25, 25, 12)
delay (1)
end for
end if
end if
if samePlayer then
samePlayer := false
else
colourP := "Yellow"
end if
end if
end if
mousewhere (rangeX, rangeY, button)
%Detect Winner - Horizontal Verification
for i : 1 .. 18
if (x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = x (i + 18) and x (i) = 1) then
scoreY := scoreY + 1
win := "Y" %Red
elsif x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = x (i + 18) and x (i) = 2 then
scoreR := scoreR + 1
win := "Y"
if i > 6 then
if x (i - 6) = x (i) and x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = 2 then
scoreR := scoreR + 1 %Yellow
win := "Y"
elsif x (i - 6) = x (i) and x (i) = x (i + 6) and x (i) = x (i + 12) and x (i) = 1 then
scoreY := scoreY + 1 %Yellow
win := "Y"
end if
end if
end if
end for
%Verticle Detection
for i : 1 .. 36 by 6
if (x (i) = x (i + 1) and x (i) = x (i + 2) and x (i) = x (i + 3) and x (i) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i) = x (i + 1) and x (i) = x (i + 2) and x (i) = x (i + 3) and x (i) = 2) then
scoreR := scoreR + 1
win := "Y"
elsif (x (i + 1) = x (i + 2) and x (i + 1) = x (i + 3) and x (i + 1) = x (i + 4) and x (i + 1) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i + 1) = x (i + 2) and x (i + 1) = x (i + 3) and x (i + 1) = x (i + 4) and x (i + 1) = 2) then
scoreR := scoreR + 1
win := "Y"
elsif (x (i + 2) = x (i + 3) and x (i + 2) = x (i + 4) and x (i + 2) = x (i + 5) and x (i + 2) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i + 2) = x (i + 3) and x (i + 2) = x (i + 4) and x (i + 2) = x (i + 5) and x (i + 2) = 2) then
scoreR := scoreR + 1
win := "Y"
end if
end for
for i : 1 .. 36 %Positive Slope
if (x (i) = x (i + 7) and x (i) = x (i + 14) and x (i) = x (i + 21) and x (i) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i) = x (i + 7) and x (i) = x (i + 14) and x (i) = x (i + 21) and x (i) = 2) then
scoreR := scoreR + 1
win := "Y"
elsif (x (i + 1) = x (i + 8) and x (i + 1) = x (i + 15) and x (i + 1) = x (i + 22) and x (i + 1) = 2) then
scoreR := scoreR + 1
win := "Y"
elsif (x (i + 1) = x (i + 8) and x (i + 1) = x (i + 15) and x (i + 1) = x (i + 22) and x (i + 1) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i + 2) = x (i + 9) and x (i + 2) = x (i + 16) and x (i + 2) = x (i + 23) and x (i + 2) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i + 2) = x (i + 9) and x (i + 2) = x (i + 16) and x (i + 2) = x (i + 23) and x (i + 2) = 2) then
scoreR := scoreR + 1
win := "Y"
elsif (x (1) = x (7) and x (1) = x (13) and x (1) = x (19) and x (1) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (1) = x (7) and x (1) = x (13) and x (1) = x (19) and x (1) = 2) then
scoreR := scoreR + 1
win := "Y"
end if
end for
for i : 1 .. 70 %Negative Slope
if i > 24 then
if (x (i) = x (i - 5) and x (i) = x (i - 10) and x (i) = x (i - 15) and x (i) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i) = x (i - 5) and x (i) = x (i - 10) and x (i) = x (i - 15) and x (i) = 2) then
scoreR := scoreR + 1
win := "Y"
elsif (x (i + 1) = x (i - 6) and x (i - 1) = x (i - 11) and x (i - 1) = x (i - 16) and x (i + 1) = 2) then
scoreR := scoreR + 1
win := "Y"
elsif (x (i + 1) = x (i - 6) and x (i - 1) = x (i - 11) and x (i - 1) = x (i - 16) and x (i + 1) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i + 2) = x (i - 7) and x (i - 2) = x (i - 12) and x (i - 2) = x (i - 17) and x (i + 2) = 1) then
scoreY := scoreY + 1
win := "Y"
elsif (x (i + 2) = x (i - 7) and x (i + 2) = x (i - 12) and x (i - 2) = x (i - 17) and x (i + 2) = 2) then
scoreR := scoreR + 1
win := "Y"
end if
end if
end for
exit when win = "Y"
end loop
winner
end game
proc mainMenu
drawfillbox (0, 0, 696, 400, black)
Font.Draw ("", 295, 220, font1, 48)
Font.Draw ("", 251, 150, font1, 48)
Font.Draw ("", 305, 79, font1, 48)
loop
Font.Draw ("Connect4", 155, 290, title, 52)
Mouse.Where (xValue, yValue, button)
if xValue >= 215 and xValue <= 455 then
if yValue >= 200 and yValue <= 250 then
if button = 1 then
delay (1000)
game
exit
end if
drawbox (215, 200, 455, 250, 48)
else
drawbox (215, 200, 455, 250, black)
end if
if yValue >= 130 and yValue <= 180 then
if button = 1 then
drawfillbox (0, 0, 696, 400, black)
Font.Draw ("", 70, 350, instructionsTitle, 48)
Font.Draw ("", 0, 320, font2, 52)
Font.Draw ("", 0, 280, font2, 52)
Font.Draw ("", 0, 240, font2, 52)
Font.Draw ("", 0, 200, font2, 52)
Font.Draw ("", 245, 75, font2, 14)
pauseProgram
mainMenu
end if
drawbox (215, 130, 455, 180, 48)
else
drawbox (215, 130, 455, 180, black)
end if
if yValue >= 60 and yValue <= 110 then
if button = 1 then
shouldPlay := false
exit
end if
drawbox (215, 60, 455, 110, 48)
else
drawbox (215, 60, 455, 110, black)
end if
end if
exit when button = 1
end loop
end mainMenu
proc intro
drawfillbox (0, 0, 696, 400, black)
for i : 1 .. 400
drawfillbox (0, 0, 696, 400, black)
Font.Draw ("", 560 - i, 250, title, 48)
Font.Draw ("", -255 + i, 220, subtitle, 52)
delay (4)
end for
for i : 1 .. 390
drawfilloval (40, 401 - i, 20, 20, black)
drawfilloval (656, 401 - i, 20, 20, black)
drawfilloval (656, 400 - i, 20, 20, 12)
drawfilloval (40, 400 - i, 20, 20, yellow)
delay (3)
end for
loop
drawfillbox (0, 0, 696, 100, black)
Font.Draw ("Press any Key to Continue.", 169, 20, subtitle, 12)
delay (300)
drawfillbox (0, 0, 696, 100, black)
Font.Draw ("Press any Key to Continue.", 169, 20, subtitle, 14)
delay (300)
exit when hasch
end loop
mainMenu
end intro
%fork backgroundMusic
intro

View File

@@ -1,19 +1,19 @@
% Accepts a number and calculates its factorial
function factorial (n: int) : real
if n = 0 then
result 1
else
result n * factorial (n - 1)
if n = 0 then
result 1
else
result n * factorial (n - 1)
end if
end factorial
var n: int
loop
put "Please input an integer: " ..
get n
exit when n >= 0
put "Input must be a non-negative integer."
put "Please input an integer: " ..
get n
exit when n >= 0
put "Input must be a non-negative integer."
end loop
put "The factorial of ", n, " is ", factorial (n)
put "The factorial of ", n, " is ", factorial (n)

View File

@@ -411,6 +411,10 @@ class TestFileBlob < Minitest::Test
assert sample_blob("public/javascripts/tiny_mce_popup.js").vendored?
assert sample_blob("public/javascripts/tiny_mce_src.js").vendored?
# Ace Editor
assert sample_blob("ace-builds/src/ace.js").vendored?
assert sample_blob("static/project/ace-builds/src/ace.js").vendored?
# AngularJS
assert sample_blob("public/javascripts/angular.js").vendored?
assert sample_blob("public/javascripts/angular.min.js").vendored?

View File

@@ -36,7 +36,7 @@ class TestGenerated < Minitest::Test
generated_loading_data(File.join(samples_path, name))
end
def test_check_generated
def test_check_generated
# Xcode project files
generated_sample_without_loading_data("Binary/MainMenu.nib")
generated_sample_without_loading_data("Dummy/foo.xcworkspacedata")
@@ -51,6 +51,9 @@ class TestGenerated < Minitest::Test
# Node modules
generated_sample_without_loading_data("Dummy/node_modules/foo.js")
# npm shrinkwrap file
generated_sample_without_loading_data("Dummy/npm-shrinkwrap.json")
# Godep saved dependencies
generated_sample_without_loading_data("Godeps/Godeps.json")
generated_sample_without_loading_data("Godeps/_workspace/src/github.com/kr/s3/sign.go")

View File

@@ -0,0 +1,25 @@
---
type: grammar
name: atom-language-clean
license: mit
---
Copyright (c) 2015 <Your name here>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,25 @@
---
type: grammar
name: atom-language-srt
license: mit
---
Copyright (c) 2016 Pieter Goetschalckx
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,26 @@
---
type: grammar
name: language-restructuredtext
license: mit
---
MIT License
Copyright (c) 2014-2016 Cory Benfield
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,18 @@
---
type: grammar
name: language-turing
license: isc
---
Copyright (c) 2016, John Gardner
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View File

@@ -1,15 +0,0 @@
---
type: grammar
name: restructuredtext.tmbundle
license: permissive
curated: true
---
If not otherwise specified (see below), files in this repository fall under the following license:
Permission to copy, use, modify, sell and distribute this
software is granted. This software is provided "as is" without
express or implied warranty, and with no claim as to its
suitability for any purpose.
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.