mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7fe1fee66 | ||
|
|
94367cc460 | ||
|
|
72bec1fddc | ||
|
|
4e2eba4ef8 | ||
|
|
10457b6639 | ||
|
|
01de40faaa | ||
|
|
62d285fce6 | ||
|
|
0056095e8c | ||
|
|
d6dc3a3991 | ||
|
|
b524461b7c | ||
|
|
76d41697aa | ||
|
|
32147b629e | ||
|
|
e7b5e25bf8 | ||
|
|
d761658f8b | ||
|
|
3719214aba | ||
|
|
47b109be36 | ||
|
|
1ec4db97c2 | ||
|
|
9fe5fe0de2 | ||
|
|
b36ea7ac9d | ||
|
|
625b06c30d | ||
|
|
28bce533b2 | ||
|
|
93ec1922cb | ||
|
|
5d09fb67dd | ||
|
|
93dcb61742 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
|
*.gem
|
||||||
/Gemfile.lock
|
/Gemfile.lock
|
||||||
.bundle/
|
.bundle/
|
||||||
.idea
|
.idea
|
||||||
|
|||||||
11
.gitmodules
vendored
11
.gitmodules
vendored
@@ -244,15 +244,12 @@
|
|||||||
[submodule "vendor/grammars/cpp-qt.tmbundle"]
|
[submodule "vendor/grammars/cpp-qt.tmbundle"]
|
||||||
path = vendor/grammars/cpp-qt.tmbundle
|
path = vendor/grammars/cpp-qt.tmbundle
|
||||||
url = https://github.com/textmate/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"]
|
[submodule "vendor/grammars/d.tmbundle"]
|
||||||
path = vendor/grammars/d.tmbundle
|
path = vendor/grammars/d.tmbundle
|
||||||
url = https://github.com/textmate/d.tmbundle
|
url = https://github.com/textmate/d.tmbundle
|
||||||
[submodule "vendor/grammars/diff.tmbundle"]
|
[submodule "vendor/grammars/diff.tmbundle"]
|
||||||
path = vendor/grammars/diff.tmbundle
|
path = vendor/grammars/diff.tmbundle
|
||||||
url = https://github.com/kivikakk/diff.tmbundle
|
url = https://github.com/textmate/diff.tmbundle
|
||||||
[submodule "vendor/grammars/dylan.tmbundle"]
|
[submodule "vendor/grammars/dylan.tmbundle"]
|
||||||
path = vendor/grammars/dylan.tmbundle
|
path = vendor/grammars/dylan.tmbundle
|
||||||
url = https://github.com/textmate/dylan.tmbundle
|
url = https://github.com/textmate/dylan.tmbundle
|
||||||
@@ -815,3 +812,9 @@
|
|||||||
[submodule "vendor/grammars/atom-language-rust"]
|
[submodule "vendor/grammars/atom-language-rust"]
|
||||||
path = vendor/grammars/atom-language-rust
|
path = vendor/grammars/atom-language-rust
|
||||||
url = https://github.com/zargony/atom-language-rust
|
url = https://github.com/zargony/atom-language-rust
|
||||||
|
[submodule "vendor/grammars/language-css"]
|
||||||
|
path = vendor/grammars/language-css
|
||||||
|
url = https://github.com/atom/language-css
|
||||||
|
[submodule "vendor/grammars/language-regexp"]
|
||||||
|
path = vendor/grammars/language-regexp
|
||||||
|
url = https://github.com/Alhadis/language-regexp
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ To add support for a new extension:
|
|||||||
In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken:
|
In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken:
|
||||||
|
|
||||||
0. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`.
|
0. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`.
|
||||||
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping **@arfon** or **@bkeepers** to help with this) to ensure we're not misclassifying files.
|
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping **@bkeepers** to help with this) to ensure we're not misclassifying files.
|
||||||
0. If the Bayesian classifier does a bad job with the sample `.yourextension` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
|
0. If the Bayesian classifier does a bad job with the sample `.yourextension` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
|
||||||
|
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ To add support for a new language:
|
|||||||
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:
|
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. 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. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping **@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.
|
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!
|
Remember, the goal here is to try and avoid false positives!
|
||||||
@@ -80,7 +80,6 @@ Here's our current build status: [
|
- **@brandonblack** (GitHub staff)
|
||||||
- **@larsbrinkhoff**
|
- **@larsbrinkhoff**
|
||||||
- **@lildude** (GitHub staff)
|
- **@lildude** (GitHub staff)
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2011-2016 GitHub, Inc.
|
Copyright (c) 2017 GitHub, Inc.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
Permission is hereby granted, free of charge, to any person
|
||||||
obtaining a copy of this software and associated documentation
|
obtaining a copy of this software and associated documentation
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|||||||
s.add_dependency 'charlock_holmes', '~> 0.7.3'
|
s.add_dependency 'charlock_holmes', '~> 0.7.3'
|
||||||
s.add_dependency 'escape_utils', '~> 1.1.0'
|
s.add_dependency 'escape_utils', '~> 1.1.0'
|
||||||
s.add_dependency 'mime-types', '>= 1.19'
|
s.add_dependency 'mime-types', '>= 1.19'
|
||||||
s.add_dependency 'rugged', '0.25.0b10'
|
s.add_dependency 'rugged', '>= 0.25.1'
|
||||||
|
|
||||||
s.add_development_dependency 'minitest', '>= 5.0'
|
s.add_development_dependency 'minitest', '>= 5.0'
|
||||||
s.add_development_dependency 'mocha'
|
s.add_development_dependency 'mocha'
|
||||||
|
|||||||
@@ -234,8 +234,6 @@ vendor/grammars/cpp-qt.tmbundle:
|
|||||||
- source.qmake
|
- source.qmake
|
||||||
vendor/grammars/creole:
|
vendor/grammars/creole:
|
||||||
- text.html.creole
|
- text.html.creole
|
||||||
vendor/grammars/css.tmbundle:
|
|
||||||
- source.css
|
|
||||||
vendor/grammars/cucumber-tmbundle:
|
vendor/grammars/cucumber-tmbundle:
|
||||||
- source.ruby.rspec.cucumber.steps
|
- source.ruby.rspec.cucumber.steps
|
||||||
- text.gherkin.feature
|
- text.gherkin.feature
|
||||||
@@ -369,6 +367,8 @@ vendor/grammars/language-csound:
|
|||||||
- source.csound
|
- source.csound
|
||||||
- source.csound-document
|
- source.csound-document
|
||||||
- source.csound-score
|
- source.csound-score
|
||||||
|
vendor/grammars/language-css:
|
||||||
|
- source.css
|
||||||
vendor/grammars/language-emacs-lisp:
|
vendor/grammars/language-emacs-lisp:
|
||||||
- source.emacs.lisp
|
- source.emacs.lisp
|
||||||
vendor/grammars/language-fontforge:
|
vendor/grammars/language-fontforge:
|
||||||
@@ -415,6 +415,10 @@ vendor/grammars/language-povray:
|
|||||||
vendor/grammars/language-python:
|
vendor/grammars/language-python:
|
||||||
- text.python.console
|
- text.python.console
|
||||||
- text.python.traceback
|
- text.python.traceback
|
||||||
|
vendor/grammars/language-regexp:
|
||||||
|
- source.regexp
|
||||||
|
- source.regexp.comment
|
||||||
|
- source.regexp.extended
|
||||||
vendor/grammars/language-renpy:
|
vendor/grammars/language-renpy:
|
||||||
- source.renpy
|
- source.renpy
|
||||||
vendor/grammars/language-restructuredtext:
|
vendor/grammars/language-restructuredtext:
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ module Linguist
|
|||||||
# Returns sorted Array of result pairs. Each pair contains the
|
# Returns sorted Array of result pairs. Each pair contains the
|
||||||
# String language name and a Float score.
|
# String language name and a Float score.
|
||||||
def classify(tokens, languages)
|
def classify(tokens, languages)
|
||||||
return [] if tokens.nil?
|
return [] if tokens.nil? || languages.empty?
|
||||||
tokens = Tokenizer.tokenize(tokens) if tokens.is_a?(String)
|
tokens = Tokenizer.tokenize(tokens) if tokens.is_a?(String)
|
||||||
scores = {}
|
scores = {}
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,8 @@ module Linguist
|
|||||||
generated_jflex? ||
|
generated_jflex? ||
|
||||||
generated_grammarkit? ||
|
generated_grammarkit? ||
|
||||||
generated_roxygen2? ||
|
generated_roxygen2? ||
|
||||||
generated_jison?
|
generated_jison? ||
|
||||||
|
generated_yarn_lock?
|
||||||
end
|
end
|
||||||
|
|
||||||
# Internal: Is the blob an Xcode file?
|
# Internal: Is the blob an Xcode file?
|
||||||
@@ -479,5 +480,14 @@ module Linguist
|
|||||||
return lines[0].start_with?("/* parser generated by jison ") ||
|
return lines[0].start_with?("/* parser generated by jison ") ||
|
||||||
lines[0].start_with?("/* generated by jison-lex ")
|
lines[0].start_with?("/* generated by jison-lex ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Internal: Is the blob a generated yarn lockfile?
|
||||||
|
#
|
||||||
|
# Returns true or false.
|
||||||
|
def generated_yarn_lock?
|
||||||
|
return false unless name.match(/yarn\.lock/)
|
||||||
|
return false unless lines.count > 0
|
||||||
|
return lines[0].include?("# THIS IS AN AUTOGENERATED FILE")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ module Linguist
|
|||||||
end
|
end
|
||||||
|
|
||||||
disambiguate ".md" do |data|
|
disambiguate ".md" do |data|
|
||||||
if /(^[-a-z0-9=#!\*\[|])|<\//i.match(data) || data.empty?
|
if /(^[-a-z0-9=#!\*\[|>])|<\//i.match(data) || data.empty?
|
||||||
Language["Markdown"]
|
Language["Markdown"]
|
||||||
elsif /^(;;|\(define_)/.match(data)
|
elsif /^(;;|\(define_)/.match(data)
|
||||||
Language["GCC machine description"]
|
Language["GCC machine description"]
|
||||||
@@ -278,7 +278,7 @@ module Linguist
|
|||||||
disambiguate ".mod" do |data|
|
disambiguate ".mod" do |data|
|
||||||
if data.include?('<!ENTITY ')
|
if data.include?('<!ENTITY ')
|
||||||
Language["XML"]
|
Language["XML"]
|
||||||
elsif /MODULE\s\w+\s*;/i.match(data) || /^\s*END \w+;$/i.match(data)
|
elsif /^\s*MODULE [\w\.]+;/i.match(data) || /^\s*END [\w\.]+;/i.match(data)
|
||||||
Language["Modula-2"]
|
Language["Modula-2"]
|
||||||
else
|
else
|
||||||
[Language["Linux Kernel Module"], Language["AMPL"]]
|
[Language["Linux Kernel Module"], Language["AMPL"]]
|
||||||
|
|||||||
@@ -215,7 +215,14 @@ module Linguist
|
|||||||
# Returns the Language or nil if none was found.
|
# Returns the Language or nil if none was found.
|
||||||
def self.[](name)
|
def self.[](name)
|
||||||
return nil if name.to_s.empty?
|
return nil if name.to_s.empty?
|
||||||
name && (@index[name.downcase] || @index[name.split(',').first.downcase])
|
|
||||||
|
lang = @index[name.downcase]
|
||||||
|
return lang if lang
|
||||||
|
|
||||||
|
name = name.split(',').first
|
||||||
|
return nil if name.to_s.empty?
|
||||||
|
|
||||||
|
@index[name.downcase]
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: A List of popular languages
|
# Public: A List of popular languages
|
||||||
|
|||||||
@@ -1156,6 +1156,7 @@ Erlang:
|
|||||||
- ".xrl"
|
- ".xrl"
|
||||||
- ".yrl"
|
- ".yrl"
|
||||||
filenames:
|
filenames:
|
||||||
|
- Emakefile
|
||||||
- rebar.config
|
- rebar.config
|
||||||
- rebar.config.lock
|
- rebar.config.lock
|
||||||
- rebar.lock
|
- rebar.lock
|
||||||
@@ -1605,7 +1606,7 @@ HTML:
|
|||||||
ace_mode: html
|
ace_mode: html
|
||||||
codemirror_mode: htmlmixed
|
codemirror_mode: htmlmixed
|
||||||
codemirror_mime_type: text/html
|
codemirror_mime_type: text/html
|
||||||
color: "#e44b23"
|
color: "#e34c26"
|
||||||
aliases:
|
aliases:
|
||||||
- xhtml
|
- xhtml
|
||||||
extensions:
|
extensions:
|
||||||
@@ -2291,6 +2292,8 @@ LookML:
|
|||||||
color: "#652B81"
|
color: "#652B81"
|
||||||
extensions:
|
extensions:
|
||||||
- ".lookml"
|
- ".lookml"
|
||||||
|
- ".model.lkml"
|
||||||
|
- ".view.lkml"
|
||||||
tm_scope: source.yaml
|
tm_scope: source.yaml
|
||||||
language_id: 211
|
language_id: 211
|
||||||
LoomScript:
|
LoomScript:
|
||||||
@@ -3226,6 +3229,7 @@ PowerBuilder:
|
|||||||
language_id: 292
|
language_id: 292
|
||||||
PowerShell:
|
PowerShell:
|
||||||
type: programming
|
type: programming
|
||||||
|
color: "#012456"
|
||||||
ace_mode: powershell
|
ace_mode: powershell
|
||||||
codemirror_mode: powershell
|
codemirror_mode: powershell
|
||||||
codemirror_mime_type: application/x-powershell
|
codemirror_mime_type: application/x-powershell
|
||||||
@@ -3601,6 +3605,17 @@ Redcode:
|
|||||||
tm_scope: none
|
tm_scope: none
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
language_id: 321
|
language_id: 321
|
||||||
|
Regular Expression:
|
||||||
|
type: data
|
||||||
|
extensions:
|
||||||
|
- ".regexp"
|
||||||
|
- ".regex"
|
||||||
|
aliases:
|
||||||
|
- regexp
|
||||||
|
- regex
|
||||||
|
ace_mode: text
|
||||||
|
tm_scope: source.regexp
|
||||||
|
language_id: 363378884
|
||||||
Ren'Py:
|
Ren'Py:
|
||||||
type: programming
|
type: programming
|
||||||
aliases:
|
aliases:
|
||||||
@@ -4298,6 +4313,7 @@ Text:
|
|||||||
- ".no"
|
- ".no"
|
||||||
filenames:
|
filenames:
|
||||||
- COPYING
|
- COPYING
|
||||||
|
- COPYRIGHT.regex
|
||||||
- FONTLOG
|
- FONTLOG
|
||||||
- INSTALL
|
- INSTALL
|
||||||
- INSTALL.mysql
|
- INSTALL.mysql
|
||||||
@@ -4597,9 +4613,9 @@ XCompose:
|
|||||||
type: data
|
type: data
|
||||||
filenames:
|
filenames:
|
||||||
- ".XCompose"
|
- ".XCompose"
|
||||||
- "XCompose"
|
- XCompose
|
||||||
- "xcompose"
|
- xcompose
|
||||||
tm_scope: 'config.xcompose'
|
tm_scope: config.xcompose
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
language_id: 225167241
|
language_id: 225167241
|
||||||
XML:
|
XML:
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
module Linguist
|
module Linguist
|
||||||
VERSION = "5.0.1"
|
VERSION = "5.0.5"
|
||||||
end
|
end
|
||||||
|
|||||||
7
samples/Erlang/filenames/Emakefile
Normal file
7
samples/Erlang/filenames/Emakefile
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{"src/*", [
|
||||||
|
report,
|
||||||
|
verbose,
|
||||||
|
{i, "include"},
|
||||||
|
{outdir, "ebin"},
|
||||||
|
debug_info
|
||||||
|
]}.
|
||||||
49
samples/LookML/example.model.lkml
Normal file
49
samples/LookML/example.model.lkml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
- label: 'desired label name'
|
||||||
|
- connection: connection_name
|
||||||
|
- include: filename_or_pattern
|
||||||
|
# Possibly more include declarations
|
||||||
|
- persist_for: N (seconds | minutes | hours)
|
||||||
|
- case_sensitive: true | false
|
||||||
|
- week_start_day: monday | tuesday | wednesday | thursday | friday | saturday | sunday
|
||||||
|
- value_formats:
|
||||||
|
- name: desired_format_name
|
||||||
|
value_format: 'excel-style formatting string'
|
||||||
|
# Possibly more value formats
|
||||||
|
|
||||||
|
- explore: view_name
|
||||||
|
label: 'desired label name'
|
||||||
|
description: 'description string'
|
||||||
|
symmetric_aggregates: true | false
|
||||||
|
hidden: true | false
|
||||||
|
fields: [field_or_set, field_or_set, …]
|
||||||
|
|
||||||
|
sql_always_where: SQL WHERE condition
|
||||||
|
always_filter:
|
||||||
|
field_name: 'looker filter expression'
|
||||||
|
conditionally_filter:
|
||||||
|
field_name: 'looker filter expression'
|
||||||
|
unless: [field_or_set, field_or_set, …]
|
||||||
|
access_filter_fields: [fully_scoped_field, fully_scoped_field, …]
|
||||||
|
|
||||||
|
always_join: [view_name, view_name, …]
|
||||||
|
joins:
|
||||||
|
- join: view_name
|
||||||
|
type: left_outer | full_outer | inner | cross
|
||||||
|
relationship: one_to_one | many_to_one | one_to_many | many_to_many
|
||||||
|
from: view_name
|
||||||
|
sql_table_name: table_name
|
||||||
|
view_label: 'desired label name'
|
||||||
|
fields: [field_or_set, field_or_set, …]
|
||||||
|
required_joins: [view_name, view_name, …]
|
||||||
|
foreign_key: dimension_name
|
||||||
|
sql_on: SQL ON clause
|
||||||
|
# Possibly more join declarations
|
||||||
|
|
||||||
|
persist_for: N (seconds | minutes | hours)
|
||||||
|
from: view_name
|
||||||
|
view: view_name
|
||||||
|
case_sensitive: true | false
|
||||||
|
sql_table_name: table_name
|
||||||
|
cancel_grouping_fields: [fully_scoped_field, fully_scoped_field, …]
|
||||||
|
|
||||||
|
# Possibly more explore declarations
|
||||||
90
samples/LookML/example.view.lkml
Normal file
90
samples/LookML/example.view.lkml
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
- view: view_name
|
||||||
|
sql_table_name: table_name
|
||||||
|
suggestions: true | false
|
||||||
|
|
||||||
|
derived_table:
|
||||||
|
sql: SQL query
|
||||||
|
persist_for: N (seconds | minutes | hours)
|
||||||
|
sql_trigger_value: SQL query
|
||||||
|
distribution: column_name
|
||||||
|
distribution_style: ALL | EVEN
|
||||||
|
sortkeys: [column_name, column_name, …]
|
||||||
|
indexes: [column_name, column_name, …]
|
||||||
|
|
||||||
|
sets:
|
||||||
|
set_name:
|
||||||
|
- field_or_set
|
||||||
|
- field_or_set
|
||||||
|
- …
|
||||||
|
# Possibly more set declarations
|
||||||
|
|
||||||
|
fields:
|
||||||
|
- (dimension | dimension_group | measure | filter): field_name
|
||||||
|
label: 'desired label name'
|
||||||
|
view_label: 'desired label name'
|
||||||
|
group_label: 'desired label name'
|
||||||
|
description: 'description string'
|
||||||
|
hidden: true | false
|
||||||
|
alias: [old_field_name, old_field_name, …]
|
||||||
|
value_format: 'excel-style formatting string'
|
||||||
|
value_format_name: format_name
|
||||||
|
html: HTML expression using Liquid template elements
|
||||||
|
sql: SQL expression to generate the field value
|
||||||
|
required_fields: [field_name, field_name, …]
|
||||||
|
drill_fields: [field_or_set, field_or_set, …]
|
||||||
|
can_filter: true | false
|
||||||
|
fanout_on: repeated_record_name
|
||||||
|
|
||||||
|
# DIMENSION SPECIFIC PARAMETERS
|
||||||
|
|
||||||
|
type: dimension_field_type
|
||||||
|
primary_key: true | false
|
||||||
|
sql_case:
|
||||||
|
value: SQL condition
|
||||||
|
value: SQL condition
|
||||||
|
# Possibly more sql_case statements
|
||||||
|
alpha_sort: true | false
|
||||||
|
tiers: [N, N, …]
|
||||||
|
style: classic | interval | integer | relational
|
||||||
|
sql_latitude: SQL expression to generate a latitude
|
||||||
|
sql_longitude: SQL expression to generate a longitude
|
||||||
|
suggestable: true | false
|
||||||
|
suggest_persist_for: N (seconds | minutes | hours)
|
||||||
|
suggest_dimension: dimension_name
|
||||||
|
suggest_explore: explore_name
|
||||||
|
suggestions: ['suggestion string', 'suggestion string', …]
|
||||||
|
bypass_suggest_restrictions: true | false
|
||||||
|
full_suggestions: true | false
|
||||||
|
skip_drill_filter: true | false
|
||||||
|
case_sensitive: true | false
|
||||||
|
order_by_field: dimension_name
|
||||||
|
map_layer: name_of_map_layer
|
||||||
|
links:
|
||||||
|
- label: 'desired label name'
|
||||||
|
url: desired_url
|
||||||
|
icon_url: url_of_an_ico_file
|
||||||
|
# Possibly more links
|
||||||
|
|
||||||
|
# DIMENSION GROUP SPECIFIC PARAMETERS
|
||||||
|
|
||||||
|
timeframes: [timeframe, timeframe, …]
|
||||||
|
convert_tz: true | false
|
||||||
|
datatype: epoch | timestamp | datetime | date | yyyymmdd
|
||||||
|
|
||||||
|
# MEASURE SPECIFIC PARAMETERS
|
||||||
|
|
||||||
|
type: measure_field_type
|
||||||
|
direction: row | column
|
||||||
|
approximate: true | false
|
||||||
|
approximate_threshold: N
|
||||||
|
sql_distinct_key: SQL expression to define repeated entities
|
||||||
|
list_field: dimension_name
|
||||||
|
filters:
|
||||||
|
dimension_name: 'looker filter expression'
|
||||||
|
# Possibly more filters statements
|
||||||
|
|
||||||
|
# FILTER SPECIFIC PARAMETERS
|
||||||
|
|
||||||
|
default_value: 'desired default value'
|
||||||
|
|
||||||
|
# Possibly more dimension or measure declarations
|
||||||
19
samples/Regular Expression/modeline-emacs.regexp
Normal file
19
samples/Regular Expression/modeline-emacs.regexp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
-\*-
|
||||||
|
(?:
|
||||||
|
\s*
|
||||||
|
(?= [^:;\s]+ \s* -\*-)
|
||||||
|
|
|
||||||
|
(?:
|
||||||
|
.*?[;\s]
|
||||||
|
|
|
||||||
|
(?<=-\*-)
|
||||||
|
)
|
||||||
|
mode\s*:\s*
|
||||||
|
)
|
||||||
|
([^:;\s]+)
|
||||||
|
|
||||||
|
(?=
|
||||||
|
[\s;] | (?<![-*]) -\*-
|
||||||
|
)
|
||||||
|
.*?
|
||||||
|
-\*-
|
||||||
27
samples/Regular Expression/modeline-vim.regexp
Normal file
27
samples/Regular Expression/modeline-vim.regexp
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
(?:
|
||||||
|
(?:\s|^)
|
||||||
|
vi
|
||||||
|
(?:m[<=>]?\d+|m)?
|
||||||
|
|
|
||||||
|
[\t\x20]
|
||||||
|
ex
|
||||||
|
)
|
||||||
|
(?=
|
||||||
|
: (?=\s* set? \s [^\n:]+ :) |
|
||||||
|
: (?!\s* set? \s)
|
||||||
|
)
|
||||||
|
|
||||||
|
(?:
|
||||||
|
(?:\s|\s*:\s*)
|
||||||
|
\w*
|
||||||
|
(?:
|
||||||
|
\s*=
|
||||||
|
(?:[^\n\\\s]|\\.)*
|
||||||
|
)?
|
||||||
|
)*
|
||||||
|
|
||||||
|
[\s:]
|
||||||
|
(?:filetype|ft|syntax)
|
||||||
|
\s*=
|
||||||
|
(MODE_NAME_HERE)
|
||||||
|
(?=\s|:|$)
|
||||||
1
samples/Regular Expression/ordinal.regex
Normal file
1
samples/Regular Expression/ordinal.regex
Normal file
@@ -0,0 +1 @@
|
|||||||
|
\b(\d*1[1-3]th|\d*0th|(?:(?!11st)\d)*1st|\d*2nd|(?:(?!13rd)\d*)3rd|\d*[4-9]th)\b
|
||||||
1
samples/Regular Expression/url.regex
Normal file
1
samples/Regular Expression/url.regex
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/^([^\/#\?]*:?\/\/)?(\/?(?:[^\/#\?]+\/)*)?([^\/#\?]+)?(?:\/(?=$))?(\?[^#]*)?(#.*)?$/
|
||||||
54
samples/Text/filenames/COPYING.regex
Normal file
54
samples/Text/filenames/COPYING.regex
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
$OpenBSD: COPYRIGHT,v 1.3 2003/06/02 20:18:36 millert Exp $
|
||||||
|
|
||||||
|
Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved.
|
||||||
|
This software is not subject to any license of the American Telephone
|
||||||
|
and Telegraph Company or of the Regents of the University of California.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose on
|
||||||
|
any computer system, and to alter it and redistribute it, subject
|
||||||
|
to the following restrictions:
|
||||||
|
|
||||||
|
1. The author is not responsible for the consequences of use of this
|
||||||
|
software, no matter how awful, even if they arise from flaws in it.
|
||||||
|
|
||||||
|
2. The origin of this software must not be misrepresented, either by
|
||||||
|
explicit claim or by omission. Since few users ever read sources,
|
||||||
|
credits must appear in the documentation.
|
||||||
|
|
||||||
|
3. Altered versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software. Since few users
|
||||||
|
ever read sources, credits must appear in the documentation.
|
||||||
|
|
||||||
|
4. This notice may not be removed or altered.
|
||||||
|
|
||||||
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1994
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* @(#)COPYRIGHT 8.1 (Berkeley) 3/16/94
|
||||||
|
*/
|
||||||
@@ -51,7 +51,7 @@ SUBMODULES.partition { |submodule| SLOW_SUBMODULES.include?(submodule) }.flatten
|
|||||||
submodules.push(submodule)
|
submodules.push(submodule)
|
||||||
end
|
end
|
||||||
|
|
||||||
8.times do
|
(ARGV.first || 8).to_i.times do
|
||||||
Thread.new { run_thread(submodules, results) }
|
Thread.new { run_thread(submodules, results) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
9
test/fixtures/Data/yarn.lock
vendored
Normal file
9
test/fixtures/Data/yarn.lock
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||||
|
# yarn lockfile v1
|
||||||
|
abab@^1.0.0:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
|
||||||
|
|
||||||
|
abbrev@1, abbrev@1.0.x:
|
||||||
|
version "1.0.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
|
||||||
@@ -53,4 +53,8 @@ class TestClassifier < Minitest::Test
|
|||||||
assert_equal language.name, results.first[0], "#{sample[:path]}\n#{results.inspect}"
|
assert_equal language.name, results.first[0], "#{sample[:path]}\n#{results.inspect}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_classify_empty_languages
|
||||||
|
assert_equal [], Classifier.classify(Samples.cache, fixture("Ruby/foo.rb"), [])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -79,6 +79,9 @@ class TestGenerated < Minitest::Test
|
|||||||
generated_fixture_loading_data("Data/sourcemap.v3.map")
|
generated_fixture_loading_data("Data/sourcemap.v3.map")
|
||||||
generated_fixture_loading_data("Data/sourcemap.v1.map")
|
generated_fixture_loading_data("Data/sourcemap.v1.map")
|
||||||
|
|
||||||
|
# Yarn locfile
|
||||||
|
generated_fixture_loading_data("Data/yarn.lock")
|
||||||
|
|
||||||
# Specflow
|
# Specflow
|
||||||
generated_fixture_without_loading_data("Features/BindingCulture.feature.cs")
|
generated_fixture_without_loading_data("Features/BindingCulture.feature.cs")
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ class TestGrammars < Minitest::Test
|
|||||||
"241e5ddbb4423d792216783e9f668bd670b026e4", # ant.tmbundle
|
"241e5ddbb4423d792216783e9f668bd670b026e4", # ant.tmbundle
|
||||||
"bdab9fdc21e6790b479ccb5945b78bc0f6ce2493", # language-blade
|
"bdab9fdc21e6790b479ccb5945b78bc0f6ce2493", # language-blade
|
||||||
"81711c69aa40135de7266c88b2f6ab28dbc1d81e", # atom-language-perl6
|
"81711c69aa40135de7266c88b2f6ab28dbc1d81e", # atom-language-perl6
|
||||||
"808e27f5e44167113198d277f47926c5d482eac8" # atom-language-rust
|
"808e27f5e44167113198d277f47926c5d482eac8", # atom-language-rust
|
||||||
|
"304be6184f7f344d44a1d13bddf511019624fd22", # language-css
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
# List of allowed SPDX license names
|
# List of allowed SPDX license names
|
||||||
|
|||||||
@@ -460,4 +460,8 @@ class TestLanguage < Minitest::Test
|
|||||||
assert !language.color, "Unused colour assigned to #{language.name}"
|
assert !language.color, "Unused colour assigned to #{language.name}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_non_crash_on_comma
|
||||||
|
assert_nil Language[',']
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
2
vendor/CodeMirror
vendored
2
vendor/CodeMirror
vendored
Submodule vendor/CodeMirror updated: 0fb17df669...268cf99055
3
vendor/README.md
vendored
3
vendor/README.md
vendored
@@ -76,7 +76,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
|
|||||||
- **Csound:** [nwhetsell/language-csound](https://github.com/nwhetsell/language-csound)
|
- **Csound:** [nwhetsell/language-csound](https://github.com/nwhetsell/language-csound)
|
||||||
- **Csound Document:** [nwhetsell/language-csound](https://github.com/nwhetsell/language-csound)
|
- **Csound Document:** [nwhetsell/language-csound](https://github.com/nwhetsell/language-csound)
|
||||||
- **Csound Score:** [nwhetsell/language-csound](https://github.com/nwhetsell/language-csound)
|
- **Csound Score:** [nwhetsell/language-csound](https://github.com/nwhetsell/language-csound)
|
||||||
- **CSS:** [textmate/css.tmbundle](https://github.com/textmate/css.tmbundle)
|
- **CSS:** [atom/language-css](https://github.com/atom/language-css)
|
||||||
- **Cuda:** [harrism/sublimetext-cuda-cpp](https://github.com/harrism/sublimetext-cuda-cpp)
|
- **Cuda:** [harrism/sublimetext-cuda-cpp](https://github.com/harrism/sublimetext-cuda-cpp)
|
||||||
- **Cycript:** [atom/language-javascript](https://github.com/atom/language-javascript)
|
- **Cycript:** [atom/language-javascript](https://github.com/atom/language-javascript)
|
||||||
- **Cython:** [textmate/cython.tmbundle](https://github.com/textmate/cython.tmbundle)
|
- **Cython:** [textmate/cython.tmbundle](https://github.com/textmate/cython.tmbundle)
|
||||||
@@ -278,6 +278,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
|
|||||||
- **Reason:** [facebook/reason](https://github.com/facebook/reason)
|
- **Reason:** [facebook/reason](https://github.com/facebook/reason)
|
||||||
- **Rebol:** [Oldes/Sublime-REBOL](https://github.com/Oldes/Sublime-REBOL)
|
- **Rebol:** [Oldes/Sublime-REBOL](https://github.com/Oldes/Sublime-REBOL)
|
||||||
- **Red:** [Oldes/Sublime-Red](https://github.com/Oldes/Sublime-Red)
|
- **Red:** [Oldes/Sublime-Red](https://github.com/Oldes/Sublime-Red)
|
||||||
|
- **Regular Expression:** [Alhadis/language-regexp](https://github.com/Alhadis/language-regexp)
|
||||||
- **Ren'Py:** [williamd1k0/language-renpy](https://github.com/williamd1k0/language-renpy)
|
- **Ren'Py:** [williamd1k0/language-renpy](https://github.com/williamd1k0/language-renpy)
|
||||||
- **reStructuredText:** [Lukasa/language-restructuredtext](https://github.com/Lukasa/language-restructuredtext)
|
- **reStructuredText:** [Lukasa/language-restructuredtext](https://github.com/Lukasa/language-restructuredtext)
|
||||||
- **REXX:** [mblocker/rexx-sublime](https://github.com/mblocker/rexx-sublime)
|
- **REXX:** [mblocker/rexx-sublime](https://github.com/mblocker/rexx-sublime)
|
||||||
|
|||||||
2
vendor/grammars/Elm
vendored
2
vendor/grammars/Elm
vendored
Submodule vendor/grammars/Elm updated: 8e8af4a712...64315b1f86
2
vendor/grammars/SublimePapyrus
vendored
2
vendor/grammars/SublimePapyrus
vendored
Submodule vendor/grammars/SublimePapyrus updated: 374ebd6444...b87e7c5238
2
vendor/grammars/TXL
vendored
2
vendor/grammars/TXL
vendored
Submodule vendor/grammars/TXL updated: c1c98dfa86...614cf83649
2
vendor/grammars/applescript.tmbundle
vendored
2
vendor/grammars/applescript.tmbundle
vendored
Submodule vendor/grammars/applescript.tmbundle updated: 5067ef67a5...df46dd96d8
2
vendor/grammars/atom-language-perl6
vendored
2
vendor/grammars/atom-language-perl6
vendored
Submodule vendor/grammars/atom-language-perl6 updated: 6896ff2a72...519adffd86
2
vendor/grammars/atom-language-rust
vendored
2
vendor/grammars/atom-language-rust
vendored
Submodule vendor/grammars/atom-language-rust updated: 2f514baad7...092cc6a8a0
1
vendor/grammars/css.tmbundle
vendored
1
vendor/grammars/css.tmbundle
vendored
Submodule vendor/grammars/css.tmbundle deleted from d79e9c0137
2
vendor/grammars/diff.tmbundle
vendored
2
vendor/grammars/diff.tmbundle
vendored
Submodule vendor/grammars/diff.tmbundle updated: 372abaaeb1...0593bb775e
2
vendor/grammars/elixir-tmbundle
vendored
2
vendor/grammars/elixir-tmbundle
vendored
Submodule vendor/grammars/elixir-tmbundle updated: 319bbe2022...50846fe555
2
vendor/grammars/language-blade
vendored
2
vendor/grammars/language-blade
vendored
Submodule vendor/grammars/language-blade updated: 14104c18a9...0282a2c5aa
2
vendor/grammars/language-csharp
vendored
2
vendor/grammars/language-csharp
vendored
Submodule vendor/grammars/language-csharp updated: 71b8930b31...f1462897f9
2
vendor/grammars/language-csound
vendored
2
vendor/grammars/language-csound
vendored
Submodule vendor/grammars/language-csound updated: 8f8668a38e...c1c5b4db72
1
vendor/grammars/language-css
vendored
Submodule
1
vendor/grammars/language-css
vendored
Submodule
Submodule vendor/grammars/language-css added at 5d4af2db39
2
vendor/grammars/language-javascript
vendored
2
vendor/grammars/language-javascript
vendored
Submodule vendor/grammars/language-javascript updated: 31ec605571...245162fea4
2
vendor/grammars/language-less
vendored
2
vendor/grammars/language-less
vendored
Submodule vendor/grammars/language-less updated: ce6a54dd17...c9abeea663
1
vendor/grammars/language-regexp
vendored
Submodule
1
vendor/grammars/language-regexp
vendored
Submodule
Submodule vendor/grammars/language-regexp added at 9dc99a60ae
2
vendor/grammars/language-rpm-spec
vendored
2
vendor/grammars/language-rpm-spec
vendored
Submodule vendor/grammars/language-rpm-spec updated: 549b424107...b639f16683
2
vendor/grammars/language-shellscript
vendored
2
vendor/grammars/language-shellscript
vendored
Submodule vendor/grammars/language-shellscript updated: 3cd0b6bb5e...29eecbc416
2
vendor/grammars/language-yaml
vendored
2
vendor/grammars/language-yaml
vendored
Submodule vendor/grammars/language-yaml updated: 6be651ae57...252a0c19c6
2
vendor/grammars/latex.tmbundle
vendored
2
vendor/grammars/latex.tmbundle
vendored
Submodule vendor/grammars/latex.tmbundle updated: acbc3453c4...4f20bf6e8c
2
vendor/grammars/perl.tmbundle
vendored
2
vendor/grammars/perl.tmbundle
vendored
Submodule vendor/grammars/perl.tmbundle updated: 7a786e331d...c0b7a4bd65
2
vendor/grammars/php.tmbundle
vendored
2
vendor/grammars/php.tmbundle
vendored
Submodule vendor/grammars/php.tmbundle updated: 010cc1c22c...3ed4837b43
2
vendor/grammars/reason
vendored
2
vendor/grammars/reason
vendored
Submodule vendor/grammars/reason updated: 77ede65142...f18549ccd3
15
vendor/licenses/grammar/css.tmbundle.txt
vendored
15
vendor/licenses/grammar/css.tmbundle.txt
vendored
@@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
type: grammar
|
|
||||||
name: css.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”.
|
|
||||||
36
vendor/licenses/grammar/language-css.txt
vendored
Normal file
36
vendor/licenses/grammar/language-css.txt
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: language-css
|
||||||
|
license: mit
|
||||||
|
---
|
||||||
|
Copyright (c) 2014 GitHub Inc.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
|
||||||
|
This package was derived from a TextMate bundle located at
|
||||||
|
https://github.com/textmate/css.tmbundle and distributed under the following
|
||||||
|
license, located in `README.mdown`:
|
||||||
|
|
||||||
|
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.
|
||||||
18
vendor/licenses/grammar/language-regexp.txt
vendored
Normal file
18
vendor/licenses/grammar/language-regexp.txt
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: language-regexp
|
||||||
|
license: isc
|
||||||
|
---
|
||||||
|
Copyright (c) 2016-2017, 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.
|
||||||
Reference in New Issue
Block a user