mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Compare commits
172 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
14a7cb2d1b | ||
|
|
54ae7e7b4d | ||
|
|
5363e045bb | ||
|
|
cc4da98616 | ||
|
|
a9ff59aef5 | ||
|
|
7b9ec3d1b3 | ||
|
|
51d3711faf | ||
|
|
14fcd75773 | ||
|
|
34c623eaba | ||
|
|
324bc83914 | ||
|
|
ecc62784ca | ||
|
|
f452612666 | ||
|
|
0bf4b8a482 | ||
|
|
718c9efaca | ||
|
|
49593a6a6d | ||
|
|
ba1cf12776 | ||
|
|
03f394626d | ||
|
|
cf385d9e77 | ||
|
|
dd3b1eec91 | ||
|
|
2b65318a61 | ||
|
|
1b3cdda4f7 | ||
|
|
50d46eed38 | ||
|
|
1bbcfa5683 | ||
|
|
c2d3170064 | ||
|
|
fe3981ff03 | ||
|
|
3769216c7a | ||
|
|
052c048fb5 | ||
|
|
cec3a26496 | ||
|
|
4f0f9bd51d | ||
|
|
04e7956407 | ||
|
|
2abf488e65 | ||
|
|
812797b51d | ||
|
|
dc32876113 | ||
|
|
a18ad1d489 | ||
|
|
25ac140d58 | ||
|
|
f7835f7119 | ||
|
|
a7f835a653 | ||
|
|
6220286f42 | ||
|
|
15e2b74dec | ||
|
|
969333610c | ||
|
|
8438c6cd3e | ||
|
|
60f748d47b | ||
|
|
8da6ddf9d9 | ||
|
|
fef7a12c85 | ||
|
|
b80ca35b75 | ||
|
|
c8171322f5 | ||
|
|
4c1e61892a | ||
|
|
4db659dede | ||
|
|
ed73a72cbe | ||
|
|
512f077da8 | ||
|
|
3260b06241 | ||
|
|
ef3b0b6af3 | ||
|
|
434023460e | ||
|
|
8e628ecc36 | ||
|
|
ca714340e8 | ||
|
|
a4e6fc78c8 | ||
|
|
db1d4f7893 | ||
|
|
bee7e55618 | ||
|
|
5fbe9c0902 | ||
|
|
a840668599 | ||
|
|
38cb8871ba | ||
|
|
d0b906f128 | ||
|
|
d4c2d83af9 | ||
|
|
0b81b21983 | ||
|
|
1a769c4665 | ||
|
|
e7e64bf39a | ||
|
|
e4b9430024 | ||
|
|
a76805e40d | ||
|
|
8d27845f8c | ||
|
|
9a8ab45b6f | ||
|
|
e335d48625 | ||
|
|
4f46155c05 | ||
|
|
38901d51d2 | ||
|
|
ded0dc74e0 | ||
|
|
c5d1bb5370 | ||
|
|
c8ca48856b | ||
|
|
7be6fb0138 | ||
|
|
8c516655bc | ||
|
|
9dceffce2f | ||
|
|
33be70eb28 | ||
|
|
9c4dc3047c | ||
|
|
d8e5f3c965 | ||
|
|
71bf640a47 | ||
|
|
c9b3d19c6f | ||
|
|
0f4955e5d5 | ||
|
|
d968b0e9ee | ||
|
|
1f5ed3b3fe | ||
|
|
297be948d1 | ||
|
|
b4492e7205 | ||
|
|
c05bc99004 | ||
|
|
99eaf5faf9 | ||
|
|
21babbceb1 | ||
|
|
15885701cd | ||
|
|
9b942086f7 | ||
|
|
93cd47822f | ||
|
|
ea3e79a631 | ||
|
|
0af9a35ff1 | ||
|
|
44048c9ba8 | ||
|
|
e51b5ec9b7 | ||
|
|
a47008ea00 | ||
|
|
a0b38e8207 | ||
|
|
10dfe9f296 | ||
|
|
0b9c05f989 | ||
|
|
95dca67e2b | ||
|
|
e98728595b | ||
|
|
4cd558c374 | ||
|
|
adf6206ef5 | ||
|
|
c2d558b71d | ||
|
|
78c58f956e | ||
|
|
fc1404985a | ||
|
|
5d48ccd757 | ||
|
|
3530a18e46 | ||
|
|
ae8f4f9228 | ||
|
|
7c34d38786 | ||
|
|
38bc5fd336 | ||
|
|
6b06e47c67 | ||
|
|
061712ff78 | ||
|
|
7707585d5e | ||
|
|
fa7d433886 | ||
|
|
998e24cf36 | ||
|
|
63ff51e2ed | ||
|
|
b541b53b78 | ||
|
|
a878620a8e | ||
|
|
5633fd3668 | ||
|
|
9d0af0da40 | ||
|
|
edabdc75a5 | ||
|
|
6db7736860 | ||
|
|
dd3d8586c5 | ||
|
|
f1daf6192c | ||
|
|
2c41df376f | ||
|
|
3391dcce6a | ||
|
|
f75c5707a6 | ||
|
|
25de4e0ae2 | ||
|
|
7451424f12 | ||
|
|
b94e018c3a | ||
|
|
4dcf223c8e | ||
|
|
329f80d245 | ||
|
|
085604948e | ||
|
|
e60384b018 | ||
|
|
470a82d9f5 | ||
|
|
37979b26b0 | ||
|
|
1a6df12902 | ||
|
|
24e196df4e | ||
|
|
8d178bfaed | ||
|
|
e9ec699931 | ||
|
|
9a6c3f2c4d | ||
|
|
648720301d | ||
|
|
c552e25bd7 | ||
|
|
d5c8db3fb9 | ||
|
|
632bcdc1ad | ||
|
|
6b221172c0 | ||
|
|
6f0d801375 | ||
|
|
128abe3533 | ||
|
|
9312353d20 | ||
|
|
b6460f8ed6 | ||
|
|
60f864a138 | ||
|
|
ca6121e3ea | ||
|
|
7c17b1f10c | ||
|
|
d490fc303f | ||
|
|
20fdac95f6 | ||
|
|
234ee8b6d2 | ||
|
|
58ab593a64 | ||
|
|
ec1f6a4cd6 | ||
|
|
3eea8212f4 | ||
|
|
a1e09ae3e6 | ||
|
|
c1f76c26e5 | ||
|
|
0983f62e02 | ||
|
|
190e54c020 | ||
|
|
ded651159d | ||
|
|
acbab53198 | ||
|
|
fba4babdcd | ||
|
|
eb6a213921 |
26
.github/ISSUE_TEMPLATE.md
vendored
Normal file
26
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--- Provide a general summary of the issue in the Title above -->
|
||||
|
||||
## Preliminary Steps
|
||||
|
||||
Please confirm you have...
|
||||
- [ ] reviewed [How Linguist Works](https://github.com/github/linguist#how-linguist-works),
|
||||
- [ ] reviewed the [Troubleshooting](https://github.com/github/linguist#troubleshooting) docs,
|
||||
- [ ] considered implementing an [override](https://github.com/github/linguist#overrides),
|
||||
- [ ] verified an issue has not already been logged for your issue ([linguist issues](https://github.com/issues?utf8=%E2%9C%93&q=is%3Aissue+repo%3Agithub/linguist)).
|
||||
|
||||
<!-- Please review these preliminary steps before logging your issue. You may find the information referenced may answer or explain the behaviour you are seeing. It'll help us to know you've reviewed this information. -->
|
||||
|
||||
## Problem Description
|
||||
|
||||
<!--- Provide a more detailed introduction to the issue itself, and why you consider it to be a bug -->
|
||||
|
||||
### URL of the affected repository:
|
||||
|
||||
### Last modified on:
|
||||
<!-- YYYY-MM-DD -->
|
||||
|
||||
### Expected language:
|
||||
<!-- expected language -->
|
||||
|
||||
### Detected language:
|
||||
<!-- detected language -->
|
||||
46
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
46
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
<!--- Briefly describe what you're changing. -->
|
||||
|
||||
## Description
|
||||
<!--- If necessary, go into depth of what this pull request is doing. -->
|
||||
|
||||
## Checklist:
|
||||
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
|
||||
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
||||
- [ ] **I am associating a language with a new file extension.**
|
||||
- [ ] The new extension is used in hundreds of repositories on GitHub.com
|
||||
- Search results for each extension:
|
||||
<!-- Replace FOOBAR with the new extension, and KEYWORDS with keywords unique to the language. Repeat for each extension added. -->
|
||||
- https://github.com/search?utf8=%E2%9C%93&type=Code&ref=searchresults&q=extension%3AFOOBAR+KEYWORDS+NOT+nothack
|
||||
- [ ] I have included a real-world usage sample for all extensions added in this PR:
|
||||
- Sample source(s):
|
||||
- [URL to each sample source, if applicable]
|
||||
- Sample license(s):
|
||||
- [ ] I have included a change to the heuristics to distinguish my language from others using the same extension.
|
||||
|
||||
- [ ] **I am adding a new language.**
|
||||
- [ ] The extension of the new language is used in hundreds of repositories on GitHub.com.
|
||||
- Search results for each extension:
|
||||
<!-- Replace FOOBAR with the new extension, and KEYWORDS with keywords unique to the language. Repeat for each extension added. -->
|
||||
- https://github.com/search?utf8=%E2%9C%93&type=Code&ref=searchresults&q=extension%3AFOOBAR+KEYWORDS+NOT+nothack
|
||||
- [ ] I have included a real-world usage sample for all extensions added in this PR:
|
||||
- Sample source(s):
|
||||
- [URL to each sample source, if applicable]
|
||||
- Sample license(s):
|
||||
- [ ] I have included a syntax highlighting grammar.
|
||||
- [ ] I have included a change to the heuristics to distinguish my language from others using the same extension.
|
||||
|
||||
- [ ] **I am fixing a misclassified language**
|
||||
- [ ] I have included a new sample for the misclassified language:
|
||||
- Sample source(s):
|
||||
- [URL to each sample source, if applicable]
|
||||
- Sample license(s):
|
||||
- [ ] I have included a change to the heuristics to distinguish my language from others using the same extension.
|
||||
|
||||
- [ ] **I am changing the source of a syntax highlighting grammar**
|
||||
<!-- Update the Lightshow URLs below to show the new and old grammars in action. -->
|
||||
- Old: https://github-lightshow.herokuapp.com/
|
||||
- New: https://github-lightshow.herokuapp.com/
|
||||
|
||||
- [ ] **I am adding new or changing current functionality**
|
||||
<!-- This includes modifying the vendor, documentation, and generated lists. -->
|
||||
- [ ] I have added or updated the tests for the new or changed functionality.
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -8,3 +8,6 @@ lib/linguist/samples.json
|
||||
/node_modules
|
||||
test/fixtures/ace_modes.json
|
||||
/vendor/gems/
|
||||
/tmp
|
||||
*.bundle
|
||||
*.so
|
||||
|
||||
1407
.gitmodules
vendored
1407
.gitmodules
vendored
File diff suppressed because it is too large
Load Diff
14
.travis.yml
14
.travis.yml
@@ -5,23 +5,18 @@ addons:
|
||||
apt:
|
||||
packages:
|
||||
- libicu-dev
|
||||
- libicu48
|
||||
- libicu52
|
||||
|
||||
before_install: script/travis/before_install
|
||||
|
||||
script:
|
||||
- bundle exec rake
|
||||
- script/licensed verify
|
||||
- script/licensed status
|
||||
|
||||
rvm:
|
||||
- 2.1
|
||||
- 2.2
|
||||
- 2.3.3
|
||||
- 2.4.0
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- rvm: 2.4.0
|
||||
- 2.5.0
|
||||
|
||||
notifications:
|
||||
disabled: true
|
||||
@@ -31,3 +26,6 @@ git:
|
||||
depth: 3
|
||||
|
||||
cache: bundler
|
||||
dist: trusty
|
||||
|
||||
bundler_args: --without debug
|
||||
|
||||
@@ -1,23 +1,52 @@
|
||||
# Contributing
|
||||
|
||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. This project adheres to the [Contributor Covenant Code of Conduct](http://contributor-covenant.org/). By participating, you are expected to uphold this code.
|
||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
|
||||
|
||||
Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE).
|
||||
|
||||
This project adheres to the [Contributor Covenant Code of Conduct](http://contributor-covenant.org/). By participating, you are expected to uphold this code.
|
||||
|
||||
The majority of contributions won't need to touch any Ruby code at all.
|
||||
|
||||
## Getting started
|
||||
|
||||
Before you can start contributing to Linguist, you'll need to set up your environment first. Clone the repo and run `script/bootstrap` to install its dependencies.
|
||||
|
||||
git clone https://github.com/github/linguist.git
|
||||
cd linguist/
|
||||
script/bootstrap
|
||||
|
||||
To run Linguist from the cloned repository, you will need to generate the code samples first:
|
||||
|
||||
bundle exec rake samples
|
||||
|
||||
Run this command each time a [sample][samples] has been modified.
|
||||
|
||||
To run Linguist from the cloned repository:
|
||||
|
||||
bundle exec bin/linguist --breakdown
|
||||
|
||||
### Dependencies
|
||||
|
||||
Linguist uses the [`charlock_holmes`](https://github.com/brianmario/charlock_holmes) character encoding detection library which in turn uses [ICU](http://site.icu-project.org/), and the libgit2 bindings for Ruby provided by [`rugged`](https://github.com/libgit2/rugged). [Docker](https://www.docker.com/) is also required when adding or updating grammars. These components have their own dependencies - `icu4c`, and `cmake` and `pkg-config` respectively - which you may need to install before you can install Linguist.
|
||||
|
||||
For example, on macOS with [Homebrew](http://brew.sh/): `brew install cmake pkg-config icu4c docker` and on Ubuntu: `apt-get install cmake pkg-config libicu-dev docker-ce`.
|
||||
|
||||
## Adding an extension to a language
|
||||
|
||||
We try only to add new extensions once they have some usage on GitHub. In most cases we prefer that extensions be in use in hundreds of repositories before supporting them in Linguist.
|
||||
|
||||
To add support for a new extension:
|
||||
|
||||
1. Add your extension to the language entry in [`languages.yml`][languages], keeping the extensions in alphabetical order.
|
||||
1. Add at least one sample for your extension to the [samples directory][samples] in the correct subdirectory.
|
||||
1. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
|
||||
1. Add your extension to the language entry in [`languages.yml`][languages], keeping the extensions in alphabetical and case-sensitive (uppercase before lowercase) order, with the exception of the primary extension; the primary extension should be first.
|
||||
1. Add at least one sample for your extension to the [samples directory][samples] in the correct subdirectory. We'd prefer examples of real-world code showing common usage. The more representative of the structure of the language, the better.
|
||||
1. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
|
||||
If you are adding a sample, please state clearly the license covering the code in the sample, and if possible, link to the original source of the sample.
|
||||
|
||||
In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken:
|
||||
Additionally, if this extension is already listed in [`languages.yml`][languages] and associated with another language, then sometimes a few more steps will need to be taken:
|
||||
|
||||
1. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`.
|
||||
1. 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.
|
||||
1. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping **@lildude** to help with this) to ensure we're not misclassifying files.
|
||||
1. 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.
|
||||
|
||||
|
||||
@@ -28,15 +57,19 @@ We try only to add languages once they have some usage on GitHub. In most cases
|
||||
To add support for a new language:
|
||||
|
||||
1. Add an entry for your language to [`languages.yml`][languages]. Omit the `language_id` field for now.
|
||||
1. Add a grammar for your language: `script/add-grammar https://github.com/JaneSmith/MyGrammar`. Please only add grammars that have [one of these licenses][licenses].
|
||||
1. Add a syntax-highlighting grammar for your language using: `script/add-grammar https://github.com/JaneSmith/MyGrammar`
|
||||
This command will analyze the grammar and, if no problems are found, add it to the repository. If problems are found, please report them to the grammar maintainer as you will not be able to add the grammar if problems are found.
|
||||
**Please only add grammars that have [one of these licenses][licenses].**
|
||||
1. Add samples for your language to the [samples directory][samples] in the correct subdirectory.
|
||||
1. Add a `language_id` for your language using `script/set-language-ids`. **You should only ever need to run `script/set-language-ids --update`. Anything other than this risks breaking GitHub search :cry:**
|
||||
1. Open a pull request, linking to a [GitHub search result](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
|
||||
1. Add a `language_id` for your language using `script/set-language-ids`.
|
||||
**You should only ever need to run `script/set-language-ids --update`. Anything other than this risks breaking GitHub search :cry:**
|
||||
1. Open a pull request, linking to a [GitHub search results](https://github.com/search?utf8=%E2%9C%93&q=extension%3Aboot+NOT+nothack&type=Code&ref=searchresults) showing in-the-wild usage.
|
||||
Please state clearly the license covering the code in the samples. Link directly to the original source if possible.
|
||||
|
||||
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:
|
||||
|
||||
1. Make sure that example `.foo` files are present in the [samples directory][samples] for each language that uses `.foo`.
|
||||
1. 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.
|
||||
1. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping **@lildude** to help with this) to ensure we're not misclassifying files.
|
||||
1. 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!
|
||||
@@ -44,30 +77,40 @@ Remember, the goal here is to try and avoid false positives!
|
||||
|
||||
## Fixing a misclassified language
|
||||
|
||||
Most languages are detected by their file extension defined in [languages.yml][languages]. For disambiguating between files with common extensions, linguist applies some [heuristics](/lib/linguist/heuristics.rb) and a [statistical classifier](lib/linguist/classifier.rb). This process can help differentiate between, for example, `.h` files which could be either C, C++, or Obj-C.
|
||||
Most languages are detected by their file extension defined in [`languages.yml`][languages]. For disambiguating between files with common extensions, Linguist applies some [heuristics](/lib/linguist/heuristics.rb) and a [statistical classifier](lib/linguist/classifier.rb). This process can help differentiate between, for example, `.h` files which could be either C, C++, or Obj-C.
|
||||
|
||||
Misclassifications can often be solved by either adding a new filename or extension for the language or adding more [samples][samples] to make the classifier smarter.
|
||||
|
||||
|
||||
## Fixing syntax highlighting
|
||||
|
||||
Syntax highlighting in GitHub is performed using TextMate-compatible grammars. These are the same grammars that TextMate, Sublime Text and Atom use. Every language in [languages.yml][languages] is mapped to its corresponding TM `scope`. This scope will be used when picking up a grammar for highlighting.
|
||||
Syntax highlighting in GitHub is performed using TextMate-compatible grammars. These are the same grammars that TextMate, Sublime Text and Atom use. Every language in [`languages.yml`][languages] is mapped to its corresponding TextMate `scopeName`. This scope name will be used when picking up a grammar for highlighting.
|
||||
|
||||
Assuming your code is being detected as the right language, in most cases this is due to a bug in the language grammar rather than a bug in Linguist. [`grammars.yml`][grammars] lists all the grammars we use for syntax highlighting on github.com. Find the one corresponding to your code's programming language and submit a bug report upstream. If you can, try to reproduce the highlighting problem in the text editor that the grammar is designed for (TextMate, Sublime Text, or Atom) and include that information in your bug report.
|
||||
Assuming your code is being detected as the right language, in most cases syntax highlighting problems are due to a bug in the language grammar rather than a bug in Linguist. [`vendor/README.md`][grammars] lists all the grammars we use for syntax highlighting on GitHub.com. Find the one corresponding to your code's programming language and submit a bug report upstream. If you can, try to reproduce the highlighting problem in the text editor that the grammar is designed for (TextMate, Sublime Text, or Atom) and include that information in your bug report.
|
||||
|
||||
You can also try to fix the bug yourself and submit a Pull Request. [TextMate's documentation](https://manual.macromates.com/en/language_grammars) offers a good introduction on how to work with TextMate-compatible grammars. You can test grammars using [Lightshow](https://github-lightshow.herokuapp.com).
|
||||
|
||||
Once the bug has been fixed upstream, we'll pick it up for GitHub in the next release of Linguist.
|
||||
|
||||
|
||||
## Changing the source of a syntax highlighting grammar
|
||||
|
||||
We'd like to ensure Linguist and GitHub.com are using the latest and greatest grammars that are consistent with the current usage but understand that sometimes a grammar can lag behind the evolution of a language or even stop being developed. This often results in someone grasping the opportunity to create a newer and better and more actively maintained grammar, and we'd love to use it and pass on it's functionality to our users.
|
||||
|
||||
Switching the source of a grammar is really easy:
|
||||
|
||||
script/add-grammar --replace MyGrammar https://github.com/PeterPan/MyGrammar
|
||||
|
||||
This command will analyze the grammar and, if no problems are found, add it to the repository. If problems are found, please report these problems to the grammar maintainer as you will not be able to add the grammar if problems are found.
|
||||
|
||||
**Please only add grammars that have [one of these licenses][licenses].**
|
||||
|
||||
Please then open a pull request for the updated grammar.
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
For development you are going to want to checkout out the source. To get it, clone the repo and run [Bundler](http://gembundler.com/) to install its dependencies.
|
||||
|
||||
git clone https://github.com/github/linguist.git
|
||||
cd linguist/
|
||||
script/bootstrap
|
||||
|
||||
To run the tests:
|
||||
You can run the tests locally with:
|
||||
|
||||
bundle exec rake test
|
||||
|
||||
@@ -83,6 +126,7 @@ Linguist is maintained with :heart: by:
|
||||
- **@BenEddy** (GitHub staff)
|
||||
- **@Caged** (GitHub staff)
|
||||
- **@grantr** (GitHub staff)
|
||||
- **@kivikakk** (GitHub staff)
|
||||
- **@larsbrinkhoff**
|
||||
- **@lildude** (GitHub staff)
|
||||
- **@pchaigno**
|
||||
@@ -91,7 +135,7 @@ Linguist is maintained with :heart: by:
|
||||
|
||||
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
|
||||
- Anyone with commit rights can merge Pull Requests provided that there is a :+1: from a GitHub staff member.
|
||||
- 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
|
||||
@@ -112,9 +156,11 @@ If you are the current maintainer of this gem:
|
||||
1. Test behavior locally, branch deploy, whatever needs to happen
|
||||
1. Merge github/linguist PR
|
||||
1. Tag and push: `git tag vx.xx.xx; git push --tags`
|
||||
1. Create a GitHub release with the pushed tag (https://github.com/github/linguist/releases/new)
|
||||
1. Build a grammars tarball (`./script/build-grammars-tarball`) and attach it to the GitHub release
|
||||
1. Push to rubygems.org -- `gem push github-linguist-3.0.0.gem`
|
||||
|
||||
[grammars]: /grammars.yml
|
||||
[grammars]: /vendor/README.md
|
||||
[languages]: /lib/linguist/languages.yml
|
||||
[licenses]: https://github.com/github/linguist/blob/257425141d4e2a5232786bf0b13c901ada075f93/vendor/licenses/config.yml#L2-L11
|
||||
[samples]: /samples
|
||||
|
||||
5
Gemfile
5
Gemfile
@@ -1,3 +1,6 @@
|
||||
source 'https://rubygems.org'
|
||||
gemspec :name => "github-linguist"
|
||||
gem 'byebug' if RUBY_VERSION >= '2.0'
|
||||
|
||||
group :debug do
|
||||
gem 'byebug' if RUBY_VERSION >= '2.2'
|
||||
end
|
||||
|
||||
176
README.md
176
README.md
@@ -1,38 +1,130 @@
|
||||
# Linguist
|
||||
|
||||
[](https://travis-ci.org/github/linguist)
|
||||
|
||||
[issues]: https://github.com/github/linguist/issues
|
||||
[new-issue]: https://github.com/github/linguist/issues/new
|
||||
|
||||
This library is used on GitHub.com to detect blob languages, ignore binary or vendored files, suppress generated files in diffs, and generate language breakdown graphs.
|
||||
|
||||
See [Troubleshooting](#troubleshooting) and [`CONTRIBUTING.md`](/CONTRIBUTING.md) before filing an issue or creating a pull request.
|
||||
See [Troubleshooting](#troubleshooting) and [`CONTRIBUTING.md`](CONTRIBUTING.md) before filing an issue or creating a pull request.
|
||||
|
||||
## How Linguist works
|
||||
|
||||
Linguist takes the list of languages it knows from [`languages.yml`](/lib/linguist/languages.yml) and uses a number of methods to try and determine the language used by each file, and the overall repository breakdown.
|
||||
|
||||
Linguist starts by going through all the files in a repository and excludes all files that it determines to be binary data, [vendored code](#vendored-code), [generated code](#generated-code), [documentation](#documentation), or are defined as `data` (e.g. SQL) or `prose` (e.g. Markdown) languages, whilst taking into account any [overrides](#overrides).
|
||||
|
||||
If an [explicit language override](#using-gitattributes) has been used, that language is used for the matching files. The language of each remaining file is then determined using the following strategies, in order, with each step either identifying the precise language or reducing the number of likely languages passed down to the next strategy:
|
||||
|
||||
- Vim or Emacs modeline,
|
||||
- commonly used filename,
|
||||
- shell shebang,
|
||||
- file extension,
|
||||
- heuristics,
|
||||
- naïve Bayesian classification
|
||||
|
||||
The result of this analysis is used to produce the language stats bar which displays the languages percentages for the files in the repository. The percentages are calculated based on the bytes of code for each language as reported by the [List Languages](https://developer.github.com/v3/repos/#list-languages) API.
|
||||
|
||||

|
||||
|
||||
### How Linguist works on GitHub.com
|
||||
|
||||
When you push changes to a repository on GitHub.com, a low priority background job is enqueued to analyze your repository as explained above. The results of this analysis are cached for the lifetime of your repository and are only updated when the repository is updated. As this analysis is performed by a low priority background job, it can take a while, particularly during busy periods, for your language statistics bar to reflect your changes.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
Install the gem:
|
||||
|
||||
$ gem install github-linguist
|
||||
|
||||
#### Dependencies
|
||||
|
||||
Linguist uses the [`charlock_holmes`](https://github.com/brianmario/charlock_holmes) character encoding detection library which in turn uses [ICU](http://site.icu-project.org/), and the libgit2 bindings for Ruby provided by [`rugged`](https://github.com/libgit2/rugged). These components have their own dependencies - `icu4c`, and `cmake` and `pkg-config` respectively - which you may need to install before you can install Linguist.
|
||||
|
||||
For example, on macOS with [Homebrew](http://brew.sh/): `brew install cmake pkg-config icu4c` and on Ubuntu: `apt-get install cmake pkg-config libicu-dev`.
|
||||
|
||||
### Application usage
|
||||
|
||||
Linguist can be used in your application as follows:
|
||||
|
||||
```ruby
|
||||
require 'rugged'
|
||||
require 'linguist'
|
||||
|
||||
repo = Rugged::Repository.new('.')
|
||||
project = Linguist::Repository.new(repo, repo.head.target_id)
|
||||
project.language #=> "Ruby"
|
||||
project.languages #=> { "Ruby" => 119387 }
|
||||
```
|
||||
|
||||
### Command line usage
|
||||
|
||||
A repository's languages stats can also be assessed from the command line using the `linguist` executable. Without any options, `linguist` will output the breakdown that correlates to what is shown in the language stats bar. The `--breakdown` flag will additionally show the breakdown of files by language.
|
||||
|
||||
You can try running `linguist` on the root directory in this repository itself:
|
||||
|
||||
```console
|
||||
$ bundle exec bin/linguist --breakdown
|
||||
68.57% Ruby
|
||||
22.90% C
|
||||
6.93% Go
|
||||
1.21% Lex
|
||||
0.39% Shell
|
||||
|
||||
Ruby:
|
||||
Gemfile
|
||||
Rakefile
|
||||
bin/git-linguist
|
||||
bin/linguist
|
||||
ext/linguist/extconf.rb
|
||||
github-linguist.gemspec
|
||||
lib/linguist.rb
|
||||
…
|
||||
```
|
||||
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### My repository is detected as the wrong language
|
||||
|
||||

|
||||
If the language stats bar is reporting a language that you don't expect:
|
||||
|
||||
The Language stats bar displays languages percentages for the files in the repository. The percentages are calculated based on the bytes of code for each language as reported by the [List Languages](https://developer.github.com/v3/repos/#list-languages) API. If the bar is reporting a language that you don't expect:
|
||||
|
||||
1. Click on the name of the language in the stats bar to see a list of the files that are identified as that language.
|
||||
1. If you see files that you didn't write, consider moving the files into one of the [paths for vendored code](/lib/linguist/vendor.yml), or use the [manual overrides](#overrides) feature to ignore them.
|
||||
1. If the files are being misclassified, search for [open issues][issues] to see if anyone else has already reported the issue. Any information you can add, especially links to public repositories, is helpful.
|
||||
1. Click on the name of the language in the stats bar to see a list of the files that are identified as that language.
|
||||
Keep in mind this performs a search so the [code search restrictions](https://help.github.com/articles/searching-code/#considerations-for-code-search) may result in files identified in the language statistics not appearing in the search results. [Installing Linguist locally](#usage) and running it from the [command line](#command-line-usage) will give you accurate results.
|
||||
1. If you see files that you didn't write in the search results, consider moving the files into one of the [paths for vendored code](/lib/linguist/vendor.yml), or use the [manual overrides](#overrides) feature to ignore them.
|
||||
1. If the files are misclassified, search for [open issues][issues] to see if anyone else has already reported the issue. Any information you can add, especially links to public repositories, is helpful. You can also use the [manual overrides](#overrides) feature to correctly classify them in your repository.
|
||||
1. If there are no reported issues of this misclassification, [open an issue][new-issue] and include a link to the repository or a sample of the code that is being misclassified.
|
||||
|
||||
Keep in mind that the repository language stats are only [updated when you push changes](#how-linguist-works-on-githubcom), and the results are cached for the lifetime of your repository. If you have not made any changes to your repository in a while, you may find pushing another change will correct the stats.
|
||||
|
||||
### My repository isn't showing my language
|
||||
|
||||
Linguist does not consider [vendored code](#vendored-code), [generated code](#generated-code), [documentation](#documentation), or `data` (e.g. SQL) or `prose` (e.g. Markdown) languages (as defined by the `type` attribute in [`languages.yml`](/lib/linguist/languages.yml)) when calculating the repository language statistics.
|
||||
|
||||
If the language statistics bar is not showing your language at all, it could be for a few reasons:
|
||||
|
||||
1. Linguist doesn't know about your language.
|
||||
1. The extension you have chosen is not associated with your language in [`languages.yml`](/lib/linguist/languages.yml).
|
||||
1. All the files in your repository fall into one of the categories listed above that Linguist excludes by default.
|
||||
|
||||
If Linguist doesn't know about the language or the extension you're using, consider [contributing](CONTRIBUTING.md) to Linguist by opening a pull request to add support for your language or extension. For everything else, you can use the [manual overrides](#overrides) feature to tell Linguist to include your files in the language statistics.
|
||||
|
||||
### There's a problem with the syntax highlighting of a file
|
||||
|
||||
Linguist detects the language of a file but the actual syntax-highlighting is powered by a set of language grammars which are included in this project as a set of submodules [and may be found here](https://github.com/github/linguist/blob/master/vendor/README.md).
|
||||
Linguist detects the language of a file but the actual syntax-highlighting is powered by a set of language grammars which are included in this project as a set of submodules [as listed here](/vendor/README.md).
|
||||
|
||||
If you experience an issue with the syntax-highlighting on GitHub, **please report the issue to the upstream grammar repository, not here.** Grammars are updated every time we build the Linguist gem so upstream bug fixes are automatically incorporated as they are fixed.
|
||||
|
||||
If you experience an issue with the syntax-highlighting on GitHub, **please report the issue to the upstream grammar repository, not here.** Grammars are updated every time we build the Linguist gem and so upstream bug fixes are automatically incorporated as they are fixed.
|
||||
|
||||
## Overrides
|
||||
|
||||
Linguist supports a number of different custom overrides strategies for language definitions and vendored paths.
|
||||
Linguist supports a number of different custom override strategies for language definitions and file paths.
|
||||
|
||||
### Using gitattributes
|
||||
|
||||
Add a `.gitattributes` file to your project and use standard git-style path matchers for the files you want to override to set `linguist-documentation`, `linguist-language`, `linguist-vendored`, and `linguist-generated`. `.gitattributes` will be used to determine language statistics and will be used to syntax highlight files. You can also manually set syntax highlighting using [Vim or Emacs modelines](#using-emacs-or-vim-modelines).
|
||||
Add a `.gitattributes` file to your project and use standard git-style path matchers for the files you want to override using the `linguist-documentation`, `linguist-language`, `linguist-vendored`, `linguist-generated` and `linguist-detectable` attributes. `.gitattributes` will be used to determine language statistics and will be used to syntax highlight files. You can also manually set syntax highlighting using [Vim or Emacs modelines](#using-emacs-or-vim-modelines).
|
||||
|
||||
```
|
||||
$ cat .gitattributes
|
||||
@@ -41,7 +133,7 @@ $ cat .gitattributes
|
||||
|
||||
#### Vendored code
|
||||
|
||||
Checking code you didn't write, such as JavaScript libraries, into your git repo is a common practice, but this often inflates your project's language stats and may even cause your project to be labeled as another language. By default, Linguist treats all of the paths defined in [lib/linguist/vendor.yml](https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml) as vendored and therefore doesn't include them in the language statistics for a repository.
|
||||
Checking code you didn't write, such as JavaScript libraries, into your git repo is a common practice, but this often inflates your project's language stats and may even cause your project to be labeled as another language. By default, Linguist treats all of the paths defined in [`vendor.yml`](/lib/linguist/vendor.yml) as vendored and therefore doesn't include them in the language statistics for a repository.
|
||||
|
||||
Use the `linguist-vendored` attribute to vendor or un-vendor paths.
|
||||
|
||||
@@ -53,7 +145,7 @@ jquery.js linguist-vendored=false
|
||||
|
||||
#### Documentation
|
||||
|
||||
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.
|
||||
Just like vendored files, Linguist excludes documentation files from your project's language stats. [`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.
|
||||
|
||||
@@ -65,13 +157,28 @@ docs/formatter.rb linguist-documentation=false
|
||||
|
||||
#### Generated code
|
||||
|
||||
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.
|
||||
Not all plain text files are true source files. Generated files like minified JavaScript 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. [`generated.rb`](/lib/linguist/generated.rb) lists common generated paths and excludes them from the language statistics of your repository.
|
||||
|
||||
Use the `linguist-generated` attribute to mark or unmark paths as generated.
|
||||
|
||||
```
|
||||
$ cat .gitattributes
|
||||
Api.elm linguist-generated=true
|
||||
```
|
||||
|
||||
#### Detectable
|
||||
|
||||
Only programming languages are included in the language statistics. Languages of a different type (as defined in [`languages.yml`](/lib/linguist/languages.yml)) are not "detectable" causing them not to be included in the language statistics.
|
||||
|
||||
Use the `linguist-detectable` attribute to mark or unmark paths as detectable.
|
||||
|
||||
```
|
||||
$ cat .gitattributes
|
||||
*.kicad_pcb linguist-detectable=true
|
||||
*.sch linguist-detectable=true
|
||||
tools/export_bom.py linguist-detectable=false
|
||||
```
|
||||
|
||||
### Using Emacs or Vim modelines
|
||||
|
||||
If you do not want to use `.gitattributes` to override the syntax highlighting used on GitHub.com, 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
|
||||
@@ -90,52 +197,15 @@ vim: set ft=cpp:
|
||||
-*- mode: php;-*-
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Install the gem:
|
||||
|
||||
```
|
||||
$ gem install github-linguist
|
||||
```
|
||||
|
||||
Then use it in your application:
|
||||
|
||||
```ruby
|
||||
require 'rugged'
|
||||
require 'linguist'
|
||||
|
||||
repo = Rugged::Repository.new('.')
|
||||
project = Linguist::Repository.new(repo, repo.head.target_id)
|
||||
project.language #=> "Ruby"
|
||||
project.languages #=> { "Ruby" => 119387 }
|
||||
```
|
||||
|
||||
These stats are also printed out by the `linguist` executable. You can use the
|
||||
`--breakdown` flag, and the binary will also output the breakdown of files by language.
|
||||
|
||||
You can try running `linguist` on the root directory in this repository itself:
|
||||
|
||||
```
|
||||
$ bundle exec linguist --breakdown
|
||||
|
||||
100.00% Ruby
|
||||
|
||||
Ruby:
|
||||
Gemfile
|
||||
Rakefile
|
||||
bin/linguist
|
||||
github-linguist.gemspec
|
||||
lib/linguist.rb
|
||||
…
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Please check out our [contributing guidelines](CONTRIBUTING.md).
|
||||
|
||||
|
||||
## License
|
||||
|
||||
The language grammars included in this gem are covered by their repositories'
|
||||
respective licenses. `grammars.yml` specifies the repository for each grammar.
|
||||
respective licenses. [`vendor/README.md`](/vendor/README.md) lists the repository for each grammar.
|
||||
|
||||
All other files are covered by the MIT license, see `LICENSE`.
|
||||
|
||||
20
Rakefile
20
Rakefile
@@ -1,6 +1,7 @@
|
||||
require 'bundler/setup'
|
||||
require 'rake/clean'
|
||||
require 'rake/testtask'
|
||||
require 'rake/extensiontask'
|
||||
require 'yaml'
|
||||
require 'yajl'
|
||||
require 'open-uri'
|
||||
@@ -10,8 +11,14 @@ task :default => :test
|
||||
|
||||
Rake::TestTask.new
|
||||
|
||||
gem_spec = Gem::Specification.load('github-linguist.gemspec')
|
||||
|
||||
Rake::ExtensionTask.new('linguist', gem_spec) do |ext|
|
||||
ext.lib_dir = File.join('lib', 'linguist')
|
||||
end
|
||||
|
||||
# Extend test task to check for samples and fetch latest Ace modes
|
||||
task :test => [:check_samples, :fetch_ace_modes]
|
||||
task :test => [:compile, :check_samples, :fetch_ace_modes]
|
||||
|
||||
desc "Check that we have samples.json generated"
|
||||
task :check_samples do
|
||||
@@ -34,15 +41,22 @@ task :fetch_ace_modes do
|
||||
end
|
||||
end
|
||||
|
||||
task :samples do
|
||||
task :samples => :compile do
|
||||
require 'linguist/samples'
|
||||
json = Yajl.dump(Linguist::Samples.data, :pretty => true)
|
||||
File.write 'lib/linguist/samples.json', json
|
||||
end
|
||||
|
||||
task :flex do
|
||||
if `flex -V` !~ /^flex \d+\.\d+\.\d+/
|
||||
fail "flex not detected"
|
||||
end
|
||||
system "cd ext/linguist && flex tokenizer.l"
|
||||
end
|
||||
|
||||
task :build_gem => :samples do
|
||||
rm_rf "grammars"
|
||||
sh "script/convert-grammars"
|
||||
sh "script/grammar-compiler compile -o grammars || true"
|
||||
languages = YAML.load_file("lib/linguist/languages.yml")
|
||||
File.write("lib/linguist/languages.json", Yajl.dump(languages))
|
||||
`gem build github-linguist.gemspec`
|
||||
|
||||
@@ -117,9 +117,8 @@ def git_linguist(args)
|
||||
end
|
||||
|
||||
parser.parse!(args)
|
||||
|
||||
git_dir = `git rev-parse --git-dir`.strip
|
||||
raise "git-linguist must be run in a Git repository (#{Dir.pwd})" unless $?.success?
|
||||
raise "git-linguist must be run in a Git repository" unless $?.success?
|
||||
wrapper = GitLinguist.new(git_dir, commit, incremental)
|
||||
|
||||
case args.pop
|
||||
@@ -141,6 +140,10 @@ def git_linguist(args)
|
||||
$stderr.print(parser.help)
|
||||
exit 1
|
||||
end
|
||||
rescue Exception => e
|
||||
$stderr.puts e.message
|
||||
$stderr.puts e.backtrace
|
||||
exit 1
|
||||
end
|
||||
|
||||
git_linguist(ARGV)
|
||||
|
||||
3
ext/linguist/extconf.rb
Normal file
3
ext/linguist/extconf.rb
Normal file
@@ -0,0 +1,3 @@
|
||||
require 'mkmf'
|
||||
dir_config('linguist')
|
||||
create_makefile('linguist/linguist')
|
||||
2226
ext/linguist/lex.linguist_yy.c
Normal file
2226
ext/linguist/lex.linguist_yy.c
Normal file
File diff suppressed because it is too large
Load Diff
336
ext/linguist/lex.linguist_yy.h
Normal file
336
ext/linguist/lex.linguist_yy.h
Normal file
@@ -0,0 +1,336 @@
|
||||
#ifndef linguist_yyHEADER_H
|
||||
#define linguist_yyHEADER_H 1
|
||||
#define linguist_yyIN_HEADER 1
|
||||
|
||||
#line 6 "lex.linguist_yy.h"
|
||||
|
||||
#define YY_INT_ALIGNED short int
|
||||
|
||||
/* A lexical scanner generated by flex */
|
||||
|
||||
#define FLEX_SCANNER
|
||||
#define YY_FLEX_MAJOR_VERSION 2
|
||||
#define YY_FLEX_MINOR_VERSION 5
|
||||
#define YY_FLEX_SUBMINOR_VERSION 35
|
||||
#if YY_FLEX_SUBMINOR_VERSION > 0
|
||||
#define FLEX_BETA
|
||||
#endif
|
||||
|
||||
/* First, we deal with platform-specific or compiler-specific issues. */
|
||||
|
||||
/* begin standard C headers. */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/* end standard C headers. */
|
||||
|
||||
/* flex integer type definitions */
|
||||
|
||||
#ifndef FLEXINT_H
|
||||
#define FLEXINT_H
|
||||
|
||||
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
|
||||
|
||||
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
|
||||
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
|
||||
* if you want the limit (max/min) macros for int types.
|
||||
*/
|
||||
#ifndef __STDC_LIMIT_MACROS
|
||||
#define __STDC_LIMIT_MACROS 1
|
||||
#endif
|
||||
|
||||
#include <inttypes.h>
|
||||
typedef int8_t flex_int8_t;
|
||||
typedef uint8_t flex_uint8_t;
|
||||
typedef int16_t flex_int16_t;
|
||||
typedef uint16_t flex_uint16_t;
|
||||
typedef int32_t flex_int32_t;
|
||||
typedef uint32_t flex_uint32_t;
|
||||
typedef uint64_t flex_uint64_t;
|
||||
#else
|
||||
typedef signed char flex_int8_t;
|
||||
typedef short int flex_int16_t;
|
||||
typedef int flex_int32_t;
|
||||
typedef unsigned char flex_uint8_t;
|
||||
typedef unsigned short int flex_uint16_t;
|
||||
typedef unsigned int flex_uint32_t;
|
||||
#endif /* ! C99 */
|
||||
|
||||
/* Limits of integral types. */
|
||||
#ifndef INT8_MIN
|
||||
#define INT8_MIN (-128)
|
||||
#endif
|
||||
#ifndef INT16_MIN
|
||||
#define INT16_MIN (-32767-1)
|
||||
#endif
|
||||
#ifndef INT32_MIN
|
||||
#define INT32_MIN (-2147483647-1)
|
||||
#endif
|
||||
#ifndef INT8_MAX
|
||||
#define INT8_MAX (127)
|
||||
#endif
|
||||
#ifndef INT16_MAX
|
||||
#define INT16_MAX (32767)
|
||||
#endif
|
||||
#ifndef INT32_MAX
|
||||
#define INT32_MAX (2147483647)
|
||||
#endif
|
||||
#ifndef UINT8_MAX
|
||||
#define UINT8_MAX (255U)
|
||||
#endif
|
||||
#ifndef UINT16_MAX
|
||||
#define UINT16_MAX (65535U)
|
||||
#endif
|
||||
#ifndef UINT32_MAX
|
||||
#define UINT32_MAX (4294967295U)
|
||||
#endif
|
||||
|
||||
#endif /* ! FLEXINT_H */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
/* The "const" storage-class-modifier is valid. */
|
||||
#define YY_USE_CONST
|
||||
|
||||
#else /* ! __cplusplus */
|
||||
|
||||
/* C99 requires __STDC__ to be defined as 1. */
|
||||
#if defined (__STDC__)
|
||||
|
||||
#define YY_USE_CONST
|
||||
|
||||
#endif /* defined (__STDC__) */
|
||||
#endif /* ! __cplusplus */
|
||||
|
||||
#ifdef YY_USE_CONST
|
||||
#define yyconst const
|
||||
#else
|
||||
#define yyconst
|
||||
#endif
|
||||
|
||||
/* An opaque pointer. */
|
||||
#ifndef YY_TYPEDEF_YY_SCANNER_T
|
||||
#define YY_TYPEDEF_YY_SCANNER_T
|
||||
typedef void* yyscan_t;
|
||||
#endif
|
||||
|
||||
/* For convenience, these vars (plus the bison vars far below)
|
||||
are macros in the reentrant scanner. */
|
||||
#define yyin yyg->yyin_r
|
||||
#define yyout yyg->yyout_r
|
||||
#define yyextra yyg->yyextra_r
|
||||
#define yyleng yyg->yyleng_r
|
||||
#define yytext yyg->yytext_r
|
||||
#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
|
||||
#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
|
||||
#define yy_flex_debug yyg->yy_flex_debug_r
|
||||
|
||||
/* Size of default input buffer. */
|
||||
#ifndef YY_BUF_SIZE
|
||||
#define YY_BUF_SIZE 16384
|
||||
#endif
|
||||
|
||||
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
|
||||
#define YY_TYPEDEF_YY_BUFFER_STATE
|
||||
typedef struct yy_buffer_state *YY_BUFFER_STATE;
|
||||
#endif
|
||||
|
||||
#ifndef YY_TYPEDEF_YY_SIZE_T
|
||||
#define YY_TYPEDEF_YY_SIZE_T
|
||||
typedef size_t yy_size_t;
|
||||
#endif
|
||||
|
||||
#ifndef YY_STRUCT_YY_BUFFER_STATE
|
||||
#define YY_STRUCT_YY_BUFFER_STATE
|
||||
struct yy_buffer_state
|
||||
{
|
||||
FILE *yy_input_file;
|
||||
|
||||
char *yy_ch_buf; /* input buffer */
|
||||
char *yy_buf_pos; /* current position in input buffer */
|
||||
|
||||
/* Size of input buffer in bytes, not including room for EOB
|
||||
* characters.
|
||||
*/
|
||||
yy_size_t yy_buf_size;
|
||||
|
||||
/* Number of characters read into yy_ch_buf, not including EOB
|
||||
* characters.
|
||||
*/
|
||||
yy_size_t yy_n_chars;
|
||||
|
||||
/* Whether we "own" the buffer - i.e., we know we created it,
|
||||
* and can realloc() it to grow it, and should free() it to
|
||||
* delete it.
|
||||
*/
|
||||
int yy_is_our_buffer;
|
||||
|
||||
/* Whether this is an "interactive" input source; if so, and
|
||||
* if we're using stdio for input, then we want to use getc()
|
||||
* instead of fread(), to make sure we stop fetching input after
|
||||
* each newline.
|
||||
*/
|
||||
int yy_is_interactive;
|
||||
|
||||
/* Whether we're considered to be at the beginning of a line.
|
||||
* If so, '^' rules will be active on the next match, otherwise
|
||||
* not.
|
||||
*/
|
||||
int yy_at_bol;
|
||||
|
||||
int yy_bs_lineno; /**< The line count. */
|
||||
int yy_bs_column; /**< The column count. */
|
||||
|
||||
/* Whether to try to fill the input buffer when we reach the
|
||||
* end of it.
|
||||
*/
|
||||
int yy_fill_buffer;
|
||||
|
||||
int yy_buffer_status;
|
||||
|
||||
};
|
||||
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
|
||||
|
||||
void linguist_yyrestart (FILE *input_file ,yyscan_t yyscanner );
|
||||
void linguist_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
|
||||
YY_BUFFER_STATE linguist_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
|
||||
void linguist_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
|
||||
void linguist_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
|
||||
void linguist_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
|
||||
void linguist_yypop_buffer_state (yyscan_t yyscanner );
|
||||
|
||||
YY_BUFFER_STATE linguist_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
|
||||
YY_BUFFER_STATE linguist_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
|
||||
YY_BUFFER_STATE linguist_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
|
||||
|
||||
void *linguist_yyalloc (yy_size_t ,yyscan_t yyscanner );
|
||||
void *linguist_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
|
||||
void linguist_yyfree (void * ,yyscan_t yyscanner );
|
||||
|
||||
/* Begin user sect3 */
|
||||
|
||||
#define yytext_ptr yytext_r
|
||||
|
||||
#ifdef YY_HEADER_EXPORT_START_CONDITIONS
|
||||
#define INITIAL 0
|
||||
#define sgml 1
|
||||
#define c_comment 2
|
||||
#define xml_comment 3
|
||||
#define haskell_comment 4
|
||||
#define ocaml_comment 5
|
||||
#define python_dcomment 6
|
||||
#define python_scomment 7
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef YY_NO_UNISTD_H
|
||||
/* Special case for "unistd.h", since it is non-ANSI. We include it way
|
||||
* down here because we want the user's section 1 to have been scanned first.
|
||||
* The user has a chance to override it with an option.
|
||||
*/
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#define YY_EXTRA_TYPE struct tokenizer_extra *
|
||||
|
||||
int linguist_yylex_init (yyscan_t* scanner);
|
||||
|
||||
int linguist_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
|
||||
|
||||
/* Accessor methods to globals.
|
||||
These are made visible to non-reentrant scanners for convenience. */
|
||||
|
||||
int linguist_yylex_destroy (yyscan_t yyscanner );
|
||||
|
||||
int linguist_yyget_debug (yyscan_t yyscanner );
|
||||
|
||||
void linguist_yyset_debug (int debug_flag ,yyscan_t yyscanner );
|
||||
|
||||
YY_EXTRA_TYPE linguist_yyget_extra (yyscan_t yyscanner );
|
||||
|
||||
void linguist_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
|
||||
|
||||
FILE *linguist_yyget_in (yyscan_t yyscanner );
|
||||
|
||||
void linguist_yyset_in (FILE * in_str ,yyscan_t yyscanner );
|
||||
|
||||
FILE *linguist_yyget_out (yyscan_t yyscanner );
|
||||
|
||||
void linguist_yyset_out (FILE * out_str ,yyscan_t yyscanner );
|
||||
|
||||
yy_size_t linguist_yyget_leng (yyscan_t yyscanner );
|
||||
|
||||
char *linguist_yyget_text (yyscan_t yyscanner );
|
||||
|
||||
int linguist_yyget_lineno (yyscan_t yyscanner );
|
||||
|
||||
void linguist_yyset_lineno (int line_number ,yyscan_t yyscanner );
|
||||
|
||||
/* Macros after this point can all be overridden by user definitions in
|
||||
* section 1.
|
||||
*/
|
||||
|
||||
#ifndef YY_SKIP_YYWRAP
|
||||
#ifdef __cplusplus
|
||||
extern "C" int linguist_yywrap (yyscan_t yyscanner );
|
||||
#else
|
||||
extern int linguist_yywrap (yyscan_t yyscanner );
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef yytext_ptr
|
||||
static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
|
||||
#endif
|
||||
|
||||
#ifdef YY_NEED_STRLEN
|
||||
static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
|
||||
#endif
|
||||
|
||||
#ifndef YY_NO_INPUT
|
||||
|
||||
#endif
|
||||
|
||||
/* Amount of stuff to slurp up with each read. */
|
||||
#ifndef YY_READ_BUF_SIZE
|
||||
#define YY_READ_BUF_SIZE 8192
|
||||
#endif
|
||||
|
||||
/* Number of entries by which start-condition stack grows. */
|
||||
#ifndef YY_START_STACK_INCR
|
||||
#define YY_START_STACK_INCR 25
|
||||
#endif
|
||||
|
||||
/* Default declaration of generated scanner - a define so the user can
|
||||
* easily add parameters.
|
||||
*/
|
||||
#ifndef YY_DECL
|
||||
#define YY_DECL_IS_OURS 1
|
||||
|
||||
extern int linguist_yylex (yyscan_t yyscanner);
|
||||
|
||||
#define YY_DECL int linguist_yylex (yyscan_t yyscanner)
|
||||
#endif /* !YY_DECL */
|
||||
|
||||
/* yy_get_previous_state - get the state just before the EOB char was reached */
|
||||
|
||||
#undef YY_NEW_FILE
|
||||
#undef YY_FLUSH_BUFFER
|
||||
#undef yy_set_bol
|
||||
#undef yy_new_buffer
|
||||
#undef yy_set_interactive
|
||||
#undef YY_DO_BEFORE_ACTION
|
||||
|
||||
#ifdef YY_DECL_IS_OURS
|
||||
#undef YY_DECL_IS_OURS
|
||||
#undef YY_DECL
|
||||
#endif
|
||||
|
||||
#line 118 "tokenizer.l"
|
||||
|
||||
|
||||
#line 335 "lex.linguist_yy.h"
|
||||
#undef linguist_yyIN_HEADER
|
||||
#endif /* linguist_yyHEADER_H */
|
||||
75
ext/linguist/linguist.c
Normal file
75
ext/linguist/linguist.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include "ruby.h"
|
||||
#include "linguist.h"
|
||||
#include "lex.linguist_yy.h"
|
||||
|
||||
// Anything longer is unlikely to be useful.
|
||||
#define MAX_TOKEN_LEN 32
|
||||
|
||||
int linguist_yywrap(yyscan_t yyscanner) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static VALUE rb_tokenizer_extract_tokens(VALUE self, VALUE rb_data) {
|
||||
YY_BUFFER_STATE buf;
|
||||
yyscan_t scanner;
|
||||
struct tokenizer_extra extra;
|
||||
VALUE ary, s;
|
||||
long len;
|
||||
int r;
|
||||
|
||||
Check_Type(rb_data, T_STRING);
|
||||
|
||||
len = RSTRING_LEN(rb_data);
|
||||
if (len > 100000)
|
||||
len = 100000;
|
||||
|
||||
linguist_yylex_init_extra(&extra, &scanner);
|
||||
buf = linguist_yy_scan_bytes(RSTRING_PTR(rb_data), (int) len, scanner);
|
||||
|
||||
ary = rb_ary_new();
|
||||
do {
|
||||
extra.type = NO_ACTION;
|
||||
extra.token = NULL;
|
||||
r = linguist_yylex(scanner);
|
||||
switch (extra.type) {
|
||||
case NO_ACTION:
|
||||
break;
|
||||
case REGULAR_TOKEN:
|
||||
len = strlen(extra.token);
|
||||
if (len <= MAX_TOKEN_LEN)
|
||||
rb_ary_push(ary, rb_str_new(extra.token, len));
|
||||
free(extra.token);
|
||||
break;
|
||||
case SHEBANG_TOKEN:
|
||||
len = strlen(extra.token);
|
||||
if (len <= MAX_TOKEN_LEN) {
|
||||
s = rb_str_new2("SHEBANG#!");
|
||||
rb_str_cat(s, extra.token, len);
|
||||
rb_ary_push(ary, s);
|
||||
}
|
||||
free(extra.token);
|
||||
break;
|
||||
case SGML_TOKEN:
|
||||
len = strlen(extra.token);
|
||||
if (len <= MAX_TOKEN_LEN) {
|
||||
s = rb_str_new(extra.token, len);
|
||||
rb_str_cat2(s, ">");
|
||||
rb_ary_push(ary, s);
|
||||
}
|
||||
free(extra.token);
|
||||
break;
|
||||
}
|
||||
} while (r);
|
||||
|
||||
linguist_yy_delete_buffer(buf, scanner);
|
||||
linguist_yylex_destroy(scanner);
|
||||
|
||||
return ary;
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) void Init_linguist() {
|
||||
VALUE rb_mLinguist = rb_define_module("Linguist");
|
||||
VALUE rb_cTokenizer = rb_define_class_under(rb_mLinguist, "Tokenizer", rb_cObject);
|
||||
|
||||
rb_define_method(rb_cTokenizer, "extract_tokens", rb_tokenizer_extract_tokens, 1);
|
||||
}
|
||||
11
ext/linguist/linguist.h
Normal file
11
ext/linguist/linguist.h
Normal file
@@ -0,0 +1,11 @@
|
||||
enum tokenizer_type {
|
||||
NO_ACTION,
|
||||
REGULAR_TOKEN,
|
||||
SHEBANG_TOKEN,
|
||||
SGML_TOKEN,
|
||||
};
|
||||
|
||||
struct tokenizer_extra {
|
||||
char *token;
|
||||
enum tokenizer_type type;
|
||||
};
|
||||
119
ext/linguist/tokenizer.l
Normal file
119
ext/linguist/tokenizer.l
Normal file
@@ -0,0 +1,119 @@
|
||||
%{
|
||||
|
||||
#include "linguist.h"
|
||||
|
||||
#define feed_token(tok, typ) do { \
|
||||
yyextra->token = (tok); \
|
||||
yyextra->type = (typ); \
|
||||
} while (0)
|
||||
|
||||
#define eat_until_eol() do { \
|
||||
int c; \
|
||||
while ((c = input(yyscanner)) != '\n' && c != EOF && c); \
|
||||
if (c == EOF || !c) \
|
||||
return 0; \
|
||||
} while (0)
|
||||
|
||||
#define eat_until_unescaped(q) do { \
|
||||
int c; \
|
||||
while ((c = input(yyscanner)) != EOF && c) { \
|
||||
if (c == '\n') \
|
||||
break; \
|
||||
if (c == '\\') { \
|
||||
c = input(yyscanner); \
|
||||
if (c == EOF || !c) \
|
||||
return 0; \
|
||||
} else if (c == q) \
|
||||
break; \
|
||||
} \
|
||||
if (c == EOF || !c) \
|
||||
return 0; \
|
||||
} while (0)
|
||||
|
||||
%}
|
||||
|
||||
%option never-interactive yywrap reentrant nounput warn nodefault header-file="lex.linguist_yy.h" extra-type="struct tokenizer_extra *" prefix="linguist_yy"
|
||||
%x sgml c_comment xml_comment haskell_comment ocaml_comment python_dcomment python_scomment
|
||||
|
||||
%%
|
||||
|
||||
^#![ \t]*([[:alnum:]_\/]*\/)?env([ \t]+([^ \t=]*=[^ \t]*))*[ \t]+[[:alpha:]_]+ {
|
||||
const char *off = strrchr(yytext, ' ');
|
||||
if (!off)
|
||||
off = yytext;
|
||||
else
|
||||
++off;
|
||||
feed_token(strdup(off), SHEBANG_TOKEN);
|
||||
eat_until_eol();
|
||||
return 1;
|
||||
}
|
||||
|
||||
^#![ \t]*[[:alpha:]_\/]+ {
|
||||
const char *off = strrchr(yytext, '/');
|
||||
if (!off)
|
||||
off = yytext;
|
||||
else
|
||||
++off;
|
||||
if (strcmp(off, "env") == 0) {
|
||||
eat_until_eol();
|
||||
} else {
|
||||
feed_token(strdup(off), SHEBANG_TOKEN);
|
||||
eat_until_eol();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
^[ \t]*(\/\/|--|\#|%|\")" ".* { /* nothing */ }
|
||||
|
||||
"/*" { BEGIN(c_comment); }
|
||||
/* See below for xml_comment start. */
|
||||
"{-" { BEGIN(haskell_comment); }
|
||||
"(*" { BEGIN(ocaml_comment); }
|
||||
"\"\"\"" { BEGIN(python_dcomment); }
|
||||
"'''" { BEGIN(python_scomment); }
|
||||
|
||||
<c_comment,xml_comment,haskell_comment,ocaml_comment,python_dcomment,python_scomment>.|\n { /* nothing */ }
|
||||
<c_comment>"*/" { BEGIN(INITIAL); }
|
||||
<xml_comment>"-->" { BEGIN(INITIAL); }
|
||||
<haskell_comment>"-}" { BEGIN(INITIAL); }
|
||||
<ocaml_comment>"*)" { BEGIN(INITIAL); }
|
||||
<python_dcomment>"\"\"\"" { BEGIN(INITIAL); }
|
||||
<python_scomment>"'''" { BEGIN(INITIAL); }
|
||||
|
||||
\"\"|'' { /* nothing */ }
|
||||
\" { eat_until_unescaped('"'); }
|
||||
' { eat_until_unescaped('\''); }
|
||||
(0x[0-9a-fA-F]([0-9a-fA-F]|\.)*|[0-9]([0-9]|\.)*)([uU][lL]{0,2}|([eE][-+][0-9]*)?[fFlL]*) { /* nothing */ }
|
||||
\<[[:alnum:]_!./?-]+ {
|
||||
if (strcmp(yytext, "<!--") == 0) {
|
||||
BEGIN(xml_comment);
|
||||
} else {
|
||||
feed_token(strdup(yytext), SGML_TOKEN);
|
||||
BEGIN(sgml);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
<sgml>[[:alnum:]_]+=\" { feed_token(strndup(yytext, strlen(yytext) - 1), REGULAR_TOKEN); eat_until_unescaped('"'); return 1; }
|
||||
<sgml>[[:alnum:]_]+=' { feed_token(strndup(yytext, strlen(yytext) - 1), REGULAR_TOKEN); eat_until_unescaped('\''); return 1; }
|
||||
<sgml>[[:alnum:]_]+=[[:alnum:]_]* { feed_token(strdup(yytext), REGULAR_TOKEN); *(strchr(yyextra->token, '=') + 1) = 0; return 1; }
|
||||
<sgml>[[:alnum:]_]+ { feed_token(strdup(yytext), REGULAR_TOKEN); return 1; }
|
||||
<sgml>\> { BEGIN(INITIAL); }
|
||||
<sgml>.|\n { /* nothing */ }
|
||||
;|\{|\}|\(|\)|\[|\] { feed_token(strdup(yytext), REGULAR_TOKEN); return 1; }
|
||||
[[:alnum:]_.@#/*]+ {
|
||||
if (strncmp(yytext, "/*", 2) == 0) {
|
||||
if (strlen(yytext) >= 4 && strcmp(yytext + strlen(yytext) - 2, "*/") == 0) {
|
||||
/* nothing */
|
||||
} else {
|
||||
BEGIN(c_comment);
|
||||
}
|
||||
} else {
|
||||
feed_token(strdup(yytext), REGULAR_TOKEN);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
\<\<?|\+|\-|\*|\/|%|&&?|\|\|? { feed_token(strdup(yytext), REGULAR_TOKEN); return 1; }
|
||||
.|\n { /* nothing */ }
|
||||
|
||||
%%
|
||||
|
||||
@@ -2,7 +2,7 @@ require File.expand_path('../lib/linguist/version', __FILE__)
|
||||
|
||||
Gem::Specification.new do |s|
|
||||
s.name = 'github-linguist'
|
||||
s.version = Linguist::VERSION
|
||||
s.version = ENV['GEM_VERSION'] || Linguist::VERSION
|
||||
s.summary = "GitHub Language detection"
|
||||
s.description = 'We use this library at GitHub to detect blob languages, highlight code, ignore binary files, suppress generated files in diffs, and generate language breakdown graphs.'
|
||||
|
||||
@@ -10,21 +10,23 @@ Gem::Specification.new do |s|
|
||||
s.homepage = "https://github.com/github/linguist"
|
||||
s.license = "MIT"
|
||||
|
||||
s.files = Dir['lib/**/*'] + Dir['grammars/*'] + ['LICENSE']
|
||||
s.files = Dir['lib/**/*'] + Dir['ext/**/*'] + Dir['grammars/*'] + ['LICENSE']
|
||||
s.executables = ['linguist', 'git-linguist']
|
||||
s.extensions = ['ext/linguist/extconf.rb']
|
||||
|
||||
s.add_dependency 'charlock_holmes', '~> 0.7.3'
|
||||
s.add_dependency 'escape_utils', '~> 1.1.0'
|
||||
s.add_dependency 'charlock_holmes', '~> 0.7.6'
|
||||
s.add_dependency 'escape_utils', '~> 1.2.0'
|
||||
s.add_dependency 'mime-types', '>= 1.19'
|
||||
s.add_dependency 'rugged', '>= 0.25.1'
|
||||
|
||||
s.add_development_dependency 'minitest', '>= 5.0'
|
||||
s.add_development_dependency 'rake-compiler', '~> 0.9'
|
||||
s.add_development_dependency 'mocha'
|
||||
s.add_development_dependency 'plist', '~>3.1'
|
||||
s.add_development_dependency 'pry'
|
||||
s.add_development_dependency 'rake'
|
||||
s.add_development_dependency 'yajl-ruby'
|
||||
s.add_development_dependency 'color-proximity', '~> 0.2.1'
|
||||
s.add_development_dependency 'licensed'
|
||||
s.add_development_dependency 'licensee', '~> 8.8.0'
|
||||
s.add_development_dependency 'licensed', '~> 1.0.0'
|
||||
s.add_development_dependency 'licensee'
|
||||
end
|
||||
|
||||
110
grammars.yml
110
grammars.yml
@@ -1,4 +1,3 @@
|
||||
---
|
||||
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
|
||||
- source.systemverilog
|
||||
- source.ucfconstraints
|
||||
@@ -10,6 +9,8 @@ vendor/grammars/Agda.tmbundle:
|
||||
- source.agda
|
||||
vendor/grammars/Alloy.tmbundle:
|
||||
- source.alloy
|
||||
vendor/grammars/Assembly-Syntax-Definition:
|
||||
- source.assembly.unix
|
||||
vendor/grammars/AutoHotkey:
|
||||
- source.ahk
|
||||
vendor/grammars/BrightScript.tmbundle:
|
||||
@@ -45,12 +46,12 @@ vendor/grammars/Isabelle.tmbundle:
|
||||
- source.isabelle.theory
|
||||
vendor/grammars/JSyntax:
|
||||
- source.j
|
||||
vendor/grammars/Julia.tmbundle:
|
||||
- source.julia
|
||||
vendor/grammars/Lean.tmbundle:
|
||||
- source.lean
|
||||
vendor/grammars/LiveScript.tmbundle:
|
||||
- source.livescript
|
||||
vendor/grammars/MATLAB-Language-grammar:
|
||||
- source.matlab
|
||||
vendor/grammars/MQL5-sublime:
|
||||
- source.mql5
|
||||
vendor/grammars/MagicPython:
|
||||
@@ -100,6 +101,8 @@ vendor/grammars/Sublime-Modula-2:
|
||||
- source.modula2
|
||||
vendor/grammars/Sublime-Nit:
|
||||
- source.nit
|
||||
vendor/grammars/Sublime-Pep8/:
|
||||
- source.pep8
|
||||
vendor/grammars/Sublime-QML:
|
||||
- source.qml
|
||||
vendor/grammars/Sublime-REBOL:
|
||||
@@ -128,6 +131,9 @@ vendor/grammars/SublimePuppet:
|
||||
- source.puppet
|
||||
vendor/grammars/SublimeXtend:
|
||||
- source.xtend
|
||||
vendor/grammars/Syntax-highlighting-for-PostCSS:
|
||||
- source.css.postcss.sugarss
|
||||
- source.postcss
|
||||
vendor/grammars/TLA:
|
||||
- source.tla
|
||||
vendor/grammars/TXL:
|
||||
@@ -136,6 +142,11 @@ vendor/grammars/Terraform.tmLanguage:
|
||||
- source.terraform
|
||||
vendor/grammars/Textmate-Gosu-Bundle:
|
||||
- source.gosu.2
|
||||
vendor/grammars/TypeScript-TmLanguage:
|
||||
- source.ts
|
||||
- source.tsx
|
||||
- text.error-list
|
||||
- text.find-refs
|
||||
vendor/grammars/UrWeb-Language-Definition:
|
||||
- source.ur
|
||||
vendor/grammars/VBDotNetSyntax:
|
||||
@@ -185,6 +196,12 @@ vendor/grammars/atom-language-1c-bsl:
|
||||
vendor/grammars/atom-language-clean:
|
||||
- source.clean
|
||||
- text.restructuredtext.clean
|
||||
vendor/grammars/atom-language-julia:
|
||||
- source.julia
|
||||
- source.julia.console
|
||||
vendor/grammars/atom-language-nextflow:
|
||||
- source.nextflow
|
||||
- source.nextflow-groovy
|
||||
vendor/grammars/atom-language-p4:
|
||||
- source.p4
|
||||
vendor/grammars/atom-language-perl6:
|
||||
@@ -233,6 +250,8 @@ vendor/grammars/chapel-tmbundle:
|
||||
vendor/grammars/cmake.tmbundle:
|
||||
- source.cache.cmake
|
||||
- source.cmake
|
||||
vendor/grammars/conllu-linguist-grammar:
|
||||
- text.conllu
|
||||
vendor/grammars/cool-tmbundle:
|
||||
- source.cool
|
||||
vendor/grammars/cpp-qt.tmbundle:
|
||||
@@ -247,11 +266,11 @@ vendor/grammars/cython:
|
||||
- source.cython
|
||||
vendor/grammars/d.tmbundle:
|
||||
- source.d
|
||||
vendor/grammars/dart-sublime-bundle:
|
||||
vendor/grammars/dartlang:
|
||||
- source.dart
|
||||
- source.pubspec
|
||||
- text.dart-analysis-output
|
||||
- text.dart-doccomments
|
||||
- source.yaml-ext
|
||||
vendor/grammars/data-weave-tmLanguage:
|
||||
- source.data-weave
|
||||
vendor/grammars/desktop.tmbundle:
|
||||
- source.desktop
|
||||
vendor/grammars/diff.tmbundle:
|
||||
@@ -303,12 +322,9 @@ vendor/grammars/graphviz.tmbundle:
|
||||
- source.dot
|
||||
vendor/grammars/groovy.tmbundle:
|
||||
- source.groovy
|
||||
vendor/grammars/haxe-sublime-bundle:
|
||||
- source.erazor
|
||||
- source.haxe.2
|
||||
- source.hss.1
|
||||
vendor/grammars/haxe-TmLanguage:
|
||||
- source.hx
|
||||
- source.hxml
|
||||
- source.nmml
|
||||
vendor/grammars/html.tmbundle:
|
||||
- text.html.basic
|
||||
vendor/grammars/idl.tmbundle:
|
||||
@@ -333,14 +349,14 @@ vendor/grammars/java.tmbundle:
|
||||
- source.java-properties
|
||||
- text.html.jsp
|
||||
- text.junit-test-report
|
||||
vendor/grammars/javadoc.tmbundle:
|
||||
- text.html.javadoc
|
||||
vendor/grammars/javascript-objective-j.tmbundle:
|
||||
- source.js.objj
|
||||
vendor/grammars/jflex.tmbundle:
|
||||
- source.jflex
|
||||
vendor/grammars/json.tmbundle:
|
||||
- source.json
|
||||
vendor/grammars/kotlin-sublime-package:
|
||||
- source.Kotlin
|
||||
vendor/grammars/language-agc:
|
||||
- source.agc
|
||||
vendor/grammars/language-apl:
|
||||
@@ -350,6 +366,8 @@ vendor/grammars/language-asn1:
|
||||
vendor/grammars/language-babel:
|
||||
- source.js.jsx
|
||||
- source.regexp.babel
|
||||
vendor/grammars/language-ballerina:
|
||||
- source.ballerina
|
||||
vendor/grammars/language-batchfile:
|
||||
- source.batchfile
|
||||
vendor/grammars/language-blade:
|
||||
@@ -358,6 +376,8 @@ vendor/grammars/language-click:
|
||||
- source.click
|
||||
vendor/grammars/language-clojure:
|
||||
- source.clojure
|
||||
vendor/grammars/language-closure-templates:
|
||||
- text.html.soy
|
||||
vendor/grammars/language-coffee-script:
|
||||
- source.coffee
|
||||
- source.litcoffee
|
||||
@@ -368,16 +388,18 @@ vendor/grammars/language-csharp:
|
||||
- source.cake
|
||||
- source.cs
|
||||
- source.csx
|
||||
- source.nant-build
|
||||
vendor/grammars/language-csound:
|
||||
- source.csound
|
||||
- source.csound-document
|
||||
- source.csound-score
|
||||
vendor/grammars/language-css:
|
||||
- source.css
|
||||
vendor/grammars/language-cwl:
|
||||
- source.cwl
|
||||
vendor/grammars/language-emacs-lisp:
|
||||
- source.emacs.lisp
|
||||
vendor/grammars/language-fontforge:
|
||||
- source.afm
|
||||
- source.fontforge
|
||||
- source.opentype
|
||||
- text.sfd
|
||||
@@ -391,6 +413,7 @@ vendor/grammars/language-haml:
|
||||
- text.haml
|
||||
- text.hamlc
|
||||
vendor/grammars/language-haskell:
|
||||
- annotation.liquidhaskell.haskell
|
||||
- hint.haskell
|
||||
- hint.message.haskell
|
||||
- hint.type.haskell
|
||||
@@ -398,6 +421,7 @@ vendor/grammars/language-haskell:
|
||||
- source.cabal
|
||||
- source.haskell
|
||||
- source.hsc2hs
|
||||
- source.hsig
|
||||
- text.tex.latex.haskell
|
||||
vendor/grammars/language-inform7:
|
||||
- source.inform7
|
||||
@@ -415,6 +439,8 @@ vendor/grammars/language-jolie:
|
||||
vendor/grammars/language-jsoniq:
|
||||
- source.jq
|
||||
- source.xq
|
||||
vendor/grammars/language-kotlin:
|
||||
- source.kotlin
|
||||
vendor/grammars/language-less:
|
||||
- source.css.less
|
||||
vendor/grammars/language-maxscript:
|
||||
@@ -425,8 +451,18 @@ vendor/grammars/language-ncl:
|
||||
- source.ncl
|
||||
vendor/grammars/language-ninja:
|
||||
- source.ninja
|
||||
vendor/grammars/language-pan:
|
||||
- source.pan
|
||||
vendor/grammars/language-pcb:
|
||||
- source.gerber
|
||||
- source.pcb.board
|
||||
- source.pcb.schematic
|
||||
- source.pcb.sexp
|
||||
vendor/grammars/language-povray:
|
||||
- source.pov-ray sdl
|
||||
vendor/grammars/language-reason:
|
||||
- source.reason
|
||||
- source.reason.hover.type
|
||||
vendor/grammars/language-regexp:
|
||||
- source.regexp
|
||||
- source.regexp.extended
|
||||
@@ -434,6 +470,8 @@ vendor/grammars/language-renpy:
|
||||
- source.renpy
|
||||
vendor/grammars/language-restructuredtext:
|
||||
- text.restructuredtext
|
||||
vendor/grammars/language-ring:
|
||||
- source.ring
|
||||
vendor/grammars/language-roff:
|
||||
- source.ditroff
|
||||
- source.ditroff.desc
|
||||
@@ -444,6 +482,12 @@ vendor/grammars/language-roff:
|
||||
vendor/grammars/language-rpm-spec:
|
||||
- source.changelogs.rpm-spec
|
||||
- source.rpm-spec
|
||||
vendor/grammars/language-ruby:
|
||||
- source.ruby
|
||||
- source.ruby.gemfile
|
||||
- text.html.erb
|
||||
vendor/grammars/language-sed:
|
||||
- source.sed
|
||||
vendor/grammars/language-shellscript:
|
||||
- source.shell
|
||||
- text.shell-session
|
||||
@@ -453,11 +497,15 @@ vendor/grammars/language-toc-wow:
|
||||
- source.toc
|
||||
vendor/grammars/language-turing:
|
||||
- source.turing
|
||||
vendor/grammars/language-typelanguage:
|
||||
- source.tl
|
||||
vendor/grammars/language-viml:
|
||||
- source.viml
|
||||
vendor/grammars/language-wavefront:
|
||||
- source.wavefront.mtl
|
||||
- source.wavefront.obj
|
||||
vendor/grammars/language-webassembly:
|
||||
- source.webassembly
|
||||
vendor/grammars/language-xbase:
|
||||
- source.harbour
|
||||
vendor/grammars/language-xcompose:
|
||||
@@ -466,6 +514,8 @@ vendor/grammars/language-yaml:
|
||||
- source.yaml
|
||||
vendor/grammars/language-yang:
|
||||
- source.yang
|
||||
vendor/grammars/language-yara:
|
||||
- source.yara
|
||||
vendor/grammars/latex.tmbundle:
|
||||
- text.bibtex
|
||||
- text.log.latex
|
||||
@@ -495,9 +545,6 @@ vendor/grammars/marko-tmbundle:
|
||||
- text.marko
|
||||
vendor/grammars/mathematica-tmbundle:
|
||||
- source.mathematica
|
||||
vendor/grammars/matlab.tmbundle:
|
||||
- source.matlab
|
||||
- source.octave
|
||||
vendor/grammars/maven.tmbundle:
|
||||
- text.xml.pom
|
||||
vendor/grammars/mediawiki.tmbundle:
|
||||
@@ -532,7 +579,7 @@ vendor/grammars/opa.tmbundle:
|
||||
- source.opa
|
||||
vendor/grammars/openscad.tmbundle:
|
||||
- source.scad
|
||||
vendor/grammars/oz-tmbundle/Syntaxes/Oz.tmLanguage:
|
||||
vendor/grammars/oz-tmbundle:
|
||||
- source.oz
|
||||
vendor/grammars/parrot:
|
||||
- source.parrot.pir
|
||||
@@ -567,13 +614,8 @@ vendor/grammars/r.tmbundle:
|
||||
- text.tex.latex.rd
|
||||
vendor/grammars/rascal-syntax-highlighting:
|
||||
- source.rascal
|
||||
vendor/grammars/reason:
|
||||
- source.reason
|
||||
vendor/grammars/ruby-slim.tmbundle:
|
||||
- text.slim
|
||||
vendor/grammars/ruby.tmbundle:
|
||||
- source.ruby
|
||||
- text.html.erb
|
||||
vendor/grammars/sas.tmbundle:
|
||||
- source.SASLog
|
||||
- source.sas
|
||||
@@ -581,7 +623,6 @@ vendor/grammars/sass-textmate-bundle:
|
||||
- source.sass
|
||||
vendor/grammars/scala.tmbundle:
|
||||
- source.sbt
|
||||
- source.scala
|
||||
vendor/grammars/scheme.tmbundle:
|
||||
- source.scheme
|
||||
vendor/grammars/scilab.tmbundle:
|
||||
@@ -599,6 +640,8 @@ vendor/grammars/sourcepawn:
|
||||
- source.sp
|
||||
vendor/grammars/sql.tmbundle:
|
||||
- source.sql
|
||||
vendor/grammars/squirrel-language:
|
||||
- source.nut
|
||||
vendor/grammars/st2-zonefile:
|
||||
- text.zone_file
|
||||
vendor/grammars/standard-ml.tmbundle:
|
||||
@@ -606,6 +649,8 @@ vendor/grammars/standard-ml.tmbundle:
|
||||
- source.ml
|
||||
vendor/grammars/sublime-MuPAD:
|
||||
- source.mupad
|
||||
vendor/grammars/sublime-angelscript:
|
||||
- source.angelscript
|
||||
vendor/grammars/sublime-aspectj:
|
||||
- source.aspectj
|
||||
vendor/grammars/sublime-autoit:
|
||||
@@ -618,6 +663,8 @@ vendor/grammars/sublime-cirru:
|
||||
- source.cirru
|
||||
vendor/grammars/sublime-clips:
|
||||
- source.clips
|
||||
vendor/grammars/sublime-fantom:
|
||||
- source.fan
|
||||
vendor/grammars/sublime-glsl:
|
||||
- source.essl
|
||||
- source.glsl
|
||||
@@ -625,6 +672,8 @@ vendor/grammars/sublime-golo:
|
||||
- source.golo
|
||||
vendor/grammars/sublime-mask:
|
||||
- source.mask
|
||||
vendor/grammars/sublime-nearley:
|
||||
- source.ne
|
||||
vendor/grammars/sublime-netlinx:
|
||||
- source.netlinx
|
||||
- source.netlinx.erb
|
||||
@@ -639,6 +688,8 @@ vendor/grammars/sublime-rexx:
|
||||
- source.rexx
|
||||
vendor/grammars/sublime-robot-plugin:
|
||||
- text.robot
|
||||
vendor/grammars/sublime-shen:
|
||||
- source.shen
|
||||
vendor/grammars/sublime-spintools:
|
||||
- source.regexp.spin
|
||||
- source.spin
|
||||
@@ -648,11 +699,6 @@ vendor/grammars/sublime-terra:
|
||||
- source.terra
|
||||
vendor/grammars/sublime-text-ox:
|
||||
- source.ox
|
||||
vendor/grammars/sublime-typescript:
|
||||
- source.ts
|
||||
- source.tsx
|
||||
- text.error-list
|
||||
- text.find-refs
|
||||
vendor/grammars/sublime-varnish:
|
||||
- source.varnish.vcl
|
||||
vendor/grammars/sublime_cobol:
|
||||
@@ -683,8 +729,12 @@ vendor/grammars/verilog.tmbundle:
|
||||
- source.verilog
|
||||
vendor/grammars/vhdl:
|
||||
- source.vhdl
|
||||
vendor/grammars/vscode-scala-syntax:
|
||||
- source.scala
|
||||
vendor/grammars/vue-syntax-highlight:
|
||||
- text.html.vue
|
||||
vendor/grammars/wdl-sublime-syntax-highlighter:
|
||||
- source.wdl
|
||||
vendor/grammars/xc.tmbundle:
|
||||
- source.xc
|
||||
vendor/grammars/xml.tmbundle:
|
||||
|
||||
@@ -11,11 +11,13 @@ module Linguist
|
||||
#
|
||||
# path - A path String (does not necessarily exists on the file system).
|
||||
# content - Content of the file.
|
||||
# symlink - Whether the file is a symlink.
|
||||
#
|
||||
# Returns a Blob.
|
||||
def initialize(path, content)
|
||||
def initialize(path, content, symlink: false)
|
||||
@path = path
|
||||
@content = content
|
||||
@symlink = symlink
|
||||
end
|
||||
|
||||
# Public: Filename
|
||||
@@ -69,5 +71,12 @@ module Linguist
|
||||
"." + segments[index..-1].join(".")
|
||||
end
|
||||
end
|
||||
|
||||
# Public: Is this a symlink?
|
||||
#
|
||||
# Returns true or false.
|
||||
def symlink?
|
||||
@symlink
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -275,10 +275,8 @@ module Linguist
|
||||
# also--importantly--without having to duplicate many (potentially
|
||||
# large) strings.
|
||||
begin
|
||||
encoded_newlines = ["\r\n", "\r", "\n"].
|
||||
map { |nl| nl.encode(ruby_encoding, "ASCII-8BIT").force_encoding(data.encoding) }
|
||||
|
||||
data.split(Regexp.union(encoded_newlines), -1)
|
||||
|
||||
data.split(encoded_newlines_re, -1)
|
||||
rescue Encoding::ConverterNotFoundError
|
||||
# The data is not splittable in the detected encoding. Assume it's
|
||||
# one big line.
|
||||
@@ -289,6 +287,51 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
def encoded_newlines_re
|
||||
@encoded_newlines_re ||= Regexp.union(["\r\n", "\r", "\n"].
|
||||
map { |nl| nl.encode(ruby_encoding, "ASCII-8BIT").force_encoding(data.encoding) })
|
||||
|
||||
end
|
||||
|
||||
def first_lines(n)
|
||||
return lines[0...n] if defined? @lines
|
||||
return [] unless viewable? && data
|
||||
|
||||
i, c = 0, 0
|
||||
while c < n && j = data.index(encoded_newlines_re, i)
|
||||
i = j + $&.length
|
||||
c += 1
|
||||
end
|
||||
data[0...i].split(encoded_newlines_re, -1)
|
||||
end
|
||||
|
||||
def last_lines(n)
|
||||
if defined? @lines
|
||||
if n >= @lines.length
|
||||
@lines
|
||||
else
|
||||
lines[-n..-1]
|
||||
end
|
||||
end
|
||||
return [] unless viewable? && data
|
||||
|
||||
no_eol = true
|
||||
i, c = data.length, 0
|
||||
k = i
|
||||
while c < n && j = data.rindex(encoded_newlines_re, i - 1)
|
||||
if c == 0 && j + $&.length == i
|
||||
no_eol = false
|
||||
n += 1
|
||||
end
|
||||
i = j
|
||||
k = j + $&.length
|
||||
c += 1
|
||||
end
|
||||
r = data[k..-1].split(encoded_newlines_re, -1)
|
||||
r.pop if !no_eol
|
||||
r
|
||||
end
|
||||
|
||||
# Public: Get number of lines of code
|
||||
#
|
||||
# Requires Blob#data
|
||||
@@ -340,7 +383,10 @@ module Linguist
|
||||
!vendored? &&
|
||||
!documentation? &&
|
||||
!generated? &&
|
||||
language && DETECTABLE_TYPES.include?(language.type)
|
||||
language && ( defined?(detectable?) && !detectable?.nil? ?
|
||||
detectable? :
|
||||
DETECTABLE_TYPES.include?(language.type)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,6 +3,8 @@ require 'linguist/tokenizer'
|
||||
module Linguist
|
||||
# Language bayesian classifier.
|
||||
class Classifier
|
||||
CLASSIFIER_CONSIDER_BYTES = 50 * 1024
|
||||
|
||||
# Public: Use the classifier to detect language of the blob.
|
||||
#
|
||||
# blob - An object that quacks like a blob.
|
||||
@@ -17,7 +19,7 @@ module Linguist
|
||||
# Returns an Array of Language objects, most probable first.
|
||||
def self.call(blob, possible_languages)
|
||||
language_names = possible_languages.map(&:name)
|
||||
classify(Samples.cache, blob.data, language_names).map do |name, _|
|
||||
classify(Samples.cache, blob.data[0...CLASSIFIER_CONSIDER_BYTES], language_names).map do |name, _|
|
||||
Language[name] # Return the actual Language objects
|
||||
end
|
||||
end
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
- ^[Mm]an/
|
||||
- ^[Ee]xamples/
|
||||
- ^[Dd]emos?/
|
||||
- (^|/)inst/doc/
|
||||
|
||||
## Documentation files ##
|
||||
|
||||
|
||||
@@ -23,21 +23,26 @@ module Linguist
|
||||
#
|
||||
# Returns a String like '100644'
|
||||
def mode
|
||||
File.stat(@fullpath).mode.to_s(8)
|
||||
@mode ||= File.stat(@fullpath).mode.to_s(8)
|
||||
end
|
||||
|
||||
def symlink?
|
||||
return @symlink if defined? @symlink
|
||||
@symlink = (File.symlink?(@fullpath) rescue false)
|
||||
end
|
||||
|
||||
# Public: Read file contents.
|
||||
#
|
||||
# Returns a String.
|
||||
def data
|
||||
File.read(@fullpath)
|
||||
@data ||= File.read(@fullpath)
|
||||
end
|
||||
|
||||
# Public: Get byte size
|
||||
#
|
||||
# Returns an Integer.
|
||||
def size
|
||||
File.size(@fullpath)
|
||||
@size ||= File.size(@fullpath)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -52,12 +52,15 @@ module Linguist
|
||||
# Return true or false
|
||||
def generated?
|
||||
xcode_file? ||
|
||||
cocoapods? ||
|
||||
carthage_build? ||
|
||||
generated_net_designer_file? ||
|
||||
generated_net_specflow_feature_file? ||
|
||||
composer_lock? ||
|
||||
cargo_lock? ||
|
||||
node_modules? ||
|
||||
go_vendor? ||
|
||||
npm_shrinkwrap? ||
|
||||
npm_shrinkwrap_or_package_lock? ||
|
||||
godeps? ||
|
||||
generated_by_zephir? ||
|
||||
minified_files? ||
|
||||
@@ -81,7 +84,8 @@ module Linguist
|
||||
generated_grammarkit? ||
|
||||
generated_roxygen2? ||
|
||||
generated_jison? ||
|
||||
generated_yarn_lock?
|
||||
generated_yarn_lock? ||
|
||||
generated_grpc_cpp?
|
||||
end
|
||||
|
||||
# Internal: Is the blob an Xcode file?
|
||||
@@ -94,6 +98,20 @@ module Linguist
|
||||
['.nib', '.xcworkspacedata', '.xcuserstate'].include?(extname)
|
||||
end
|
||||
|
||||
# Internal: Is the blob part of Pods/, which contains dependencies not meant for humans in pull requests.
|
||||
#
|
||||
# Returns true or false.
|
||||
def cocoapods?
|
||||
!!name.match(/(^Pods|\/Pods)\//)
|
||||
end
|
||||
|
||||
# Internal: Is the blob part of Carthage/Build/, which contains dependencies not meant for humans in pull requests.
|
||||
#
|
||||
# Returns true or false.
|
||||
def carthage_build?
|
||||
!!name.match(/(^|\/)Carthage\/Build\//)
|
||||
end
|
||||
|
||||
# Internal: Is the blob minified files?
|
||||
#
|
||||
# Consider a file minified if the average line length is
|
||||
@@ -205,7 +223,7 @@ module Linguist
|
||||
#
|
||||
# Returns true or false
|
||||
def generated_net_designer_file?
|
||||
name.downcase =~ /\.designer\.cs$/
|
||||
name.downcase =~ /\.designer\.(cs|vb)$/
|
||||
end
|
||||
|
||||
# Internal: Is this a codegen file for Specflow feature file?
|
||||
@@ -243,7 +261,11 @@ module Linguist
|
||||
#
|
||||
# Returns true or false.
|
||||
def generated_postscript?
|
||||
return false unless ['.ps', '.eps'].include? extname
|
||||
return false unless ['.ps', '.eps', '.pfa'].include? extname
|
||||
|
||||
# Type 1 and Type 42 fonts converted to PostScript are stored as hex-encoded byte streams; these
|
||||
# streams are always preceded the `eexec` operator (if Type 1), or the `/sfnts` key (if Type 42).
|
||||
return true if data =~ /(\n|\r\n|\r)\s*(?:currentfile eexec\s+|\/sfnts\s+\[\1<)\h{8,}\1/
|
||||
|
||||
# We analyze the "%%Creator:" comment, which contains the author/generator
|
||||
# of the file. If there is one, it should be in one of the first few lines.
|
||||
@@ -253,10 +275,12 @@ module Linguist
|
||||
# Most generators write their version number, while human authors' or companies'
|
||||
# names don't contain numbers. So look if the line contains digits. Also
|
||||
# look for some special cases without version numbers.
|
||||
return creator =~ /[0-9]/ ||
|
||||
creator.include?("mpage") ||
|
||||
creator.include?("draw") ||
|
||||
creator.include?("ImageMagick")
|
||||
return true if creator =~ /[0-9]|draw|mpage|ImageMagick|inkscape|MATLAB/ ||
|
||||
creator =~ /PCBNEW|pnmtops|\(Unknown\)|Serif Affinity|Filterimage -tops/
|
||||
|
||||
# EAGLE doesn't include a version number when it generates PostScript.
|
||||
# However, it does prepend its name to the document's "%%Title" field.
|
||||
!!creator.include?("EAGLE") and lines[0..4].find {|line| line =~ /^%%Title: EAGLE Drawing /}
|
||||
end
|
||||
|
||||
def generated_go?
|
||||
@@ -326,11 +350,11 @@ module Linguist
|
||||
!!name.match(/vendor\/((?!-)[-0-9A-Za-z]+(?<!-)\.)+(com|edu|gov|in|me|net|org|fm|io)/)
|
||||
end
|
||||
|
||||
# Internal: Is the blob a generated npm shrinkwrap file?
|
||||
# Internal: Is the blob a generated npm shrinkwrap or package lock file?
|
||||
#
|
||||
# Returns true or false.
|
||||
def npm_shrinkwrap?
|
||||
!!name.match(/npm-shrinkwrap\.json/)
|
||||
def npm_shrinkwrap_or_package_lock?
|
||||
name.match(/npm-shrinkwrap\.json/) || name.match(/package-lock\.json/)
|
||||
end
|
||||
|
||||
# Internal: Is the blob part of Godeps/,
|
||||
@@ -355,6 +379,13 @@ module Linguist
|
||||
!!name.match(/.\.zep\.(?:c|h|php)$/)
|
||||
end
|
||||
|
||||
# Internal: Is the blob a generated Rust Cargo lock file?
|
||||
#
|
||||
# Returns true or false.
|
||||
def cargo_lock?
|
||||
!!name.match(/Cargo\.lock/)
|
||||
end
|
||||
|
||||
# Is the blob a VCR Cassette file?
|
||||
#
|
||||
# Returns true or false
|
||||
@@ -489,5 +520,18 @@ module Linguist
|
||||
return false unless lines.count > 0
|
||||
return lines[0].include?("# THIS IS AN AUTOGENERATED FILE")
|
||||
end
|
||||
|
||||
# Internal: Is this a protobuf/grpc-generated C++ file?
|
||||
#
|
||||
# A generated file contains:
|
||||
# // Generated by the gRPC C++ plugin.
|
||||
# on the first line.
|
||||
#
|
||||
# Return true or false
|
||||
def generated_grpc_cpp?
|
||||
return false unless %w{.cpp .hpp .h .cc}.include? extname
|
||||
return false unless lines.count > 1
|
||||
return lines[0].start_with?("// Generated by the gRPC")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
module Linguist
|
||||
# A collection of simple heuristics that can be used to better analyze languages.
|
||||
class Heuristics
|
||||
HEURISTICS_CONSIDER_BYTES = 50 * 1024
|
||||
|
||||
# Public: Use heuristics to detect language of the blob.
|
||||
#
|
||||
# blob - An object that quacks like a blob.
|
||||
@@ -14,12 +16,13 @@ module Linguist
|
||||
#
|
||||
# Returns an Array of languages, or empty if none matched or were inconclusive.
|
||||
def self.call(blob, candidates)
|
||||
data = blob.data
|
||||
return [] if blob.symlink?
|
||||
|
||||
data = blob.data[0...HEURISTICS_CONSIDER_BYTES]
|
||||
|
||||
@heuristics.each do |heuristic|
|
||||
if heuristic.matches?(blob.name)
|
||||
languages = Array(heuristic.call(data))
|
||||
return languages if languages.any? || languages.all? { |l| candidates.include?(l) }
|
||||
if heuristic.matches?(blob.name, candidates)
|
||||
return Array(heuristic.call(data))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,7 +31,8 @@ module Linguist
|
||||
|
||||
# Internal: Define a new heuristic.
|
||||
#
|
||||
# languages - String names of languages to disambiguate.
|
||||
# exts_and_langs - String names of file extensions and languages to
|
||||
# disambiguate.
|
||||
# heuristic - Block which takes data as an argument and returns a Language or nil.
|
||||
#
|
||||
# Examples
|
||||
@@ -41,23 +45,28 @@ module Linguist
|
||||
# end
|
||||
# end
|
||||
#
|
||||
def self.disambiguate(*extensions, &heuristic)
|
||||
@heuristics << new(extensions, &heuristic)
|
||||
def self.disambiguate(*exts_and_langs, &heuristic)
|
||||
@heuristics << new(exts_and_langs, &heuristic)
|
||||
end
|
||||
|
||||
# Internal: Array of defined heuristics
|
||||
@heuristics = []
|
||||
|
||||
# Internal
|
||||
def initialize(extensions, &heuristic)
|
||||
@extensions = extensions
|
||||
def initialize(exts_and_langs, &heuristic)
|
||||
@exts_and_langs, @candidates = exts_and_langs.partition {|e| e =~ /\A\./}
|
||||
@heuristic = heuristic
|
||||
end
|
||||
|
||||
# Internal: Check if this heuristic matches the candidate languages.
|
||||
def matches?(filename)
|
||||
# Internal: Check if this heuristic matches the candidate filenames or
|
||||
# languages.
|
||||
def matches?(filename, candidates)
|
||||
filename = filename.downcase
|
||||
@extensions.any? { |ext| filename.end_with?(ext) }
|
||||
candidates = candidates.compact.map(&:name)
|
||||
@exts_and_langs.any? { |ext| filename.end_with?(ext) } ||
|
||||
(candidates.any? &&
|
||||
(@candidates - candidates == [] &&
|
||||
candidates - @candidates == []))
|
||||
end
|
||||
|
||||
# Internal: Perform the heuristic
|
||||
@@ -66,7 +75,25 @@ module Linguist
|
||||
end
|
||||
|
||||
# Common heuristics
|
||||
CPlusPlusRegex = Regexp.union(
|
||||
/^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>/,
|
||||
/^\s*template\s*</,
|
||||
/^[ \t]*try/,
|
||||
/^[ \t]*catch\s*\(/,
|
||||
/^[ \t]*(class|(using[ \t]+)?namespace)\s+\w+/,
|
||||
/^[ \t]*(private|public|protected):$/,
|
||||
/std::\w+/)
|
||||
ObjectiveCRegex = /^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])/
|
||||
Perl5Regex = /\buse\s+(?:strict\b|v?5\.)/
|
||||
Perl6Regex = /^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)/
|
||||
|
||||
disambiguate ".as" do |data|
|
||||
if /^\s*(package\s+[a-z0-9_\.]+|import\s+[a-zA-Z0-9_\.]+;|class\s+[A-Za-z0-9_]+\s+extends\s+[A-Za-z0-9_]+)/.match(data)
|
||||
Language["ActionScript"]
|
||||
else
|
||||
Language["AngelScript"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".asc" do |data|
|
||||
if /^(----[- ]BEGIN|ssh-(rsa|dss)) /.match(data)
|
||||
@@ -206,8 +233,7 @@ module Linguist
|
||||
disambiguate ".h" do |data|
|
||||
if ObjectiveCRegex.match(data)
|
||||
Language["Objective-C"]
|
||||
elsif (/^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>/.match(data) ||
|
||||
/^\s*template\s*</.match(data) || /^[ \t]*try/.match(data) || /^[ \t]*catch\s*\(/.match(data) || /^[ \t]*(class|(using[ \t]+)?namespace)\s+\w+/.match(data) || /^[ \t]*(private|public|protected):$/.match(data) || /std::\w+/.match(data))
|
||||
elsif CPlusPlusRegex.match(data)
|
||||
Language["C++"]
|
||||
end
|
||||
end
|
||||
@@ -297,7 +323,7 @@ module Linguist
|
||||
disambiguate ".ms" do |data|
|
||||
if /^[.'][a-z][a-z](\s|$)/i.match(data)
|
||||
Language["Roff"]
|
||||
elsif /(?<!\S)\.(include|globa?l)\s/.match(data) || /(?<!\/\*)(\A|\n)\s*\.[A-Za-z]/.match(data.gsub(/"([^\\"]|\\.)*"|'([^\\']|\\.)*'|\\\s*(?:--.*)?\n/, ""))
|
||||
elsif /(?<!\S)\.(include|globa?l)\s/.match(data) || /(?<!\/\*)(\A|\n)\s*\.[A-Za-z][_A-Za-z0-9]*:/.match(data.gsub(/"([^\\"]|\\.)*"|'([^\\']|\\.)*'|\\\s*(?:--.*)?\n/, ""))
|
||||
Language["Unix Assembly"]
|
||||
else
|
||||
Language["MAXScript"]
|
||||
@@ -337,31 +363,25 @@ module Linguist
|
||||
disambiguate ".pl" do |data|
|
||||
if /^[^#]*:-/.match(data)
|
||||
Language["Prolog"]
|
||||
elsif /use strict|use\s+v?5\./.match(data)
|
||||
elsif Perl5Regex.match(data)
|
||||
Language["Perl"]
|
||||
elsif /^(use v6|(my )?class|module)/.match(data)
|
||||
Language["Perl6"]
|
||||
elsif Perl6Regex.match(data)
|
||||
Language["Perl 6"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".pm" do |data|
|
||||
if /^\s*(?:use\s+v6\s*;|(?:\bmy\s+)?class|module)\b/.match(data)
|
||||
Language["Perl6"]
|
||||
elsif /\buse\s+(?:strict\b|v?5\.)/.match(data)
|
||||
Language["Perl"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".pod" do |data|
|
||||
if /^=\w+\b/.match(data)
|
||||
Language["Pod"]
|
||||
else
|
||||
if Perl5Regex.match(data)
|
||||
Language["Perl"]
|
||||
elsif Perl6Regex.match(data)
|
||||
Language["Perl 6"]
|
||||
elsif /^\s*\/\* XPM \*\//.match(data)
|
||||
Language["XPM"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".pro" do |data|
|
||||
if /^[^#]+:-/.match(data)
|
||||
if /^[^\[#]+:-/.match(data)
|
||||
Language["Prolog"]
|
||||
elsif data.include?("last_client=")
|
||||
Language["INI"]
|
||||
@@ -443,12 +463,12 @@ module Linguist
|
||||
end
|
||||
|
||||
disambiguate ".t" do |data|
|
||||
if /^\s*%[ \t]+|^\s*var\s+\w+\s*:=\s*\w+/.match(data)
|
||||
Language["Turing"]
|
||||
elsif /^\s*(?:use\s+v6\s*;|\bmodule\b|\b(?:my\s+)?class\b)/.match(data)
|
||||
Language["Perl6"]
|
||||
elsif /\buse\s+(?:strict\b|v?5\.)/.match(data)
|
||||
if Perl5Regex.match(data)
|
||||
Language["Perl"]
|
||||
elsif Perl6Regex.match(data)
|
||||
Language["Perl 6"]
|
||||
elsif /^\s*%[ \t]+|^\s*var\s+\w+\s*:=\s*\w+/.match(data)
|
||||
Language["Turing"]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -461,7 +481,7 @@ module Linguist
|
||||
end
|
||||
|
||||
disambiguate ".ts" do |data|
|
||||
if data.include?("<TS")
|
||||
if /<TS\b/.match(data)
|
||||
Language["XML"]
|
||||
else
|
||||
Language["TypeScript"]
|
||||
@@ -484,5 +504,24 @@ module Linguist
|
||||
Language["XML"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".w" do |data|
|
||||
if (data.include?("&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS"))
|
||||
Language["OpenEdge ABL"]
|
||||
elsif /^@(<|\w+\.)/.match(data)
|
||||
Language["CWeb"]
|
||||
end
|
||||
end
|
||||
|
||||
disambiguate ".x" do |data|
|
||||
if /\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\(/.match(data)
|
||||
Language["RPC"]
|
||||
elsif /^%(end|ctor|hook|group)\b/.match(data)
|
||||
Language["Logos"]
|
||||
elsif /OUTPUT_ARCH\(|OUTPUT_FORMAT\(|SECTIONS/.match(data)
|
||||
Language["Linker Script"]
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -109,8 +109,8 @@ module Linguist
|
||||
#
|
||||
# Returns the Language or nil if none was found.
|
||||
def self.find_by_name(name)
|
||||
return nil if name.to_s.empty?
|
||||
name && (@name_index[name.downcase] || @name_index[name.split(',').first.downcase])
|
||||
return nil if !name.is_a?(String) || name.to_s.empty?
|
||||
name && (@name_index[name.downcase] || @name_index[name.split(',', 2).first.downcase])
|
||||
end
|
||||
|
||||
# Public: Look up Language by one of its aliases.
|
||||
@@ -124,8 +124,8 @@ module Linguist
|
||||
#
|
||||
# Returns the Language or nil if none was found.
|
||||
def self.find_by_alias(name)
|
||||
return nil if name.to_s.empty?
|
||||
name && (@alias_index[name.downcase] || @alias_index[name.split(',').first.downcase])
|
||||
return nil if !name.is_a?(String) || name.to_s.empty?
|
||||
name && (@alias_index[name.downcase] || @alias_index[name.split(',', 2).first.downcase])
|
||||
end
|
||||
|
||||
# Public: Look up Languages by filename.
|
||||
@@ -214,15 +214,12 @@ module Linguist
|
||||
#
|
||||
# Returns the Language or nil if none was found.
|
||||
def self.[](name)
|
||||
return nil if name.to_s.empty?
|
||||
return nil if !name.is_a?(String) || name.to_s.empty?
|
||||
|
||||
lang = @index[name.downcase]
|
||||
return lang if lang
|
||||
|
||||
name = name.split(',').first
|
||||
return nil if name.to_s.empty?
|
||||
|
||||
@index[name.downcase]
|
||||
@index[name.split(',', 2).first.downcase]
|
||||
end
|
||||
|
||||
# Public: A List of popular languages
|
||||
@@ -542,14 +539,6 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
if fns = filenames[name]
|
||||
fns.each do |filename|
|
||||
if !options['filenames'].include?(filename)
|
||||
options['filenames'] << filename
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Language.create(
|
||||
:name => name,
|
||||
:color => options['color'],
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,8 @@ module Linguist
|
||||
GIT_ATTR = ['linguist-documentation',
|
||||
'linguist-language',
|
||||
'linguist-vendored',
|
||||
'linguist-generated']
|
||||
'linguist-generated',
|
||||
'linguist-detectable']
|
||||
|
||||
GIT_ATTR_OPTS = { :priority => [:index], :skip_system => true }
|
||||
GIT_ATTR_FLAGS = Rugged::Repository::Attributes.parse_opts(GIT_ATTR_OPTS)
|
||||
@@ -70,6 +71,14 @@ module Linguist
|
||||
end
|
||||
end
|
||||
|
||||
def detectable?
|
||||
if attr = git_attributes['linguist-detectable']
|
||||
return boolean_attribute(attr)
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def data
|
||||
load_blob!
|
||||
@data
|
||||
@@ -80,6 +89,11 @@ module Linguist
|
||||
@size
|
||||
end
|
||||
|
||||
def symlink?
|
||||
# We don't create LazyBlobs for symlinks.
|
||||
false
|
||||
end
|
||||
|
||||
def cleanup!
|
||||
@data.clear if @data
|
||||
end
|
||||
|
||||
@@ -3,15 +3,20 @@ module Linguist
|
||||
# Public: Use shebang to detect language of the blob.
|
||||
#
|
||||
# blob - An object that quacks like a blob.
|
||||
# candidates - A list of candidate languages.
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# Shebang.call(FileBlob.new("path/to/file"))
|
||||
#
|
||||
# Returns an Array with one Language if the blob has a shebang with a valid
|
||||
# interpreter, or empty if there is no shebang.
|
||||
def self.call(blob, _ = nil)
|
||||
Language.find_by_interpreter interpreter(blob.data)
|
||||
# Returns an array of languages from the candidate list for which the
|
||||
# blob's shebang is valid. Returns an empty list if there is no shebang.
|
||||
# If the candidate list is empty, any language is a valid candidate.
|
||||
def self.call(blob, candidates)
|
||||
return [] if blob.symlink?
|
||||
|
||||
languages = Language.find_by_interpreter interpreter(blob.data)
|
||||
candidates.any? ? candidates & languages : languages
|
||||
end
|
||||
|
||||
# Public: Get the interpreter from the shebang
|
||||
|
||||
@@ -2,8 +2,21 @@ module Linguist
|
||||
module Strategy
|
||||
# Detects language based on extension
|
||||
class Extension
|
||||
def self.call(blob, _)
|
||||
Language.find_by_extension(blob.name.to_s)
|
||||
# Public: Use the file extension to detect the blob's language.
|
||||
#
|
||||
# blob - An object that quacks like a blob.
|
||||
# candidates - A list of candidate languages.
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# Extension.call(FileBlob.new("path/to/file"))
|
||||
#
|
||||
# Returns an array of languages associated with a blob's file extension.
|
||||
# Selected languages must be in the candidate list, except if it's empty,
|
||||
# in which case any language is a valid candidate.
|
||||
def self.call(blob, candidates)
|
||||
languages = Language.find_by_extension(blob.name.to_s)
|
||||
candidates.any? ? candidates & languages : languages
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,9 +2,22 @@ module Linguist
|
||||
module Strategy
|
||||
# Detects language based on filename
|
||||
class Filename
|
||||
def self.call(blob, _)
|
||||
# Public: Use the filename to detect the blob's language.
|
||||
#
|
||||
# blob - An object that quacks like a blob.
|
||||
# candidates - A list of candidate languages.
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# Filename.call(FileBlob.new("path/to/file"))
|
||||
#
|
||||
# Returns an array of languages with a associated blob's filename.
|
||||
# Selected languages must be in the candidate list, except if it's empty,
|
||||
# in which case any language is a valid candidate.
|
||||
def self.call(blob, candidates)
|
||||
name = blob.name.to_s
|
||||
Language.find_by_filename(name)
|
||||
languages = Language.find_by_filename(name)
|
||||
candidates.any? ? candidates & languages : languages
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -109,8 +109,10 @@ module Linguist
|
||||
# Returns an Array with one Language if the blob has a Vim or Emacs modeline
|
||||
# that matches a Language name or alias. Returns an empty array if no match.
|
||||
def self.call(blob, _ = nil)
|
||||
header = blob.lines.first(SEARCH_SCOPE).join("\n")
|
||||
footer = blob.lines.last(SEARCH_SCOPE).join("\n")
|
||||
return [] if blob.symlink?
|
||||
|
||||
header = blob.first_lines(SEARCH_SCOPE).join("\n")
|
||||
footer = blob.last_lines(SEARCH_SCOPE).join("\n")
|
||||
Array(Language.find_by_alias(modeline(header + footer)))
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
require 'strscan'
|
||||
require 'linguist/linguist'
|
||||
|
||||
module Linguist
|
||||
# Generic programming language tokenizer.
|
||||
@@ -15,191 +16,5 @@ module Linguist
|
||||
def self.tokenize(data)
|
||||
new.extract_tokens(data)
|
||||
end
|
||||
|
||||
# Read up to 100KB
|
||||
BYTE_LIMIT = 100_000
|
||||
|
||||
# Start state on token, ignore anything till the next newline
|
||||
SINGLE_LINE_COMMENTS = [
|
||||
'//', # C
|
||||
'--', # Ada, Haskell, AppleScript
|
||||
'#', # Ruby
|
||||
'%', # Tex
|
||||
'"', # Vim
|
||||
]
|
||||
|
||||
# Start state on opening token, ignore anything until the closing
|
||||
# token is reached.
|
||||
MULTI_LINE_COMMENTS = [
|
||||
['/*', '*/'], # C
|
||||
['<!--', '-->'], # XML
|
||||
['{-', '-}'], # Haskell
|
||||
['(*', '*)'], # Coq
|
||||
['"""', '"""'], # Python
|
||||
["'''", "'''"] # Python
|
||||
]
|
||||
|
||||
START_SINGLE_LINE_COMMENT = Regexp.compile(SINGLE_LINE_COMMENTS.map { |c|
|
||||
"\s*#{Regexp.escape(c)} "
|
||||
}.join("|"))
|
||||
|
||||
START_MULTI_LINE_COMMENT = Regexp.compile(MULTI_LINE_COMMENTS.map { |c|
|
||||
Regexp.escape(c[0])
|
||||
}.join("|"))
|
||||
|
||||
# Internal: Extract generic tokens from data.
|
||||
#
|
||||
# data - String to scan.
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# extract_tokens("printf('Hello')")
|
||||
# # => ['printf', '(', ')']
|
||||
#
|
||||
# Returns Array of token Strings.
|
||||
def extract_tokens(data)
|
||||
s = StringScanner.new(data)
|
||||
|
||||
tokens = []
|
||||
until s.eos?
|
||||
break if s.pos >= BYTE_LIMIT
|
||||
|
||||
if token = s.scan(/^#!.+$/)
|
||||
if name = extract_shebang(token)
|
||||
tokens << "SHEBANG#!#{name}"
|
||||
end
|
||||
|
||||
# Single line comment
|
||||
elsif s.beginning_of_line? && token = s.scan(START_SINGLE_LINE_COMMENT)
|
||||
# tokens << token.strip
|
||||
s.skip_until(/\n|\Z/)
|
||||
|
||||
# Multiline comments
|
||||
elsif token = s.scan(START_MULTI_LINE_COMMENT)
|
||||
# tokens << token
|
||||
close_token = MULTI_LINE_COMMENTS.assoc(token)[1]
|
||||
s.skip_until(Regexp.compile(Regexp.escape(close_token)))
|
||||
# tokens << close_token
|
||||
|
||||
# Skip single or double quoted strings
|
||||
elsif s.scan(/"/)
|
||||
if s.peek(1) == "\""
|
||||
s.getch
|
||||
else
|
||||
s.skip_until(/(?<!\\)"/)
|
||||
end
|
||||
elsif s.scan(/'/)
|
||||
if s.peek(1) == "'"
|
||||
s.getch
|
||||
else
|
||||
s.skip_until(/(?<!\\)'/)
|
||||
end
|
||||
|
||||
# Skip number literals
|
||||
elsif s.scan(/(0x\h(\h|\.)*|\d(\d|\.)*)([uU][lL]{0,2}|([eE][-+]\d*)?[fFlL]*)/)
|
||||
|
||||
# SGML style brackets
|
||||
elsif token = s.scan(/<[^\s<>][^<>]*>/)
|
||||
extract_sgml_tokens(token).each { |t| tokens << t }
|
||||
|
||||
# Common programming punctuation
|
||||
elsif token = s.scan(/;|\{|\}|\(|\)|\[|\]/)
|
||||
tokens << token
|
||||
|
||||
# Regular token
|
||||
elsif token = s.scan(/[\w\.@#\/\*]+/)
|
||||
tokens << token
|
||||
|
||||
# Common operators
|
||||
elsif token = s.scan(/<<?|\+|\-|\*|\/|%|&&?|\|\|?/)
|
||||
tokens << token
|
||||
|
||||
else
|
||||
s.getch
|
||||
end
|
||||
end
|
||||
|
||||
tokens
|
||||
end
|
||||
|
||||
# Internal: Extract normalized shebang command token.
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# extract_shebang("#!/usr/bin/ruby")
|
||||
# # => "ruby"
|
||||
#
|
||||
# extract_shebang("#!/usr/bin/env node")
|
||||
# # => "node"
|
||||
#
|
||||
# extract_shebang("#!/usr/bin/env A=B foo=bar awk -f")
|
||||
# # => "awk"
|
||||
#
|
||||
# Returns String token or nil it couldn't be parsed.
|
||||
def extract_shebang(data)
|
||||
s = StringScanner.new(data)
|
||||
|
||||
if path = s.scan(/^#!\s*\S+/)
|
||||
script = path.split('/').last
|
||||
if script == 'env'
|
||||
s.scan(/\s+/)
|
||||
s.scan(/.*=[^\s]+\s+/)
|
||||
script = s.scan(/\S+/)
|
||||
end
|
||||
script = script[/[^\d]+/, 0] if script
|
||||
return script
|
||||
end
|
||||
|
||||
nil
|
||||
end
|
||||
|
||||
# Internal: Extract tokens from inside SGML tag.
|
||||
#
|
||||
# data - SGML tag String.
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# extract_sgml_tokens("<a href='' class=foo>")
|
||||
# # => ["<a>", "href="]
|
||||
#
|
||||
# Returns Array of token Strings.
|
||||
def extract_sgml_tokens(data)
|
||||
s = StringScanner.new(data)
|
||||
|
||||
tokens = []
|
||||
|
||||
until s.eos?
|
||||
# Emit start token
|
||||
if token = s.scan(/<\/?[^\s>]+/)
|
||||
tokens << "#{token}>"
|
||||
|
||||
# Emit attributes with trailing =
|
||||
elsif token = s.scan(/\w+=/)
|
||||
tokens << token
|
||||
|
||||
# Then skip over attribute value
|
||||
if s.scan(/"/)
|
||||
s.skip_until(/[^\\]"/)
|
||||
elsif s.scan(/'/)
|
||||
s.skip_until(/[^\\]'/)
|
||||
else
|
||||
s.skip_until(/\w+/)
|
||||
end
|
||||
|
||||
# Emit lone attributes
|
||||
elsif token = s.scan(/\w+/)
|
||||
tokens << token
|
||||
|
||||
# Stop at the end of the tag
|
||||
elsif s.scan(/>/)
|
||||
s.terminate
|
||||
|
||||
else
|
||||
s.getch
|
||||
end
|
||||
end
|
||||
|
||||
tokens
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -19,9 +19,7 @@
|
||||
- (^|/)dist/
|
||||
|
||||
# C deps
|
||||
# https://github.com/joyent/node
|
||||
- ^deps/
|
||||
- ^tools/
|
||||
- (^|/)configure$
|
||||
- (^|/)config.guess$
|
||||
- (^|/)config.sub$
|
||||
@@ -65,6 +63,7 @@
|
||||
|
||||
# Font Awesome
|
||||
- (^|/)font-awesome\.(css|less|scss|styl)$
|
||||
- (^|/)font-awesome/.*\.(css|less|scss|styl)$
|
||||
|
||||
# Foundation css
|
||||
- (^|/)foundation\.(css|less|scss|styl)$
|
||||
@@ -72,12 +71,21 @@
|
||||
# Normalize.css
|
||||
- (^|/)normalize\.(css|less|scss|styl)$
|
||||
|
||||
# Skeleton.css
|
||||
- (^|/)skeleton\.(css|less|scss|styl)$
|
||||
|
||||
# Bourbon css
|
||||
- (^|/)[Bb]ourbon/.*\.(css|less|scss|styl)$
|
||||
|
||||
# Animate.css
|
||||
- (^|/)animate\.(css|less|scss|styl)$
|
||||
|
||||
# Materialize.css
|
||||
- (^|/)materialize\.(css|less|scss|styl|js)$
|
||||
|
||||
# Select2
|
||||
- (^|/)select2/.*\.(css|scss|js)$
|
||||
|
||||
# Vendored dependencies
|
||||
- third[-_]?party/
|
||||
- 3rd[-_]?party/
|
||||
@@ -116,6 +124,15 @@
|
||||
# jQuery File Upload
|
||||
- (^|/)jquery\.fileupload(-\w+)?\.js$
|
||||
|
||||
# jQuery dataTables
|
||||
- jquery.dataTables.js
|
||||
|
||||
# bootboxjs
|
||||
- bootbox.js
|
||||
|
||||
# pdf-worker
|
||||
- pdf.worker.js
|
||||
|
||||
# Slick
|
||||
- (^|/)slick\.\w+.js$
|
||||
|
||||
@@ -132,6 +149,9 @@
|
||||
- .sublime-project
|
||||
- .sublime-workspace
|
||||
|
||||
# VS Code workspace files
|
||||
- .vscode
|
||||
|
||||
# Prototype
|
||||
- (^|/)prototype(.*)\.js$
|
||||
- (^|/)effects\.js$
|
||||
@@ -188,6 +208,9 @@
|
||||
# React
|
||||
- (^|/)react(-[^.]*)?\.js$
|
||||
|
||||
# flow-typed
|
||||
- (^|/)flow-typed/.*\.js$
|
||||
|
||||
# Modernizr
|
||||
- (^|/)modernizr\-\d\.\d+(\.\d+)?\.js$
|
||||
- (^|/)modernizr\.custom\.\d+\.js$
|
||||
@@ -221,10 +244,7 @@
|
||||
- \.imageset/
|
||||
|
||||
# Carthage
|
||||
- ^Carthage/
|
||||
|
||||
# Cocoapods
|
||||
- ^Pods/
|
||||
- (^|/)Carthage/
|
||||
|
||||
# Sparkle
|
||||
- (^|/)Sparkle/
|
||||
@@ -256,6 +276,13 @@
|
||||
- (^|/)gradlew\.bat$
|
||||
- (^|/)gradle/wrapper/
|
||||
|
||||
## Java ##
|
||||
|
||||
# Maven
|
||||
- (^|/)mvnw$
|
||||
- (^|/)mvnw\.cmd$
|
||||
- (^|/)\.mvn/wrapper/
|
||||
|
||||
## .NET ##
|
||||
|
||||
# Visual Studio IntelliSense
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module Linguist
|
||||
VERSION = "5.0.10"
|
||||
VERSION = "6.0.1"
|
||||
end
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"repository": "https://github.com/github/linguist",
|
||||
"dependencies": {
|
||||
"season": "~>5.4"
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
||||
35
samples/ActionScript/FooBar.as
Normal file
35
samples/ActionScript/FooBar.as
Normal file
@@ -0,0 +1,35 @@
|
||||
// A sample for Actionscript.
|
||||
|
||||
package foobar
|
||||
{
|
||||
import flash.display.MovieClip;
|
||||
|
||||
class Bar
|
||||
{
|
||||
public function getNumber():Number
|
||||
{
|
||||
return 10;
|
||||
}
|
||||
}
|
||||
|
||||
class Foo extends Bar
|
||||
{
|
||||
private var ourNumber:Number = 25;
|
||||
|
||||
override public function getNumber():Number
|
||||
{
|
||||
return ourNumber;
|
||||
}
|
||||
}
|
||||
|
||||
class Main extends MovieClip
|
||||
{
|
||||
public function Main()
|
||||
{
|
||||
var x:Bar = new Bar();
|
||||
var y:Foo = new Foo();
|
||||
trace(x.getNumber());
|
||||
trace(y.getNumber());
|
||||
}
|
||||
}
|
||||
}
|
||||
13
samples/ActionScript/HelloWorld.as
Normal file
13
samples/ActionScript/HelloWorld.as
Normal file
@@ -0,0 +1,13 @@
|
||||
package mypackage
|
||||
{
|
||||
public class Hello
|
||||
{
|
||||
/* Let's say hello!
|
||||
* This is just a test script for Linguist's Actionscript detection.
|
||||
*/
|
||||
public function sayHello():void
|
||||
{
|
||||
trace("Hello, world");
|
||||
}
|
||||
}
|
||||
}
|
||||
69
samples/Adobe Font Metrics/OpenSansCondensed-Bold.afm
Normal file
69
samples/Adobe Font Metrics/OpenSansCondensed-Bold.afm
Normal file
@@ -0,0 +1,69 @@
|
||||
StartFontMetrics 2.0
|
||||
Comment Generated by FontForge 20170719
|
||||
Comment Creation Date: Sun Jul 23 19:47:25 2017
|
||||
FontName OpenSansCondensed-Bold
|
||||
FullName Open Sans Condensed Bold
|
||||
FamilyName Open Sans Condensed
|
||||
Weight Bold
|
||||
Notice (Digitized data copyright (c) 2010-2011, Google Corporation.)
|
||||
ItalicAngle 0
|
||||
IsFixedPitch false
|
||||
UnderlinePosition -205
|
||||
UnderlineThickness 102
|
||||
Version 1.11
|
||||
EncodingScheme ISO10646-1
|
||||
FontBBox -667 -290 1046 1062
|
||||
CapHeight 714
|
||||
XHeight 544
|
||||
Ascender 760
|
||||
Descender -240
|
||||
StartCharMetrics 939
|
||||
C 32 ; WX 247 ; N space ; B 0 0 0 0 ;
|
||||
C 33 ; WX 270 ; N exclam ; B 54 -14 216 714 ;
|
||||
C 34 ; WX 445 ; N quotedbl ; B 59 456 388 714 ;
|
||||
C 35 ; WX 543 ; N numbersign ; B 20 0 525 714 ;
|
||||
C 36 ; WX 462 ; N dollar ; B 36 -59 427 760 ;
|
||||
C 37 ; WX 758 ; N percent ; B 30 -9 729 725 ;
|
||||
C 38 ; WX 581 ; N ampersand ; B 28 -10 572 725 ;
|
||||
C 39 ; WX 246 ; N quotesingle ; B 59 456 188 714 ;
|
||||
C -1 ; WX 462 ; N six.os ; B 36 -10 427 724 ;
|
||||
C -1 ; WX 420 ; N seven.os ; B 19 -170 402 544 ;
|
||||
C -1 ; WX 462 ; N eight.os ; B 35 -10 429 724 ;
|
||||
C -1 ; WX 461 ; N nine.os ; B 33 -182 424 564 ;
|
||||
C -1 ; WX 496 ; N g.alt ; B 36 -241 442 555 ;
|
||||
C -1 ; WX 496 ; N gcircumflex.alt ; B 36 -241 442 767 ;
|
||||
C -1 ; WX 496 ; N gbreve.alt ; B 36 -241 442 766 ;
|
||||
C -1 ; WX 496 ; N gdot.alt ; B 36 -241 442 756 ;
|
||||
C -1 ; WX 496 ; N gcommaaccent.alt ; B 36 -241 442 767 ;
|
||||
C -1 ; WX 0 ; N cyrotmarkcomb ; B -203 591 203 714 ;
|
||||
EndCharMetrics
|
||||
StartKernData
|
||||
StartKernPairs 15878
|
||||
KPX quotedbl uni1ECA 20
|
||||
KPX quotedbl uni1EC8 20
|
||||
KPX quotedbl Idotaccent 20
|
||||
KPX quotedbl Iogonek 20
|
||||
KPX quotedbl Imacron 20
|
||||
KPX quotedbl Idieresis 20
|
||||
KPX quotedbl Icircumflex 20
|
||||
KPX quotedbl Iacute 20
|
||||
KPX quotedbl Igrave 20
|
||||
KPX quotedbl I 20
|
||||
KPX quotedbl uni1EF9 20
|
||||
KPX quoteleft q -20
|
||||
KPX quoteleft o -20
|
||||
KPX quoteleft g -9
|
||||
KPX quoteleft e -20
|
||||
KPX quoteleft d -20
|
||||
KPX quoteleft c -20
|
||||
KPX quoteleft Z 20
|
||||
KPX Delta C -9
|
||||
KPX Delta A -20
|
||||
KPX Delta question 20
|
||||
KPX Delta period -41
|
||||
KPX Delta comma -41
|
||||
KPX Delta quotesingle 41
|
||||
KPX Delta quotedbl 41
|
||||
EndKernPairs
|
||||
EndKernData
|
||||
EndFontMetrics
|
||||
464
samples/Adobe Font Metrics/SpecialElite.afm
Normal file
464
samples/Adobe Font Metrics/SpecialElite.afm
Normal file
@@ -0,0 +1,464 @@
|
||||
StartFontMetrics 2.0
|
||||
Comment Generated by FontForge 20170719
|
||||
Comment Creation Date: Sun Jul 23 19:52:19 2017
|
||||
FontName SpecialElite-Regular
|
||||
FullName Special Elite
|
||||
FamilyName Special Elite
|
||||
Weight Book
|
||||
Notice (Copyright (c) 2010 by Brian J. Bonislawsky DBA Astigmatic (AOETI). All rights reserved. Available under the Apache 2.0 licence.http://www.apache.org/licenses/LICENSE-2.0.html)
|
||||
ItalicAngle 0
|
||||
IsFixedPitch false
|
||||
UnderlinePosition -133
|
||||
UnderlineThickness 20
|
||||
Version 1.000
|
||||
EncodingScheme ISO10646-1
|
||||
FontBBox -33 -322 1052 959
|
||||
CapHeight 714
|
||||
XHeight 487
|
||||
Ascender 688
|
||||
Descender -225
|
||||
StartCharMetrics 371
|
||||
C 32 ; WX 292 ; N space ; B 0 0 0 0 ;
|
||||
C 33 ; WX 276 ; N exclam ; B 73 0 207 702 ;
|
||||
C 34 ; WX 352 ; N quotedbl ; B 48 449 295 704 ;
|
||||
C 35 ; WX 554 ; N numbersign ; B 31 -2 524 713 ;
|
||||
C 36 ; WX 526 ; N dollar ; B 31 -201 498 919 ;
|
||||
C 37 ; WX 666 ; N percent ; B 32 -186 642 872 ;
|
||||
C 38 ; WX 676 ; N ampersand ; B 31 -5 645 705 ;
|
||||
C 39 ; WX 196 ; N quotesingle ; B 48 449 143 703 ;
|
||||
C 40 ; WX 279 ; N parenleft ; B 55 -71 243 757 ;
|
||||
C 41 ; WX 281 ; N parenright ; B 37 -59 229 770 ;
|
||||
C 42 ; WX 522 ; N asterisk ; B 32 276 493 707 ;
|
||||
C 43 ; WX 496 ; N plus ; B 29 131 465 560 ;
|
||||
C 44 ; WX 336 ; N comma ; B 39 -197 290 251 ;
|
||||
C 45 ; WX 636 ; N hyphen ; B 63 273 573 397 ;
|
||||
C 46 ; WX 349 ; N period ; B 52 -3 298 245 ;
|
||||
C 47 ; WX 557 ; N slash ; B 23 -41 536 760 ;
|
||||
C 48 ; WX 610 ; N zero ; B 55 0 560 720 ;
|
||||
C 49 ; WX 569 ; N one ; B 27 -12 572 712 ;
|
||||
C 50 ; WX 573 ; N two ; B 50 -25 541 680 ;
|
||||
C 51 ; WX 557 ; N three ; B 44 -25 514 694 ;
|
||||
C 52 ; WX 612 ; N four ; B 15 4 584 708 ;
|
||||
C 53 ; WX 537 ; N five ; B 47 0 505 690 ;
|
||||
C 54 ; WX 588 ; N six ; B 48 -10 548 707 ;
|
||||
C 55 ; WX 555 ; N seven ; B 15 -34 549 734 ;
|
||||
C 56 ; WX 598 ; N eight ; B 51 1 551 720 ;
|
||||
C 57 ; WX 584 ; N nine ; B 48 -2 539 715 ;
|
||||
C 58 ; WX 343 ; N colon ; B 51 -3 297 518 ;
|
||||
C 59 ; WX 328 ; N semicolon ; B 45 -197 297 518 ;
|
||||
C 60 ; WX 463 ; N less ; B 31 120 401 565 ;
|
||||
C 61 ; WX 636 ; N equal ; B 63 186 573 513 ;
|
||||
C 62 ; WX 463 ; N greater ; B 62 120 433 565 ;
|
||||
C 63 ; WX 470 ; N question ; B 34 2 442 729 ;
|
||||
C 64 ; WX 665 ; N at ; B 46 -4 618 680 ;
|
||||
C 65 ; WX 549 ; N A ; B -1 -16 550 703 ;
|
||||
C 66 ; WX 604 ; N B ; B 29 -6 557 704 ;
|
||||
C 67 ; WX 579 ; N C ; B 46 -13 531 700 ;
|
||||
C 68 ; WX 622 ; N D ; B 36 -17 579 713 ;
|
||||
C 69 ; WX 638 ; N E ; B 38 -16 587 691 ;
|
||||
C 70 ; WX 605 ; N F ; B 29 -9 595 709 ;
|
||||
C 71 ; WX 615 ; N G ; B 45 -3 586 710 ;
|
||||
C 72 ; WX 652 ; N H ; B 40 -20 622 690 ;
|
||||
C 73 ; WX 495 ; N I ; B 26 -24 469 710 ;
|
||||
C 74 ; WX 541 ; N J ; B 16 -3 539 703 ;
|
||||
C 75 ; WX 582 ; N K ; B 28 -5 584 711 ;
|
||||
C 76 ; WX 602 ; N L ; B 23 -14 583 718 ;
|
||||
C 77 ; WX 697 ; N M ; B 46 -10 655 704 ;
|
||||
C 78 ; WX 627 ; N N ; B 41 -15 595 700 ;
|
||||
C 79 ; WX 616 ; N O ; B 42 -30 574 702 ;
|
||||
C 80 ; WX 553 ; N P ; B 30 -12 527 689 ;
|
||||
C 81 ; WX 602 ; N Q ; B 42 -98 571 711 ;
|
||||
C 82 ; WX 636 ; N R ; B 14 -9 624 706 ;
|
||||
C 83 ; WX 588 ; N S ; B 51 -13 547 690 ;
|
||||
C 84 ; WX 594 ; N T ; B 25 1 564 707 ;
|
||||
C 85 ; WX 621 ; N U ; B 24 -6 611 710 ;
|
||||
C 86 ; WX 611 ; N V ; B -1 -15 614 726 ;
|
||||
C 87 ; WX 643 ; N W ; B 8 0 614 689 ;
|
||||
C 88 ; WX 582 ; N X ; B 3 -1 580 697 ;
|
||||
C 89 ; WX 561 ; N Y ; B -21 -2 562 719 ;
|
||||
C 90 ; WX 592 ; N Z ; B 49 -1 551 709 ;
|
||||
C 91 ; WX 312 ; N bracketleft ; B 85 -72 297 754 ;
|
||||
C 92 ; WX 557 ; N backslash ; B 21 -41 534 760 ;
|
||||
C 249 ; WX 639 ; N ugrave ; B 5 -28 624 679 ;
|
||||
C 250 ; WX 639 ; N uacute ; B 5 -28 624 682 ;
|
||||
C 251 ; WX 639 ; N ucircumflex ; B 5 -28 624 691 ;
|
||||
C 252 ; WX 639 ; N udieresis ; B 5 -28 624 649 ;
|
||||
C 253 ; WX 592 ; N yacute ; B 0 -232 596 666 ;
|
||||
C 254 ; WX 552 ; N thorn ; B -33 -221 512 699 ;
|
||||
C 255 ; WX 592 ; N ydieresis ; B 0 -232 596 643 ;
|
||||
C -1 ; WX 549 ; N Amacron ; B -1 -16 550 809 ;
|
||||
C -1 ; WX 565 ; N amacron ; B 38 -6 561 619 ;
|
||||
C -1 ; WX 549 ; N Abreve ; B -1 -16 550 890 ;
|
||||
C -1 ; WX 565 ; N abreve ; B 38 -6 561 686 ;
|
||||
C -1 ; WX 549 ; N Aogonek ; B -1 -138 589 703 ;
|
||||
C -1 ; WX 565 ; N aogonek ; B 38 -118 624 502 ;
|
||||
C -1 ; WX 579 ; N Cacute ; B 46 -13 531 900 ;
|
||||
C -1 ; WX 547 ; N cacute ; B 39 -22 506 693 ;
|
||||
C -1 ; WX 579 ; N Ccircumflex ; B 46 -13 531 890 ;
|
||||
C -1 ; WX 547 ; N ccircumflex ; B 39 -22 506 689 ;
|
||||
C -1 ; WX 579 ; N Cdotaccent ; B 46 -13 531 859 ;
|
||||
C -1 ; WX 547 ; N cdotaccent ; B 39 -22 506 657 ;
|
||||
C -1 ; WX 579 ; N Ccaron ; B 46 -13 531 918 ;
|
||||
C -1 ; WX 547 ; N ccaron ; B 39 -22 506 710 ;
|
||||
C -1 ; WX 622 ; N Dcaron ; B 36 -17 579 924 ;
|
||||
C -1 ; WX 750 ; N dcaron ; B 40 -26 716 704 ;
|
||||
C -1 ; WX 623 ; N Dcroat ; B 36 -17 580 713 ;
|
||||
C -1 ; WX 603 ; N dcroat ; B 40 -26 597 714 ;
|
||||
C -1 ; WX 638 ; N Emacron ; B 38 -16 587 798 ;
|
||||
C -1 ; WX 543 ; N emacron ; B 40 -23 501 616 ;
|
||||
C -1 ; WX 638 ; N Ebreve ; B 38 -16 587 876 ;
|
||||
C -1 ; WX 543 ; N ebreve ; B 40 -23 501 683 ;
|
||||
C -1 ; WX 638 ; N Edotaccent ; B 38 -16 587 848 ;
|
||||
C -1 ; WX 543 ; N edotaccent ; B 40 -23 501 659 ;
|
||||
C -1 ; WX 638 ; N Eogonek ; B 38 -113 610 691 ;
|
||||
C -1 ; WX 543 ; N eogonek ; B 40 -145 501 499 ;
|
||||
C -1 ; WX 638 ; N Ecaron ; B 38 -16 587 913 ;
|
||||
C -1 ; WX 543 ; N ecaron ; B 40 -23 501 714 ;
|
||||
C -1 ; WX 615 ; N Gcircumflex ; B 45 -3 586 906 ;
|
||||
C -1 ; WX 583 ; N gcircumflex ; B 42 -224 562 676 ;
|
||||
C -1 ; WX 615 ; N Gbreve ; B 45 -3 586 899 ;
|
||||
C -1 ; WX 583 ; N gbreve ; B 42 -224 562 667 ;
|
||||
C -1 ; WX 615 ; N Gdotaccent ; B 45 -3 586 871 ;
|
||||
C -1 ; WX 583 ; N gdotaccent ; B 42 -224 562 637 ;
|
||||
C -1 ; WX 615 ; N Gcommaaccent ; B 45 -253 586 710 ;
|
||||
C -1 ; WX 583 ; N gcommaaccent ; B 42 -224 562 734 ;
|
||||
C -1 ; WX 652 ; N Hcircumflex ; B 40 -20 622 897 ;
|
||||
C -1 ; WX 616 ; N hcircumflex ; B 5 -29 601 688 ;
|
||||
C -1 ; WX 652 ; N Hbar ; B 40 -20 622 690 ;
|
||||
C -1 ; WX 616 ; N hbar ; B 5 -29 601 683 ;
|
||||
C -1 ; WX 495 ; N Itilde ; B 26 -24 469 859 ;
|
||||
C -1 ; WX 568 ; N itilde ; B 36 -42 568 615 ;
|
||||
C -1 ; WX 495 ; N Imacron ; B 26 -24 469 819 ;
|
||||
C -1 ; WX 568 ; N imacron ; B 36 -42 568 585 ;
|
||||
C -1 ; WX 495 ; N Ibreve ; B 26 -24 469 901 ;
|
||||
C -1 ; WX 568 ; N ibreve ; B 36 -42 568 661 ;
|
||||
C -1 ; WX 495 ; N Iogonek ; B 26 -154 469 710 ;
|
||||
C -1 ; WX 568 ; N iogonek ; B 36 -149 568 674 ;
|
||||
C -1 ; WX 495 ; N Idotaccent ; B 26 -24 469 873 ;
|
||||
C -1 ; WX 568 ; N dotlessi ; B 36 -42 568 468 ;
|
||||
C -1 ; WX 1036 ; N IJ ; B 26 -24 1034 710 ;
|
||||
C -1 ; WX 983 ; N ij ; B 36 -236 913 683 ;
|
||||
C -1 ; WX 541 ; N Jcircumflex ; B 16 -3 539 913 ;
|
||||
C -1 ; WX 415 ; N jcircumflex ; B -12 -236 405 699 ;
|
||||
C -1 ; WX 582 ; N Kcommaaccent ; B 28 -253 584 711 ;
|
||||
C -1 ; WX 620 ; N kcommaaccent ; B 11 -253 600 683 ;
|
||||
C -1 ; WX 620 ; N kgreenlandic ; B 11 -28 600 482 ;
|
||||
C -1 ; WX 602 ; N Lacute ; B 23 -14 583 923 ;
|
||||
C -1 ; WX 540 ; N lacute ; B 4 -28 538 902 ;
|
||||
C -1 ; WX 602 ; N Lcommaaccent ; B 23 -267 583 718 ;
|
||||
C -1 ; WX 540 ; N lcommaaccent ; B 4 -267 538 682 ;
|
||||
C -1 ; WX 602 ; N Lcaron ; B 23 -14 583 794 ;
|
||||
C -1 ; WX 582 ; N lcaron ; B 4 -28 549 704 ;
|
||||
C -1 ; WX 781 ; N Ldot ; B 23 -14 748 718 ;
|
||||
C -1 ; WX 571 ; N ldotaccent ; B 4 -28 538 682 ;
|
||||
C -1 ; WX 603 ; N Lslash ; B 24 -14 584 718 ;
|
||||
C -1 ; WX 541 ; N lslash ; B 4 -28 538 682 ;
|
||||
C -1 ; WX 627 ; N Nacute ; B 41 -15 595 894 ;
|
||||
C -1 ; WX 632 ; N nacute ; B 32 -23 612 696 ;
|
||||
C -1 ; WX 627 ; N Ncommaaccent ; B 41 -268 595 700 ;
|
||||
C -1 ; WX 632 ; N ncommaaccent ; B 32 -268 612 491 ;
|
||||
C -1 ; WX 627 ; N Ncaron ; B 41 -15 595 900 ;
|
||||
C -1 ; WX 632 ; N ncaron ; B 32 -23 612 712 ;
|
||||
C -1 ; WX 815 ; N napostrophe ; B 34 -23 795 704 ;
|
||||
C -1 ; WX 627 ; N Eng ; B 41 -320 595 700 ;
|
||||
C -1 ; WX 605 ; N eng ; B 32 -322 534 491 ;
|
||||
C -1 ; WX 616 ; N Omacron ; B 42 -30 574 815 ;
|
||||
C -1 ; WX 583 ; N omacron ; B 40 -34 543 598 ;
|
||||
C -1 ; WX 616 ; N Obreve ; B 42 -30 574 891 ;
|
||||
C -1 ; WX 583 ; N obreve ; B 40 -34 543 675 ;
|
||||
C -1 ; WX 616 ; N Ohungarumlaut ; B 42 -30 574 907 ;
|
||||
C -1 ; WX 583 ; N ohungarumlaut ; B 40 -34 545 693 ;
|
||||
C -1 ; WX 1018 ; N OE ; B 42 -30 967 702 ;
|
||||
C -1 ; WX 958 ; N oe ; B 40 -34 916 499 ;
|
||||
C -1 ; WX 636 ; N Racute ; B 14 -9 624 910 ;
|
||||
C -1 ; WX 579 ; N racute ; B 28 -16 566 693 ;
|
||||
C -1 ; WX 636 ; N Rcommaaccent ; B 14 -268 624 706 ;
|
||||
C -1 ; WX 579 ; N rcommaaccent ; B 28 -272 566 495 ;
|
||||
C -1 ; WX 636 ; N Rcaron ; B 14 -9 624 927 ;
|
||||
C -1 ; WX 579 ; N rcaron ; B 28 -16 566 698 ;
|
||||
C -1 ; WX 588 ; N Sacute ; B 51 -13 547 900 ;
|
||||
C -1 ; WX 519 ; N sacute ; B 48 -31 481 713 ;
|
||||
C -1 ; WX 588 ; N Scircumflex ; B 51 -13 547 904 ;
|
||||
C -1 ; WX 519 ; N scircumflex ; B 48 -31 481 710 ;
|
||||
C -1 ; WX 588 ; N Scedilla ; B 51 -145 547 690 ;
|
||||
C -1 ; WX 519 ; N scedilla ; B 48 -145 481 496 ;
|
||||
C -1 ; WX 588 ; N Scaron ; B 51 -13 547 904 ;
|
||||
C -1 ; WX 519 ; N scaron ; B 48 -31 481 710 ;
|
||||
C -1 ; WX 594 ; N Tcommaaccent ; B 25 -263 564 707 ;
|
||||
C -1 ; WX 510 ; N tcommaaccent ; B 0 -282 488 694 ;
|
||||
C -1 ; WX 594 ; N Tcaron ; B 25 1 564 920 ;
|
||||
C -1 ; WX 713 ; N tcaron ; B 0 -34 680 704 ;
|
||||
C -1 ; WX 594 ; N Tbar ; B 25 1 564 707 ;
|
||||
C -1 ; WX 510 ; N tbar ; B 0 -34 488 694 ;
|
||||
C -1 ; WX 621 ; N Utilde ; B 24 -6 611 850 ;
|
||||
C -1 ; WX 638 ; N utilde ; B 5 -28 624 636 ;
|
||||
C -1 ; WX 621 ; N Umacron ; B 24 -6 611 811 ;
|
||||
C -1 ; WX 638 ; N umacron ; B 5 -28 624 587 ;
|
||||
C -1 ; WX 621 ; N Ubreve ; B 24 -6 611 888 ;
|
||||
C -1 ; WX 638 ; N ubreve ; B 5 -28 624 665 ;
|
||||
C -1 ; WX 621 ; N Uring ; B 24 -6 611 959 ;
|
||||
C -1 ; WX 638 ; N uring ; B 5 -28 624 738 ;
|
||||
C -1 ; WX 621 ; N Uhungarumlaut ; B 24 -6 611 918 ;
|
||||
C -1 ; WX 638 ; N uhungarumlaut ; B 5 -28 624 691 ;
|
||||
C -1 ; WX 621 ; N Uogonek ; B 24 -136 611 710 ;
|
||||
C -1 ; WX 638 ; N uogonek ; B 5 -147 671 487 ;
|
||||
C -1 ; WX 643 ; N Wcircumflex ; B 8 0 614 901 ;
|
||||
C -1 ; WX 678 ; N wcircumflex ; B 5 -10 674 685 ;
|
||||
C -1 ; WX 561 ; N Ycircumflex ; B -21 -2 562 934 ;
|
||||
C -1 ; WX 592 ; N ycircumflex ; B 0 -232 596 691 ;
|
||||
C -1 ; WX 561 ; N Ydieresis ; B -21 -2 562 885 ;
|
||||
C -1 ; WX 592 ; N Zacute ; B 49 -1 551 905 ;
|
||||
C -1 ; WX 528 ; N zacute ; B 45 -22 487 684 ;
|
||||
C -1 ; WX 592 ; N Zdotaccent ; B 49 -1 551 866 ;
|
||||
C -1 ; WX 528 ; N zdotaccent ; B 45 -22 487 632 ;
|
||||
C -1 ; WX 592 ; N Zcaron ; B 49 -1 551 917 ;
|
||||
C -1 ; WX 528 ; N zcaron ; B 45 -22 487 688 ;
|
||||
C -1 ; WX 915 ; N AEacute ; B -11 -16 864 904 ;
|
||||
C -1 ; WX 888 ; N aeacute ; B 38 -23 846 670 ;
|
||||
C -1 ; WX 617 ; N Oslashacute ; B 43 -41 574 912 ;
|
||||
C -1 ; WX 583 ; N oslashacute ; B 40 -73 543 697 ;
|
||||
C -1 ; WX 415 ; N dotlessj ; B -12 -236 344 478 ;
|
||||
C -1 ; WX 281 ; N circumflex ; B 0 558 282 746 ;
|
||||
C -1 ; WX 281 ; N caron ; B 0 558 282 746 ;
|
||||
C -1 ; WX 281 ; N breve ; B 0 585 282 746 ;
|
||||
C -1 ; WX 132 ; N dotaccent ; B 0 600 133 729 ;
|
||||
C -1 ; WX 214 ; N ring ; B 0 547 215 780 ;
|
||||
C -1 ; WX 211 ; N ogonek ; B 0 -145 212 13 ;
|
||||
C -1 ; WX 283 ; N tilde ; B 0 583 284 701 ;
|
||||
C -1 ; WX 352 ; N hungarumlaut ; B 0 591 353 763 ;
|
||||
C -1 ; WX 185 ; N uni0312 ; B 28 474 152 694 ;
|
||||
C -1 ; WX 185 ; N uni0315 ; B 38 470 162 690 ;
|
||||
C -1 ; WX 192 ; N uni0326 ; B 32 -253 156 -33 ;
|
||||
C -1 ; WX 666 ; N mu ; B 24 -219 643 487 ;
|
||||
C -1 ; WX 643 ; N Wgrave ; B 8 0 614 895 ;
|
||||
C -1 ; WX 678 ; N wgrave ; B 5 -10 674 688 ;
|
||||
C -1 ; WX 643 ; N Wacute ; B 8 0 614 898 ;
|
||||
C -1 ; WX 678 ; N wacute ; B 5 -10 674 682 ;
|
||||
C -1 ; WX 643 ; N Wdieresis ; B 8 0 614 868 ;
|
||||
C -1 ; WX 678 ; N wdieresis ; B 5 -10 674 649 ;
|
||||
C -1 ; WX 561 ; N Ygrave ; B -21 -2 562 900 ;
|
||||
C -1 ; WX 592 ; N ygrave ; B 0 -232 596 666 ;
|
||||
C -1 ; WX 611 ; N endash ; B 50 270 551 391 ;
|
||||
C -1 ; WX 1113 ; N emdash ; B 51 270 1052 391 ;
|
||||
C -1 ; WX 265 ; N quoteleft ; B 41 390 217 704 ;
|
||||
C -1 ; WX 264 ; N quoteright ; B 54 390 230 704 ;
|
||||
C -1 ; WX 274 ; N quotesinglbase ; B 46 -138 223 176 ;
|
||||
C -1 ; WX 470 ; N quotedblleft ; B 41 390 422 704 ;
|
||||
C -1 ; WX 469 ; N quotedblright ; B 54 390 436 704 ;
|
||||
C -1 ; WX 479 ; N quotedblbase ; B 46 -138 428 176 ;
|
||||
C -1 ; WX 389 ; N dagger ; B 30 -16 359 724 ;
|
||||
C -1 ; WX 396 ; N daggerdbl ; B 35 -16 364 728 ;
|
||||
C -1 ; WX 316 ; N bullet ; B 50 246 266 479 ;
|
||||
C -1 ; WX 1063 ; N ellipsis ; B 52 -3 1016 245 ;
|
||||
C -1 ; WX 897 ; N perthousand ; B 33 -230 873 828 ;
|
||||
C -1 ; WX 296 ; N guilsinglleft ; B 44 149 232 434 ;
|
||||
C -1 ; WX 295 ; N guilsinglright ; B 63 149 251 434 ;
|
||||
C -1 ; WX 486 ; N fraction ; B -11 -53 501 748 ;
|
||||
C -1 ; WX 732 ; N Euro ; B 31 71 683 590 ;
|
||||
C -1 ; WX 757 ; N trademark ; B 60 303 703 693 ;
|
||||
C -1 ; WX 585 ; N partialdiff ; B 36 -47 553 772 ;
|
||||
C -1 ; WX 564 ; N product ; B 26 -17 534 707 ;
|
||||
C -1 ; WX 577 ; N minus ; B 63 282 514 395 ;
|
||||
C -1 ; WX 565 ; N approxequal ; B 59 137 513 522 ;
|
||||
C -1 ; WX 593 ; N notequal ; B 44 71 554 644 ;
|
||||
C -1 ; WX 1041 ; N fi ; B 20 -42 1041 702 ;
|
||||
C -1 ; WX 1013 ; N fl ; B 20 -29 1011 702 ;
|
||||
C -1 ; WX 292 ; N .notdef ; B 0 0 0 0 ;
|
||||
C -1 ; WX 0 ; N .null ; B 0 0 0 0 ;
|
||||
C -1 ; WX 292 ; N nonmarkingreturn ; B 0 0 0 0 ;
|
||||
EndCharMetrics
|
||||
StartKernData
|
||||
StartKernPairs 6408
|
||||
KPX quotedbl period -104
|
||||
KPX quotedbl comma -103
|
||||
KPX quotedbl Jcircumflex -34
|
||||
KPX quotedbl Aogonek -31
|
||||
KPX quotedbl Abreve -31
|
||||
KPX quotedbl Amacron -31
|
||||
KPX quotedbl AEacute -31
|
||||
KPX quotedbl Aacute -31
|
||||
KPX quotedbl Acircumflex -31
|
||||
KPX quotedbl Atilde -31
|
||||
KPX quotedbl Agrave -31
|
||||
KPX quotedbl Aring -31
|
||||
KPX quotedbl Adieresis -31
|
||||
KPX quotedbl AE -31
|
||||
KPX quotedbl J -34
|
||||
KPX quotedbl A -31
|
||||
KPX quotedbl quotedblbase -117
|
||||
KPX quotedbl quotesinglbase -117
|
||||
KPX quotedbl ellipsis -104
|
||||
KPX quotedbl slash -73
|
||||
KPX quotedbl ampersand -22
|
||||
KPX quotedbl four -27
|
||||
KPX ampersand Ycircumflex -40
|
||||
KPX ampersand Ygrave -40
|
||||
KPX ampersand Ydieresis -40
|
||||
KPX ampersand Yacute -40
|
||||
KPX ampersand Y -40
|
||||
KPX ampersand V -36
|
||||
KPX quotesingle period -97
|
||||
KPX quotesingle comma -97
|
||||
KPX quotesingle Jcircumflex -34
|
||||
KPX quotesingle Aogonek -31
|
||||
KPX quotesingle Abreve -31
|
||||
KPX quotesingle Amacron -31
|
||||
KPX hyphen T -28
|
||||
KPX hyphen one -68
|
||||
KPX hyphen B -25
|
||||
KPX hyphen seven -56
|
||||
KPX slash rcommaaccent -27
|
||||
KPX slash ncommaaccent -29
|
||||
KPX slash gcommaaccent -61
|
||||
KPX slash Jcircumflex -29
|
||||
KPX slash iogonek -26
|
||||
KPX slash ibreve -26
|
||||
KPX slash imacron -26
|
||||
KPX slash itilde -26
|
||||
KPX slash oslashacute -54
|
||||
KPX slash nacute -29
|
||||
KPX slash eng -29
|
||||
KPX slash ncaron -29
|
||||
KPX slash racute -27
|
||||
KPX slash scedilla -43
|
||||
KPX slash scircumflex -43
|
||||
KPX slash sacute -43
|
||||
KPX slash rcaron -27
|
||||
KPX slash ohungarumlaut -54
|
||||
KPX slash obreve -54
|
||||
KPX slash omacron -54
|
||||
KPX slash wgrave -23
|
||||
KPX slash wcircumflex -23
|
||||
KPX slash wdieresis -23
|
||||
KPX slash wacute -23
|
||||
KPX slash zdotaccent -41
|
||||
KPX J ebreve -32
|
||||
KPX J emacron -32
|
||||
KPX J edieresis -32
|
||||
KPX J ecircumflex -32
|
||||
KPX J egrave -32
|
||||
KPX J eacute -32
|
||||
KPX J e -32
|
||||
KPX J Aogonek -34
|
||||
KPX J Abreve -34
|
||||
KPX J Amacron -34
|
||||
KPX J AEacute -34
|
||||
KPX J Aacute -34
|
||||
KPX J Acircumflex -34
|
||||
KPX J Atilde -34
|
||||
KPX J Agrave -34
|
||||
KPX J Aring -34
|
||||
KPX J Adieresis -34
|
||||
KPX J AE -34
|
||||
KPX J A -34
|
||||
KPX J comma -29
|
||||
KPX J period -30
|
||||
KPX J v -29
|
||||
KPX J hyphen -30
|
||||
KPX J quotedblbase -34
|
||||
KPX J quotesinglbase -34
|
||||
KPX J guilsinglright -25
|
||||
KPX J guilsinglleft -25
|
||||
KPX J emdash -30
|
||||
KPX J endash -30
|
||||
KPX J guillemotright -25
|
||||
KPX J guillemotleft -25
|
||||
KPX J germandbls -36
|
||||
KPX J ellipsis -30
|
||||
KPX J slash -34
|
||||
KPX J p -28
|
||||
KPX J m -35
|
||||
KPX J b 54
|
||||
KPX K ycircumflex -60
|
||||
KPX K ygrave -60
|
||||
KPX K ydieresis -60
|
||||
KPX K yacute -60
|
||||
KPX K y -60
|
||||
KPX K wgrave -36
|
||||
KPX K wcircumflex -36
|
||||
KPX K wdieresis -36
|
||||
KPX K wacute -36
|
||||
KPX K w -36
|
||||
KPX K uogonek -25
|
||||
KPX K uhungarumlaut -25
|
||||
KPX K uring -25
|
||||
KPX K ubreve -25
|
||||
KPX K umacron -25
|
||||
KPX K utilde -25
|
||||
KPX K udieresis -25
|
||||
KPX K ucircumflex -25
|
||||
KPX K ugrave -25
|
||||
KPX K uacute -25
|
||||
KPX K u -25
|
||||
KPX K q -23
|
||||
KPX K oslashacute -28
|
||||
KPX K ohungarumlaut -28
|
||||
KPX K obreve -28
|
||||
KPX K omacron -28
|
||||
KPX K otilde -28
|
||||
KPX K odieresis -28
|
||||
KPX K ocircumflex -28
|
||||
KPX K ograve -28
|
||||
KPX K oacute -28
|
||||
KPX K eth -28
|
||||
KPX K oe -28
|
||||
KPX K oslash -28
|
||||
KPX K o -28
|
||||
KPX K dcaron -24
|
||||
KPX K d -24
|
||||
KPX K ccaron -27
|
||||
KPX K cdotaccent -27
|
||||
KPX K ccircumflex -27
|
||||
KPX K cacute -27
|
||||
KPX K ccedilla -27
|
||||
KPX K c -27
|
||||
KPX K ecaron -27
|
||||
KPX K eogonek -27
|
||||
KPX K edotaccent -27
|
||||
KPX K ebreve -27
|
||||
KPX K emacron -27
|
||||
KPX K edieresis -27
|
||||
KPX K ecircumflex -27
|
||||
KPX K egrave -27
|
||||
KPX K eacute -27
|
||||
KPX K e -27
|
||||
KPX K v -49
|
||||
KPX K hyphen -38
|
||||
KPX K guilsinglleft -24
|
||||
KPX K emdash -38
|
||||
KPX K endash -38
|
||||
KPX K guillemotleft -24
|
||||
KPX K b 49
|
||||
KPX L ycircumflex -36
|
||||
KPX L ygrave -36
|
||||
KPX L ydieresis -36
|
||||
KPX L yacute -36
|
||||
KPX L y -36
|
||||
KPX L wgrave -23
|
||||
KPX L wcircumflex -23
|
||||
KPX L wdieresis -23
|
||||
KPX L wacute -23
|
||||
KPX L w -23
|
||||
KPX L V -43
|
||||
KPX L Tcommaaccent -36
|
||||
KPX L Tbar -36
|
||||
KPX L Tcaron -36
|
||||
KPX L T -36
|
||||
KPX L quoteright -49
|
||||
KPX L v -32
|
||||
KPX L quoteleft -54
|
||||
KPX L quotedblright -49
|
||||
KPX L quotedblleft -54
|
||||
KPX L trademark -29
|
||||
KPX L backslash -50
|
||||
KPX L asterisk -30
|
||||
KPX trademark Aring -24
|
||||
KPX trademark Adieresis -24
|
||||
KPX trademark Yacute 29
|
||||
KPX trademark AE -24
|
||||
KPX trademark Y 29
|
||||
KPX trademark A -24
|
||||
KPX trademark b 31
|
||||
EndKernPairs
|
||||
EndKernData
|
||||
EndFontMetrics
|
||||
23
samples/Adobe Font Metrics/lambda.afm
Normal file
23
samples/Adobe Font Metrics/lambda.afm
Normal file
@@ -0,0 +1,23 @@
|
||||
StartFontMetrics 2.0
|
||||
Comment Generated by FontForge 20170719
|
||||
Comment Creation Date: Sun Jul 23 23:14:02 2017
|
||||
FontName Greek_Lambda_Character-Regular
|
||||
FullName Greek_Lambda_Character Regular
|
||||
FamilyName Greek_Lambda_Character
|
||||
Weight Regular
|
||||
Notice (NONE. NADA. PUBLIC DOMAIN, BOI)
|
||||
ItalicAngle 0
|
||||
IsFixedPitch false
|
||||
UnderlinePosition -175
|
||||
UnderlineThickness 90
|
||||
Version 020.017
|
||||
EncodingScheme ISO10646-1
|
||||
FontBBox 33 -177 566 760
|
||||
StartCharMetrics 5
|
||||
C 13 ; WX 602 ; N uni000D ; B 0 0 0 0 ;
|
||||
C 32 ; WX 602 ; N space ; B 0 0 0 0 ;
|
||||
C -1 ; WX 602 ; N lambda ; B 33 0 566 760 ;
|
||||
C -1 ; WX 602 ; N .notdef ; B 50 -177 551 706 ;
|
||||
C -1 ; WX 0 ; N NULL ; B 0 0 0 0 ;
|
||||
EndCharMetrics
|
||||
EndFontMetrics
|
||||
77
samples/AngelScript/botmanager.as
Normal file
77
samples/AngelScript/botmanager.as
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* This is a sample script.
|
||||
*/
|
||||
|
||||
#include "BotManagerInterface.acs"
|
||||
|
||||
BotManager::BotManager g_BotManager( @CreateDumbBot );
|
||||
|
||||
CConCommand@ m_pAddBot;
|
||||
|
||||
void PluginInit()
|
||||
{
|
||||
g_BotManager.PluginInit();
|
||||
|
||||
@m_pAddBot = @CConCommand( "addbot", "Adds a new bot with the given name", @AddBotCallback );
|
||||
}
|
||||
|
||||
void AddBotCallback( const CCommand@ args )
|
||||
{
|
||||
if( args.ArgC() < 2 )
|
||||
{
|
||||
g_Game.AlertMessage( at_console, "Usage: addbot <name>" );
|
||||
return;
|
||||
}
|
||||
|
||||
BotManager::BaseBot@ pBot = g_BotManager.CreateBot( args[ 1 ] );
|
||||
|
||||
if( pBot !is null )
|
||||
{
|
||||
g_Game.AlertMessage( at_console, "Created bot " + args[ 1 ] + "\n" );
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Game.AlertMessage( at_console, "Could not create bot\n" );
|
||||
}
|
||||
}
|
||||
|
||||
final class DumbBot : BotManager::BaseBot
|
||||
{
|
||||
DumbBot( CBasePlayer@ pPlayer )
|
||||
{
|
||||
super( pPlayer );
|
||||
}
|
||||
|
||||
void Think()
|
||||
{
|
||||
BotManager::BaseBot::Think();
|
||||
|
||||
// If the bot is dead and can be respawned, send a button press
|
||||
if( Player.pev.deadflag >= DEAD_RESPAWNABLE )
|
||||
{
|
||||
Player.pev.button |= IN_ATTACK;
|
||||
}
|
||||
else
|
||||
Player.pev.button &= ~IN_ATTACK;
|
||||
|
||||
KeyValueBuffer@ pInfoBuffer = g_EngineFuncs.GetInfoKeyBuffer( Player.edict() );
|
||||
|
||||
pInfoBuffer.SetValue( "topcolor", Math.RandomLong( 0, 255 ) );
|
||||
pInfoBuffer.SetValue( "bottomcolor", Math.RandomLong( 0, 255 ) );
|
||||
|
||||
if( Math.RandomLong( 0, 100 ) > 10 )
|
||||
Player.pev.button |= IN_ATTACK;
|
||||
else
|
||||
Player.pev.button &= ~IN_ATTACK;
|
||||
|
||||
for( uint uiIndex = 0; uiIndex < 3; ++uiIndex )
|
||||
{
|
||||
m_vecVelocity[ uiIndex ] = Math.RandomLong( -50, 50 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BotManager::BaseBot@ CreateDumbBot( CBasePlayer@ pPlayer )
|
||||
{
|
||||
return @DumbBot( pPlayer );
|
||||
}
|
||||
396
samples/AngelScript/payload.as
Normal file
396
samples/AngelScript/payload.as
Normal file
@@ -0,0 +1,396 @@
|
||||
// Sample script.
|
||||
// Source: https://github.com/codecat/ssbd-payload
|
||||
|
||||
array<WorldScript::PayloadBeginTrigger@> g_payloadBeginTriggers;
|
||||
array<WorldScript::PayloadTeamForcefield@> g_teamForceFields;
|
||||
|
||||
[GameMode]
|
||||
class Payload : TeamVersusGameMode
|
||||
{
|
||||
[Editable]
|
||||
UnitFeed PayloadUnit;
|
||||
|
||||
[Editable]
|
||||
UnitFeed FirstNode;
|
||||
|
||||
[Editable default=10]
|
||||
int PrepareTime;
|
||||
|
||||
[Editable default=300]
|
||||
int TimeLimit;
|
||||
|
||||
[Editable default=90]
|
||||
int TimeAddCheckpoint;
|
||||
|
||||
[Editable default=2]
|
||||
float TimeOvertime;
|
||||
|
||||
[Editable default=1000]
|
||||
int TimePayloadHeal;
|
||||
|
||||
[Editable default=1]
|
||||
int PayloadHeal;
|
||||
|
||||
PayloadBehavior@ m_payload;
|
||||
|
||||
int m_tmStarting;
|
||||
int m_tmStarted;
|
||||
int m_tmLimitCustom;
|
||||
int m_tmOvertime;
|
||||
int m_tmInOvertime;
|
||||
|
||||
PayloadHUD@ m_payloadHUD;
|
||||
PayloadClassSwitchWindow@ m_switchClass;
|
||||
|
||||
array<SValue@>@ m_switchedSidesData;
|
||||
|
||||
Payload(Scene@ scene)
|
||||
{
|
||||
super(scene);
|
||||
|
||||
m_tmRespawnCountdown = 5000;
|
||||
|
||||
@m_payloadHUD = PayloadHUD(m_guiBuilder);
|
||||
@m_switchTeam = PayloadTeamSwitchWindow(m_guiBuilder);
|
||||
@m_switchClass = PayloadClassSwitchWindow(m_guiBuilder);
|
||||
}
|
||||
|
||||
void UpdateFrame(int ms, GameInput& gameInput, MenuInput& menuInput) override
|
||||
{
|
||||
TeamVersusGameMode::UpdateFrame(ms, gameInput, menuInput);
|
||||
|
||||
m_payloadHUD.Update(ms);
|
||||
|
||||
if (Network::IsServer())
|
||||
{
|
||||
uint64 tmNow = CurrPlaytimeLevel();
|
||||
|
||||
if (m_tmStarting == 0)
|
||||
{
|
||||
if (GetPlayersInTeam(0) > 0 && GetPlayersInTeam(1) > 0)
|
||||
{
|
||||
m_tmStarting = tmNow;
|
||||
(Network::Message("GameStarting") << m_tmStarting).SendToAll();
|
||||
}
|
||||
}
|
||||
|
||||
if (m_tmStarting > 0 && m_tmStarted == 0 && tmNow - m_tmStarting > PrepareTime * 1000)
|
||||
{
|
||||
m_tmStarted = tmNow;
|
||||
(Network::Message("GameStarted") << m_tmStarted).SendToAll();
|
||||
|
||||
for (uint i = 0; i < g_payloadBeginTriggers.length(); i++)
|
||||
{
|
||||
WorldScript@ ws = WorldScript::GetWorldScript(g_scene, g_payloadBeginTriggers[i]);
|
||||
ws.Execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_ended && m_tmStarted > 0)
|
||||
CheckTimeReached(ms);
|
||||
}
|
||||
|
||||
string NameForTeam(int index) override
|
||||
{
|
||||
if (index == 0)
|
||||
return "Defenders";
|
||||
else if (index == 1)
|
||||
return "Attackers";
|
||||
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
void CheckTimeReached(int dt)
|
||||
{
|
||||
// Check if time limit is not reached yet
|
||||
if (m_tmLimitCustom - (CurrPlaytimeLevel() - m_tmStarted) > 0)
|
||||
{
|
||||
// Don't need to continue checking
|
||||
m_tmOvertime = 0;
|
||||
m_tmInOvertime = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// Count how long we're in overtime for later time limit fixing when we reach a checkpoint
|
||||
if (m_tmOvertime > 0)
|
||||
m_tmInOvertime += dt;
|
||||
|
||||
// Check if there are any attackers still inside
|
||||
if (m_payload.AttackersInside() > 0)
|
||||
{
|
||||
// We have overtime
|
||||
m_tmOvertime = int(TimeOvertime * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
// If we have overtime
|
||||
if (m_tmOvertime > 0)
|
||||
{
|
||||
// Decrease timer
|
||||
m_tmOvertime -= dt;
|
||||
if (m_tmOvertime <= 0)
|
||||
{
|
||||
// Overtime countdown reached, time limit reached
|
||||
TimeReached();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// No overtime, so time limit is reached
|
||||
TimeReached();
|
||||
}
|
||||
}
|
||||
|
||||
void TimeReached()
|
||||
{
|
||||
if (!Network::IsServer())
|
||||
return;
|
||||
|
||||
(Network::Message("TimeReached")).SendToAll();
|
||||
SetWinner(false);
|
||||
}
|
||||
|
||||
bool ShouldFreezeControls() override
|
||||
{
|
||||
return m_switchClass.m_visible
|
||||
|| TeamVersusGameMode::ShouldFreezeControls();
|
||||
}
|
||||
|
||||
bool ShouldDisplayCursor() override
|
||||
{
|
||||
return m_switchClass.m_visible
|
||||
|| TeamVersusGameMode::ShouldDisplayCursor();
|
||||
}
|
||||
|
||||
bool CanSwitchTeams() override
|
||||
{
|
||||
return m_tmStarted == 0;
|
||||
}
|
||||
|
||||
PlayerRecord@ CreatePlayerRecord() override
|
||||
{
|
||||
return PayloadPlayerRecord();
|
||||
}
|
||||
|
||||
int GetPlayerClassCount(PlayerClass playerClass, TeamVersusScore@ team)
|
||||
{
|
||||
if (team is null)
|
||||
return 0;
|
||||
|
||||
int ret = 0;
|
||||
for (uint i = 0; i < team.m_players.length(); i++)
|
||||
{
|
||||
if (team.m_players[i].peer == 255)
|
||||
continue;
|
||||
auto record = cast<PayloadPlayerRecord>(team.m_players[i]);
|
||||
if (record.playerClass == playerClass)
|
||||
ret++;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void PlayerClassesUpdated()
|
||||
{
|
||||
m_switchClass.PlayerClassesUpdated();
|
||||
}
|
||||
|
||||
void SetWinner(bool attackers)
|
||||
{
|
||||
if (attackers)
|
||||
print("Attackers win!");
|
||||
else
|
||||
print("Defenders win!");
|
||||
|
||||
m_payloadHUD.Winner(attackers);
|
||||
EndMatch();
|
||||
}
|
||||
|
||||
void DisplayPlayerName(int idt, SpriteBatch& sb, PlayerRecord@ record, PlayerHusk@ plr, vec2 pos) override
|
||||
{
|
||||
TeamVersusGameMode::DisplayPlayerName(idt, sb, record, plr, pos);
|
||||
|
||||
m_payloadHUD.DisplayPlayerName(idt, sb, cast<PayloadPlayerRecord>(record), plr, pos);
|
||||
}
|
||||
|
||||
void RenderFrame(int idt, SpriteBatch& sb) override
|
||||
{
|
||||
Player@ player = GetLocalPlayer();
|
||||
if (player !is null)
|
||||
{
|
||||
PlayerHealgun@ healgun = cast<PlayerHealgun>(player.m_currWeapon);
|
||||
if (healgun !is null)
|
||||
healgun.RenderMarkers(idt, sb);
|
||||
}
|
||||
|
||||
TeamVersusGameMode::RenderFrame(idt, sb);
|
||||
}
|
||||
|
||||
void RenderWidgets(PlayerRecord@ player, int idt, SpriteBatch& sb) override
|
||||
{
|
||||
m_payloadHUD.Draw(sb, idt);
|
||||
|
||||
TeamVersusGameMode::RenderWidgets(player, idt, sb);
|
||||
|
||||
m_switchClass.Draw(sb, idt);
|
||||
}
|
||||
|
||||
void GoNextMap() override
|
||||
{
|
||||
if (m_switchedSidesData !is null)
|
||||
{
|
||||
TeamVersusGameMode::GoNextMap();
|
||||
return;
|
||||
}
|
||||
|
||||
ChangeLevel(GetCurrentLevelFilename());
|
||||
}
|
||||
|
||||
void SpawnPlayers() override
|
||||
{
|
||||
if (m_switchedSidesData is null)
|
||||
{
|
||||
TeamVersusGameMode::SpawnPlayers();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Network::IsServer())
|
||||
{
|
||||
for (uint i = 0; i < m_switchedSidesData.length(); i += 2)
|
||||
{
|
||||
uint peer = uint(m_switchedSidesData[i].GetInteger());
|
||||
uint team = uint(m_switchedSidesData[i + 1].GetInteger());
|
||||
|
||||
TeamVersusScore@ joinScore = FindTeamScore(team);
|
||||
if (joinScore is m_teamScores[0])
|
||||
@joinScore = m_teamScores[1];
|
||||
else
|
||||
@joinScore = m_teamScores[0];
|
||||
|
||||
for (uint j = 0; j < g_players.length(); j++)
|
||||
{
|
||||
if (g_players[j].peer != peer)
|
||||
continue;
|
||||
SpawnPlayer(j, vec2(), 0, joinScore.m_team);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Save(SValueBuilder& builder) override
|
||||
{
|
||||
if (m_switchedSidesData is null)
|
||||
{
|
||||
builder.PushArray("teams");
|
||||
for (uint i = 0; i < g_players.length(); i++)
|
||||
{
|
||||
if (g_players[i].peer == 255)
|
||||
continue;
|
||||
builder.PushInteger(g_players[i].peer);
|
||||
builder.PushInteger(g_players[i].team);
|
||||
}
|
||||
builder.PopArray();
|
||||
}
|
||||
|
||||
TeamVersusGameMode::Save(builder);
|
||||
}
|
||||
|
||||
void Start(uint8 peer, SValue@ save, StartMode sMode) override
|
||||
{
|
||||
if (save !is null)
|
||||
@m_switchedSidesData = GetParamArray(UnitPtr(), save, "teams", false);
|
||||
|
||||
TeamVersusGameMode::Start(peer, save, sMode);
|
||||
|
||||
m_tmLimit = 0; // infinite time limit as far as VersusGameMode is concerned
|
||||
m_tmLimitCustom = TimeLimit * 1000; // 5 minutes by default
|
||||
|
||||
@m_payload = cast<PayloadBehavior>(PayloadUnit.FetchFirst().GetScriptBehavior());
|
||||
|
||||
if (m_payload is null)
|
||||
PrintError("PayloadUnit is not a PayloadBehavior!");
|
||||
|
||||
UnitPtr unitFirstNode = FirstNode.FetchFirst();
|
||||
if (unitFirstNode.IsValid())
|
||||
{
|
||||
auto node = cast<WorldScript::PayloadNode>(unitFirstNode.GetScriptBehavior());
|
||||
if (node !is null)
|
||||
@m_payload.m_targetNode = node;
|
||||
else
|
||||
PrintError("First target node is not a PayloadNode script!");
|
||||
}
|
||||
else
|
||||
PrintError("First target node was not set!");
|
||||
|
||||
WorldScript::PayloadNode@ prevNode;
|
||||
|
||||
float totalDistance = 0.0f;
|
||||
|
||||
UnitPtr unitNode = unitFirstNode;
|
||||
while (unitNode.IsValid())
|
||||
{
|
||||
auto node = cast<WorldScript::PayloadNode>(unitNode.GetScriptBehavior());
|
||||
if (node is null)
|
||||
break;
|
||||
|
||||
unitNode = node.NextNode.FetchFirst();
|
||||
|
||||
@node.m_prevNode = prevNode;
|
||||
@node.m_nextNode = cast<WorldScript::PayloadNode>(unitNode.GetScriptBehavior());
|
||||
|
||||
if (prevNode !is null)
|
||||
totalDistance += dist(prevNode.Position, node.Position);
|
||||
|
||||
@prevNode = node;
|
||||
}
|
||||
|
||||
float currDistance = 0.0f;
|
||||
|
||||
auto distNode = cast<WorldScript::PayloadNode>(unitFirstNode.GetScriptBehavior());
|
||||
while (distNode !is null)
|
||||
{
|
||||
if (distNode.m_prevNode is null)
|
||||
distNode.m_locationFactor = 0.0f;
|
||||
else
|
||||
{
|
||||
currDistance += dist(distNode.m_prevNode.Position, distNode.Position);
|
||||
distNode.m_locationFactor = currDistance / totalDistance;
|
||||
}
|
||||
|
||||
@distNode = distNode.m_nextNode;
|
||||
}
|
||||
|
||||
m_payloadHUD.AddCheckpoints();
|
||||
}
|
||||
|
||||
void SpawnPlayer(int i, vec2 pos = vec2(), int unitId = 0, uint team = 0) override
|
||||
{
|
||||
TeamVersusGameMode::SpawnPlayer(i, pos, unitId, team);
|
||||
|
||||
PayloadPlayerRecord@ record = cast<PayloadPlayerRecord>(g_players[i]);
|
||||
record.HandlePlayerClass();
|
||||
|
||||
if (g_players[i].local)
|
||||
{
|
||||
//TODO: This doesn't work well
|
||||
bool localAttackers = (team == HashString("player_1"));
|
||||
for (uint j = 0; j < g_teamForceFields.length(); j++)
|
||||
{
|
||||
bool hasCollision = (localAttackers != g_teamForceFields[j].Attackers);
|
||||
|
||||
auto units = g_teamForceFields[j].Units.FetchAll();
|
||||
for (uint k = 0; k < units.length(); k++)
|
||||
{
|
||||
PhysicsBody@ body = units[k].GetPhysicsBody();
|
||||
if (body is null)
|
||||
{
|
||||
PrintError("PhysicsBody for unit " + units[k].GetDebugName() + "is null");
|
||||
continue;
|
||||
}
|
||||
body.SetActive(hasCollision);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
samples/Ballerina/hello-world-service.bal
Normal file
16
samples/Ballerina/hello-world-service.bal
Normal file
@@ -0,0 +1,16 @@
|
||||
import ballerina.lang.messages;
|
||||
import ballerina.net.http;
|
||||
import ballerina.doc;
|
||||
|
||||
@doc:Description {value:"By default Ballerina assumes that the service is to be exposed via HTTP/1.1 using the system default port and that all requests coming to the HTTP server will be delivered to this service."}
|
||||
service<http> helloWorld {
|
||||
@doc:Description {value:"All resources are invoked with an argument of type message, the built-in reference type representing a network invocation."}
|
||||
resource sayHello (message m) {
|
||||
// Creates an empty message.
|
||||
message response = {};
|
||||
// A util method that can be used to set string payload.
|
||||
messages:setStringPayload(response, "Hello, World!");
|
||||
// Reply keyword sends the response back to the client.
|
||||
reply response;
|
||||
}
|
||||
}
|
||||
6
samples/Ballerina/hello-world.bal
Normal file
6
samples/Ballerina/hello-world.bal
Normal file
@@ -0,0 +1,6 @@
|
||||
import ballerina.lang.system;
|
||||
|
||||
function main (string[] args) {
|
||||
system:println("Hello, World!");
|
||||
}
|
||||
|
||||
31
samples/Ballerina/json.bal
Normal file
31
samples/Ballerina/json.bal
Normal file
@@ -0,0 +1,31 @@
|
||||
import ballerina.lang.system;
|
||||
|
||||
function main (string[] args) {
|
||||
// JSON string value.
|
||||
json j1 = "Apple";
|
||||
system:println(j1);
|
||||
|
||||
// JSON number value.
|
||||
json j2 = 5.36;
|
||||
system:println(j2);
|
||||
|
||||
// JSON true value.
|
||||
json j3 = true;
|
||||
system:println(j3);
|
||||
|
||||
// JSON false value.
|
||||
json j4 = false;
|
||||
system:println(j4);
|
||||
|
||||
// JSON null value.
|
||||
json j5 = null;
|
||||
|
||||
//JSON Objects.
|
||||
json j6 = {name:"apple", color:"red", price:j2};
|
||||
system:println(j6);
|
||||
|
||||
//JSON Arrays. They are arrays of any JSON value.
|
||||
json j7 = [1, false, null, "foo",
|
||||
{first:"John", last:"Pala"}];
|
||||
system:println(j7);
|
||||
}
|
||||
28
samples/Ballerina/var.bal
Normal file
28
samples/Ballerina/var.bal
Normal file
@@ -0,0 +1,28 @@
|
||||
import ballerina.lang.system;
|
||||
|
||||
function divideBy10 (int d) (int, int) {
|
||||
return d / 10, d % 10;
|
||||
}
|
||||
|
||||
function main (string[] args) {
|
||||
//Here the variable type is inferred type from the initial value. This is same as "int k = 5";
|
||||
var k = 5;
|
||||
system:println(10 + k);
|
||||
|
||||
//Here the type of the 'strVar' is 'string'.
|
||||
var strVar = "Hello!";
|
||||
system:println(strVar);
|
||||
|
||||
//Multiple assignment with 'var' allows you to define the variable then and there.
|
||||
//Variable type is inferred from the right-hand side.
|
||||
var q, r = divideBy10(6);
|
||||
system:println("06/10: " + "quotient=" + q + " " +
|
||||
"remainder=" + r);
|
||||
|
||||
//To ignore a particular return value in a multiple assignment statement, use '_'.
|
||||
var q1, _ = divideBy10(57);
|
||||
system:println("57/10: " + "quotient=" + q1);
|
||||
|
||||
var _, r1 = divideBy10(9);
|
||||
system:println("09/10: " + "remainder=" + r1);
|
||||
}
|
||||
26
samples/Ballerina/xml.bal
Normal file
26
samples/Ballerina/xml.bal
Normal file
@@ -0,0 +1,26 @@
|
||||
import ballerina.lang.system;
|
||||
|
||||
function main (string[] args) {
|
||||
|
||||
// XML element. Can only have one root element.
|
||||
xml x1 = xml `<book>The Lost World</book>`;
|
||||
system:println(x1);
|
||||
|
||||
// XML text
|
||||
xml x2 = xml `Hello, world!`;
|
||||
system:println(x2);
|
||||
|
||||
// XML comment
|
||||
xml x3 = xml `<!--I am a comment-->`;
|
||||
system:println(x3);
|
||||
|
||||
// XML processing instruction
|
||||
xml x4 = xml `<?target data?>`;
|
||||
system:println(x4);
|
||||
|
||||
// Multiple XML items can be combined to form a sequence of XML. The resulting sequence is again an XML on its own.
|
||||
xml x5 = x1 + x2 + x3 + x4;
|
||||
system:println("\nResulting XML sequence:");
|
||||
system:println(x5);
|
||||
|
||||
}
|
||||
2
samples/C++/grpc.pb.cc
Normal file
2
samples/C++/grpc.pb.cc
Normal file
@@ -0,0 +1,2 @@
|
||||
// Generated by the gRPC protobuf plugin.
|
||||
// If you make any local change, they will be lost.
|
||||
125
samples/C++/hello.grpc.pb.h
Normal file
125
samples/C++/hello.grpc.pb.h
Normal file
@@ -0,0 +1,125 @@
|
||||
// Generated by the gRPC C++ plugin.
|
||||
// If you make any local change, they will be lost.
|
||||
// source: hello.proto
|
||||
#ifndef GRPC_hello_2eproto__INCLUDED
|
||||
#define GRPC_hello_2eproto__INCLUDED
|
||||
|
||||
#include "hello.pb.h"
|
||||
|
||||
#include <grpc++/impl/codegen/async_stream.h>
|
||||
#include <grpc++/impl/codegen/async_unary_call.h>
|
||||
#include <grpc++/impl/codegen/method_handler_impl.h>
|
||||
#include <grpc++/impl/codegen/proto_utils.h>
|
||||
#include <grpc++/impl/codegen/rpc_method.h>
|
||||
#include <grpc++/impl/codegen/service_type.h>
|
||||
#include <grpc++/impl/codegen/status.h>
|
||||
#include <grpc++/impl/codegen/stub_options.h>
|
||||
#include <grpc++/impl/codegen/sync_stream.h>
|
||||
|
||||
namespace grpc {
|
||||
class CompletionQueue;
|
||||
class Channel;
|
||||
class RpcService;
|
||||
class ServerCompletionQueue;
|
||||
class ServerContext;
|
||||
} // namespace grpc
|
||||
|
||||
class HelloService final {
|
||||
public:
|
||||
class StubInterface {
|
||||
public:
|
||||
virtual ~StubInterface() {}
|
||||
virtual ::grpc::Status SayHello(::grpc::ClientContext* context, const ::HelloRequest& request, ::HelloResponse* response) = 0;
|
||||
std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::HelloResponse>> AsyncSayHello(::grpc::ClientContext* context, const ::HelloRequest& request, ::grpc::CompletionQueue* cq) {
|
||||
return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::HelloResponse>>(AsyncSayHelloRaw(context, request, cq));
|
||||
}
|
||||
private:
|
||||
virtual ::grpc::ClientAsyncResponseReaderInterface< ::HelloResponse>* AsyncSayHelloRaw(::grpc::ClientContext* context, const ::HelloRequest& request, ::grpc::CompletionQueue* cq) = 0;
|
||||
};
|
||||
class Stub final : public StubInterface {
|
||||
public:
|
||||
Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
|
||||
::grpc::Status SayHello(::grpc::ClientContext* context, const ::HelloRequest& request, ::HelloResponse* response) override;
|
||||
std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::HelloResponse>> AsyncSayHello(::grpc::ClientContext* context, const ::HelloRequest& request, ::grpc::CompletionQueue* cq) {
|
||||
return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::HelloResponse>>(AsyncSayHelloRaw(context, request, cq));
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr< ::grpc::ChannelInterface> channel_;
|
||||
::grpc::ClientAsyncResponseReader< ::HelloResponse>* AsyncSayHelloRaw(::grpc::ClientContext* context, const ::HelloRequest& request, ::grpc::CompletionQueue* cq) override;
|
||||
const ::grpc::RpcMethod rpcmethod_SayHello_;
|
||||
};
|
||||
static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
|
||||
|
||||
class Service : public ::grpc::Service {
|
||||
public:
|
||||
Service();
|
||||
virtual ~Service();
|
||||
virtual ::grpc::Status SayHello(::grpc::ServerContext* context, const ::HelloRequest* request, ::HelloResponse* response);
|
||||
};
|
||||
template <class BaseClass>
|
||||
class WithAsyncMethod_SayHello : public BaseClass {
|
||||
private:
|
||||
void BaseClassMustBeDerivedFromService(const Service *service) {}
|
||||
public:
|
||||
WithAsyncMethod_SayHello() {
|
||||
::grpc::Service::MarkMethodAsync(0);
|
||||
}
|
||||
~WithAsyncMethod_SayHello() override {
|
||||
BaseClassMustBeDerivedFromService(this);
|
||||
}
|
||||
// disable synchronous version of this method
|
||||
::grpc::Status SayHello(::grpc::ServerContext* context, const ::HelloRequest* request, ::HelloResponse* response) final override {
|
||||
abort();
|
||||
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
|
||||
}
|
||||
void RequestSayHello(::grpc::ServerContext* context, ::HelloRequest* request, ::grpc::ServerAsyncResponseWriter< ::HelloResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
|
||||
::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
|
||||
}
|
||||
};
|
||||
typedef WithAsyncMethod_SayHello<Service > AsyncService;
|
||||
template <class BaseClass>
|
||||
class WithGenericMethod_SayHello : public BaseClass {
|
||||
private:
|
||||
void BaseClassMustBeDerivedFromService(const Service *service) {}
|
||||
public:
|
||||
WithGenericMethod_SayHello() {
|
||||
::grpc::Service::MarkMethodGeneric(0);
|
||||
}
|
||||
~WithGenericMethod_SayHello() override {
|
||||
BaseClassMustBeDerivedFromService(this);
|
||||
}
|
||||
// disable synchronous version of this method
|
||||
::grpc::Status SayHello(::grpc::ServerContext* context, const ::HelloRequest* request, ::HelloResponse* response) final override {
|
||||
abort();
|
||||
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
|
||||
}
|
||||
};
|
||||
template <class BaseClass>
|
||||
class WithStreamedUnaryMethod_SayHello : public BaseClass {
|
||||
private:
|
||||
void BaseClassMustBeDerivedFromService(const Service *service) {}
|
||||
public:
|
||||
WithStreamedUnaryMethod_SayHello() {
|
||||
::grpc::Service::MarkMethodStreamed(0,
|
||||
new ::grpc::StreamedUnaryHandler< ::HelloRequest, ::HelloResponse>(std::bind(&WithStreamedUnaryMethod_SayHello<BaseClass>::StreamedSayHello, this, std::placeholders::_1, std::placeholders::_2)));
|
||||
}
|
||||
~WithStreamedUnaryMethod_SayHello() override {
|
||||
BaseClassMustBeDerivedFromService(this);
|
||||
}
|
||||
// disable regular version of this method
|
||||
::grpc::Status SayHello(::grpc::ServerContext* context, const ::HelloRequest* request, ::HelloResponse* response) final override {
|
||||
abort();
|
||||
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
|
||||
}
|
||||
// replace default version of method with streamed unary
|
||||
virtual ::grpc::Status StreamedSayHello(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::HelloRequest,::HelloResponse>* server_unary_streamer) = 0;
|
||||
};
|
||||
typedef WithStreamedUnaryMethod_SayHello<Service > StreamedUnaryService;
|
||||
typedef Service SplitStreamedService;
|
||||
typedef WithStreamedUnaryMethod_SayHello<Service > StreamedService;
|
||||
};
|
||||
|
||||
|
||||
#endif // GRPC_hello_2eproto__INCLUDED
|
||||
|
||||
27
samples/C/asm.h
Normal file
27
samples/C/asm.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/* CarbonOS System/Kernel
|
||||
* Copyright 2015-2017 David Aylaian
|
||||
* Licensed under Apache 2.0: https://github.com/DavidAylaian/CarbonOS/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
#ifndef ASM_H
|
||||
#define ASM_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// macros for enabling and disabling interrupts
|
||||
#define enable() asm("sti");
|
||||
#define disable() asm("cli");
|
||||
|
||||
// inb instruction
|
||||
uint8_t inb (uint16_t port) {
|
||||
uint8_t val;
|
||||
asm volatile ("inb %0, %1" : "=a"(val): "Nd"(port));
|
||||
return val;
|
||||
}
|
||||
|
||||
// outb instruction
|
||||
void outb (uint16_t port, uint8_t val) {
|
||||
asm volatile ("outb %1, %0" : : "a"(val), "Nd"(port));
|
||||
}
|
||||
|
||||
#endif
|
||||
25
samples/C/cpuid.h
Normal file
25
samples/C/cpuid.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#ifndef CPUID_H
|
||||
#define CPUID_H
|
||||
|
||||
#include "misc.h"
|
||||
|
||||
static inline void do_cpuid(dword_t *eax, dword_t *ebx, dword_t *ecx, dword_t *edx) {
|
||||
dword_t leaf = *eax;
|
||||
switch (leaf) {
|
||||
case 0:
|
||||
*eax = 0x01; // we support barely anything
|
||||
*ebx = 0x756e6547; // Genu
|
||||
*edx = 0x49656e69; // ineI
|
||||
*ecx = 0x6c65746e; // ntel
|
||||
break;
|
||||
default: // if leaf is too high, use highest supported leaf
|
||||
case 1:
|
||||
*eax = 0x0; // say nothing about cpu model number
|
||||
*ebx = 0x0; // processor number 0, flushes 0 bytes on clflush
|
||||
*ecx = 0b00000000000000000000000000000000; // we support none of the features in ecx
|
||||
*edx = 0b00000000000000000000000000000000; // we also support none of the features in edx
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
404
samples/CWeb/sat-life.w
Normal file
404
samples/CWeb/sat-life.w
Normal file
@@ -0,0 +1,404 @@
|
||||
\datethis
|
||||
@*Intro. This program generates clauses for the transition relation
|
||||
from time $t$ to time $t+1$ in Conway's Game of Life, assuming that
|
||||
all of the potentially live cells at time $t$ belong to a pattern
|
||||
that's specified in |stdin|. The pattern is defined by one or more
|
||||
lines representing rows of cells, where each line has `\..' in a
|
||||
cell that's guaranteed to be dead at time~$t$, otherwise it has `\.*'.
|
||||
The time is specified separately as a command-line parameter.
|
||||
|
||||
The Boolean variable for cell $(x,y)$ at time $t$ is named by its
|
||||
so-called ``xty code,'' namely by the decimal value of~$x$, followed
|
||||
by a code letter for~$t$, followed by the decimal value of~$y$. For
|
||||
example, if $x=10$ and $y=11$ and $t=0$, the variable that indicates
|
||||
liveness of the cell is \.{10a11}; and the corresponding variable
|
||||
for $t=1$ is \.{10b11}.
|
||||
|
||||
Up to 19 auxiliary variables are used together with each xty code,
|
||||
in order to construct clauses that define the successor state.
|
||||
The names of these variables are obtained by appending one of
|
||||
the following two-character combinations to the xty code:
|
||||
\.{A2}, \.{A3}, \.{A4},
|
||||
\.{B1}, \.{B2}, \.{B3}, \.{B4},
|
||||
\.{C1}, \.{C2}, \.{C3}, \.{C4},
|
||||
\.{D1}, \.{D2},
|
||||
\.{E1}, \.{E2},
|
||||
\.{F1}, \.{F2},
|
||||
\.{G1}, \.{G2}.
|
||||
These variables are derived from the Bailleux--Boufkhad method
|
||||
of encoding cardinality constraints:
|
||||
The auxiliary variable \.{A$k$} stands for the condition
|
||||
``at least $k$ of the eight neighbors are alive.'' Similarly,
|
||||
\.{B$k$} stands for ``at least $k$ of the first four neighbors
|
||||
are alive,'' and \.{C$k$} accounts for the other four neighbors.
|
||||
Codes \.D, \.E, \.F, and~\.G refer to pairs of neighbors.
|
||||
Thus, for instance, \.{10a11C2} means that at least two of the
|
||||
last four neighbors of cell $(10,11)$ are alive.
|
||||
|
||||
Those auxiliary variables receive values by means of up to 77 clauses per cell.
|
||||
For example, if $u$ and~$v$ are the neighbors of cell~$z$ that correspond
|
||||
to a pairing of type~\.D, there are six clauses
|
||||
$$\bar u d_1,\quad
|
||||
\bar v d_1,\quad
|
||||
\bar u\bar v d_2,\quad
|
||||
u v\bar d_1,\quad
|
||||
u\bar d_2,\quad
|
||||
v\bar d_2.$$
|
||||
The sixteen clauses
|
||||
$$\displaylines{\hfill
|
||||
\bar d_1b_1,\quad
|
||||
\bar e_1b_1,\quad
|
||||
\bar d_2b_2,\quad
|
||||
\bar d_1\bar e_1b_2,\quad
|
||||
\bar e_2b_2,\quad
|
||||
\bar d_2\bar e_1b_3,\quad
|
||||
\bar d_1\bar e_2b_3,\quad
|
||||
\bar d_2\bar e_2b_4,
|
||||
\hfill\cr\hfill
|
||||
d_1e_1\bar b_1,\quad
|
||||
d_1e_2\bar b_2,\quad
|
||||
d_2e_1\bar b_2,\quad
|
||||
d_1\bar b_3,\quad
|
||||
d_2e_2\bar b_3,\quad
|
||||
e_1\bar b_3,\quad
|
||||
d_2\bar b_4,\quad
|
||||
e_2\bar b_4
|
||||
\hfill}$$
|
||||
define $b$ variables from $d$'s and $e$'s; and another sixteen
|
||||
define $c$'s from $f$'s and $g$'s in the same fashion.
|
||||
A similar set of 21 clauses will define the $a$'s from the $b$'s and $c$'s.
|
||||
|
||||
Once the $a$'s are defined, thus essentially counting the
|
||||
live neighbors of cell $z$, the next
|
||||
state~$z'$ is defined by five further clauses
|
||||
$$\bar a_4\bar z',\quad
|
||||
a_2\bar z',\quad
|
||||
a_3z\bar z',\quad
|
||||
\bar a_3a_4z',\quad
|
||||
\bar a_2a_4\bar zz'.$$
|
||||
For example, the last of these states that $z'$ will be true
|
||||
(i.e., that cell $z$ will be alive at time $t+1$) if
|
||||
$z$ is alive at time~$t$ and has $\ge2$ live neighbors
|
||||
but not $\ge4$.
|
||||
|
||||
Nearby cells can share auxiliary variables, according to a tricky scheme that
|
||||
is worked out below. In consequence, the actual number of auxiliary variables
|
||||
and clauses per cell is reduced from 19 and $77+5$ to 13 and $57+5$,
|
||||
respectively, except at the boundaries.
|
||||
|
||||
@ So here's the overall outline of the program.
|
||||
|
||||
@d maxx 50 /* maximum number of lines in the pattern supplied by |stdin| */
|
||||
@d maxy 50 /* maximum number of columns per line in |stdin| */
|
||||
|
||||
@c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
char p[maxx+2][maxy+2]; /* is cell $(x,y)$ potentially alive? */
|
||||
char have_b[maxx+2][maxy+2]; /* did we already generate $b(x,y)$? */
|
||||
char have_d[maxx+2][maxy+2]; /* did we already generate $d(x,y)$? */
|
||||
char have_e[maxx+2][maxy+4]; /* did we already generate $e(x,y)$? */
|
||||
char have_f[maxx+4][maxy+2]; /* did we already generate $f(x-2,y)$? */
|
||||
int tt; /* time as given on the command line */
|
||||
int xmax,ymax; /* the number of rows and columns in the input pattern */
|
||||
int xmin=maxx,ymin=maxy; /* limits in the other direction */
|
||||
char timecode[]="abcdefghijklmnopqrstuvwxyz"@|
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"@|
|
||||
"!\"#$%&'()*+,-./:;<=>?@@[\\]^_`{|}~"; /* codes for $0\le t\le83$ */
|
||||
@q$@>
|
||||
char buf[maxy+2]; /* input buffer */
|
||||
unsigned int clause[4]; /* clauses are assembled here */
|
||||
int clauseptr; /* this many literals are in the current clause */
|
||||
@<Subroutines@>@;
|
||||
main(int argc,char*argv[]) {
|
||||
register int j,k,x,y;
|
||||
@<Process the command line@>;
|
||||
@<Input the pattern@>;
|
||||
for (x=xmin-1;x<=xmax+1;x++) for (y=ymin-1;y<=ymax+1;y++) {
|
||||
@<If cell $(x,y)$ is obviously dead at time $t+1$, |continue|@>;
|
||||
a(x,y);
|
||||
zprime(x,y);
|
||||
}
|
||||
}
|
||||
|
||||
@ @<Process the command line@>=
|
||||
if (argc!=2 || sscanf(argv[1],"%d",&tt)!=1) {
|
||||
fprintf(stderr,"Usage: %s t\n",argv[0]);
|
||||
exit(-1);
|
||||
}
|
||||
if (tt<0 || tt>82) {
|
||||
fprintf(stderr,"The time should be between 0 and 82 (not %d)!\n",tt);
|
||||
exit(-2);
|
||||
}
|
||||
|
||||
@ @<Input the pattern@>=
|
||||
for (x=1;;x++) {
|
||||
if (!fgets(buf,maxy+2,stdin)) break;
|
||||
if (x>maxx) {
|
||||
fprintf(stderr,"Sorry, the pattern should have at most %d rows!\n",maxx);
|
||||
exit(-3);
|
||||
}
|
||||
for (y=1;buf[y-1]!='\n';y++) {
|
||||
if (y>maxy) {
|
||||
fprintf(stderr,"Sorry, the pattern should have at most %d columns!\n",
|
||||
maxy);
|
||||
exit(-4);
|
||||
}
|
||||
if (buf[y-1]=='*') {
|
||||
p[x][y]=1;
|
||||
if (y>ymax) ymax=y;
|
||||
if (y<ymin) ymin=y;
|
||||
if (x>xmax) xmax=x;
|
||||
if (x<xmin) xmin=x;
|
||||
}@+else if (buf[y-1]!='.') {
|
||||
fprintf(stderr,"Unexpected character `%c' found in the pattern!\n",
|
||||
buf[y-1]);
|
||||
exit(-5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ @d pp(xx,yy) ((xx)>=0 && (yy)>=0? p[xx][yy]: 0)
|
||||
|
||||
@<If cell $(x,y)$ is obviously dead at time $t+1$, |continue|@>=
|
||||
if (pp(x-1,y-1)+pp(x-1,y)+pp(x-1,y+1)+
|
||||
pp(x,y-1)+p[x][y]+p[x][y+1]+
|
||||
pp(x+1,y-1)+p[x+1][y]+p[x+1][y+1]<3) continue;
|
||||
|
||||
@ Clauses are assembled in the |clause| array (surprise), where we
|
||||
put encoded literals.
|
||||
|
||||
The code for a literal is an unsigned 32-bit quantity, where the leading
|
||||
bit is 1 if the literal should be complemented. The next three bits
|
||||
specify the type of the literal (0 thru 7 for plain and \.A--\.G);
|
||||
the next three bits specify an integer~$k$; and the next bit is zero.
|
||||
That leaves room for two 12-bit fields, which specify $x$ and $y$.
|
||||
|
||||
Type 0 literals have $k=0$ for the ordinary xty code. However, the
|
||||
value $k=1$ indicates that the time code should be for $t+1$ instead of~$t$.
|
||||
And $k=2$ denotes a special ``tautology'' literal, which is always true.
|
||||
If the tautology literal is complemented, we omit it from the clause;
|
||||
otherwise we omit the entire clause.
|
||||
Finally, $k=7$ denotes an auxiliary literal, used to avoid
|
||||
clauses of length~4.
|
||||
|
||||
Here's a subroutine that outputs the current clause and resets
|
||||
the |clause| array.
|
||||
|
||||
@d taut (2<<25)
|
||||
@d sign (1U<<31)
|
||||
|
||||
@<Sub...@>=
|
||||
void outclause(void) {
|
||||
register int c,k,x,y,p;
|
||||
for (p=0;p<clauseptr;p++)
|
||||
if (clause[p]==taut) goto done;
|
||||
for (p=0;p<clauseptr;p++) if (clause[p]!=taut+sign) {
|
||||
if (clause[p]>>31) printf(" ~");@+else printf(" ");
|
||||
c=(clause[p]>>28)&0x7;
|
||||
k=(clause[p]>>25)&0x7;
|
||||
x=(clause[p]>>12)&0xfff;
|
||||
y=clause[p]&0xfff;
|
||||
if (c) printf("%d%c%d%c%d",
|
||||
x,timecode[tt],y,c+'@@',k);
|
||||
else if (k==7) printf("%d%c%dx",
|
||||
x,timecode[tt],y);
|
||||
else printf("%d%c%d",
|
||||
x,timecode[tt+k],y);
|
||||
}
|
||||
printf("\n");
|
||||
done: clauseptr=0;
|
||||
}
|
||||
|
||||
@ And here's another, which puts a type-0 literal into |clause|.
|
||||
|
||||
@<Sub...@>=
|
||||
void applit(int x,int y,int bar,int k) {
|
||||
if (k==0 && (x<xmin || x>xmax || y<ymin || y>ymax || p[x][y]==0))
|
||||
clause[clauseptr++]=(bar? 0: sign)+taut;
|
||||
else clause[clauseptr++]=(bar? sign:0)+(k<<25)+(x<<12)+y;
|
||||
}
|
||||
|
||||
@ The |d| and |e| subroutines are called for only one-fourth
|
||||
of all cell addresses $(x,y)$. Indeed, one can show that
|
||||
$x$ is always odd, and that $y\bmod4<2$.
|
||||
|
||||
Therefore we remember if we've seen $(x,y)$ before.
|
||||
|
||||
Slight trick: If |yy| is not in range, we avoid generating the
|
||||
clause $\bar d_k$ twice.
|
||||
|
||||
@d newlit(x,y,c,k) clause[clauseptr++]=((c)<<28)+((k)<<25)+((x)<<12)+(y)
|
||||
@d newcomplit(x,y,c,k)
|
||||
clause[clauseptr++]=sign+((c)<<28)+((k)<<25)+((x)<<12)+(y)
|
||||
|
||||
@<Sub...@>=
|
||||
void d(int x,int y) {
|
||||
register x1=x-1,x2=x,yy=y+1;
|
||||
if (have_d[x][y]!=tt+1) {
|
||||
applit(x1,yy,1,0),newlit(x,y,4,1),outclause();
|
||||
applit(x2,yy,1,0),newlit(x,y,4,1),outclause();
|
||||
applit(x1,yy,1,0),applit(x2,yy,1,0),newlit(x,y,4,2),outclause();
|
||||
applit(x1,yy,0,0),applit(x2,yy,0,0),newcomplit(x,y,4,1),outclause();
|
||||
applit(x1,yy,0,0),newcomplit(x,y,4,2),outclause();
|
||||
if (yy>=ymin && yy<=ymax)
|
||||
applit(x2,yy,0,0),newcomplit(x,y,4,2),outclause();
|
||||
have_d[x][y]=tt+1;
|
||||
}
|
||||
}
|
||||
@#
|
||||
void e(int x,int y) {
|
||||
register x1=x-1,x2=x,yy=y-1;
|
||||
if (have_e[x][y]!=tt+1) {
|
||||
applit(x1,yy,1,0),newlit(x,y,5,1),outclause();
|
||||
applit(x2,yy,1,0),newlit(x,y,5,1),outclause();
|
||||
applit(x1,yy,1,0),applit(x2,yy,1,0),newlit(x,y,5,2),outclause();
|
||||
applit(x1,yy,0,0),applit(x2,yy,0,0),newcomplit(x,y,5,1),outclause();
|
||||
applit(x1,yy,0,0),newcomplit(x,y,5,2),outclause();
|
||||
if (yy>=ymin && yy<=ymax)
|
||||
applit(x2,yy,0,0),newcomplit(x,y,5,2),outclause();
|
||||
have_e[x][y]=tt+1;
|
||||
}
|
||||
}
|
||||
|
||||
@ The |f| subroutine can't be shared quite so often. But we
|
||||
do save a factor of~2, because $x+y$ is always even.
|
||||
|
||||
@<Sub...@>=
|
||||
void f(int x,int y) {
|
||||
register xx=x-1,y1=y,y2=y+1;
|
||||
if (have_f[x][y]!=tt+1) {
|
||||
applit(xx,y1,1,0),newlit(x,y,6,1),outclause();
|
||||
applit(xx,y2,1,0),newlit(x,y,6,1),outclause();
|
||||
applit(xx,y1,1,0),applit(xx,y2,1,0),newlit(x,y,6,2),outclause();
|
||||
applit(xx,y1,0,0),applit(xx,y2,0,0),newcomplit(x,y,6,1),outclause();
|
||||
applit(xx,y1,0,0),newcomplit(x,y,6,2),outclause();
|
||||
if (xx>=xmin && xx<=xmax)
|
||||
applit(xx,y2,0,0),newcomplit(x,y,6,2),outclause();
|
||||
have_f[x][y]=tt+1;
|
||||
}
|
||||
}
|
||||
|
||||
@ The |g| subroutine cleans up the dregs, by somewhat tediously
|
||||
locating the two neighbors that weren't handled by |d|, |e|, or~|f|.
|
||||
No sharing is possible here.
|
||||
|
||||
@<Sub...@>=
|
||||
void g(int x,int y) {
|
||||
register x1,x2,y1,y2;
|
||||
if (x&1) x1=x-1,y1=y,x2=x+1,y2=y^1;
|
||||
else x1=x+1,y1=y,x2=x-1,y2=y-1+((y&1)<<1);
|
||||
applit(x1,y1,1,0),newlit(x,y,7,1),outclause();
|
||||
applit(x2,y2,1,0),newlit(x,y,7,1),outclause();
|
||||
applit(x1,y1,1,0),applit(x2,y2,1,0),newlit(x,y,7,2),outclause();
|
||||
applit(x1,y1,0,0),applit(x2,y2,0,0),newcomplit(x,y,7,1),outclause();
|
||||
applit(x1,y1,0,0),newcomplit(x,y,7,2),outclause();
|
||||
applit(x2,y2,0,0),newcomplit(x,y,7,2),outclause();
|
||||
}
|
||||
|
||||
@ Fortunately the |b| subroutine {\it can\/} be shared (since |x| is always
|
||||
odd), thus saving half of the sixteen clauses generated.
|
||||
|
||||
@<Sub...@>=
|
||||
void b(int x,int y) {
|
||||
register j,k,xx=x,y1=y-(y&2),y2=y+(y&2);
|
||||
if (have_b[x][y]!=tt+1) {
|
||||
d(xx,y1);
|
||||
e(xx,y2);
|
||||
for (j=0;j<3;j++) for (k=0;k<3;k++) if (j+k) {
|
||||
if (j) newcomplit(xx,y1,4,j); /* $\bar d_j$ */
|
||||
if (k) newcomplit(xx,y2,5,k); /* $\bar e_k$ */
|
||||
newlit(x,y,2,j+k); /* $b_{j+k}$ */
|
||||
outclause();
|
||||
if (j) newlit(xx,y1,4,3-j); /* $d_{3-j}$ */
|
||||
if (k) newlit(xx,y2,5,3-k); /* $e_{3-k}$ */
|
||||
newcomplit(x,y,2,5-j-k); /* $\bar b_{5-j-k}$ */
|
||||
outclause();
|
||||
}
|
||||
have_b[x][y]=tt+1;
|
||||
}
|
||||
}
|
||||
|
||||
@ The (unshared) |c| subroutine handles the other four neighbors,
|
||||
by working with |f| and |g| instead of |d| and~|e|.
|
||||
|
||||
If |y=0|, the overlap rules set |y1=-1|, which can be problematic.
|
||||
I've decided to avoid this case by omitting |f| when it is
|
||||
guaranteed to be zero.
|
||||
|
||||
@<Sub...@>=
|
||||
void c(int x,int y) {
|
||||
register j,k,x1,y1;
|
||||
if (x&1) x1=x+2,y1=(y-1)|1;
|
||||
else x1=x,y1=y&-2;
|
||||
g(x,y);
|
||||
if (x1-1<xmin || x1-1>xmax || y1+1<ymin || y1>ymax)
|
||||
@<Set |c| equal to |g|@>@;
|
||||
else {
|
||||
f(x1,y1);
|
||||
for (j=0;j<3;j++) for (k=0;k<3;k++) if (j+k) {
|
||||
if (j) newcomplit(x1,y1,6,j); /* $\bar f_j$ */
|
||||
if (k) newcomplit(x,y,7,k); /* $\bar g_k$ */
|
||||
newlit(x,y,3,j+k); /* $c_{j+k}$ */
|
||||
outclause();
|
||||
if (j) newlit(x1,y1,6,3-j); /* $f_{3-j}$ */
|
||||
if (k) newlit(x,y,7,3-k); /* $g_{3-k}$ */
|
||||
newcomplit(x,y,3,5-j-k); /* $\bar c_{5-j-k}$ */
|
||||
outclause();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ @<Set |c| equal to |g|@>=
|
||||
{
|
||||
for (k=1;k<3;k++) {
|
||||
newcomplit(x,y,7,k),newlit(x,y,3,k),outclause(); /* $\bar g_k\lor c_k$ */
|
||||
newlit(x,y,7,k),newcomplit(x,y,3,k),outclause(); /* $g_k\lor\bar c_k$ */
|
||||
}
|
||||
newcomplit(x,y,3,3),outclause(); /* $\bar c_3$ */
|
||||
newcomplit(x,y,3,4),outclause(); /* $\bar c_4$ */
|
||||
}
|
||||
|
||||
@ Totals over all eight neighbors are then deduced by the |a|
|
||||
subroutine.
|
||||
|
||||
@<Sub...@>=
|
||||
void a(int x,int y) {
|
||||
register j,k,xx=x|1;
|
||||
b(xx,y);
|
||||
c(x,y);
|
||||
for (j=0;j<5;j++) for (k=0;k<5;k++) if (j+k>1 && j+k<5) {
|
||||
if (j) newcomplit(xx,y,2,j); /* $\bar b_j$ */
|
||||
if (k) newcomplit(x,y,3,k); /* $\bar c_k$ */
|
||||
newlit(x,y,1,j+k); /* $a_{j+k}$ */
|
||||
outclause();
|
||||
}
|
||||
for (j=0;j<5;j++) for (k=0;k<5;k++) if (j+k>2 && j+k<6 && j*k) {
|
||||
if (j) newlit(xx,y,2,j); /* $b_j$ */
|
||||
if (k) newlit(x,y,3,k); /* $c_k$ */
|
||||
newcomplit(x,y,1,j+k-1); /* $\bar a_{j+k-1}$ */
|
||||
outclause();
|
||||
}
|
||||
}
|
||||
|
||||
@ Finally, as mentioned at the beginning, $z'$ is determined
|
||||
from $z$, $a_2$, $a_3$, and $a_4$.
|
||||
|
||||
I actually generate six clauses, not five, in order to stick to
|
||||
{\mc 3SAT}.
|
||||
|
||||
@<Sub...@>=
|
||||
void zprime(int x,int y) {
|
||||
newcomplit(x,y,1,4),applit(x,y,1,1),outclause(); /* $\bar a_4\bar z'$ */
|
||||
newlit(x,y,1,2),applit(x,y,1,1),outclause(); /* $a_2\bar z'$ */
|
||||
newlit(x,y,1,3),applit(x,y,0,0),applit(x,y,1,1),outclause();
|
||||
/* $a_3z\bar z'$ */
|
||||
newcomplit(x,y,1,3),newlit(x,y,1,4),applit(x,y,0,1),outclause();
|
||||
/* $\bar a_3a_4z'$ */
|
||||
applit(x,y,0,7),newcomplit(x,y,1,2),newlit(x,y,1,4),outclause();
|
||||
/* $x\bar a_2a_4$ */
|
||||
applit(x,y,1,7),applit(x,y,1,0),applit(x,y,0,1),outclause();
|
||||
/* $\bar x\bar zz'$ */
|
||||
}
|
||||
|
||||
@*Index.
|
||||
24
samples/Closure Templates/example.soy
Normal file
24
samples/Closure Templates/example.soy
Normal file
@@ -0,0 +1,24 @@
|
||||
{namespace Exmaple}
|
||||
|
||||
/**
|
||||
* Example
|
||||
*/
|
||||
{template .foo}
|
||||
{@param count: string}
|
||||
{@param? name: int}
|
||||
|
||||
{if isNonnull($name)}
|
||||
<h1>{$name}</h1>
|
||||
{/if}
|
||||
|
||||
<div class="content">
|
||||
{switch count}
|
||||
{case 0}
|
||||
{call Empty.view}
|
||||
{param count: $count /}
|
||||
{/call}
|
||||
{default}
|
||||
<h2>Wow, so many!</h2>
|
||||
{/switch}
|
||||
</div>
|
||||
{/template}
|
||||
159
samples/CoNLL-U/CF1.conllu
Normal file
159
samples/CoNLL-U/CF1.conllu
Normal file
@@ -0,0 +1,159 @@
|
||||
# text = PT no governo
|
||||
# source = CETENFolha n=1 cad=Opinião sec=opi sem=94a
|
||||
# sent_id = CF1-1
|
||||
# id = 1
|
||||
1 PT PT PROPN PROP|M|S|@NPHR Gender=Masc|Number=Sing 0 root _ _
|
||||
2-3 no _ _ _ _ _ _ _ _
|
||||
2 em em ADP <sam->|PRP|@N< _ 4 case _ _
|
||||
3 o o DET <-sam>|<artd>|ART|M|S|@>N Definite=Def|Gender=Masc|Number=Sing|PronType=Art 4 det _ _
|
||||
4 governo governo NOUN <np-def>|N|M|S|@P< Gender=Masc|Number=Sing 1 nmod _ _
|
||||
|
||||
# text = BRASÍLIA Pesquisa Datafolha publicada hoje revela um dado supreendente: recusando uma postura radical, a esmagadora maioria (77%) dos eleitores quer o PT participando do Governo Fernando Henrique Cardoso.
|
||||
# source = CETENFolha n=1 cad=Opinião sec=opi sem=94a &W
|
||||
# sent_id = CF1-3
|
||||
# id = 2
|
||||
1 BRASÍLIA Brasília PROPN PROP|F|S|@ADVL> Gender=Fem|Number=Sing 6 dep _ _
|
||||
2 Pesquisa Pesquisa PROPN _ Gender=Fem|Number=Sing 6 nsubj _ ChangedBy=Issue119|MWE=Pesquisa_Datafolha|MWEPOS=PROPN
|
||||
3 Datafolha Datafolha PROPN _ Number=Sing 2 flat:name _ ChangedBy=Issue119
|
||||
4 publicada publicar VERB <mv>|V|PCP|F|S|@ICL-N< Gender=Fem|Number=Sing|VerbForm=Part 2 acl _ _
|
||||
5 hoje hoje ADV ADV|@<ADVL _ 4 advmod _ _
|
||||
6 revela revelar VERB <mv>|V|PR|3S|IND|@FS-STA Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 0 root _ _
|
||||
7 um um DET <arti>|ART|M|S|@>N Definite=Ind|Gender=Masc|Number=Sing|PronType=Art 8 det _ _
|
||||
8 dado dado NOUN <np-idf>|N|M|S|@<ACC Gender=Masc|Number=Sing 6 obj _ _
|
||||
9 supreendente surpreendente ADJ ADJ|M|S|@N< Gender=Masc|Number=Sing 8 amod _ ChangedBy=Issue165|SpaceAfter=No
|
||||
10 : : PUNCT PU|@PU _ 26 punct _ _
|
||||
11 recusando recusar VERB <mv>|V|GER|@ICL-ADVL> VerbForm=Ger 26 advcl _ _
|
||||
12 uma um DET <arti>|ART|F|S|@>N Definite=Ind|Gender=Fem|Number=Sing|PronType=Art 13 det _ _
|
||||
13 postura postura NOUN <np-idf>|N|F|S|@<ACC Gender=Fem|Number=Sing 11 obj _ _
|
||||
14 radical radical ADJ ADJ|F|S|@N< Gender=Fem|Number=Sing 13 amod _ ChangedBy=Issue165|SpaceAfter=No
|
||||
15 , , PUNCT PU|@PU _ 26 punct _ _
|
||||
16 a o DET <artd>|ART|F|S|@>N Definite=Def|Gender=Fem|Number=Sing|PronType=Art 18 det _ _
|
||||
17 esmagadora esmagador ADJ ADJ|F|S|@>N Gender=Fem|Number=Sing 18 amod _ _
|
||||
18 maioria maioria NOUN <np-def>|N|F|S|@SUBJ> Gender=Fem|Number=Sing 26 nsubj _ _
|
||||
19 ( ( PUNCT PU|@PU _ 21 punct _ ChangedBy=Issue165|SpaceAfter=No
|
||||
20 77 77 NUM <card>|NUM|M|P|@>N NumType=Card 21 nummod _ ChangedBy=Issue165|ChangedBy=Issue168|SpaceAfter=No
|
||||
21 % % SYM <np-def>|N|M|P|@N<PRED Gender=Masc|Number=Plur 18 appos _ ChangedBy=Issue165|SpaceAfter=No
|
||||
22 ) ) PUNCT PU|@PU _ 21 punct _ _
|
||||
23-24 dos _ _ _ _ _ _ _ _
|
||||
23 de de ADP <sam->|PRP|@N< _ 25 case _ _
|
||||
24 os o DET <-sam>|<artd>|ART|M|P|@>N Definite=Def|Gender=Masc|Number=Plur|PronType=Art 25 det _ _
|
||||
25 eleitores eleitor NOUN <np-def>|N|M|P|@P< Gender=Masc|Number=Plur 18 nmod _ _
|
||||
26 quer querer VERB <mv>|V|PR|3S|IND|@FS-N<PRED Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 8 acl:relcl _ _
|
||||
27 o o DET <artd>|ART|M|S|@>N Definite=Def|Gender=Masc|Number=Sing|PronType=Art 28 det _ _
|
||||
28 PT PT PROPN PROP|M|S|@<ACC Gender=Masc|Number=Sing 26 obj _ _
|
||||
29 participando participar VERB <mv>|V|GER|@ICL-<OC VerbForm=Ger 26 xcomp _ _
|
||||
30-31 do _ _ _ _ _ _ _ _
|
||||
30 de de ADP <sam->|PRP|@<PIV _ 32 case _ _
|
||||
31 o o DET <-sam>|<artd>|ART|M|S|@>N Definite=Def|Gender=Masc|Number=Sing|PronType=Art 32 det _ _
|
||||
32 Governo governo NOUN <prop>|<np-def>|N|M|S|@P< Gender=Masc|Number=Sing 29 obl _ _
|
||||
33 Fernando Fernando PROPN _ Gender=Masc|Number=Sing 32 nmod _ ChangedBy=Issue119|MWE=Fernando_Henrique_Cardoso|MWEPOS=PROPN
|
||||
34 Henrique Henrique PROPN _ Number=Sing 33 flat:name _ ChangedBy=Issue119
|
||||
35 Cardoso Cardoso PROPN _ Number=Sing 33 flat:name _ SpaceAfter=No
|
||||
36 . . PUNCT PU|@PU _ 6 punct _ _
|
||||
|
||||
# text = Tem sentido -- aliás, muitíssimo sentido.
|
||||
# source = CETENFolha n=1 cad=Opinião sec=opi sem=94a &D
|
||||
# sent_id = CF1-4
|
||||
# id = 3
|
||||
1 Tem ter VERB <mv>|V|PR|3S|IND|@FS-STA Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 0 root _ _
|
||||
2 sentido sentido NOUN <np-idf>|N|M|S|@<ACC Gender=Masc|Number=Sing 1 obj _ _
|
||||
3 -- -- PUNCT PU|@PU _ 1 punct _ _
|
||||
4 aliás aliás ADV <kc>|ADV|@<ADVL _ 1 advmod _ ChangedBy=Issue165|SpaceAfter=No
|
||||
5 , , PUNCT PU|@PU _ 7 punct _ _
|
||||
6 muitíssimo muitíssimo DET <quant>|<SUP>|DET|M|S|@>N Gender=Masc|Number=Sing|PronType=Ind 7 det _ _
|
||||
7 sentido sentido NOUN <np-idf>|N|M|S|@N<PRED Gender=Masc|Number=Sing 2 appos _ ChangedBy=Issue165|SpaceAfter=No
|
||||
8 . . PUNCT PU|@PU _ 1 punct _ _
|
||||
|
||||
# text = Muito mais do que nos tempos na ditadura, a solidez do PT está, agora, ameaçada.
|
||||
# source = CETENFolha n=1 cad=Opinião sec=opi sem=94a
|
||||
# sent_id = CF1-5
|
||||
# id = 4
|
||||
1 Muito muito ADV <quant>|ADV|@>A _ 2 advmod _ _
|
||||
2 mais mais ADV <quant>|<KOMP>|<COMP>|ADV|@ADVL> _ 22 advmod _ _
|
||||
3-4 do _ _ _ _ _ _ _ _
|
||||
3 de de ADP <sam->|PRP|@COM _ 8 case _ _
|
||||
4 o o PRON <dem>|<-sam>|DET|M|S|@P< Gender=Masc|Number=Sing|PronType=Dem 3 fixed _ _
|
||||
5 que que PRON <rel>|INDP|M|S|@N< Gender=Masc|Number=Sing|PronType=Rel 3 fixed _ _
|
||||
6-7 nos _ _ _ _ _ _ _ _
|
||||
6 em em ADP <sam->|<first-cjt>|PRP|@KOMP< _ 8 case _ _
|
||||
7 os o DET <-sam>|<artd>|ART|M|P|@>N Definite=Def|Gender=Masc|Number=Plur|PronType=Art 8 det _ _
|
||||
8 tempos tempo NOUN <first-cjt>|<np-def>|N|M|P|@P< Gender=Masc|Number=Plur 2 obl _ _
|
||||
9-10 na _ _ _ _ _ _ _ _
|
||||
9 em em ADP <sam->|PRP|@N< _ 11 case _ _
|
||||
10 a o DET <-sam>|<artd>|ART|F|S|@>N Definite=Def|Gender=Fem|Number=Sing|PronType=Art 11 det _ _
|
||||
11 ditadura ditadura NOUN <np-def>|N|F|S|@P< Gender=Fem|Number=Sing 8 nmod _ ChangedBy=Issue165|SpaceAfter=No
|
||||
12 , , PUNCT PU|@PU _ 2 punct _ _
|
||||
13 a o DET <artd>|ART|F|S|@>N Definite=Def|Gender=Fem|Number=Sing|PronType=Art 14 det _ _
|
||||
14 solidez solidez NOUN <np-def>|N|F|S|@SUBJ> Gender=Fem|Number=Sing 22 nsubj _ _
|
||||
15-16 do _ _ _ _ _ _ _ _
|
||||
15 de de ADP <sam->|PRP|@N< _ 17 case _ _
|
||||
16 o o DET <-sam>|<artd>|ART|M|S|@>N Definite=Def|Gender=Masc|Number=Sing|PronType=Art 17 det _ _
|
||||
17 PT PT PROPN PROP|M|S|@P< Gender=Masc|Number=Sing 14 nmod _ _
|
||||
18 está estar AUX <mv>|V|PR|3S|IND|@FS-STA Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 22 cop _ ChangedBy=Issue165|ChangedBy=Issue167|SpaceAfter=No
|
||||
19 , , PUNCT PU|@PU _ 20 punct _ _
|
||||
20 agora agora ADV <kc>|ADV|@<ADVL _ 22 advmod _ ChangedBy=Issue165|SpaceAfter=No
|
||||
21 , , PUNCT PU|@PU _ 20 punct _ _
|
||||
22 ameaçada ameaçar VERB <mv>|V|PCP|F|S|@ICL-<SC Gender=Fem|Number=Sing|VerbForm=Part 0 root _ ChangedBy=Issue165|SpaceAfter=No
|
||||
23 . . PUNCT PU|@PU _ 22 punct _ _
|
||||
|
||||
# text = Nem Lula nem o partido ainda encontraram um discurso para se diferenciar.
|
||||
# source = CETENFolha n=1 cad=Opinião sec=opi sem=94a
|
||||
# sent_id = CF1-6
|
||||
# id = 5
|
||||
1 Nem nem CCONJ <parkc-1>|KC|@CO _ 2 cc _ _
|
||||
2 Lula Lula PROPN <first-cjt>|PROP|M|S|@SUBJ> Gender=Masc|Number=Sing 7 nsubj _ _
|
||||
3 nem nem CCONJ <co-subj>|<parkc-2>|KC|@CO _ 5 cc _ _
|
||||
4 o o DET <artd>|ART|M|S|@>N Definite=Def|Gender=Masc|Number=Sing|PronType=Art 5 det _ _
|
||||
5 partido partido NOUN <cjt>|<np-def>|N|M|S|@SUBJ> Gender=Masc|Number=Sing 2 conj _ _
|
||||
6 ainda ainda ADV ADV|@ADVL> _ 7 advmod _ _
|
||||
7 encontraram encontrar VERB <mv>|V|PS/MQP|3P|IND|@FS-STA Mood=Ind|Number=Plur|Person=3|VerbForm=Fin 0 root _ _
|
||||
8 um um DET _ Definite=Ind|Gender=Masc|Number=Sing|PronType=Art 9 det _ _
|
||||
9 discurso discurso NOUN <np-idf>|N|M|S|@<ACC Gender=Masc|Number=Sing 7 obj _ _
|
||||
10 para para ADP _ _ 12 case _ _
|
||||
11 se se PRON PERS|M|3S|ACC|@ACC>-PASS Case=Acc|Gender=Masc|Number=Sing|Person=3|PronType=Prs 12 expl _ ChangedBy=Issue135
|
||||
12 diferenciar diferenciar VERB _ VerbForm=Inf 9 acl _ ChangedBy=Issue165|SpaceAfter=No
|
||||
13 . . PUNCT PU|@PU _ 7 punct _ _
|
||||
|
||||
# text = Eles se dizem oposição, mas ainda não informaram o que vão combater.
|
||||
# source = CETENFolha n=1 cad=Opinião sec=opi sem=94a
|
||||
# sent_id = CF1-7
|
||||
# id = 6
|
||||
1 Eles eles PRON PERS|M|3P|NOM|@SUBJ> Case=Nom|Gender=Masc|Number=Plur|Person=3|PronType=Prs 3 nsubj _ _
|
||||
2 se se PRON PERS|M|3P|ACC|@ACC>-PASS Case=Acc|Gender=Masc|Number=Plur|Person=3|PronType=Prs 3 expl _ ChangedBy=Issue135
|
||||
3 dizem dizer VERB <first-cjt>|<mv>|<se-passive>|V|PR|3P|IND|@FS-STA Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin 0 root _ _
|
||||
4 oposição oposição NOUN <np-idf>|N|F|S|@<OC Gender=Fem|Number=Sing 3 xcomp _ ChangedBy=Issue165|SpaceAfter=No
|
||||
5 , , PUNCT PU|@PU _ 9 punct _ _
|
||||
6 mas mas CCONJ <co-fcl>|KC|@CO _ 9 cc _ _
|
||||
7 ainda ainda ADV ADV|@>A _ 8 advmod _ _
|
||||
8 não não ADV _ Polarity=Neg 9 advmod _ _
|
||||
9 informaram informar VERB <cjt>|<mv>|V|PS/MQP|3P|IND|@FS-STA Mood=Ind|Number=Plur|Person=3|VerbForm=Fin 3 conj _ _
|
||||
10 o o PRON _ Gender=Masc|Number=Sing|PronType=Dem 11 det _ _
|
||||
11 que que PRON <interr>|INDP|M|S|@ACC> Gender=Masc|Number=Sing|PronType=Int 13 obj _ _
|
||||
12 vão ir AUX <aux>|V|PR|3P|IND|@FS-<ACC Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin 13 aux _ _
|
||||
13 combater combater VERB <mv>|V|INF|@ICL-AUX< VerbForm=Inf 9 ccomp _ ChangedBy=Issue165|SpaceAfter=No
|
||||
14 . . PUNCT PU|@PU _ 3 punct _ _
|
||||
|
||||
# text = Muitas das prioridades do novo governo coincidem com as prioridades do PT.
|
||||
# source = CETENFolha n=1 cad=Opinião sec=opi sem=94a
|
||||
# sent_id = CF1-8
|
||||
# id = 7
|
||||
1 Muitas muito PRON <quant>|DET|F|P|@SUBJ> Gender=Fem|Number=Plur|PronType=Ind 9 nsubj _ _
|
||||
2-3 das _ _ _ _ _ _ _ _
|
||||
2 de de ADP <sam->|PRP|@N< _ 4 case _ _
|
||||
3 as o DET <-sam>|<artd>|ART|F|P|@>N Definite=Def|Gender=Fem|Number=Plur|PronType=Art 4 det _ _
|
||||
4 prioridades prioridade NOUN <np-def>|N|F|P|@P< Gender=Fem|Number=Plur 1 nmod _ _
|
||||
5-6 do _ _ _ _ _ _ _ _
|
||||
5 de de ADP <sam->|PRP|@N< _ 8 case _ _
|
||||
6 o o DET <-sam>|<artd>|ART|M|S|@>N Definite=Def|Gender=Masc|Number=Sing|PronType=Art 8 det _ _
|
||||
7 novo novo ADJ ADJ|M|S|@>N Gender=Masc|Number=Sing 8 amod _ _
|
||||
8 governo governo NOUN <np-def>|N|M|S|@P< Gender=Masc|Number=Sing 4 nmod _ _
|
||||
9 coincidem coincidir VERB <mv>|V|PR|3P|IND|@FS-STA Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin 0 root _ _
|
||||
10 com com ADP PRP|@<PIV _ 12 case _ _
|
||||
11 as o DET <artd>|ART|F|P|@>N Definite=Def|Gender=Fem|Number=Plur|PronType=Art 12 det _ _
|
||||
12 prioridades prioridade NOUN <np-def>|N|F|P|@P< Gender=Fem|Number=Plur 9 obj _ _
|
||||
13-14 do _ _ _ _ _ _ _ _
|
||||
13 de de ADP <sam->|PRP|@N< _ 15 case _ _
|
||||
14 o o DET <-sam>|<artd>|ART|M|S|@>N Definite=Def|Gender=Masc|Number=Sing|PronType=Art 15 det _ _
|
||||
15 PT PT PROPN PROP|M|S|@P< Gender=Masc|Number=Sing 12 nmod _ ChangedBy=Issue165|SpaceAfter=No
|
||||
16 . . PUNCT PU|@PU _ 9 punct _ _
|
||||
|
||||
122
samples/CoNLL-U/en-ud-test-abridged.conllu
Normal file
122
samples/CoNLL-U/en-ud-test-abridged.conllu
Normal file
@@ -0,0 +1,122 @@
|
||||
# newdoc id = weblog-blogspot.com_zentelligence_20040423000200_ENG_20040423_000200
|
||||
# sent_id = weblog-blogspot.com_zentelligence_20040423000200_ENG_20040423_000200-0001
|
||||
# text = What if Google Morphed Into GoogleOS?
|
||||
1 What what PRON WP PronType=Int 0 root 0:root _
|
||||
2 if if SCONJ IN _ 4 mark 4:mark _
|
||||
3 Google Google PROPN NNP Number=Sing 4 nsubj 4:nsubj _
|
||||
4 Morphed morph VERB VBD Mood=Ind|Tense=Past|VerbForm=Fin 1 advcl 1:advcl _
|
||||
5 Into into ADP IN _ 6 case 6:case _
|
||||
6 GoogleOS GoogleOS PROPN NNP Number=Sing 4 obl 4:obl SpaceAfter=No
|
||||
7 ? ? PUNCT . _ 4 punct 4:punct _
|
||||
|
||||
# sent_id = weblog-blogspot.com_zentelligence_20040423000200_ENG_20040423_000200-0002
|
||||
# text = What if Google expanded on its search-engine (and now e-mail) wares into a full-fledged operating system?
|
||||
1 What what PRON WP PronType=Int 0 root 0:root _
|
||||
2 if if SCONJ IN _ 4 mark 4:mark _
|
||||
3 Google Google PROPN NNP Number=Sing 4 nsubj 4:nsubj _
|
||||
4 expanded expand VERB VBD Mood=Ind|Tense=Past|VerbForm=Fin 1 advcl 1:advcl _
|
||||
5 on on ADP IN _ 15 case 15:case _
|
||||
6 its its PRON PRP$ Gender=Neut|Number=Sing|Person=3|Poss=Yes|PronType=Prs 15 nmod:poss 15:nmod:poss _
|
||||
7 search search NOUN NN Number=Sing 9 compound 9:compound SpaceAfter=No
|
||||
8 - - PUNCT HYPH _ 9 punct 9:punct SpaceAfter=No
|
||||
9 engine engine NOUN NN Number=Sing 15 compound 15:compound _
|
||||
10 ( ( PUNCT -LRB- _ 9 punct 9:punct SpaceAfter=No
|
||||
11 and and CCONJ CC _ 13 cc 13:cc _
|
||||
12 now now ADV RB _ 13 advmod 13:advmod _
|
||||
13 e-mail e-mail NOUN NN Number=Sing 9 conj 9:conj SpaceAfter=No
|
||||
14 ) ) PUNCT -RRB- _ 15 punct 15:punct _
|
||||
15 wares wares NOUN NNS Number=Plur 4 obl 4:obl _
|
||||
16 into into ADP IN _ 22 case 22:case _
|
||||
17 a a DET DT Definite=Ind|PronType=Art 22 det 22:det _
|
||||
18 full full ADV RB _ 20 advmod 20:advmod SpaceAfter=No
|
||||
19 - - PUNCT HYPH _ 20 punct 20:punct SpaceAfter=No
|
||||
20 fledged fledged ADJ JJ Degree=Pos 22 amod 22:amod _
|
||||
21 operating operating NOUN NN Number=Sing 22 compound 22:compound _
|
||||
22 system system NOUN NN Number=Sing 4 obl 4:obl SpaceAfter=No
|
||||
23 ? ? PUNCT . _ 4 punct 4:punct _
|
||||
|
||||
# sent_id = weblog-blogspot.com_zentelligence_20040423000200_ENG_20040423_000200-0003
|
||||
# text = [via Microsoft Watch from Mary Jo Foley ]
|
||||
1 [ [ PUNCT -LRB- _ 4 punct 4:punct SpaceAfter=No
|
||||
2 via via ADP IN _ 4 case 4:case _
|
||||
3 Microsoft Microsoft PROPN NNP Number=Sing 4 compound 4:compound _
|
||||
4 Watch Watch PROPN NNP Number=Sing 0 root 0:root _
|
||||
5 from from ADP IN _ 6 case 6:case _
|
||||
6 Mary Mary PROPN NNP Number=Sing 4 nmod 4:nmod _
|
||||
7 Jo Jo PROPN NNP Number=Sing 6 flat 6:flat _
|
||||
8 Foley Foley PROPN NNP Number=Sing 6 flat 6:flat _
|
||||
9 ] ] PUNCT -RRB- _ 4 punct 4:punct _
|
||||
|
||||
# newdoc id = weblog-blogspot.com_marketview_20050511222700_ENG_20050511_222700
|
||||
# sent_id = weblog-blogspot.com_marketview_20050511222700_ENG_20050511_222700-0001
|
||||
# text = (And, by the way, is anybody else just a little nostalgic for the days when that was a good thing?)
|
||||
1 ( ( PUNCT -LRB- _ 14 punct 14:punct SpaceAfter=No
|
||||
2 And and CCONJ CC _ 14 cc 14:cc SpaceAfter=No
|
||||
3 , , PUNCT , _ 14 punct 14:punct _
|
||||
4 by by ADP IN _ 6 case 6:case _
|
||||
5 the the DET DT Definite=Def|PronType=Art 6 det 6:det _
|
||||
6 way way NOUN NN Number=Sing 14 obl 14:obl SpaceAfter=No
|
||||
7 , , PUNCT , _ 14 punct 14:punct _
|
||||
8 is be AUX VBZ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 14 cop 14:cop _
|
||||
9 anybody anybody PRON NN Number=Sing 14 nsubj 14:nsubj _
|
||||
10 else else ADJ JJ Degree=Pos 9 amod 9:amod _
|
||||
11 just just ADV RB _ 13 advmod 13:advmod _
|
||||
12 a a DET DT Definite=Ind|PronType=Art 13 det 13:det _
|
||||
13 little little ADJ JJ Degree=Pos 14 obl:npmod 14:obl:npmod _
|
||||
14 nostalgic nostalgic NOUN NN Number=Sing 0 root 0:root _
|
||||
15 for for ADP IN _ 17 case 17:case _
|
||||
16 the the DET DT Definite=Def|PronType=Art 17 det 17:det _
|
||||
17 days day NOUN NNS Number=Plur 14 nmod 14:nmod _
|
||||
18 when when ADV WRB PronType=Rel 23 advmod 23:advmod _
|
||||
19 that that PRON DT Number=Sing|PronType=Dem 23 nsubj 23:nsubj _
|
||||
20 was be AUX VBD Mood=Ind|Number=Sing|Person=3|Tense=Past|VerbForm=Fin 23 cop 23:cop _
|
||||
21 a a DET DT Definite=Ind|PronType=Art 23 det 23:det _
|
||||
22 good good ADJ JJ Degree=Pos 23 amod 23:amod _
|
||||
23 thing thing NOUN NN Number=Sing 17 acl:relcl 17:acl:relcl SpaceAfter=No
|
||||
24 ? ? PUNCT . _ 14 punct 14:punct SpaceAfter=No
|
||||
25 ) ) PUNCT -RRB- _ 14 punct 14:punct _
|
||||
|
||||
# sent_id = weblog-blogspot.com_marketview_20050511222700_ENG_20050511_222700-0002
|
||||
# text = This BuzzMachine post argues that Google's rush toward ubiquity might backfire -- which we've all heard before, but it's particularly well-put in this post.
|
||||
1 This this DET DT Number=Sing|PronType=Dem 3 det 3:det _
|
||||
2 BuzzMachine BuzzMachine PROPN NNP Number=Sing 3 compound 3:compound _
|
||||
3 post post NOUN NN Number=Sing 4 nsubj 4:nsubj _
|
||||
4 argues argue VERB VBZ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 0 root 0:root _
|
||||
5 that that SCONJ IN _ 12 mark 12:mark _
|
||||
6 Google Google PROPN NNP Number=Sing 8 nmod:poss 8:nmod:poss SpaceAfter=No
|
||||
7 's 's PART POS _ 6 case 6:case _
|
||||
8 rush rush NOUN NN Number=Sing 12 nsubj 12:nsubj _
|
||||
9 toward toward ADP IN _ 10 case 10:case _
|
||||
10 ubiquity ubiquity NOUN NN Number=Sing 8 nmod 8:nmod _
|
||||
11 might might AUX MD VerbForm=Fin 12 aux 12:aux _
|
||||
12 backfire backfire VERB VB VerbForm=Inf 4 ccomp 4:ccomp _
|
||||
13 -- -- PUNCT , _ 12 punct 12:punct _
|
||||
14 which which PRON WDT PronType=Rel 18 obj 18:obj _
|
||||
15 we we PRON PRP Case=Nom|Number=Plur|Person=1|PronType=Prs 18 nsubj 18:nsubj SpaceAfter=No
|
||||
16 've have AUX VBP Mood=Ind|Tense=Pres|VerbForm=Fin 18 aux 18:aux _
|
||||
17 all all ADV RB _ 18 advmod 18:advmod _
|
||||
18 heard hear VERB VBN Tense=Past|VerbForm=Part 12 acl:relcl 12:acl:relcl _
|
||||
19 before before ADV RB _ 18 advmod 18:advmod SpaceAfter=No
|
||||
20 , , PUNCT , _ 27 punct 27:punct _
|
||||
21 but but CCONJ CC _ 27 cc 27:cc _
|
||||
22 it it PRON PRP Case=Nom|Gender=Neut|Number=Sing|Person=3|PronType=Prs 27 nsubj:pass 27:nsubj:pass SpaceAfter=No
|
||||
23 's be VERB VBZ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 27 aux:pass 27:aux:pass _
|
||||
24 particularly particularly ADV RB _ 27 advmod 27:advmod _
|
||||
25 well well ADV RB Degree=Pos 27 advmod 27:advmod SpaceAfter=No
|
||||
26 - - PUNCT HYPH _ 27 punct 27:punct SpaceAfter=No
|
||||
27 put put VERB VBN Tense=Past|VerbForm=Part 4 conj 4:conj _
|
||||
28 in in ADP IN _ 30 case 30:case _
|
||||
29 this this DET DT Number=Sing|PronType=Dem 30 det 30:det _
|
||||
30 post post NOUN NN Number=Sing 27 obl 27:obl SpaceAfter=No
|
||||
31 . . PUNCT . _ 4 punct 4:punct _
|
||||
|
||||
# sent_id = weblog-blogspot.com_marketview_20050511222700_ENG_20050511_222700-0003
|
||||
# text = Google is a nice search engine.
|
||||
1 Google Google PROPN NNP Number=Sing 6 nsubj 6:nsubj _
|
||||
2 is be AUX VBZ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 6 cop 6:cop _
|
||||
3 a a DET DT Definite=Ind|PronType=Art 6 det 6:det _
|
||||
4 nice nice ADJ JJ Degree=Pos 6 amod 6:amod _
|
||||
5 search search NOUN NN Number=Sing 6 compound 6:compound _
|
||||
6 engine engine NOUN NN Number=Sing 0 root 0:root SpaceAfter=No
|
||||
7 . . PUNCT . _ 6 punct 6:punct _
|
||||
|
||||
121
samples/CoNLL-U/ug-ud-test-abridged.conllu
Normal file
121
samples/CoNLL-U/ug-ud-test-abridged.conllu
Normal file
@@ -0,0 +1,121 @@
|
||||
# sent_id = s1
|
||||
# text = ئاسماننى كۆپكۈك، دەريا، كۆل سۇلىرىنى سۈپسۈزۈك تۇرۇشقا، دەل - دەرەخلەرنى بۈك - باراقسان بولۇشقا، ھايۋانلارنى ئەركىن ئازادە ياشاشقا ئىگە قىلىش... بىزنىڭ ئورتاق ئارزۇيىمىز.
|
||||
1 ئاسماننى _ NOUN N _ 30 csubj _ Translit=asmanni
|
||||
2 كۆپكۈك _ VERB V _ 1 orphan _ SpaceAfter=No|Translit=köpkük
|
||||
3 ، _ PUNCT Y _ 2 punct _ Translit=,
|
||||
4 دەريا _ NOUN N _ 7 nmod:poss _ SpaceAfter=No|Translit=derya
|
||||
5 ، _ PUNCT Y _ 4 punct _ Translit=,
|
||||
6 كۆل _ NOUN N _ 4 conj _ Translit=köl
|
||||
7 سۇلىرىنى _ NOUN N _ 9 obj _ Translit=sulirini
|
||||
8 سۈپسۈزۈك _ ADJ A _ 9 advmod _ Translit=süpsüzük
|
||||
9 تۇرۇشقا _ VERB V _ 1 conj _ SpaceAfter=No|Translit=turushqa
|
||||
10 ، _ PUNCT Y _ 1 punct _ Translit=,
|
||||
11 دەل _ ADV D _ 13 compound:redup _ Translit=del
|
||||
12 - _ PUNCT Y _ 11 punct _ Translit=-
|
||||
13 دەرەخلەرنى _ NOUN N _ 17 obj _ Translit=derexlerni
|
||||
14 بۈك _ ADJ A _ 16 compound _ Translit=bük
|
||||
15 - _ PUNCT Y _ 14 punct _ Translit=-
|
||||
16 باراقسان _ ADJ A _ 17 advmod _ Translit=baraqsan
|
||||
17 بولۇشقا _ VERB V _ 9 orphan _ SpaceAfter=No|Translit=bolushqa
|
||||
18 ، _ PUNCT Y _ 17 punct _ Translit=,
|
||||
19 ھايۋانلارنى _ NOUN N _ 24 obj _ Translit=haywanlarni
|
||||
20 ئەركىن _ ADJ A _ 21 compound:redup _ Translit=erkin
|
||||
21 ئازادە _ ADJ A _ 22 advmod _ Translit=azade
|
||||
22 ياشاشقا _ NOUN N _ 24 advcl _ Translit=yashashqa
|
||||
23 ئىگە _ NOUN N _ 24 compound _ Translit=ige
|
||||
24 قىلىش _ VERB V _ 1 conj _ SpaceAfter=No|Translit=qilish
|
||||
25 . _ PUNCT Y _ 1 punct _ SpaceAfter=No|Translit=.
|
||||
26 . _ PUNCT Y _ 1 punct _ SpaceAfter=No|Translit=.
|
||||
27 . _ PUNCT Y _ 1 punct _ Translit=.
|
||||
28 بىزنىڭ _ PRON P _ 30 nmod:poss _ Translit=bizning
|
||||
29 ئورتاق _ ADJ A _ 30 amod _ Translit=ortaq
|
||||
30 ئارزۇيىمىز _ NOUN N _ 0 root _ SpaceAfter=No|Translit=arzuyimiz
|
||||
31 . _ PUNCT Y _ 30 punct _ Translit=.
|
||||
|
||||
# sent_id = s2
|
||||
# text = بۇ بۆلەكتىكى تېكىستلەرنى ئوقۇش ئارقىلىق، كىشىلەرنىڭ ھايۋانلار ۋە ئۆسۈملۈكلەرگە قانداق مۇئامىلە قىلغانلىقى، ئاقىۋىتىنىڭ قانداق بولغانلىقىنى كۆرۈپ باقايلى،
|
||||
1 بۇ _ PRON P _ 2 det _ Translit=bu
|
||||
2 بۆلەكتىكى _ NOUN N _ 3 nmod _ Translit=bölektiki
|
||||
3 تېكىستلەرنى _ NOUN N _ 4 obj _ Translit=tëkistlerni
|
||||
4 ئوقۇش _ VERB V _ 18 advcl _ Translit=oqush
|
||||
5 ئارقىلىق _ ADP R _ 4 case _ SpaceAfter=No|Translit=arqiliq
|
||||
6 ، _ PUNCT Y _ 5 punct _ Translit=,
|
||||
7 كىشىلەرنىڭ _ NOUN N _ 13 nsubj _ Translit=kishilerning
|
||||
8 ھايۋانلار _ NOUN N _ 13 obl _ Translit=haywanlar
|
||||
9 ۋە _ CCONJ C _ 10 cc _ Translit=we
|
||||
10 ئۆسۈملۈكلەرگە _ NOUN N _ 8 conj _ Translit=ösümlüklerge
|
||||
11 قانداق _ PRON P _ 13 advmod _ Translit=qandaq
|
||||
12 مۇئامىلە _ NOUN N _ 13 compound _ Translit=muamile
|
||||
13 قىلغانلىقى _ VERB V _ 18 conj _ SpaceAfter=No|Translit=qilghanliqi
|
||||
14 ، _ PUNCT Y _ 13 punct _ Translit=,
|
||||
15 ئاقىۋىتىنىڭ _ NOUN N _ 17 nsubj _ Translit=aqiwitining
|
||||
16 قانداق _ PRON P _ 17 advmod _ Translit=qandaq
|
||||
17 بولغانلىقىنى _ VERB V _ 18 obj _ Translit=bolghanliqini
|
||||
18 كۆرۈپ _ VERB V _ 0 root _ Translit=körüp
|
||||
19 باقايلى _ VERB V _ 18 aux _ SpaceAfter=No|Translit=baqayli
|
||||
20 ، _ PUNCT Y _ 19 punct _ Translit=,
|
||||
|
||||
# sent_id = s3
|
||||
# text = يەنە ئەتراپىمىزدىكى مۇھىتنى ياخشى كۆزىتىپ، مۇھىتنى قوغداش ئۈچۈن نېمىلەرنى قىلالايدىغانلىقىمىز توغرۇلۇق ئويلىنىپ باقايلى.
|
||||
1 يەنە _ ADV D _ 13 cc _ Translit=yene
|
||||
2 ئەتراپىمىزدىكى _ NOUN N _ 3 amod _ Translit=etrapimizdiki
|
||||
3 مۇھىتنى _ NOUN N _ 5 obj _ Translit=muhitni
|
||||
4 ياخشى _ ADJ A _ 5 advmod _ Translit=yaxshi
|
||||
5 كۆزىتىپ _ VERB V _ 13 advcl _ SpaceAfter=No|Translit=közitip
|
||||
6 ، _ PUNCT Y _ 5 punct _ Translit=,
|
||||
7 مۇھىتنى _ NOUN N _ 8 obj _ Translit=muhitni
|
||||
8 قوغداش _ VERB V _ 11 advcl _ Translit=qoghdash
|
||||
9 ئۈچۈن _ CCONJ C _ 8 case _ Translit=üchün
|
||||
10 نېمىلەرنى _ PRON P _ 11 obj _ Translit=nëmilerni
|
||||
11 قىلالايدىغانلىقىمىز _ VERB V _ 13 obj _ Translit=qilalaydighanliqimiz
|
||||
12 توغرۇلۇق _ ADP R _ 11 case _ Translit=toghruluq
|
||||
13 ئويلىنىپ _ VERB V _ 0 root _ Translit=oylinip
|
||||
14 باقايلى _ VERB V _ 13 aux _ SpaceAfter=No|Translit=baqayli
|
||||
15 . _ PUNCT Y _ 14 punct _ Translit=.
|
||||
|
||||
# sent_id = s4
|
||||
# text = بىر يىلى باھار كۈنلىرىنىڭ بىرىدە، شىۋېتسارىيىنىڭ بىر ۋوگزالىدا ھاۋا تەڭشىگۈچ ئورنىتىلغان چىرايلىق، ئازادە بىر پويىز قوزغىلىش ئالدىدا تۇراتتى.
|
||||
1 بىر _ NUM M _ 2 nummod _ Translit=bir
|
||||
2 يىلى _ NOUN N _ 20 nmod:tmod _ Translit=yili
|
||||
3 باھار _ NOUN N _ 4 nmod:poss _ Translit=bahar
|
||||
4 كۈنلىرىنىڭ _ NOUN N _ 5 nmod:part _ Translit=künlirining
|
||||
5 بىرىدە _ NUM M _ 20 nmod:tmod _ SpaceAfter=No|Translit=biride
|
||||
6 ، _ PUNCT Y _ 5 punct _ Translit=,
|
||||
7 شىۋېتسارىيىنىڭ _ NOUN N _ 9 nmod:poss _ Translit=shiwëtsariyining
|
||||
8 بىر _ NUM M _ 9 det _ Translit=bir
|
||||
9 ۋوگزالىدا _ NOUN N _ 20 obl _ Translit=wogzalida
|
||||
10 ھاۋا _ NOUN N _ 11 compound _ Translit=hawa
|
||||
11 تەڭشىگۈچ _ NOUN N _ 12 nsubj _ Translit=tengshigüch
|
||||
12 ئورنىتىلغان _ NOUN N _ 17 amod _ Translit=ornitilghan
|
||||
13 چىرايلىق _ ADJ A _ 17 amod _ SpaceAfter=No|Translit=chirayliq
|
||||
14 ، _ PUNCT Y _ 13 punct _ Translit=,
|
||||
15 ئازادە _ ADJ A _ 13 conj _ Translit=azade
|
||||
16 بىر _ NUM M _ 17 det _ Translit=bir
|
||||
17 پويىز _ NOUN N _ 20 nsubj _ Translit=poyiz
|
||||
18 قوزغىلىش _ VERB V _ 19 nmod:poss _ Translit=qozghilish
|
||||
19 ئالدىدا _ NOUN N _ 20 obl _ Translit=aldida
|
||||
20 تۇراتتى _ VERB V _ 0 root _ SpaceAfter=No|Translit=turatti
|
||||
21 . _ PUNCT Y _ 20 punct _ Translit=.
|
||||
|
||||
# sent_id = s5
|
||||
# text = ۋوگزال سۇپىسى ئۇزاتقۇچىلار بىلەن تولۇپ كەتكەنىدى.
|
||||
1 ۋوگزال _ NOUN N _ 2 nmod:poss _ Translit=wogzal
|
||||
2 سۇپىسى _ NOUN N _ 5 nsubj _ Translit=supisi
|
||||
3 ئۇزاتقۇچىلار _ NOUN N _ 5 obl _ Translit=uzatquchilar
|
||||
4 بىلەن _ ADP R _ 3 case _ Translit=bilen
|
||||
5 تولۇپ _ VERB V _ 0 root _ Translit=tolup
|
||||
6 كەتكەنىدى _ VERB V _ 5 aux _ SpaceAfter=No|Translit=ketkenidi
|
||||
7 . _ PUNCT Y _ 6 punct _ Translit=.
|
||||
|
||||
# sent_id = s6
|
||||
# text = ئۇلارنىڭ ئۇزاتماقچى بولغىنى ئۆزگىچە مىھمان - قارلىغاچلار ئىدى.
|
||||
1 ئۇلارنىڭ _ PRON P _ 2 nsubj _ Translit=ularning
|
||||
2 ئۇزاتماقچى _ NOUN N _ 5 acl _ Translit=uzatmaqchi
|
||||
3 بولغىنى _ AUX V _ 2 cop _ Translit=bolghini
|
||||
4 ئۆزگىچە _ ADJ A _ 5 amod _ Translit=özgiche
|
||||
5 مىھمان _ NOUN N _ 7 appos _ Translit=mihman
|
||||
6 - _ PUNCT Y _ 5 punct _ Translit=-
|
||||
7 قارلىغاچلار _ NOUN N _ 0 root _ Translit=qarlighachlar
|
||||
8 ئىدى _ AUX V _ 7 cop _ SpaceAfter=No|Translit=idi
|
||||
9 . _ PUNCT Y _ 8 punct _ Translit=.
|
||||
|
||||
36
samples/Common Workflow Language/trunk-peak-score.cwl
Normal file
36
samples/Common Workflow Language/trunk-peak-score.cwl
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env cwl-runner
|
||||
# Originally from
|
||||
# https://github.com/Duke-GCB/GGR-cwl/blob/54e897263a702ff1074c8ac814b4bf7205d140dd/utils/trunk-peak-score.cwl
|
||||
# Released under the MIT License:
|
||||
# https://github.com/Duke-GCB/GGR-cwl/blob/54e897263a702ff1074c8ac814b4bf7205d140dd/LICENSE
|
||||
# Converted to CWL v1.0 syntax using
|
||||
# https://github.com/common-workflow-language/cwl-upgrader
|
||||
# and polished by Michael R. Crusoe <mrc@commonwl.org>
|
||||
# All modifications also released under the MIT License
|
||||
cwlVersion: v1.0
|
||||
class: CommandLineTool
|
||||
doc: Trunk scores in ENCODE bed6+4 files
|
||||
|
||||
hints:
|
||||
DockerRequirement:
|
||||
dockerPull: dukegcb/workflow-utils
|
||||
|
||||
inputs:
|
||||
peaks:
|
||||
type: File
|
||||
sep:
|
||||
type: string
|
||||
default: \t
|
||||
|
||||
outputs:
|
||||
trunked_scores_peaks:
|
||||
type: stdout
|
||||
|
||||
baseCommand: awk
|
||||
|
||||
arguments:
|
||||
- -F $(inputs.sep)
|
||||
- BEGIN{OFS=FS}$5>1000{$5=1000}{print}
|
||||
- $(inputs.peaks.path)
|
||||
|
||||
stdout: $(inputs.peaks.nameroot).trunked_scores$(inputs.peaks.nameext)
|
||||
File diff suppressed because it is too large
Load Diff
12
samples/DataWeave/customInterpolator.dwl
Normal file
12
samples/DataWeave/customInterpolator.dwl
Normal file
@@ -0,0 +1,12 @@
|
||||
fun SQL(literals, parts) = ''
|
||||
---
|
||||
[
|
||||
SQL `SELECT * FROM table WHERE id = $(1) AND name = $('a')`,
|
||||
SQL `$('p')`,
|
||||
SQL `$('a')$('b')`,
|
||||
SQL `$('a')---$('b')`,
|
||||
SQL `---$('a')---$('b')---`,
|
||||
SQL `$('p')bbb`,
|
||||
SQL `aaa$('p')`,
|
||||
SQL `aaa$('p')bbb`
|
||||
]
|
||||
9
samples/DataWeave/directives.dwl
Normal file
9
samples/DataWeave/directives.dwl
Normal file
@@ -0,0 +1,9 @@
|
||||
%dw 2.0
|
||||
var number = 1234
|
||||
fun foo(func,name="Mariano") = func(name)
|
||||
input payload application/test arg="value"
|
||||
output application/json
|
||||
---
|
||||
{
|
||||
foo: "bar"
|
||||
}
|
||||
27
samples/DataWeave/functions.dwl
Normal file
27
samples/DataWeave/functions.dwl
Normal file
@@ -0,0 +1,27 @@
|
||||
%dw 2.0
|
||||
var x=(param1, param2) -> { "$param1": param2 }
|
||||
var y=(param1, param2 = "c") -> { "$param1": param2 }
|
||||
var toUser = (user) -> { name: user.name, lastName: user.lastName }
|
||||
fun z(param1, param2) = { "$param1": param2 }
|
||||
var a = { name: "Mariano" , toUser: ((param1, param2) -> { "$param1": param2 }) }
|
||||
var applyFirst = (array, func) -> (func(array[0]) ++ array[1 to -1])
|
||||
|
||||
var nested = (array, func) -> (a) -> (b) -> (c) -> array map func(a ++ b ++ c)
|
||||
|
||||
|
||||
fun f2(a1, a2) = ""
|
||||
fun f3(a1:String, a2:Number):String = a1
|
||||
fun f4(a1:String, a2:(a:Number) -> Number):String = a1
|
||||
---
|
||||
result: {
|
||||
a: x("a", "b"),
|
||||
b: y("a"),
|
||||
c: y("a", "b"),
|
||||
users: { (in1 map ((user) -> { user: (toUser(user) ++ user) })) },
|
||||
d: z("a", "b"),
|
||||
e: a.toUser("name","Mariano"),
|
||||
f: a.toUser("name","Mariano").name,
|
||||
f: applyFirst("mariano", (s) -> upper(s) ),
|
||||
g: [] map (s) -> upper(s),
|
||||
h: 1 f2 2
|
||||
}
|
||||
36
samples/DataWeave/literals.dwl
Normal file
36
samples/DataWeave/literals.dwl
Normal file
@@ -0,0 +1,36 @@
|
||||
%dw 2.0
|
||||
---
|
||||
{
|
||||
"boolean":{
|
||||
"true" : true,
|
||||
"false": false
|
||||
},
|
||||
"Number": {
|
||||
"int": 123,
|
||||
"decimal": 123.23
|
||||
},
|
||||
"string": {
|
||||
"singleQuote" : 'A String',
|
||||
"doubleQuote" : "A String"
|
||||
},
|
||||
"regex": /foo/,
|
||||
"date": {
|
||||
a: |2003-10-01|,
|
||||
b: |2005-045|,
|
||||
c: |2003-W14-3|,
|
||||
d: |23:57:59|,
|
||||
e: |23:57:30.700|,
|
||||
f: |23:50:30Z|,
|
||||
g: |+13:00|,
|
||||
h: |Z|,
|
||||
i: |-02:00|,
|
||||
j: |2005-06-02T15:10:16|,
|
||||
k: |2005-06-02T15:10:16Z|,
|
||||
l: |2005-06-02T15:10:16+03:00|,
|
||||
m: |P12Y7M11D|,
|
||||
n: |P12Y5M|,
|
||||
o: |P45DT9H20M8S|,
|
||||
p: |PT9H20M8S|
|
||||
}
|
||||
}
|
||||
|
||||
33
samples/DataWeave/match.dwl
Normal file
33
samples/DataWeave/match.dwl
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
// Regex Pattern Matching (Can be named or unnamed)
|
||||
a: in0.phones map $ match {
|
||||
case matches /\+(\d+)\s\((\d+)\)\s(\d+\-\d+)/ -> { country: $[0], area: $[1], number: $[2] }
|
||||
case matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: $[1], number: $[2] }
|
||||
case phone matches /\((\d+)\)\s(\d+\-\d+)/ -> { area: phone[1], number: phone[2] }
|
||||
},
|
||||
// Type Pattern Matching (Can be named or unnamed)
|
||||
b: in0.object match {
|
||||
case is Object -> { object: $ }
|
||||
case is Number -> { number: $ }
|
||||
// This is how you name variables if needed
|
||||
case y is Boolean -> { boolean: y }
|
||||
},
|
||||
// Literal Pattern Matching (Can be named or unnamed)
|
||||
c: in0.value match {
|
||||
case "Emiliano" -> { string: $ }
|
||||
case 123 -> { number: $ }
|
||||
// This is how you name variables if needed
|
||||
case value: "Mariano" -> { name: value }
|
||||
},
|
||||
// Boolean Expression Pattern Matching (Always named)
|
||||
d: in0.value match {
|
||||
case x if x > 30 -> { biggerThan30: x }
|
||||
case x if x == 9 -> { nine: x }
|
||||
},
|
||||
// Default matches
|
||||
e: in0.value match {
|
||||
case "Emiliano" -> "string"
|
||||
case 3.14 -> number
|
||||
else -> "1234"
|
||||
}
|
||||
}
|
||||
20
samples/Easybuild/bzip2-1.0.6-GCC-4.9.2.eb
Normal file
20
samples/Easybuild/bzip2-1.0.6-GCC-4.9.2.eb
Normal file
@@ -0,0 +1,20 @@
|
||||
# not really (there's an EB_bzip2 easyblock), but fine for use in unit tests
|
||||
easyblock = 'ConfigureMake'
|
||||
|
||||
name = 'bzip2'
|
||||
version = '1.0.6'
|
||||
|
||||
homepage = 'http://www.bzip.org/'
|
||||
description = """bzip2 is a freely available, patent free, high-quality data compressor. It typically
|
||||
compresses files to within 10% to 15% of the best available techniques (the PPM family of statistical
|
||||
compressors), whilst being around twice as fast at compression and six times faster at decompression."""
|
||||
|
||||
toolchain = {'name': 'GCC', 'version': '4.9.2'}
|
||||
toolchainopts = {'pic': True}
|
||||
|
||||
sources = [SOURCE_TAR_GZ]
|
||||
source_urls = ['http://www.bzip.org/%(version)s']
|
||||
|
||||
builddependencies = [('gzip', '1.6')]
|
||||
|
||||
moduleclass = 'tools'
|
||||
2061
samples/Edje Data Collection/mild.edc
Normal file
2061
samples/Edje Data Collection/mild.edc
Normal file
File diff suppressed because it is too large
Load Diff
97
samples/Fantom/sample1.fan
Normal file
97
samples/Fantom/sample1.fan
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Author: Robert Koeninger
|
||||
* License: WTFPL (http://www.wtfpl.net/)
|
||||
*/
|
||||
|
||||
class Spelling {
|
||||
|
||||
** Load sample text and offer corrections for input
|
||||
static Void main(Str[] args) {
|
||||
text := File.os("big.txt").readAllStr
|
||||
counts := Str:Int[:] { def = 0 }
|
||||
text.split.each |word| { counts[word] += 1 }
|
||||
args.each |arg| { echo(correction(counts, arg)) }
|
||||
}
|
||||
|
||||
static const Range letters := Range.makeInclusive(97, 122)
|
||||
|
||||
** Most probable spelling correction for `word`.
|
||||
static Str correction(Str:Int counts, Str word) {
|
||||
candidates(counts, word).max |x, y| { counts[x] <=> counts[y] }
|
||||
}
|
||||
|
||||
** Generate possible spelling corrections for `word`.
|
||||
static Str[] candidates(Str:Int counts, Str word) {
|
||||
result := known(counts, Str[word])
|
||||
if (result.size > 0) return result
|
||||
|
||||
result = known(counts, edits1(word))
|
||||
if (result.size > 0) return result
|
||||
|
||||
result = known(counts, edits2(word))
|
||||
if (result.size > 0) return result
|
||||
|
||||
return Str[word]
|
||||
}
|
||||
|
||||
** The subset of `words` that appear in the map of `counts`.
|
||||
static Str[] known(Str:Int counts, Str[] words) {
|
||||
words.findAll |word, i| { counts[word] > 0 }.unique
|
||||
}
|
||||
|
||||
** All edits that are one edit away from `word`.
|
||||
static Str[] edits1(Str word) {
|
||||
edits := Str[,]
|
||||
|
||||
for (i := 0; i < word.size; ++i) {
|
||||
edits.add(delete(word, i))
|
||||
|
||||
if (i < word.size - 2) {
|
||||
edits.add(transpose(word, i))
|
||||
}
|
||||
|
||||
edits.addAll(replace(word, i))
|
||||
edits.addAll(insert(word, i))
|
||||
}
|
||||
|
||||
edits = edits.unique
|
||||
edits.remove(word)
|
||||
return edits
|
||||
}
|
||||
|
||||
** Word with `i`th letter removed.
|
||||
static Str delete(Str word, Int i) {
|
||||
left := word.getRange(Range.makeExclusive(0, i))
|
||||
right := word.getRange(Range.makeExclusive(i + 1, word.size))
|
||||
return left + right
|
||||
}
|
||||
|
||||
** Word with `i`th and `i+1`st letter swapped.
|
||||
static Str transpose(Str word, Int i) {
|
||||
left := word.getRange(Range.makeExclusive(0, i))
|
||||
right := word.getRange(Range.makeExclusive(i, word.size))
|
||||
first := right.get(0).toChar
|
||||
second := right.get(1).toChar
|
||||
rest := right.getRange(Range.makeExclusive(2, right.size))
|
||||
return left + second + first + rest
|
||||
}
|
||||
|
||||
** Word with `i`th letter replaced with every other letter.
|
||||
static Str[] replace(Str word, Int i) {
|
||||
left := word.getRange(Range.makeExclusive(0, i))
|
||||
right := word.getRange(Range.makeExclusive(i + 1, word.size))
|
||||
return letters.map |ch| { left + ch.toChar + right }
|
||||
}
|
||||
|
||||
** Word with each letter inserted at `i`.
|
||||
static Str[] insert(Str word, Int i) {
|
||||
left := word.getRange(Range.makeExclusive(0, i))
|
||||
right := word.getRange(Range.makeExclusive(i, word.size))
|
||||
return letters.map |ch| { left + ch.toChar + right }
|
||||
}
|
||||
|
||||
** All edits that are two edits away from `word`.
|
||||
static Str[] edits2(Str word) {
|
||||
(Str[])(edits1(word).map |w| { edits1(w) }.flatten)
|
||||
}
|
||||
}
|
||||
50
samples/Fantom/sample2.fan
Normal file
50
samples/Fantom/sample2.fan
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Author: Robert Koeninger
|
||||
* License: WTFPL (http://www.wtfpl.net/)
|
||||
*/
|
||||
|
||||
mixin Expr
|
||||
{
|
||||
abstract Obj? eval()
|
||||
}
|
||||
|
||||
class Constant : Expr
|
||||
{
|
||||
Obj? value
|
||||
|
||||
new make(Obj? value) { this.value = value }
|
||||
override Obj? eval() { value }
|
||||
}
|
||||
|
||||
enum class Op
|
||||
{
|
||||
plus,
|
||||
minus
|
||||
}
|
||||
|
||||
class Infix : Expr
|
||||
{
|
||||
Op op
|
||||
Expr left
|
||||
Expr right
|
||||
|
||||
new make(Op op, Expr left, Expr right)
|
||||
{
|
||||
this.op = op
|
||||
this.left = left
|
||||
this.right = right
|
||||
}
|
||||
|
||||
override Obj? eval()
|
||||
{
|
||||
switch (op)
|
||||
{
|
||||
case Op.plus:
|
||||
return (Int)left.eval() + (Int)right.eval()
|
||||
case Op.minus:
|
||||
return (Int)left.eval() - (Int)right.eval()
|
||||
default:
|
||||
throw Err("undefined Op")
|
||||
}
|
||||
}
|
||||
}
|
||||
98
samples/GLSL/pntriangles.tesc
Normal file
98
samples/GLSL/pntriangles.tesc
Normal file
@@ -0,0 +1,98 @@
|
||||
/**
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Sascha Willems
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#version 450
|
||||
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#extension GL_ARB_shading_language_420pack : enable
|
||||
|
||||
// PN patch data
|
||||
struct PnPatch
|
||||
{
|
||||
float b210;
|
||||
float b120;
|
||||
float b021;
|
||||
float b012;
|
||||
float b102;
|
||||
float b201;
|
||||
float b111;
|
||||
float n110;
|
||||
float n011;
|
||||
float n101;
|
||||
};
|
||||
|
||||
// tessellation levels
|
||||
layout (binding = 0) uniform UBO
|
||||
{
|
||||
float tessLevel;
|
||||
} ubo;
|
||||
|
||||
layout(vertices=3) out;
|
||||
|
||||
layout(location = 0) in vec3 inNormal[];
|
||||
layout(location = 1) in vec2 inUV[];
|
||||
|
||||
layout(location = 0) out vec3 outNormal[3];
|
||||
layout(location = 3) out vec2 outUV[3];
|
||||
layout(location = 6) out PnPatch outPatch[3];
|
||||
|
||||
float wij(int i, int j)
|
||||
{
|
||||
return dot(gl_in[j].gl_Position.xyz - gl_in[i].gl_Position.xyz, inNormal[i]);
|
||||
}
|
||||
|
||||
float vij(int i, int j)
|
||||
{
|
||||
vec3 Pj_minus_Pi = gl_in[j].gl_Position.xyz
|
||||
- gl_in[i].gl_Position.xyz;
|
||||
vec3 Ni_plus_Nj = inNormal[i]+inNormal[j];
|
||||
return 2.0*dot(Pj_minus_Pi, Ni_plus_Nj)/dot(Pj_minus_Pi, Pj_minus_Pi);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
// get data
|
||||
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
|
||||
outNormal[gl_InvocationID] = inNormal[gl_InvocationID];
|
||||
outUV[gl_InvocationID] = inUV[gl_InvocationID];
|
||||
|
||||
// set base
|
||||
float P0 = gl_in[0].gl_Position[gl_InvocationID];
|
||||
float P1 = gl_in[1].gl_Position[gl_InvocationID];
|
||||
float P2 = gl_in[2].gl_Position[gl_InvocationID];
|
||||
float N0 = inNormal[0][gl_InvocationID];
|
||||
float N1 = inNormal[1][gl_InvocationID];
|
||||
float N2 = inNormal[2][gl_InvocationID];
|
||||
|
||||
// compute control points
|
||||
outPatch[gl_InvocationID].b210 = (2.0*P0 + P1 - wij(0,1)*N0)/3.0;
|
||||
outPatch[gl_InvocationID].b120 = (2.0*P1 + P0 - wij(1,0)*N1)/3.0;
|
||||
outPatch[gl_InvocationID].b021 = (2.0*P1 + P2 - wij(1,2)*N1)/3.0;
|
||||
outPatch[gl_InvocationID].b012 = (2.0*P2 + P1 - wij(2,1)*N2)/3.0;
|
||||
outPatch[gl_InvocationID].b102 = (2.0*P2 + P0 - wij(2,0)*N2)/3.0;
|
||||
outPatch[gl_InvocationID].b201 = (2.0*P0 + P2 - wij(0,2)*N0)/3.0;
|
||||
float E = ( outPatch[gl_InvocationID].b210
|
||||
+ outPatch[gl_InvocationID].b120
|
||||
+ outPatch[gl_InvocationID].b021
|
||||
+ outPatch[gl_InvocationID].b012
|
||||
+ outPatch[gl_InvocationID].b102
|
||||
+ outPatch[gl_InvocationID].b201 ) / 6.0;
|
||||
float V = (P0 + P1 + P2)/3.0;
|
||||
outPatch[gl_InvocationID].b111 = E + (E - V)*0.5;
|
||||
outPatch[gl_InvocationID].n110 = N0+N1-vij(0,1)*(P1-P0);
|
||||
outPatch[gl_InvocationID].n011 = N1+N2-vij(1,2)*(P2-P1);
|
||||
outPatch[gl_InvocationID].n101 = N2+N0-vij(2,0)*(P0-P2);
|
||||
|
||||
// set tess levels
|
||||
gl_TessLevelOuter[gl_InvocationID] = ubo.tessLevel;
|
||||
gl_TessLevelInner[0] = ubo.tessLevel;
|
||||
}
|
||||
103
samples/GLSL/pntriangles.tese
Normal file
103
samples/GLSL/pntriangles.tese
Normal file
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Sascha Willems
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#version 450
|
||||
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
#extension GL_ARB_shading_language_420pack : enable
|
||||
|
||||
// PN patch data
|
||||
struct PnPatch
|
||||
{
|
||||
float b210;
|
||||
float b120;
|
||||
float b021;
|
||||
float b012;
|
||||
float b102;
|
||||
float b201;
|
||||
float b111;
|
||||
float n110;
|
||||
float n011;
|
||||
float n101;
|
||||
};
|
||||
|
||||
layout (binding = 1) uniform UBO
|
||||
{
|
||||
mat4 projection;
|
||||
mat4 model;
|
||||
float tessAlpha;
|
||||
} ubo;
|
||||
|
||||
layout(triangles, fractional_odd_spacing, ccw) in;
|
||||
|
||||
layout(location = 0) in vec3 iNormal[];
|
||||
layout(location = 3) in vec2 iTexCoord[];
|
||||
layout(location = 6) in PnPatch iPnPatch[];
|
||||
|
||||
layout(location = 0) out vec3 oNormal;
|
||||
layout(location = 1) out vec2 oTexCoord;
|
||||
|
||||
#define uvw gl_TessCoord
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 uvwSquared = uvw * uvw;
|
||||
vec3 uvwCubed = uvwSquared * uvw;
|
||||
|
||||
// extract control points
|
||||
vec3 b210 = vec3(iPnPatch[0].b210, iPnPatch[1].b210, iPnPatch[2].b210);
|
||||
vec3 b120 = vec3(iPnPatch[0].b120, iPnPatch[1].b120, iPnPatch[2].b120);
|
||||
vec3 b021 = vec3(iPnPatch[0].b021, iPnPatch[1].b021, iPnPatch[2].b021);
|
||||
vec3 b012 = vec3(iPnPatch[0].b012, iPnPatch[1].b012, iPnPatch[2].b012);
|
||||
vec3 b102 = vec3(iPnPatch[0].b102, iPnPatch[1].b102, iPnPatch[2].b102);
|
||||
vec3 b201 = vec3(iPnPatch[0].b201, iPnPatch[1].b201, iPnPatch[2].b201);
|
||||
vec3 b111 = vec3(iPnPatch[0].b111, iPnPatch[1].b111, iPnPatch[2].b111);
|
||||
|
||||
// extract control normals
|
||||
vec3 n110 = normalize(vec3(iPnPatch[0].n110, iPnPatch[1].n110, iPnPatch[2].n110));
|
||||
vec3 n011 = normalize(vec3(iPnPatch[0].n011, iPnPatch[1].n011, iPnPatch[2].n011));
|
||||
vec3 n101 = normalize(vec3(iPnPatch[0].n101, iPnPatch[1].n101, iPnPatch[2].n101));
|
||||
|
||||
// compute texcoords
|
||||
oTexCoord = gl_TessCoord[2]*iTexCoord[0] + gl_TessCoord[0]*iTexCoord[1] + gl_TessCoord[1]*iTexCoord[2];
|
||||
|
||||
// normal
|
||||
// Barycentric normal
|
||||
vec3 barNormal = gl_TessCoord[2]*iNormal[0] + gl_TessCoord[0]*iNormal[1] + gl_TessCoord[1]*iNormal[2];
|
||||
vec3 pnNormal = iNormal[0]*uvwSquared[2] + iNormal[1]*uvwSquared[0] + iNormal[2]*uvwSquared[1]
|
||||
+ n110*uvw[2]*uvw[0] + n011*uvw[0]*uvw[1]+ n101*uvw[2]*uvw[1];
|
||||
oNormal = ubo.tessAlpha*pnNormal + (1.0-ubo.tessAlpha) * barNormal;
|
||||
|
||||
// compute interpolated pos
|
||||
vec3 barPos = gl_TessCoord[2]*gl_in[0].gl_Position.xyz
|
||||
+ gl_TessCoord[0]*gl_in[1].gl_Position.xyz
|
||||
+ gl_TessCoord[1]*gl_in[2].gl_Position.xyz;
|
||||
|
||||
// save some computations
|
||||
uvwSquared *= 3.0;
|
||||
|
||||
// compute PN position
|
||||
vec3 pnPos = gl_in[0].gl_Position.xyz*uvwCubed[2]
|
||||
+ gl_in[1].gl_Position.xyz*uvwCubed[0]
|
||||
+ gl_in[2].gl_Position.xyz*uvwCubed[1]
|
||||
+ b210*uvwSquared[2]*uvw[0]
|
||||
+ b120*uvwSquared[0]*uvw[2]
|
||||
+ b201*uvwSquared[2]*uvw[1]
|
||||
+ b021*uvwSquared[0]*uvw[1]
|
||||
+ b102*uvwSquared[1]*uvw[2]
|
||||
+ b012*uvwSquared[1]*uvw[0]
|
||||
+ b111*6.0*uvw[0]*uvw[1]*uvw[2];
|
||||
|
||||
// final position and normal
|
||||
vec3 finalPos = (1.0-ubo.tessAlpha)*barPos + ubo.tessAlpha*pnPos;
|
||||
gl_Position = ubo.projection * ubo.model * vec4(finalPos,1.0);
|
||||
}
|
||||
313
samples/Gerber Image/FelinaePurr-B.Cu.gbl
Normal file
313
samples/Gerber Image/FelinaePurr-B.Cu.gbl
Normal file
@@ -0,0 +1,313 @@
|
||||
G04 #@! TF.FileFunction,Copper,L2,Bot,Signal*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (2016-07-14 BZR 6980)-product) date Sunday, 23 April 2017 'PMt' 23:49:01*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11C,0.175000*%
|
||||
%ADD12R,1.727200X2.032000*%
|
||||
%ADD13O,1.727200X2.032000*%
|
||||
%ADD14R,2.032000X1.727200*%
|
||||
%ADD15O,2.032000X1.727200*%
|
||||
%ADD16C,1.300000*%
|
||||
%ADD17C,2.800000*%
|
||||
%ADD18C,0.685800*%
|
||||
%ADD19C,0.800000*%
|
||||
%ADD20C,0.400000*%
|
||||
%ADD21C,0.800000*%
|
||||
%ADD22C,0.300000*%
|
||||
%ADD23C,0.500000*%
|
||||
%ADD24C,0.180000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X162816666Y-95670833D02*
|
||||
X162883333Y-95637500D01*
|
||||
X163016666Y-95637500D01*
|
||||
X163083333Y-95670833D01*
|
||||
X163150000Y-95737500D01*
|
||||
X163183333Y-95804166D01*
|
||||
X163183333Y-95937500D01*
|
||||
X163150000Y-96004166D01*
|
||||
X163083333Y-96070833D01*
|
||||
X163016666Y-96104166D01*
|
||||
X162883333Y-96104166D01*
|
||||
X162816666Y-96070833D01*
|
||||
X162950000Y-95404166D02*
|
||||
X163116666Y-95437500D01*
|
||||
X163283333Y-95537500D01*
|
||||
X163383333Y-95704166D01*
|
||||
X163416666Y-95870833D01*
|
||||
X157450000Y-95870833D01*
|
||||
X157483333Y-95837500D01*
|
||||
X157550000Y-95804166D01*
|
||||
X156816666Y-95504166D02*
|
||||
X156950000Y-95504166D01*
|
||||
X157016666Y-95537500D01*
|
||||
X157050000Y-95570833D01*
|
||||
X157116666Y-95670833D01*
|
||||
X157150000Y-95804166D01*
|
||||
X157150000Y-96070833D01*
|
||||
X157116666Y-96137500D01*
|
||||
X157083333Y-96170833D01*
|
||||
X157016666Y-96204166D01*
|
||||
X156883333Y-96204166D01*
|
||||
X156816666Y-96170833D01*
|
||||
X156783333Y-96137500D01*
|
||||
X156750000Y-96070833D01*
|
||||
X156750000Y-95904166D01*
|
||||
X156783333Y-95837500D01*
|
||||
X156816666Y-95804166D01*
|
||||
X156883333Y-95770833D01*
|
||||
X157016666Y-95770833D01*
|
||||
X157083333Y-95804166D01*
|
||||
X157116666Y-95837500D01*
|
||||
X157150000Y-95904166D01*
|
||||
X156450000Y-95937500D02*
|
||||
X155916666Y-95937500D01*
|
||||
X155616666Y-96170833D02*
|
||||
X155516666Y-96204166D01*
|
||||
X155350000Y-96204166D01*
|
||||
X155283333Y-96170833D01*
|
||||
X155250000Y-96137500D01*
|
||||
X155216666Y-96070833D01*
|
||||
X155216666Y-96004166D01*
|
||||
X155250000Y-95937500D01*
|
||||
X155283333Y-95904166D01*
|
||||
X155350000Y-95870833D01*
|
||||
X155483333Y-95837500D01*
|
||||
X155550000Y-95804166D01*
|
||||
X155583333Y-95770833D01*
|
||||
X155616666Y-95704166D01*
|
||||
X155616666Y-95637500D01*
|
||||
X155583333Y-95570833D01*
|
||||
X155550000Y-95537500D01*
|
||||
X155483333Y-95504166D01*
|
||||
X155316666Y-95504166D01*
|
||||
X155216666Y-95537500D01*
|
||||
X155016666Y-95737500D02*
|
||||
X154750000Y-95737500D01*
|
||||
X154916666Y-95504166D02*
|
||||
X154916666Y-96104166D01*
|
||||
X154883333Y-96170833D01*
|
||||
X154816666Y-96204166D01*
|
||||
X154750000Y-96204166D01*
|
||||
X154216666Y-95737500D02*
|
||||
X154216666Y-96204166D01*
|
||||
X154516666Y-95737500D02*
|
||||
X154516666Y-96104166D01*
|
||||
X154483333Y-96170833D01*
|
||||
X154416666Y-96204166D01*
|
||||
X154316666Y-96204166D01*
|
||||
X154250000Y-96170833D01*
|
||||
X154216666Y-96137500D01*
|
||||
X153583333Y-96204166D02*
|
||||
X153583333Y-95504166D01*
|
||||
X153583333Y-96170833D02*
|
||||
X153650000Y-96204166D01*
|
||||
X153783333Y-96204166D01*
|
||||
X156883333Y-96795833D01*
|
||||
X156850000Y-96762500D01*
|
||||
X156883333Y-96729166D01*
|
||||
X156883333Y-96795833D01*
|
||||
X156450000Y-97429166D02*
|
||||
X156516666Y-97395833D01*
|
||||
X156550000Y-97329166D01*
|
||||
X156550000Y-96729166D01*
|
||||
X156183333Y-96962500D02*
|
||||
X155650000Y-97162500D01*
|
||||
X156183333Y-97362500D01*
|
||||
X154883333Y-96729166D02*
|
||||
X154483333Y-96729166D01*
|
||||
X154683333Y-97429166D02*
|
||||
X154683333Y-96729166D01*
|
||||
X154250000Y-97429166D02*
|
||||
X154250000Y-96962500D01*
|
||||
X154250000Y-97095833D02*
|
||||
X154216666Y-97029166D01*
|
||||
X154183333Y-96995833D01*
|
||||
X154116666Y-96962500D01*
|
||||
X154050000Y-96962500D01*
|
||||
X153516666Y-97429166D02*
|
||||
X153516666Y-97062500D01*
|
||||
X153550000Y-96995833D01*
|
||||
X153616666Y-96962500D01*
|
||||
X153750000Y-96962500D01*
|
||||
X153816666Y-96995833D01*
|
||||
X153516666Y-97395833D02*
|
||||
X153583333Y-97429166D01*
|
||||
X153750000Y-97429166D01*
|
||||
X153816666Y-97395833D01*
|
||||
X153850000Y-97329166D01*
|
||||
X153850000Y-97262500D01*
|
||||
X153816666Y-97195833D01*
|
||||
X153750000Y-97162500D01*
|
||||
X153583333Y-97162500D01*
|
||||
X153516666Y-97129166D01*
|
||||
X153183333Y-96962500D02*
|
||||
X153183333Y-97662500D01*
|
||||
X153183333Y-96995833D02*
|
||||
X153116666Y-96962500D01*
|
||||
X152983333Y-96962500D01*
|
||||
X152916666Y-96995833D01*
|
||||
X152883333Y-97029166D01*
|
||||
X152850000Y-97095833D01*
|
||||
X152850000Y-97295833D01*
|
||||
X152883333Y-97362500D01*
|
||||
X152916666Y-97395833D01*
|
||||
X152983333Y-97429166D01*
|
||||
X153116666Y-97429166D01*
|
||||
X153183333Y-97395833D01*
|
||||
X152550000Y-97429166D02*
|
||||
X152550000Y-96962500D01*
|
||||
X152550000Y-96729166D02*
|
||||
X152583333Y-96762500D01*
|
||||
X152550000Y-96795833D01*
|
||||
X152516666Y-96762500D01*
|
||||
X152550000Y-96729166D01*
|
||||
X152550000Y-96795833D01*
|
||||
X151950000Y-97395833D02*
|
||||
X152016666Y-97429166D01*
|
||||
X152150000Y-97429166D01*
|
||||
X152216666Y-97395833D01*
|
||||
X152250000Y-97329166D01*
|
||||
X152250000Y-97062500D01*
|
||||
X152216666Y-96995833D01*
|
||||
X152150000Y-96962500D01*
|
||||
X152016666Y-96962500D01*
|
||||
X151950000Y-96995833D01*
|
||||
X151916666Y-97062500D01*
|
||||
X151916666Y-97129166D01*
|
||||
X152250000Y-97195833D01*
|
||||
X151616666Y-97429166D02*
|
||||
X151616666Y-96962500D01*
|
||||
X151616666Y-97095833D02*
|
||||
X151583333Y-97029166D01*
|
||||
X151550000Y-96995833D01*
|
||||
X151483333Y-96962500D01*
|
||||
X151416666Y-96962500D01*
|
||||
D12*
|
||||
X175640000Y-81600000D03*
|
||||
D13*
|
||||
X173100000Y-81600000D03*
|
||||
X170560000Y-81600000D03*
|
||||
D14*
|
||||
X184000000Y-86460000D03*
|
||||
D15*
|
||||
X184000000Y-89000000D03*
|
||||
X184000000Y-91540000D03*
|
||||
D16*
|
||||
X152900000Y-88350000D03*
|
||||
X152900000Y-90350000D03*
|
||||
X152900000Y-92850000D03*
|
||||
X152900000Y-85850000D03*
|
||||
D17*
|
||||
X150800000Y-83500000D03*
|
||||
X150800000Y-95200000D03*
|
||||
D18*
|
||||
X173700000Y-89200000D03*
|
||||
X162300004Y-87000000D03*
|
||||
X159600000Y-82700000D03*
|
||||
X161700000Y-94600000D03*
|
||||
X176200000Y-96600000D03*
|
||||
X179600000Y-91700000D03*
|
||||
X158100000Y-83900000D03*
|
||||
X168600000Y-89399998D03*
|
||||
X167200000Y-85000000D03*
|
||||
X159600000Y-81100000D03*
|
||||
X163800000Y-81100000D03*
|
||||
D19*
|
||||
X159300000Y-87400000D03*
|
||||
X167300000Y-96600000D03*
|
||||
X167300000Y-94500000D03*
|
||||
X160900000Y-87400000D03*
|
||||
D18*
|
||||
X174900000Y-90299999D03*
|
||||
X174900000Y-85300000D03*
|
||||
D19*
|
||||
X166500002Y-90900000D03*
|
||||
X177200000Y-90200000D03*
|
||||
X168000000Y-87400000D03*
|
||||
X173800000Y-87400000D03*
|
||||
D18*
|
||||
X154500000Y-89792900D03*
|
||||
X154500000Y-88907100D03*
|
||||
D20*
|
||||
X167200000Y-87999998D02*
|
||||
X168257101Y-89057099D01*
|
||||
X167200000Y-85000000D02*
|
||||
X167200000Y-87999998D01*
|
||||
X168257101Y-89057099D02*
|
||||
X168600000Y-89399998D01*
|
||||
D21*
|
||||
X163800000Y-81100000D02*
|
||||
X159600000Y-81100000D01*
|
||||
D22*
|
||||
X159300000Y-87965685D02*
|
||||
X159300000Y-87400000D01*
|
||||
X159300000Y-88600000D02*
|
||||
X159300000Y-87965685D01*
|
||||
X167300000Y-96600000D02*
|
||||
X159300000Y-88600000D01*
|
||||
X167300000Y-94500000D02*
|
||||
X160900000Y-88100000D01*
|
||||
X160900000Y-88100000D02*
|
||||
X160900000Y-87400000D01*
|
||||
D23*
|
||||
X174900000Y-85300000D02*
|
||||
X174900000Y-90299999D01*
|
||||
D22*
|
||||
X177200000Y-90200000D02*
|
||||
X175300000Y-92100000D01*
|
||||
X175300000Y-92100000D02*
|
||||
X167700002Y-92100000D01*
|
||||
X167700002Y-92100000D02*
|
||||
X166500002Y-90900000D01*
|
||||
X173800000Y-87400000D02*
|
||||
X168000000Y-87400000D01*
|
||||
X154500000Y-88907100D02*
|
||||
X154342900Y-88907100D01*
|
||||
X154342900Y-88907100D02*
|
||||
X152900000Y-90350000D01*
|
||||
D24*
|
||||
G36*
|
||||
X159316814Y-80416329D02*
|
||||
X159076741Y-80576741D01*
|
||||
X158916329Y-80816814D01*
|
||||
X158860000Y-81100000D01*
|
||||
X158916329Y-81383186D01*
|
||||
X159076741Y-81623259D01*
|
||||
X159316814Y-81783671D01*
|
||||
X159600000Y-81840000D01*
|
||||
X163800000Y-81840000D01*
|
||||
X164083186Y-81783671D01*
|
||||
X176823872Y-82748661D01*
|
||||
X176850260Y-82616000D01*
|
||||
X176850260Y-82265373D01*
|
||||
X151860838Y-81760869D01*
|
||||
X151114549Y-81487287D01*
|
||||
X150320374Y-81520123D01*
|
||||
X149739162Y-81760869D01*
|
||||
X149586248Y-82054317D01*
|
||||
X148415000Y-82054317D01*
|
||||
X148415000Y-81040874D01*
|
||||
X148467041Y-80779242D01*
|
||||
X148592092Y-80592091D01*
|
||||
X148779241Y-80467042D01*
|
||||
X149040874Y-80415000D01*
|
||||
X159323495Y-80415000D01*
|
||||
X159316814Y-80416329D01*
|
||||
X159316814Y-80416329D01*
|
||||
G37*
|
||||
X159316814Y-80416329D02*
|
||||
X159076741Y-80576741D01*
|
||||
X158916329Y-80816814D01*
|
||||
X158860000Y-81100000D01*
|
||||
X158916329Y-81383186D01*
|
||||
X159076741Y-81623259D01*
|
||||
X159323495Y-80415000D01*
|
||||
X159316814Y-80416329D01*
|
||||
M02*
|
||||
40
samples/Gerber Image/FelinaePurr-B.Mask.gbs
Normal file
40
samples/Gerber Image/FelinaePurr-B.Mask.gbs
Normal file
@@ -0,0 +1,40 @@
|
||||
G04 #@! TF.FileFunction,Soldermask,Bot*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (2016-07-14 BZR 6980)-product) date Sunday, 23 April 2017 'PMt' 23:49:01*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11R,1.727200X2.032000*%
|
||||
%ADD12O,1.727200X2.032000*%
|
||||
%ADD13R,2.032000X1.727200*%
|
||||
%ADD14O,2.032000X1.727200*%
|
||||
%ADD15C,1.300000*%
|
||||
%ADD16C,2.800000*%
|
||||
%ADD17C,1.200000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X175640000Y-81600000D03*
|
||||
D12*
|
||||
X173100000Y-81600000D03*
|
||||
X170560000Y-81600000D03*
|
||||
D13*
|
||||
X184000000Y-86460000D03*
|
||||
D14*
|
||||
X184000000Y-89000000D03*
|
||||
X184000000Y-91540000D03*
|
||||
D15*
|
||||
X152900000Y-88350000D03*
|
||||
X152900000Y-90350000D03*
|
||||
X152900000Y-92850000D03*
|
||||
X152900000Y-85850000D03*
|
||||
D16*
|
||||
X150800000Y-83500000D03*
|
||||
X150800000Y-95200000D03*
|
||||
D17*
|
||||
X150800000Y-87100000D03*
|
||||
X150800000Y-91600000D03*
|
||||
M02*
|
||||
245
samples/Gerber Image/FelinaePurr-B.SilkS.gbo
Normal file
245
samples/Gerber Image/FelinaePurr-B.SilkS.gbo
Normal file
@@ -0,0 +1,245 @@
|
||||
G04 #@! TF.FileFunction,Legend,Bot*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (2016-07-14 BZR 6980)-product) date Sunday, 23 April 2017 'PMt' 23:49:01*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11C,0.175000*%
|
||||
%ADD12C,0.375000*%
|
||||
%ADD13C,0.254000*%
|
||||
%ADD14R,1.727200X2.032000*%
|
||||
%ADD15O,1.727200X2.032000*%
|
||||
%ADD16R,2.032000X1.727200*%
|
||||
%ADD17O,2.032000X1.727200*%
|
||||
%ADD18C,1.300000*%
|
||||
%ADD19C,2.800000*%
|
||||
%ADD20C,1.200000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X164233333Y-82450000D02*
|
||||
X164133333Y-82483333D01*
|
||||
X164100000Y-82516666D01*
|
||||
X164066666Y-82583333D01*
|
||||
X164066666Y-82683333D01*
|
||||
X164100000Y-82750000D01*
|
||||
X164133333Y-82783333D01*
|
||||
X164200000Y-82816666D01*
|
||||
X164466666Y-82816666D01*
|
||||
X164466666Y-82116666D01*
|
||||
X164233333Y-82116666D01*
|
||||
X164166666Y-82150000D01*
|
||||
X164133333Y-82183333D01*
|
||||
X164100000Y-82250000D01*
|
||||
X164100000Y-82316666D01*
|
||||
X164133333Y-82383333D01*
|
||||
X164166666Y-82416666D01*
|
||||
X164233333Y-82450000D01*
|
||||
X164466666Y-82450000D01*
|
||||
X163666666Y-82816666D02*
|
||||
X163733333Y-82783333D01*
|
||||
X163766666Y-82750000D01*
|
||||
X163800000Y-82683333D01*
|
||||
X163800000Y-82483333D01*
|
||||
X163766666Y-82416666D01*
|
||||
X163733333Y-82383333D01*
|
||||
X163666666Y-82350000D01*
|
||||
X163566666Y-82350000D01*
|
||||
X163500000Y-82383333D01*
|
||||
X163466666Y-82416666D01*
|
||||
X163433333Y-82483333D01*
|
||||
X163433333Y-82683333D01*
|
||||
X163466666Y-82750000D01*
|
||||
X163500000Y-82783333D01*
|
||||
X163566666Y-82816666D01*
|
||||
X163666666Y-82816666D01*
|
||||
X162833333Y-82816666D02*
|
||||
X162833333Y-82450000D01*
|
||||
X162866666Y-82383333D01*
|
||||
X162933333Y-82350000D01*
|
||||
X163066666Y-82350000D01*
|
||||
X163133333Y-82383333D01*
|
||||
X162833333Y-82783333D02*
|
||||
X162900000Y-82816666D01*
|
||||
X163066666Y-82816666D01*
|
||||
X163133333Y-82783333D01*
|
||||
X163166666Y-82716666D01*
|
||||
X163166666Y-82650000D01*
|
||||
X163133333Y-82583333D01*
|
||||
X163066666Y-82550000D01*
|
||||
X162900000Y-82550000D01*
|
||||
X162833333Y-82516666D01*
|
||||
X162500000Y-82816666D02*
|
||||
X162500000Y-82350000D01*
|
||||
X162500000Y-82483333D02*
|
||||
X162466666Y-82416666D01*
|
||||
X162433333Y-82383333D01*
|
||||
X162366666Y-82350000D01*
|
||||
X162300000Y-82350000D01*
|
||||
X161766666Y-82816666D02*
|
||||
X161766666Y-82116666D01*
|
||||
X161766666Y-82783333D02*
|
||||
X161833333Y-82816666D01*
|
||||
X161966666Y-82816666D01*
|
||||
X162033333Y-82783333D01*
|
||||
X162066666Y-82750000D01*
|
||||
X162100000Y-82683333D01*
|
||||
X162100000Y-82483333D01*
|
||||
X162066666Y-82416666D01*
|
||||
X162033333Y-82383333D01*
|
||||
X161966666Y-82350000D01*
|
||||
X161833333Y-82350000D01*
|
||||
X161766666Y-82383333D01*
|
||||
X160933333Y-82350000D02*
|
||||
X160433333Y-82350000D01*
|
||||
X160733333Y-82050000D02*
|
||||
X160933333Y-82950000D01*
|
||||
X160500000Y-82650000D02*
|
||||
X161000000Y-82650000D01*
|
||||
X160700000Y-82950000D02*
|
||||
X160500000Y-82050000D01*
|
||||
D12*
|
||||
X181899107Y-86482142D02*
|
||||
X180756250Y-86482142D01*
|
||||
X181327678Y-87053571D02*
|
||||
X181327678Y-85910714D01*
|
||||
X179327678Y-85553571D02*
|
||||
X180041964Y-85553571D01*
|
||||
X180113392Y-86267857D01*
|
||||
X180041964Y-86196428D01*
|
||||
X179899107Y-86125000D01*
|
||||
X179541964Y-86125000D01*
|
||||
X179399107Y-86196428D01*
|
||||
X179327678Y-86267857D01*
|
||||
X179256250Y-86410714D01*
|
||||
X179256250Y-86767857D01*
|
||||
X179327678Y-86910714D01*
|
||||
X179399107Y-86982142D01*
|
||||
X179541964Y-87053571D01*
|
||||
X179899107Y-87053571D01*
|
||||
X180041964Y-86982142D01*
|
||||
X180113392Y-86910714D01*
|
||||
X178827678Y-85553571D02*
|
||||
X178327678Y-87053571D01*
|
||||
X177827678Y-85553571D01*
|
||||
X176184821Y-87053571D02*
|
||||
X176184821Y-85553571D01*
|
||||
X175827678Y-85553571D01*
|
||||
X175613392Y-85625000D01*
|
||||
X175470535Y-85767857D01*
|
||||
X175399107Y-85910714D01*
|
||||
X175327678Y-86196428D01*
|
||||
X175327678Y-86410714D01*
|
||||
X175399107Y-86696428D01*
|
||||
X175470535Y-86839285D01*
|
||||
X175613392Y-86982142D01*
|
||||
X175827678Y-87053571D01*
|
||||
X176184821Y-87053571D01*
|
||||
X174684821Y-86267857D02*
|
||||
X174184821Y-86267857D01*
|
||||
X173970535Y-87053571D02*
|
||||
X174684821Y-87053571D01*
|
||||
X174684821Y-85553571D01*
|
||||
X173970535Y-85553571D01*
|
||||
X173541964Y-85553571D02*
|
||||
X173041964Y-87053571D01*
|
||||
X172541964Y-85553571D01*
|
||||
X181041964Y-89678571D02*
|
||||
X181541964Y-88964285D01*
|
||||
X181899107Y-89678571D02*
|
||||
X181899107Y-88178571D01*
|
||||
X181327678Y-88178571D01*
|
||||
X181184821Y-88250000D01*
|
||||
X181113392Y-88321428D01*
|
||||
X181041964Y-88464285D01*
|
||||
X181041964Y-88678571D01*
|
||||
X181113392Y-88821428D01*
|
||||
X181184821Y-88892857D01*
|
||||
X181327678Y-88964285D01*
|
||||
X181899107Y-88964285D01*
|
||||
X180541964Y-88178571D02*
|
||||
X179541964Y-89678571D01*
|
||||
X179541964Y-88178571D02*
|
||||
X180541964Y-89678571D01*
|
||||
X179184821Y-88178571D02*
|
||||
X178327678Y-88178571D01*
|
||||
X178756250Y-89678571D02*
|
||||
X178756250Y-88178571D01*
|
||||
X177970535Y-88178571D02*
|
||||
X176970535Y-89678571D01*
|
||||
X176970535Y-88178571D02*
|
||||
X177970535Y-89678571D01*
|
||||
X181113392Y-90875000D02*
|
||||
X181256250Y-90803571D01*
|
||||
X181470535Y-90803571D01*
|
||||
X181684821Y-90875000D01*
|
||||
X181827678Y-91017857D01*
|
||||
X181899107Y-91160714D01*
|
||||
X181970535Y-91446428D01*
|
||||
X181970535Y-91660714D01*
|
||||
X181899107Y-91946428D01*
|
||||
X181827678Y-92089285D01*
|
||||
X181684821Y-92232142D01*
|
||||
X181470535Y-92303571D01*
|
||||
X181327678Y-92303571D01*
|
||||
X181113392Y-92232142D01*
|
||||
X181041964Y-92160714D01*
|
||||
X181041964Y-91660714D01*
|
||||
X181327678Y-91660714D01*
|
||||
X180399107Y-92303571D02*
|
||||
X180399107Y-90803571D01*
|
||||
X179541964Y-92303571D01*
|
||||
X179541964Y-90803571D01*
|
||||
X178827678Y-92303571D02*
|
||||
X178827678Y-90803571D01*
|
||||
X178470535Y-90803571D01*
|
||||
X178256250Y-90875000D01*
|
||||
X178113392Y-91017857D01*
|
||||
X178041964Y-91160714D01*
|
||||
X177970535Y-91446428D01*
|
||||
X177970535Y-91660714D01*
|
||||
X178041964Y-91946428D01*
|
||||
X178113392Y-92089285D01*
|
||||
X178256250Y-92232142D01*
|
||||
X178470535Y-92303571D01*
|
||||
X178827678Y-92303571D01*
|
||||
D13*
|
||||
G36*
|
||||
X164873000Y-87373000D02*
|
||||
X154627000Y-87373000D01*
|
||||
X154627000Y-83127000D01*
|
||||
X164873000Y-83127000D01*
|
||||
X164873000Y-87373000D01*
|
||||
X164873000Y-87373000D01*
|
||||
G37*
|
||||
X164873000Y-87373000D02*
|
||||
X154627000Y-87373000D01*
|
||||
X154627000Y-83127000D01*
|
||||
X164873000Y-83127000D01*
|
||||
X164873000Y-87373000D01*
|
||||
%LPC*%
|
||||
D14*
|
||||
X175640000Y-81600000D03*
|
||||
D15*
|
||||
X173100000Y-81600000D03*
|
||||
X170560000Y-81600000D03*
|
||||
D16*
|
||||
X184000000Y-86460000D03*
|
||||
D17*
|
||||
X184000000Y-89000000D03*
|
||||
X184000000Y-91540000D03*
|
||||
D18*
|
||||
X152900000Y-88350000D03*
|
||||
X152900000Y-90350000D03*
|
||||
X152900000Y-92850000D03*
|
||||
X152900000Y-85850000D03*
|
||||
D19*
|
||||
X150800000Y-83500000D03*
|
||||
X150800000Y-95200000D03*
|
||||
D20*
|
||||
X150800000Y-87100000D03*
|
||||
X150800000Y-91600000D03*
|
||||
M02*
|
||||
571
samples/Gerber Image/FelinaePurr-F.Cu.gtl
Normal file
571
samples/Gerber Image/FelinaePurr-F.Cu.gtl
Normal file
@@ -0,0 +1,571 @@
|
||||
G04 #@! TF.FileFunction,Copper,L1,Top,Signal*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (2016-07-14 BZR 6980)-product) date Sunday, 23 April 2017 'PMt' 23:49:01*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11R,0.800000X0.750000*%
|
||||
%ADD12R,0.750000X0.800000*%
|
||||
%ADD13R,1.198880X1.198880*%
|
||||
%ADD14R,1.727200X2.032000*%
|
||||
%ADD15O,1.727200X2.032000*%
|
||||
%ADD16R,0.500000X0.900000*%
|
||||
%ADD17R,0.450000X1.750000*%
|
||||
%ADD18R,1.060000X0.650000*%
|
||||
%ADD19R,2.032000X1.727200*%
|
||||
%ADD20O,2.032000X1.727200*%
|
||||
%ADD21R,0.900000X0.500000*%
|
||||
%ADD22C,1.300000*%
|
||||
%ADD23C,2.800000*%
|
||||
%ADD24C,0.685800*%
|
||||
%ADD25C,0.800000*%
|
||||
%ADD26C,0.500000*%
|
||||
%ADD27C,0.300000*%
|
||||
%ADD28C,0.400000*%
|
||||
%ADD29C,0.800000*%
|
||||
%ADD30C,0.250000*%
|
||||
%ADD31C,0.180000*%
|
||||
%ADD32C,0.160000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X165350000Y-82700000D03*
|
||||
X163850000Y-82700000D03*
|
||||
X162350000Y-82700000D03*
|
||||
X160850000Y-82700000D03*
|
||||
D12*
|
||||
X172700000Y-87350000D03*
|
||||
X172700000Y-88850000D03*
|
||||
D11*
|
||||
X181100000Y-90600000D03*
|
||||
X179600000Y-90600000D03*
|
||||
D13*
|
||||
X168800000Y-94500000D03*
|
||||
X168800000Y-96598040D03*
|
||||
X170800000Y-94500000D03*
|
||||
X170800000Y-96598040D03*
|
||||
X172800000Y-94500000D03*
|
||||
X172800000Y-96598040D03*
|
||||
D14*
|
||||
X175640000Y-81600000D03*
|
||||
D15*
|
||||
X173100000Y-81600000D03*
|
||||
X170560000Y-81600000D03*
|
||||
D16*
|
||||
X181100000Y-89000000D03*
|
||||
X179600000Y-89000000D03*
|
||||
X179600000Y-87300000D03*
|
||||
X181100000Y-87300000D03*
|
||||
D17*
|
||||
X156775000Y-92600000D03*
|
||||
X157425000Y-92600000D03*
|
||||
X158075000Y-92600000D03*
|
||||
X158725000Y-92600000D03*
|
||||
X159375000Y-92600000D03*
|
||||
X160025000Y-92600000D03*
|
||||
X160675000Y-92600000D03*
|
||||
X161325000Y-92600000D03*
|
||||
X161975000Y-92600000D03*
|
||||
X162625000Y-92600000D03*
|
||||
X163275000Y-92600000D03*
|
||||
X163925000Y-92600000D03*
|
||||
X164575000Y-92600000D03*
|
||||
X165225000Y-92600000D03*
|
||||
X165225000Y-85400000D03*
|
||||
X164575000Y-85400000D03*
|
||||
X163925000Y-85400000D03*
|
||||
X163275000Y-85400000D03*
|
||||
X162625000Y-85400000D03*
|
||||
X161975000Y-85400000D03*
|
||||
X161325000Y-85400000D03*
|
||||
X160675000Y-85400000D03*
|
||||
X160025000Y-85400000D03*
|
||||
X159375000Y-85400000D03*
|
||||
X158725000Y-85400000D03*
|
||||
X158075000Y-85400000D03*
|
||||
X157425000Y-85400000D03*
|
||||
X156775000Y-85400000D03*
|
||||
D18*
|
||||
X175000000Y-87150000D03*
|
||||
X175000000Y-88100000D03*
|
||||
X175000000Y-89050000D03*
|
||||
X177200000Y-89050000D03*
|
||||
X177200000Y-87150000D03*
|
||||
D19*
|
||||
X184000000Y-86460000D03*
|
||||
D20*
|
||||
X184000000Y-89000000D03*
|
||||
X184000000Y-91540000D03*
|
||||
D13*
|
||||
X174900000Y-94501960D03*
|
||||
X174900000Y-96600000D03*
|
||||
D11*
|
||||
X159000000Y-94600000D03*
|
||||
X160500000Y-94600000D03*
|
||||
X162350000Y-81100000D03*
|
||||
X160850000Y-81100000D03*
|
||||
D21*
|
||||
X171150000Y-88600000D03*
|
||||
X171150000Y-90100000D03*
|
||||
X169550000Y-88600000D03*
|
||||
X169550000Y-90100000D03*
|
||||
X168800000Y-91300000D03*
|
||||
X168800000Y-92800000D03*
|
||||
X170800000Y-91300000D03*
|
||||
X170800000Y-92800000D03*
|
||||
X172800000Y-91300000D03*
|
||||
X172800000Y-92800000D03*
|
||||
X174900000Y-91300000D03*
|
||||
X174900000Y-92800000D03*
|
||||
X176600000Y-91300000D03*
|
||||
X176600000Y-92800000D03*
|
||||
D22*
|
||||
X152900000Y-88350000D03*
|
||||
X152900000Y-90350000D03*
|
||||
X152900000Y-92850000D03*
|
||||
X152900000Y-85850000D03*
|
||||
D23*
|
||||
X150800000Y-83500000D03*
|
||||
X150800000Y-95200000D03*
|
||||
D24*
|
||||
X173700000Y-89200000D03*
|
||||
X162300004Y-87000000D03*
|
||||
X159600000Y-82700000D03*
|
||||
X161700000Y-94600000D03*
|
||||
X176200000Y-96600000D03*
|
||||
X179600000Y-91700000D03*
|
||||
X158100000Y-83900000D03*
|
||||
X168600000Y-89399998D03*
|
||||
X167200000Y-85000000D03*
|
||||
X159600000Y-81100000D03*
|
||||
X163800000Y-81100000D03*
|
||||
D25*
|
||||
X159300000Y-87400000D03*
|
||||
X167300000Y-96600000D03*
|
||||
X167300000Y-94500000D03*
|
||||
X160900000Y-87400000D03*
|
||||
D24*
|
||||
X174900000Y-90299999D03*
|
||||
X174900000Y-85300000D03*
|
||||
D25*
|
||||
X166500002Y-90900000D03*
|
||||
X177200000Y-90200000D03*
|
||||
X168000000Y-87400000D03*
|
||||
X173800000Y-87400000D03*
|
||||
D24*
|
||||
X154500000Y-89792900D03*
|
||||
X154500000Y-88907100D03*
|
||||
D26*
|
||||
X165325000Y-82700000D02*
|
||||
X165325000Y-83475000D01*
|
||||
X165325000Y-83475000D02*
|
||||
X164900000Y-83900000D01*
|
||||
X164900000Y-83900000D02*
|
||||
X164250677Y-83900000D01*
|
||||
X163947598Y-84375049D02*
|
||||
X163927410Y-84395237D01*
|
||||
X164250677Y-83900000D02*
|
||||
X163947598Y-84203079D01*
|
||||
X163947598Y-84203079D02*
|
||||
X163947598Y-84375049D01*
|
||||
X163927410Y-84395237D02*
|
||||
X163927410Y-85400000D01*
|
||||
D27*
|
||||
X165325000Y-82700000D02*
|
||||
X165325000Y-82826415D01*
|
||||
D26*
|
||||
X165350000Y-82700000D02*
|
||||
X165325000Y-82700000D01*
|
||||
X172700000Y-88850000D02*
|
||||
X173350000Y-88850000D01*
|
||||
X173350000Y-88850000D02*
|
||||
X173700000Y-89200000D01*
|
||||
X175000000Y-89050000D02*
|
||||
X173850000Y-89050000D01*
|
||||
X173850000Y-89050000D02*
|
||||
X173700000Y-89200000D01*
|
||||
X175000000Y-88100000D02*
|
||||
X175000000Y-89050000D01*
|
||||
X163850000Y-82700000D02*
|
||||
X163850000Y-83378030D01*
|
||||
X163850000Y-83378030D02*
|
||||
X163295188Y-83932842D01*
|
||||
X163275000Y-84125000D02*
|
||||
X163295188Y-84104812D01*
|
||||
X163295188Y-84104812D02*
|
||||
X163295188Y-83932842D01*
|
||||
X163275000Y-85400000D02*
|
||||
X163275000Y-84125000D01*
|
||||
X160850000Y-82700000D02*
|
||||
X160850000Y-83575000D01*
|
||||
X160850000Y-83575000D02*
|
||||
X160875000Y-83600000D01*
|
||||
X160875000Y-83600000D02*
|
||||
X160900000Y-83600000D01*
|
||||
X161325000Y-85400000D02*
|
||||
X161325000Y-84025000D01*
|
||||
X161325000Y-84025000D02*
|
||||
X160900000Y-83600000D01*
|
||||
X160675000Y-92600000D02*
|
||||
X160675000Y-93800000D01*
|
||||
X160500000Y-94600000D02*
|
||||
X160500000Y-93975000D01*
|
||||
X160500000Y-93975000D02*
|
||||
X160675000Y-93800000D01*
|
||||
X163275000Y-85400000D02*
|
||||
X163275000Y-86509937D01*
|
||||
X163275000Y-86509937D02*
|
||||
X162784937Y-87000000D01*
|
||||
X162784937Y-87000000D02*
|
||||
X162300004Y-87000000D01*
|
||||
X161325000Y-86509929D02*
|
||||
X161815071Y-87000000D01*
|
||||
X161325000Y-85400000D02*
|
||||
X161325000Y-86509929D01*
|
||||
X161815071Y-87000000D02*
|
||||
X162300004Y-87000000D01*
|
||||
X159700000Y-82700000D02*
|
||||
X159600000Y-82700000D01*
|
||||
X160850000Y-82700000D02*
|
||||
X159700000Y-82700000D01*
|
||||
X160850000Y-82700000D02*
|
||||
X160850000Y-81100000D01*
|
||||
X160500000Y-94600000D02*
|
||||
X161700000Y-94600000D01*
|
||||
X158075000Y-85400000D02*
|
||||
X158075000Y-83925000D01*
|
||||
X158075000Y-83925000D02*
|
||||
X158100000Y-83900000D01*
|
||||
X158075000Y-85400000D02*
|
||||
X158725000Y-85400000D01*
|
||||
X179600000Y-90600000D02*
|
||||
X179600000Y-91700000D01*
|
||||
X174900000Y-96600000D02*
|
||||
X176200000Y-96600000D01*
|
||||
X172800000Y-96598040D02*
|
||||
X174898040Y-96598040D01*
|
||||
X174898040Y-96598040D02*
|
||||
X174900000Y-96600000D01*
|
||||
X169250000Y-85000000D02*
|
||||
X170560000Y-83690000D01*
|
||||
X170560000Y-83690000D02*
|
||||
X170560000Y-81600000D01*
|
||||
X167200000Y-85000000D02*
|
||||
X169250000Y-85000000D01*
|
||||
X168600000Y-90500000D02*
|
||||
X168600000Y-89399998D01*
|
||||
X168800000Y-91300000D02*
|
||||
X168800000Y-90700000D01*
|
||||
X168800000Y-90700000D02*
|
||||
X168600000Y-90500000D01*
|
||||
D28*
|
||||
X170500000Y-88600000D02*
|
||||
X171150000Y-88600000D01*
|
||||
D26*
|
||||
X169550000Y-88600000D02*
|
||||
X170500000Y-88600000D01*
|
||||
X168600000Y-89399998D02*
|
||||
X168750002Y-89399998D01*
|
||||
X168750002Y-89399998D02*
|
||||
X169550000Y-88600000D01*
|
||||
X162350000Y-82700000D02*
|
||||
X162350000Y-83575000D01*
|
||||
X162350000Y-83575000D02*
|
||||
X161977410Y-83947590D01*
|
||||
X161977410Y-83947590D02*
|
||||
X161977410Y-85400000D01*
|
||||
D29*
|
||||
X162350000Y-81100000D02*
|
||||
X163800000Y-81100000D01*
|
||||
D30*
|
||||
X174222599Y-89677401D02*
|
||||
X175726921Y-89677401D01*
|
||||
X175726921Y-89677401D02*
|
||||
X176250000Y-89154322D01*
|
||||
X176250000Y-89154322D02*
|
||||
X176250000Y-88675000D01*
|
||||
X176250000Y-88675000D02*
|
||||
X177200000Y-87725000D01*
|
||||
X177200000Y-87725000D02*
|
||||
X177200000Y-87150000D01*
|
||||
D26*
|
||||
X177200000Y-87150000D02*
|
||||
X179450000Y-87150000D01*
|
||||
X179450000Y-87150000D02*
|
||||
X179600000Y-87300000D01*
|
||||
X159000000Y-94600000D02*
|
||||
X159000000Y-94000000D01*
|
||||
X159000000Y-94000000D02*
|
||||
X158725000Y-93725000D01*
|
||||
X158725000Y-93725000D02*
|
||||
X158725000Y-92600000D01*
|
||||
D28*
|
||||
X174222599Y-89677401D02*
|
||||
X173800000Y-90100000D01*
|
||||
X159600000Y-96600000D02*
|
||||
X159000000Y-96000000D01*
|
||||
D27*
|
||||
X181100000Y-87300000D02*
|
||||
X181100000Y-89000000D01*
|
||||
X181100000Y-90600000D02*
|
||||
X181100000Y-89000000D01*
|
||||
X181100000Y-89000000D02*
|
||||
X184000000Y-89000000D01*
|
||||
D26*
|
||||
X168800000Y-94500000D02*
|
||||
X168800000Y-92800000D01*
|
||||
X168800000Y-96598040D02*
|
||||
X167301960Y-96598040D01*
|
||||
X167301960Y-96598040D02*
|
||||
X167300000Y-96600000D01*
|
||||
D27*
|
||||
X159300000Y-87400000D02*
|
||||
X160025000Y-86675000D01*
|
||||
X160025000Y-86675000D02*
|
||||
X160025000Y-85400000D01*
|
||||
D26*
|
||||
X170800000Y-92800000D02*
|
||||
X170800000Y-94500000D01*
|
||||
X167300000Y-94500000D02*
|
||||
X167300000Y-95065685D01*
|
||||
X167300000Y-95065685D02*
|
||||
X167734314Y-95499999D01*
|
||||
X167734314Y-95499999D02*
|
||||
X167876797Y-95499999D01*
|
||||
X167876797Y-95499999D02*
|
||||
X167878639Y-95501841D01*
|
||||
X167878639Y-95501841D02*
|
||||
X170603241Y-95501841D01*
|
||||
X170603241Y-95501841D02*
|
||||
X170800000Y-95698600D01*
|
||||
X170800000Y-95698600D02*
|
||||
X170800000Y-96598040D01*
|
||||
D27*
|
||||
X160675000Y-85400000D02*
|
||||
X160675000Y-86400000D01*
|
||||
X160900000Y-86900000D02*
|
||||
X160675000Y-86675000D01*
|
||||
X160675000Y-86675000D02*
|
||||
X160675000Y-86400000D01*
|
||||
X160900000Y-87400000D02*
|
||||
X160900000Y-86900000D01*
|
||||
D26*
|
||||
X172800000Y-92800000D02*
|
||||
X172800000Y-94500000D01*
|
||||
D27*
|
||||
X175640000Y-81600000D02*
|
||||
X175640000Y-84560000D01*
|
||||
X175640000Y-84560000D02*
|
||||
X174900000Y-85300000D01*
|
||||
D26*
|
||||
X176600000Y-91300000D02*
|
||||
X175599999Y-90299999D01*
|
||||
X175599999Y-90299999D02*
|
||||
X174900000Y-90299999D01*
|
||||
D29*
|
||||
X175640000Y-81600000D02*
|
||||
X180803600Y-81600000D01*
|
||||
X180803600Y-81600000D02*
|
||||
X184000000Y-84796400D01*
|
||||
X184000000Y-84796400D02*
|
||||
X184000000Y-86460000D01*
|
||||
D26*
|
||||
X174900000Y-92800000D02*
|
||||
X174900000Y-94501960D01*
|
||||
D27*
|
||||
X165934317Y-90900000D02*
|
||||
X166500002Y-90900000D01*
|
||||
X159900000Y-90900000D02*
|
||||
X165934317Y-90900000D01*
|
||||
X159375000Y-91425000D02*
|
||||
X159900000Y-90900000D01*
|
||||
X159375000Y-92600000D02*
|
||||
X159375000Y-91425000D01*
|
||||
X177200000Y-90200000D02*
|
||||
X177200000Y-89050000D01*
|
||||
X177200000Y-89050000D02*
|
||||
X179550000Y-89050000D01*
|
||||
X179550000Y-89050000D02*
|
||||
X179600000Y-89000000D01*
|
||||
X166000000Y-89400000D02*
|
||||
X167600001Y-87799999D01*
|
||||
X158400000Y-89400000D02*
|
||||
X166000000Y-89400000D01*
|
||||
X167600001Y-87799999D02*
|
||||
X168000000Y-87400000D01*
|
||||
X156775000Y-91025000D02*
|
||||
X158400000Y-89400000D01*
|
||||
X175000000Y-87150000D02*
|
||||
X174050000Y-87150000D01*
|
||||
X174050000Y-87150000D02*
|
||||
X173800000Y-87400000D01*
|
||||
X156775000Y-91025000D02*
|
||||
X156800000Y-91000000D01*
|
||||
X156775000Y-92600000D02*
|
||||
X156775000Y-91025000D01*
|
||||
D26*
|
||||
X169550000Y-90100000D02*
|
||||
X169600000Y-90100000D01*
|
||||
X169600000Y-90100000D02*
|
||||
X170800000Y-91300000D01*
|
||||
X174900000Y-91300000D02*
|
||||
X175100000Y-91300000D01*
|
||||
X175100000Y-91300000D02*
|
||||
X176600000Y-92800000D01*
|
||||
X171150000Y-90100000D02*
|
||||
X171600000Y-90100000D01*
|
||||
X171600000Y-90100000D02*
|
||||
X172800000Y-91300000D01*
|
||||
D27*
|
||||
X154500000Y-89792900D02*
|
||||
X154342900Y-89792900D01*
|
||||
X154342900Y-89792900D02*
|
||||
X152900000Y-88350000D01*
|
||||
X157560197Y-89599999D02*
|
||||
X154692901Y-89599999D01*
|
||||
X154692901Y-89599999D02*
|
||||
X154500000Y-89792900D01*
|
||||
X165225000Y-86712500D02*
|
||||
X165150000Y-86787500D01*
|
||||
X165225000Y-85400000D02*
|
||||
X165225000Y-86712500D01*
|
||||
X165150000Y-86787500D02*
|
||||
X165150000Y-87703552D01*
|
||||
X165150000Y-87703552D02*
|
||||
X163905962Y-88947590D01*
|
||||
X163905962Y-88947590D02*
|
||||
X158212605Y-88947591D01*
|
||||
X158212605Y-88947591D02*
|
||||
X157560197Y-89599999D01*
|
||||
X157353101Y-89100001D02*
|
||||
X154692901Y-89100001D01*
|
||||
X154692901Y-89100001D02*
|
||||
X154500000Y-88907100D01*
|
||||
X164650000Y-86787500D02*
|
||||
X164650000Y-87496448D01*
|
||||
X158005501Y-88447601D02*
|
||||
X157353101Y-89100001D01*
|
||||
X164575000Y-85400000D02*
|
||||
X164575000Y-86712500D01*
|
||||
X164575000Y-86712500D02*
|
||||
X164650000Y-86787500D01*
|
||||
X164650000Y-87496448D02*
|
||||
X163698847Y-88447601D01*
|
||||
X163698847Y-88447601D02*
|
||||
X158005501Y-88447601D01*
|
||||
D31*
|
||||
G36*
|
||||
X161443040Y-80386260D02*
|
||||
X161404451Y-80479422D01*
|
||||
X161363152Y-80451826D01*
|
||||
X161250000Y-80429319D01*
|
||||
X160450000Y-80429319D01*
|
||||
X160336848Y-80451826D01*
|
||||
X160240922Y-80515922D01*
|
||||
X160176826Y-80611848D01*
|
||||
X160154319Y-80725000D01*
|
||||
X160154319Y-81475000D01*
|
||||
X160176826Y-81588152D01*
|
||||
X160240922Y-81684078D01*
|
||||
X160310000Y-81730235D01*
|
||||
X160310000Y-82069765D01*
|
||||
X160240922Y-82115922D01*
|
||||
X160211470Y-82160000D01*
|
||||
X159949905Y-82160000D01*
|
||||
X159726444Y-82067210D01*
|
||||
X159474661Y-82066991D01*
|
||||
X159241959Y-82163141D01*
|
||||
X159063767Y-82341023D01*
|
||||
X158967210Y-82573556D01*
|
||||
X158966991Y-82825339D01*
|
||||
X159063141Y-83058041D01*
|
||||
X159241023Y-83236233D01*
|
||||
X159473556Y-83332790D01*
|
||||
X159725339Y-83333009D01*
|
||||
X159950439Y-83240000D01*
|
||||
X160211470Y-83240000D01*
|
||||
X160240922Y-83284078D01*
|
||||
X160310000Y-83330235D01*
|
||||
X160310000Y-83575000D01*
|
||||
X160351105Y-83781649D01*
|
||||
X160468162Y-83956838D01*
|
||||
X160493160Y-83981835D01*
|
||||
X160493162Y-83981838D01*
|
||||
X160568503Y-84032179D01*
|
||||
X160765644Y-84229319D01*
|
||||
X160450000Y-84229319D01*
|
||||
X160350000Y-84249210D01*
|
||||
X160250000Y-84229319D01*
|
||||
X159800000Y-84229319D01*
|
||||
X159700000Y-84249210D01*
|
||||
X159600000Y-84229319D01*
|
||||
X159150000Y-84229319D01*
|
||||
X159050000Y-84249210D01*
|
||||
X158950000Y-84229319D01*
|
||||
X158648548Y-84229319D01*
|
||||
X158732790Y-84026444D01*
|
||||
X172906000Y-81774000D01*
|
||||
X172906000Y-81426000D01*
|
||||
X172926000Y-81426000D01*
|
||||
X172926000Y-81406000D01*
|
||||
X173274000Y-81406000D01*
|
||||
X173274000Y-81426000D01*
|
||||
X173274000Y-81426000D01*
|
||||
G37*
|
||||
X173274000Y-81426000D02*
|
||||
X180070000Y-89624732D01*
|
||||
X180070000Y-89953439D01*
|
||||
X180000000Y-89939515D01*
|
||||
X179200000Y-89939515D01*
|
||||
X179090750Y-89961246D01*
|
||||
X178998132Y-90023132D01*
|
||||
X178936246Y-90115750D01*
|
||||
X172926000Y-81774000D01*
|
||||
X172906000Y-81774000D01*
|
||||
X172906000Y-81426000D01*
|
||||
X172926000Y-81426000D01*
|
||||
X172926000Y-81406000D01*
|
||||
X173274000Y-81406000D01*
|
||||
X173274000Y-81426000D01*
|
||||
D31*
|
||||
G36*
|
||||
X181810000Y-87900000D02*
|
||||
X181816851Y-87934442D01*
|
||||
X181836360Y-87963640D01*
|
||||
X181865558Y-87983149D01*
|
||||
X181900000Y-87990000D01*
|
||||
X185210000Y-87990000D01*
|
||||
X185210000Y-89910000D01*
|
||||
X182100000Y-89910000D01*
|
||||
X182065558Y-89916851D01*
|
||||
X182036360Y-89936360D01*
|
||||
X182016851Y-89965558D01*
|
||||
X182010000Y-90000000D01*
|
||||
X182010000Y-91310000D01*
|
||||
X180490000Y-91310000D01*
|
||||
X180490000Y-86190000D01*
|
||||
X181810000Y-86190000D01*
|
||||
X181810000Y-87900000D01*
|
||||
X181810000Y-87900000D01*
|
||||
G37*
|
||||
X181810000Y-87900000D02*
|
||||
X181816851Y-87934442D01*
|
||||
X181836360Y-87963640D01*
|
||||
X181865558Y-87983149D01*
|
||||
X181900000Y-87990000D01*
|
||||
X185210000Y-87990000D01*
|
||||
X185210000Y-89910000D01*
|
||||
X182100000Y-89910000D01*
|
||||
X182065558Y-89916851D01*
|
||||
X182036360Y-89936360D01*
|
||||
X182016851Y-89965558D01*
|
||||
X182010000Y-90000000D01*
|
||||
X182010000Y-91310000D01*
|
||||
X180490000Y-91310000D01*
|
||||
X180490000Y-86190000D01*
|
||||
X181810000Y-86190000D01*
|
||||
X181810000Y-87900000D01*
|
||||
M02*
|
||||
128
samples/Gerber Image/FelinaePurr-F.Mask.gts
Normal file
128
samples/Gerber Image/FelinaePurr-F.Mask.gts
Normal file
@@ -0,0 +1,128 @@
|
||||
G04 #@! TF.FileFunction,Soldermask,Top*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (2016-07-14 BZR 6980)-product) date Sunday, 23 April 2017 'PMt' 23:49:01*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11R,0.800000X0.750000*%
|
||||
%ADD12R,0.750000X0.800000*%
|
||||
%ADD13R,1.198880X1.198880*%
|
||||
%ADD14R,1.727200X2.032000*%
|
||||
%ADD15O,1.727200X2.032000*%
|
||||
%ADD16R,0.500000X0.900000*%
|
||||
%ADD17R,0.450000X1.750000*%
|
||||
%ADD18R,1.060000X0.650000*%
|
||||
%ADD19R,2.032000X1.727200*%
|
||||
%ADD20O,2.032000X1.727200*%
|
||||
%ADD21R,0.900000X0.500000*%
|
||||
%ADD22C,1.300000*%
|
||||
%ADD23C,2.800000*%
|
||||
%ADD24C,1.200000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X165350000Y-82700000D03*
|
||||
X163850000Y-82700000D03*
|
||||
X162350000Y-82700000D03*
|
||||
X160850000Y-82700000D03*
|
||||
D12*
|
||||
X172700000Y-87350000D03*
|
||||
X172700000Y-88850000D03*
|
||||
D11*
|
||||
X181100000Y-90600000D03*
|
||||
X179600000Y-90600000D03*
|
||||
D13*
|
||||
X168800000Y-94500000D03*
|
||||
X168800000Y-96598040D03*
|
||||
X170800000Y-94500000D03*
|
||||
X170800000Y-96598040D03*
|
||||
X172800000Y-94500000D03*
|
||||
X172800000Y-96598040D03*
|
||||
D14*
|
||||
X175640000Y-81600000D03*
|
||||
D15*
|
||||
X173100000Y-81600000D03*
|
||||
X170560000Y-81600000D03*
|
||||
D16*
|
||||
X181100000Y-89000000D03*
|
||||
X179600000Y-89000000D03*
|
||||
X179600000Y-87300000D03*
|
||||
X181100000Y-87300000D03*
|
||||
D17*
|
||||
X156775000Y-92600000D03*
|
||||
X157425000Y-92600000D03*
|
||||
X158075000Y-92600000D03*
|
||||
X158725000Y-92600000D03*
|
||||
X159375000Y-92600000D03*
|
||||
X160025000Y-92600000D03*
|
||||
X160675000Y-92600000D03*
|
||||
X161325000Y-92600000D03*
|
||||
X161975000Y-92600000D03*
|
||||
X162625000Y-92600000D03*
|
||||
X163275000Y-92600000D03*
|
||||
X163925000Y-92600000D03*
|
||||
X164575000Y-92600000D03*
|
||||
X165225000Y-92600000D03*
|
||||
X165225000Y-85400000D03*
|
||||
X164575000Y-85400000D03*
|
||||
X163925000Y-85400000D03*
|
||||
X163275000Y-85400000D03*
|
||||
X162625000Y-85400000D03*
|
||||
X161975000Y-85400000D03*
|
||||
X161325000Y-85400000D03*
|
||||
X160675000Y-85400000D03*
|
||||
X160025000Y-85400000D03*
|
||||
X159375000Y-85400000D03*
|
||||
X158725000Y-85400000D03*
|
||||
X158075000Y-85400000D03*
|
||||
X157425000Y-85400000D03*
|
||||
X156775000Y-85400000D03*
|
||||
D18*
|
||||
X175000000Y-87150000D03*
|
||||
X175000000Y-88100000D03*
|
||||
X175000000Y-89050000D03*
|
||||
X177200000Y-89050000D03*
|
||||
X177200000Y-87150000D03*
|
||||
D19*
|
||||
X184000000Y-86460000D03*
|
||||
D20*
|
||||
X184000000Y-89000000D03*
|
||||
X184000000Y-91540000D03*
|
||||
D13*
|
||||
X174900000Y-94501960D03*
|
||||
X174900000Y-96600000D03*
|
||||
D11*
|
||||
X159000000Y-94600000D03*
|
||||
X160500000Y-94600000D03*
|
||||
X162350000Y-81100000D03*
|
||||
X160850000Y-81100000D03*
|
||||
D21*
|
||||
X171150000Y-88600000D03*
|
||||
X171150000Y-90100000D03*
|
||||
X169550000Y-88600000D03*
|
||||
X169550000Y-90100000D03*
|
||||
X168800000Y-91300000D03*
|
||||
X168800000Y-92800000D03*
|
||||
X170800000Y-91300000D03*
|
||||
X170800000Y-92800000D03*
|
||||
X172800000Y-91300000D03*
|
||||
X172800000Y-92800000D03*
|
||||
X174900000Y-91300000D03*
|
||||
X174900000Y-92800000D03*
|
||||
X176600000Y-91300000D03*
|
||||
X176600000Y-92800000D03*
|
||||
D22*
|
||||
X152900000Y-88350000D03*
|
||||
X152900000Y-90350000D03*
|
||||
X152900000Y-92850000D03*
|
||||
X152900000Y-85850000D03*
|
||||
D23*
|
||||
X150800000Y-83500000D03*
|
||||
X150800000Y-95200000D03*
|
||||
D24*
|
||||
X150800000Y-87100000D03*
|
||||
X150800000Y-91600000D03*
|
||||
M02*
|
||||
12
samples/Gerber Image/FelinaePurr-F.Paste.gtp
Normal file
12
samples/Gerber Image/FelinaePurr-F.Paste.gtp
Normal file
@@ -0,0 +1,12 @@
|
||||
G04 #@! TF.FileFunction,Paste,Top*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (2016-07-14 BZR 6980)-product) date Sunday, 23 April 2017 'PMt' 23:49:01*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.150000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
M02*
|
||||
255
samples/Gerber Image/FelinaePurr-F.SilkS.gto
Normal file
255
samples/Gerber Image/FelinaePurr-F.SilkS.gto
Normal file
@@ -0,0 +1,255 @@
|
||||
G04 #@! TF.FileFunction,Legend,Top*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (2016-07-14 BZR 6980)-product) date Sunday, 23 April 2017 'PMt' 23:49:01*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11C,0.200000*%
|
||||
%ADD12C,0.500000*%
|
||||
%ADD13C,0.175000*%
|
||||
%ADD14C,0.120000*%
|
||||
%ADD15R,0.800000X0.750000*%
|
||||
%ADD16R,0.750000X0.800000*%
|
||||
%ADD17R,1.198880X1.198880*%
|
||||
%ADD18R,1.727200X2.032000*%
|
||||
%ADD19O,1.727200X2.032000*%
|
||||
%ADD20R,0.500000X0.900000*%
|
||||
%ADD21R,0.450000X1.750000*%
|
||||
%ADD22R,1.060000X0.650000*%
|
||||
%ADD23R,2.032000X1.727200*%
|
||||
%ADD24O,2.032000X1.727200*%
|
||||
%ADD25R,0.900000X0.500000*%
|
||||
%ADD26C,1.300000*%
|
||||
%ADD27C,2.800000*%
|
||||
%ADD28C,1.200000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X181000000Y-96250000D02*
|
||||
X181000000Y-96750000D01*
|
||||
X180750000Y-96500000D02*
|
||||
X181250000Y-96500000D01*
|
||||
X180750000Y-97250000D02*
|
||||
X181250000Y-97250000D01*
|
||||
D12*
|
||||
X156000000Y-92800000D02*
|
||||
G75*
|
||||
G03X156000000Y-92800000I-200000J0D01*
|
||||
G01*
|
||||
D13*
|
||||
X174800000Y-84116666D02*
|
||||
X174800000Y-83416666D01*
|
||||
X174966666Y-83416666D01*
|
||||
X175066666Y-83450000D01*
|
||||
X175133333Y-83516666D01*
|
||||
X175166666Y-83583333D01*
|
||||
X175200000Y-83716666D01*
|
||||
X175200000Y-83816666D01*
|
||||
X175166666Y-83950000D01*
|
||||
X175133333Y-84016666D01*
|
||||
X175066666Y-84083333D01*
|
||||
X174966666Y-84116666D01*
|
||||
X174800000Y-84116666D01*
|
||||
X175500000Y-83750000D02*
|
||||
X175733333Y-83750000D01*
|
||||
X157483333Y-97316666D02*
|
||||
X161783333Y-96816666D01*
|
||||
X162450000Y-97116666D02*
|
||||
X162783333Y-97116666D01*
|
||||
X162383333Y-97316666D02*
|
||||
X162616666Y-96616666D01*
|
||||
X162850000Y-97316666D01*
|
||||
D10*
|
||||
X164950000Y-83300000D02*
|
||||
X164250000Y-83300000D01*
|
||||
X164250000Y-82100000D02*
|
||||
X164950000Y-82100000D01*
|
||||
X161950000Y-83300000D02*
|
||||
X161250000Y-83300000D01*
|
||||
X161250000Y-82100000D02*
|
||||
X161950000Y-82100000D01*
|
||||
X173300000Y-87750000D02*
|
||||
X173300000Y-88450000D01*
|
||||
X172100000Y-88450000D02*
|
||||
X172100000Y-87750000D01*
|
||||
X180700000Y-91200000D02*
|
||||
X180000000Y-91200000D01*
|
||||
X180000000Y-90000000D02*
|
||||
X180700000Y-90000000D01*
|
||||
X169550000Y-97149020D02*
|
||||
X169550000Y-94449020D01*
|
||||
X168050000Y-97149020D02*
|
||||
X168050000Y-94449020D01*
|
||||
X168950000Y-95649020D02*
|
||||
X168700000Y-95649020D01*
|
||||
X168700000Y-95649020D02*
|
||||
X168850000Y-95799020D01*
|
||||
X168450000Y-95899020D02*
|
||||
X169150000Y-95899020D01*
|
||||
X168800000Y-95549020D02*
|
||||
X168800000Y-95199020D01*
|
||||
X168800000Y-95899020D02*
|
||||
X168450000Y-95549020D01*
|
||||
X168450000Y-95549020D02*
|
||||
X169150000Y-95549020D01*
|
||||
X169150000Y-95549020D02*
|
||||
X168800000Y-95899020D01*
|
||||
X171550000Y-97149020D02*
|
||||
X171550000Y-94449020D01*
|
||||
X170050000Y-97149020D02*
|
||||
X170050000Y-94449020D01*
|
||||
X170950000Y-95649020D02*
|
||||
X170700000Y-95649020D01*
|
||||
X170700000Y-95649020D02*
|
||||
X170850000Y-95799020D01*
|
||||
X170450000Y-95899020D02*
|
||||
X171150000Y-95899020D01*
|
||||
X170800000Y-95549020D02*
|
||||
X170800000Y-95199020D01*
|
||||
X175900000Y-86400000D02*
|
||||
G75*
|
||||
G03X175900000Y-86400000I-100000J0D01*
|
||||
G01*
|
||||
X176350000Y-86650000D02*
|
||||
X175850000Y-86650000D01*
|
||||
X176350000Y-89550000D02*
|
||||
X176350000Y-86650000D01*
|
||||
X175850000Y-89550000D02*
|
||||
X176350000Y-89550000D01*
|
||||
X175850000Y-86650000D02*
|
||||
X175850000Y-89550000D01*
|
||||
X182730000Y-87730000D02*
|
||||
X182730000Y-92810000D01*
|
||||
X182730000Y-92810000D02*
|
||||
X185270000Y-92810000D01*
|
||||
X185270000Y-92810000D02*
|
||||
X185270000Y-87730000D01*
|
||||
X185550000Y-84910000D02*
|
||||
X185550000Y-86460000D01*
|
||||
X185270000Y-87730000D02*
|
||||
X182730000Y-87730000D01*
|
||||
X175580000Y-92550000D01*
|
||||
X175920000Y-92550000D02*
|
||||
X175920000Y-91550000D01*
|
||||
X177280000Y-91550000D02*
|
||||
X177280000Y-92550000D01*
|
||||
D10*
|
||||
X148000000Y-95350000D02*
|
||||
X148000000Y-83350000D01*
|
||||
X134100000Y-83350000D02*
|
||||
X152800000Y-83350000D01*
|
||||
X134100000Y-95350000D02*
|
||||
X134100000Y-83350000D01*
|
||||
X152900000Y-95350000D02*
|
||||
X141352380Y-88850000D02*
|
||||
X140352380Y-88850000D01*
|
||||
X140495238Y-88945238D01*
|
||||
X140590476Y-89040476D01*
|
||||
X140638095Y-89135714D01*
|
||||
%LPC*%
|
||||
D15*
|
||||
X165350000Y-82700000D03*
|
||||
X163850000Y-82700000D03*
|
||||
X162350000Y-82700000D03*
|
||||
X160850000Y-82700000D03*
|
||||
D16*
|
||||
X172700000Y-87350000D03*
|
||||
X172700000Y-88850000D03*
|
||||
D15*
|
||||
X181100000Y-90600000D03*
|
||||
X179600000Y-90600000D03*
|
||||
D17*
|
||||
X168800000Y-94500000D03*
|
||||
X168800000Y-96598040D03*
|
||||
X170800000Y-94500000D03*
|
||||
X170800000Y-96598040D03*
|
||||
X172800000Y-94500000D03*
|
||||
X172800000Y-96598040D03*
|
||||
D18*
|
||||
X175640000Y-81600000D03*
|
||||
D19*
|
||||
X173100000Y-81600000D03*
|
||||
X170560000Y-81600000D03*
|
||||
D20*
|
||||
X181100000Y-89000000D03*
|
||||
X179600000Y-89000000D03*
|
||||
X179600000Y-87300000D03*
|
||||
X181100000Y-87300000D03*
|
||||
D21*
|
||||
X156775000Y-92600000D03*
|
||||
X157425000Y-92600000D03*
|
||||
X158075000Y-92600000D03*
|
||||
X158725000Y-92600000D03*
|
||||
X159375000Y-92600000D03*
|
||||
X160025000Y-92600000D03*
|
||||
X160675000Y-92600000D03*
|
||||
X161325000Y-92600000D03*
|
||||
X161975000Y-92600000D03*
|
||||
X162625000Y-92600000D03*
|
||||
X163275000Y-92600000D03*
|
||||
X163925000Y-92600000D03*
|
||||
X164575000Y-92600000D03*
|
||||
X165225000Y-92600000D03*
|
||||
X165225000Y-85400000D03*
|
||||
X164575000Y-85400000D03*
|
||||
X163925000Y-85400000D03*
|
||||
X163275000Y-85400000D03*
|
||||
X162625000Y-85400000D03*
|
||||
X161975000Y-85400000D03*
|
||||
X161325000Y-85400000D03*
|
||||
X160675000Y-85400000D03*
|
||||
X160025000Y-85400000D03*
|
||||
X159375000Y-85400000D03*
|
||||
X158725000Y-85400000D03*
|
||||
X158075000Y-85400000D03*
|
||||
X157425000Y-85400000D03*
|
||||
X156775000Y-85400000D03*
|
||||
D22*
|
||||
X175000000Y-87150000D03*
|
||||
X175000000Y-88100000D03*
|
||||
X175000000Y-89050000D03*
|
||||
X177200000Y-89050000D03*
|
||||
X177200000Y-87150000D03*
|
||||
D23*
|
||||
X184000000Y-86460000D03*
|
||||
D24*
|
||||
X184000000Y-89000000D03*
|
||||
X184000000Y-91540000D03*
|
||||
D17*
|
||||
X174900000Y-94501960D03*
|
||||
X174900000Y-96600000D03*
|
||||
D15*
|
||||
X159000000Y-94600000D03*
|
||||
X160500000Y-94600000D03*
|
||||
X162350000Y-81100000D03*
|
||||
X160850000Y-81100000D03*
|
||||
D25*
|
||||
X171150000Y-88600000D03*
|
||||
X171150000Y-90100000D03*
|
||||
X169550000Y-88600000D03*
|
||||
X169550000Y-90100000D03*
|
||||
X168800000Y-91300000D03*
|
||||
X168800000Y-92800000D03*
|
||||
X170800000Y-91300000D03*
|
||||
X170800000Y-92800000D03*
|
||||
X172800000Y-91300000D03*
|
||||
X172800000Y-92800000D03*
|
||||
X174900000Y-91300000D03*
|
||||
X174900000Y-92800000D03*
|
||||
X176600000Y-91300000D03*
|
||||
X176600000Y-92800000D03*
|
||||
D26*
|
||||
X152900000Y-88350000D03*
|
||||
X152900000Y-90350000D03*
|
||||
X152900000Y-92850000D03*
|
||||
X152900000Y-85850000D03*
|
||||
D27*
|
||||
X150800000Y-83500000D03*
|
||||
X150800000Y-95200000D03*
|
||||
D28*
|
||||
X150800000Y-87100000D03*
|
||||
X150800000Y-91600000D03*
|
||||
M02*
|
||||
60
samples/Gerber Image/GOLMain_RevA-B.Paste.gbp
Normal file
60
samples/Gerber Image/GOLMain_RevA-B.Paste.gbp
Normal file
@@ -0,0 +1,60 @@
|
||||
G04 #@! TF.FileFunction,Paste,Bot*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 4.0.4-stable) date 03/23/17 03:26:40*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11R,1.100000X2.400000*%
|
||||
%ADD12O,1.100000X2.400000*%
|
||||
%ADD13R,2.000000X2.032000*%
|
||||
%ADD14R,1.727200X2.032000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X153000000Y-135000000D03*
|
||||
D12*
|
||||
X151000000Y-135000000D03*
|
||||
X149000000Y-135000000D03*
|
||||
X147000000Y-135000000D03*
|
||||
X145000000Y-135000000D03*
|
||||
X143000000Y-135000000D03*
|
||||
X141000000Y-135000000D03*
|
||||
X139000000Y-135000000D03*
|
||||
X139000000Y-119000000D03*
|
||||
X141000000Y-119000000D03*
|
||||
X143000000Y-119000000D03*
|
||||
X145000000Y-119000000D03*
|
||||
X147000000Y-119000000D03*
|
||||
X149000000Y-119000000D03*
|
||||
X151000000Y-119000000D03*
|
||||
X153000000Y-119000000D03*
|
||||
D13*
|
||||
X94500000Y-125500000D03*
|
||||
X97040000Y-125500000D03*
|
||||
X99580000Y-125500000D03*
|
||||
X94500000Y-128500000D03*
|
||||
X97040000Y-128500000D03*
|
||||
X99580000Y-128500000D03*
|
||||
X94500000Y-131500000D03*
|
||||
X97040000Y-131500000D03*
|
||||
X99580000Y-131500000D03*
|
||||
X94500000Y-134500000D03*
|
||||
X97040000Y-134500000D03*
|
||||
X99580000Y-134500000D03*
|
||||
X97040000Y-137500000D03*
|
||||
X99580000Y-137500000D03*
|
||||
D14*
|
||||
X94500000Y-140500000D03*
|
||||
D13*
|
||||
X97040000Y-140500000D03*
|
||||
X99580000Y-140500000D03*
|
||||
X94500000Y-143500000D03*
|
||||
X97040000Y-143500000D03*
|
||||
X99580000Y-143500000D03*
|
||||
X94500000Y-146500000D03*
|
||||
X97040000Y-146500000D03*
|
||||
X99580000Y-146500000D03*
|
||||
M02*
|
||||
26
samples/Gerber Image/nonaprs_contour.gko
Normal file
26
samples/Gerber Image/nonaprs_contour.gko
Normal file
@@ -0,0 +1,26 @@
|
||||
G04 MADE WITH FRITZING*
|
||||
G04 WWW.FRITZING.ORG*
|
||||
G04 DOUBLE SIDED*
|
||||
G04 HOLES PLATED*
|
||||
G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
|
||||
%ASAXBY*%
|
||||
%FSLAX23Y23*%
|
||||
%MOIN*%
|
||||
%OFA0B0*%
|
||||
%SFA1.0B1.0*%
|
||||
%ADD10R,1.267940X2.408830*%
|
||||
%ADD11C,0.008000*%
|
||||
%ADD10C,0.008*%
|
||||
%LNCONTOUR*%
|
||||
G90*
|
||||
G70*
|
||||
G54D10*
|
||||
G54D11*
|
||||
X4Y2405D02*
|
||||
X1264Y2405D01*
|
||||
X1264Y4D01*
|
||||
X4Y4D01*
|
||||
X4Y2405D01*
|
||||
D02*
|
||||
G04 End of contour*
|
||||
M02*
|
||||
1277
samples/Gerber Image/simonShield-B.Cu.gbr
Normal file
1277
samples/Gerber Image/simonShield-B.Cu.gbr
Normal file
File diff suppressed because it is too large
Load Diff
210
samples/Gerber Image/simonShield-B.Mask.gbr
Normal file
210
samples/Gerber Image/simonShield-B.Mask.gbr
Normal file
@@ -0,0 +1,210 @@
|
||||
G04 #@! TF.FileFunction,Soldermask,Bot*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 4.0.6-e0-6349~53~ubuntu16.04.1) date Sat Jul 1 03:26:18 2017*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,0.150000*%
|
||||
%ADD12C,2.000000*%
|
||||
%ADD13O,2.000000X2.000000*%
|
||||
%ADD14R,2.400000X1.924000*%
|
||||
%ADD15O,2.400000X1.924000*%
|
||||
%ADD16R,1.700000X1.700000*%
|
||||
%ADD17C,1.700000*%
|
||||
%ADD18C,2.398980*%
|
||||
%ADD19R,2.300000X2.400000*%
|
||||
%ADD20C,2.300000*%
|
||||
%ADD21R,2.127200X2.127200*%
|
||||
%ADD22O,2.127200X2.127200*%
|
||||
%ADD23C,1.400760*%
|
||||
%ADD24C,1.797000*%
|
||||
%ADD25C,2.000200*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X196250000Y-118000000D02*
|
||||
X113000000Y-118000000D01*
|
||||
X196250000Y-52750000D02*
|
||||
X196250000Y-118000000D01*
|
||||
X113000000Y-52750000D02*
|
||||
X196250000Y-52750000D01*
|
||||
X113000000Y-118000000D02*
|
||||
X113000000Y-52750000D01*
|
||||
D12*
|
||||
X145400000Y-68800000D03*
|
||||
D13*
|
||||
X145400000Y-58640000D03*
|
||||
D14*
|
||||
X189230000Y-61468000D03*
|
||||
D15*
|
||||
X191770000Y-61468000D03*
|
||||
X189230000Y-74168000D03*
|
||||
X189230000Y-109728000D03*
|
||||
X191770000Y-109728000D03*
|
||||
X191770000Y-97028000D03*
|
||||
D14*
|
||||
X118110000Y-61468000D03*
|
||||
D15*
|
||||
X120650000Y-61468000D03*
|
||||
X118110000Y-64008000D03*
|
||||
X120650000Y-64008000D03*
|
||||
X118110000Y-66548000D03*
|
||||
X120650000Y-66548000D03*
|
||||
X118110000Y-69088000D03*
|
||||
X120650000Y-69088000D03*
|
||||
X118110000Y-71628000D03*
|
||||
X120650000Y-71628000D03*
|
||||
X118110000Y-74168000D03*
|
||||
X120650000Y-74168000D03*
|
||||
X118110000Y-76708000D03*
|
||||
X120650000Y-76708000D03*
|
||||
X118110000Y-79248000D03*
|
||||
X120650000Y-79248000D03*
|
||||
X118110000Y-81788000D03*
|
||||
X120650000Y-81788000D03*
|
||||
X118110000Y-84328000D03*
|
||||
X120650000Y-84328000D03*
|
||||
X118110000Y-86868000D03*
|
||||
X120650000Y-86868000D03*
|
||||
X118110000Y-89408000D03*
|
||||
X120650000Y-89408000D03*
|
||||
X118110000Y-91948000D03*
|
||||
X120650000Y-91948000D03*
|
||||
X118110000Y-94488000D03*
|
||||
X120650000Y-94488000D03*
|
||||
X118110000Y-97028000D03*
|
||||
X120650000Y-97028000D03*
|
||||
X118110000Y-99568000D03*
|
||||
X120650000Y-99568000D03*
|
||||
X118110000Y-102108000D03*
|
||||
X120650000Y-102108000D03*
|
||||
X118110000Y-104648000D03*
|
||||
X120650000Y-104648000D03*
|
||||
X118110000Y-107188000D03*
|
||||
X120650000Y-107188000D03*
|
||||
X118110000Y-109728000D03*
|
||||
X120650000Y-109728000D03*
|
||||
D16*
|
||||
X135255000Y-64008000D03*
|
||||
D17*
|
||||
X135255000Y-61508000D03*
|
||||
D18*
|
||||
X164465000Y-85471000D03*
|
||||
X164465000Y-77851000D03*
|
||||
D19*
|
||||
X136017000Y-72644000D03*
|
||||
D20*
|
||||
X133477000Y-72644000D03*
|
||||
D19*
|
||||
X173863000Y-72644000D03*
|
||||
D20*
|
||||
X176403000Y-72644000D03*
|
||||
D19*
|
||||
X136017000Y-96139000D03*
|
||||
D20*
|
||||
X133477000Y-96139000D03*
|
||||
D19*
|
||||
X173863000Y-96012000D03*
|
||||
D20*
|
||||
X176403000Y-96012000D03*
|
||||
D21*
|
||||
X127007800Y-61542700D03*
|
||||
D22*
|
||||
X129547800Y-61542700D03*
|
||||
X127007800Y-64082700D03*
|
||||
X129547800Y-64082700D03*
|
||||
D23*
|
||||
X166243000Y-67056000D03*
|
||||
X164973000Y-68326000D03*
|
||||
X164973000Y-65786000D03*
|
||||
X128143000Y-71374000D03*
|
||||
X129413000Y-72644000D03*
|
||||
X126873000Y-72644000D03*
|
||||
X181737000Y-73914000D03*
|
||||
X180467000Y-72644000D03*
|
||||
X183007000Y-72644000D03*
|
||||
X128143000Y-94742000D03*
|
||||
X129413000Y-96012000D03*
|
||||
X126873000Y-96012000D03*
|
||||
X181737000Y-97282000D03*
|
||||
X180467000Y-96012000D03*
|
||||
X183007000Y-96012000D03*
|
||||
D18*
|
||||
X134239000Y-85344000D03*
|
||||
X134239000Y-77724000D03*
|
||||
X145415000Y-85344000D03*
|
||||
X145415000Y-77724000D03*
|
||||
X175641000Y-85217000D03*
|
||||
X175641000Y-77597000D03*
|
||||
X145415000Y-108966000D03*
|
||||
X145415000Y-101346000D03*
|
||||
X134239000Y-108458000D03*
|
||||
X134239000Y-100838000D03*
|
||||
X175641000Y-108585000D03*
|
||||
X175641000Y-100965000D03*
|
||||
X164465000Y-108839000D03*
|
||||
X164465000Y-101219000D03*
|
||||
X169164000Y-62611000D03*
|
||||
X161544000Y-62611000D03*
|
||||
X169164000Y-59563000D03*
|
||||
X161544000Y-59563000D03*
|
||||
X129921000Y-85217000D03*
|
||||
X129921000Y-77597000D03*
|
||||
X126365000Y-85217000D03*
|
||||
X126365000Y-77597000D03*
|
||||
X180086000Y-85217000D03*
|
||||
X180086000Y-77597000D03*
|
||||
X183515000Y-85217000D03*
|
||||
X183515000Y-77597000D03*
|
||||
X129921000Y-108458000D03*
|
||||
X129921000Y-100838000D03*
|
||||
X126365000Y-108458000D03*
|
||||
X126365000Y-100838000D03*
|
||||
X179959000Y-108585000D03*
|
||||
X179959000Y-100965000D03*
|
||||
X183515000Y-108585000D03*
|
||||
X183515000Y-100965000D03*
|
||||
D12*
|
||||
X155000000Y-99000000D03*
|
||||
D13*
|
||||
X155000000Y-88840000D03*
|
||||
D24*
|
||||
X137287000Y-77724000D03*
|
||||
X142367000Y-77724000D03*
|
||||
X137287000Y-85344000D03*
|
||||
X142367000Y-85344000D03*
|
||||
X148463000Y-77724000D03*
|
||||
X153543000Y-77724000D03*
|
||||
X148463000Y-85344000D03*
|
||||
X153543000Y-85344000D03*
|
||||
X172593000Y-85344000D03*
|
||||
X167513000Y-85344000D03*
|
||||
X172593000Y-77724000D03*
|
||||
X167513000Y-77724000D03*
|
||||
X161417000Y-85344000D03*
|
||||
X156337000Y-85344000D03*
|
||||
X161417000Y-77724000D03*
|
||||
X156337000Y-77724000D03*
|
||||
X148463000Y-101219000D03*
|
||||
X153543000Y-101219000D03*
|
||||
X148463000Y-108839000D03*
|
||||
X153543000Y-108839000D03*
|
||||
X137287000Y-101219000D03*
|
||||
X142367000Y-101219000D03*
|
||||
X137287000Y-108839000D03*
|
||||
X142367000Y-108839000D03*
|
||||
X172593000Y-108712000D03*
|
||||
X167513000Y-108712000D03*
|
||||
X172593000Y-101092000D03*
|
||||
X167513000Y-101092000D03*
|
||||
X161417000Y-108712000D03*
|
||||
X156337000Y-108712000D03*
|
||||
X161417000Y-101092000D03*
|
||||
X156337000Y-101092000D03*
|
||||
D25*
|
||||
X157178971Y-64124429D03*
|
||||
X150828971Y-64124429D03*
|
||||
M02*
|
||||
22
samples/Gerber Image/simonShield-Edge.Cuts.gbr
Normal file
22
samples/Gerber Image/simonShield-Edge.Cuts.gbr
Normal file
@@ -0,0 +1,22 @@
|
||||
G04 #@! TF.FileFunction,Profile,NP*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 4.0.6-e0-6349~53~ubuntu16.04.1) date Sat Jul 1 03:26:18 2017*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,0.150000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X196250000Y-118000000D02*
|
||||
X113000000Y-118000000D01*
|
||||
X196250000Y-52750000D02*
|
||||
X196250000Y-118000000D01*
|
||||
X113000000Y-52750000D02*
|
||||
X196250000Y-52750000D01*
|
||||
X113000000Y-118000000D02*
|
||||
X113000000Y-52750000D01*
|
||||
M02*
|
||||
287
samples/Gerber Image/simonShield-F.Cu.gbr
Normal file
287
samples/Gerber Image/simonShield-F.Cu.gbr
Normal file
@@ -0,0 +1,287 @@
|
||||
G04 #@! TF.FileFunction,Copper,L1,Top,Signal*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 4.0.6-e0-6349~53~ubuntu16.04.1) date Sat Jul 1 03:26:18 2017*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,0.150000*%
|
||||
%ADD12C,1.600000*%
|
||||
%ADD13O,1.600000X1.600000*%
|
||||
%ADD14R,2.000000X1.524000*%
|
||||
%ADD15O,2.000000X1.524000*%
|
||||
%ADD16R,1.300000X1.300000*%
|
||||
%ADD17C,1.300000*%
|
||||
%ADD18C,1.998980*%
|
||||
%ADD19R,1.900000X2.000000*%
|
||||
%ADD20C,1.900000*%
|
||||
%ADD21C,1.000000*%
|
||||
%ADD22R,1.727200X1.727200*%
|
||||
%ADD23O,1.727200X1.727200*%
|
||||
%ADD24C,1.000760*%
|
||||
%ADD25C,1.397000*%
|
||||
%ADD26C,1.600200*%
|
||||
%ADD27C,1.270000*%
|
||||
%ADD28C,0.304800*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X196250000Y-118000000D02*
|
||||
X113000000Y-118000000D01*
|
||||
X196250000Y-52750000D02*
|
||||
X196250000Y-118000000D01*
|
||||
X113000000Y-52750000D02*
|
||||
X196250000Y-52750000D01*
|
||||
X113000000Y-118000000D02*
|
||||
X113000000Y-52750000D01*
|
||||
D12*
|
||||
X145400000Y-68800000D03*
|
||||
D13*
|
||||
X145400000Y-58640000D03*
|
||||
D14*
|
||||
X189230000Y-61468000D03*
|
||||
D15*
|
||||
X191770000Y-61468000D03*
|
||||
X189230000Y-74168000D03*
|
||||
X191770000Y-64008000D03*
|
||||
X189230000Y-76708000D03*
|
||||
X191770000Y-66548000D03*
|
||||
X189230000Y-79248000D03*
|
||||
X191770000Y-69088000D03*
|
||||
X189230000Y-81788000D03*
|
||||
X191770000Y-71628000D03*
|
||||
X189230000Y-84328000D03*
|
||||
X191770000Y-74168000D03*
|
||||
X189230000Y-86868000D03*
|
||||
X191770000Y-76708000D03*
|
||||
X189230000Y-89408000D03*
|
||||
X191770000Y-79248000D03*
|
||||
X189230000Y-91948000D03*
|
||||
X191770000Y-81788000D03*
|
||||
X189230000Y-94488000D03*
|
||||
X191770000Y-84328000D03*
|
||||
X189230000Y-97028000D03*
|
||||
X191770000Y-86868000D03*
|
||||
X189230000Y-99568000D03*
|
||||
X191770000Y-89408000D03*
|
||||
X191770000Y-91948000D03*
|
||||
X189230000Y-102108000D03*
|
||||
X191770000Y-94488000D03*
|
||||
X191770000Y-99568000D03*
|
||||
X191770000Y-102108000D03*
|
||||
X191770000Y-104648000D03*
|
||||
X191770000Y-107188000D03*
|
||||
X189230000Y-104648000D03*
|
||||
X189230000Y-107188000D03*
|
||||
X189230000Y-64008000D03*
|
||||
X189230000Y-66548000D03*
|
||||
X189230000Y-69088000D03*
|
||||
X189230000Y-71628000D03*
|
||||
X189230000Y-109728000D03*
|
||||
X191770000Y-109728000D03*
|
||||
X191770000Y-97028000D03*
|
||||
D14*
|
||||
X118110000Y-61468000D03*
|
||||
D15*
|
||||
X120650000Y-61468000D03*
|
||||
X118110000Y-64008000D03*
|
||||
X120650000Y-64008000D03*
|
||||
X118110000Y-66548000D03*
|
||||
X120650000Y-66548000D03*
|
||||
X118110000Y-69088000D03*
|
||||
X120650000Y-69088000D03*
|
||||
X118110000Y-71628000D03*
|
||||
X120650000Y-71628000D03*
|
||||
X118110000Y-74168000D03*
|
||||
X120650000Y-74168000D03*
|
||||
X118110000Y-76708000D03*
|
||||
X120650000Y-76708000D03*
|
||||
X118110000Y-79248000D03*
|
||||
X120650000Y-79248000D03*
|
||||
X118110000Y-81788000D03*
|
||||
X120650000Y-81788000D03*
|
||||
X118110000Y-84328000D03*
|
||||
X120650000Y-84328000D03*
|
||||
X118110000Y-86868000D03*
|
||||
X120650000Y-86868000D03*
|
||||
X118110000Y-89408000D03*
|
||||
X120650000Y-89408000D03*
|
||||
X118110000Y-91948000D03*
|
||||
X120650000Y-91948000D03*
|
||||
X118110000Y-94488000D03*
|
||||
X120650000Y-94488000D03*
|
||||
X118110000Y-97028000D03*
|
||||
X120650000Y-97028000D03*
|
||||
X118110000Y-99568000D03*
|
||||
X120650000Y-99568000D03*
|
||||
X118110000Y-102108000D03*
|
||||
X120650000Y-102108000D03*
|
||||
X118110000Y-104648000D03*
|
||||
X120650000Y-104648000D03*
|
||||
X118110000Y-107188000D03*
|
||||
X120650000Y-107188000D03*
|
||||
X118110000Y-109728000D03*
|
||||
X120650000Y-109728000D03*
|
||||
D16*
|
||||
X135255000Y-64008000D03*
|
||||
D17*
|
||||
X135255000Y-61508000D03*
|
||||
D18*
|
||||
X164465000Y-85471000D03*
|
||||
X164465000Y-77851000D03*
|
||||
D19*
|
||||
X136017000Y-72644000D03*
|
||||
D20*
|
||||
X133477000Y-72644000D03*
|
||||
D19*
|
||||
X173863000Y-72644000D03*
|
||||
D20*
|
||||
X176403000Y-72644000D03*
|
||||
D19*
|
||||
X136017000Y-96139000D03*
|
||||
D20*
|
||||
X133477000Y-96139000D03*
|
||||
D19*
|
||||
X173863000Y-96012000D03*
|
||||
D20*
|
||||
X176403000Y-96012000D03*
|
||||
D21*
|
||||
X125250000Y-112250000D03*
|
||||
X160500000Y-70500000D03*
|
||||
X167250000Y-92250000D03*
|
||||
D22*
|
||||
X127007800Y-61542700D03*
|
||||
D23*
|
||||
X129547800Y-61542700D03*
|
||||
X127007800Y-64082700D03*
|
||||
X129547800Y-64082700D03*
|
||||
D24*
|
||||
X166243000Y-67056000D03*
|
||||
X164973000Y-68326000D03*
|
||||
X164973000Y-65786000D03*
|
||||
X128143000Y-71374000D03*
|
||||
X129413000Y-72644000D03*
|
||||
X126873000Y-72644000D03*
|
||||
X181737000Y-73914000D03*
|
||||
X180467000Y-72644000D03*
|
||||
X183007000Y-72644000D03*
|
||||
X128143000Y-94742000D03*
|
||||
X129413000Y-96012000D03*
|
||||
X126873000Y-96012000D03*
|
||||
X181737000Y-97282000D03*
|
||||
X180467000Y-96012000D03*
|
||||
X183007000Y-96012000D03*
|
||||
D18*
|
||||
X134239000Y-85344000D03*
|
||||
X134239000Y-77724000D03*
|
||||
X145415000Y-85344000D03*
|
||||
X145415000Y-77724000D03*
|
||||
X175641000Y-85217000D03*
|
||||
X175641000Y-77597000D03*
|
||||
X145415000Y-108966000D03*
|
||||
X145415000Y-101346000D03*
|
||||
X134239000Y-108458000D03*
|
||||
X134239000Y-100838000D03*
|
||||
X175641000Y-108585000D03*
|
||||
X175641000Y-100965000D03*
|
||||
X164465000Y-108839000D03*
|
||||
X164465000Y-101219000D03*
|
||||
X169164000Y-62611000D03*
|
||||
X161544000Y-62611000D03*
|
||||
X169164000Y-59563000D03*
|
||||
X161544000Y-59563000D03*
|
||||
X129921000Y-85217000D03*
|
||||
X129921000Y-77597000D03*
|
||||
X126365000Y-85217000D03*
|
||||
X126365000Y-77597000D03*
|
||||
X180086000Y-85217000D03*
|
||||
X180086000Y-77597000D03*
|
||||
X183515000Y-85217000D03*
|
||||
X183515000Y-77597000D03*
|
||||
X129921000Y-108458000D03*
|
||||
X129921000Y-100838000D03*
|
||||
X126365000Y-108458000D03*
|
||||
X126365000Y-100838000D03*
|
||||
X179959000Y-108585000D03*
|
||||
X179959000Y-100965000D03*
|
||||
X183515000Y-108585000D03*
|
||||
X183515000Y-100965000D03*
|
||||
D12*
|
||||
X155000000Y-99000000D03*
|
||||
D13*
|
||||
X155000000Y-88840000D03*
|
||||
D25*
|
||||
X137287000Y-77724000D03*
|
||||
X142367000Y-77724000D03*
|
||||
X137287000Y-85344000D03*
|
||||
X142367000Y-85344000D03*
|
||||
X148463000Y-77724000D03*
|
||||
X153543000Y-77724000D03*
|
||||
X148463000Y-85344000D03*
|
||||
X153543000Y-85344000D03*
|
||||
X172593000Y-85344000D03*
|
||||
X167513000Y-85344000D03*
|
||||
X172593000Y-77724000D03*
|
||||
X167513000Y-77724000D03*
|
||||
X161417000Y-85344000D03*
|
||||
X156337000Y-85344000D03*
|
||||
X161417000Y-77724000D03*
|
||||
X156337000Y-77724000D03*
|
||||
X148463000Y-101219000D03*
|
||||
X153543000Y-101219000D03*
|
||||
X148463000Y-108839000D03*
|
||||
X153543000Y-108839000D03*
|
||||
X137287000Y-101219000D03*
|
||||
X142367000Y-101219000D03*
|
||||
X137287000Y-108839000D03*
|
||||
X142367000Y-108839000D03*
|
||||
X172593000Y-108712000D03*
|
||||
X167513000Y-108712000D03*
|
||||
X172593000Y-101092000D03*
|
||||
X167513000Y-101092000D03*
|
||||
X161417000Y-108712000D03*
|
||||
X156337000Y-108712000D03*
|
||||
X161417000Y-101092000D03*
|
||||
X156337000Y-101092000D03*
|
||||
D26*
|
||||
X157178971Y-64124429D03*
|
||||
X150828971Y-64124429D03*
|
||||
D27*
|
||||
X137287000Y-80137000D03*
|
||||
X137287000Y-83439000D03*
|
||||
X148336000Y-79629000D03*
|
||||
X148463000Y-83185000D03*
|
||||
X172593000Y-80137000D03*
|
||||
X172593000Y-83312000D03*
|
||||
X161417000Y-80010000D03*
|
||||
X161417000Y-83439000D03*
|
||||
X137287000Y-103505000D03*
|
||||
X137287000Y-106680000D03*
|
||||
X172593000Y-103378000D03*
|
||||
X172593000Y-106934000D03*
|
||||
X148463000Y-103505000D03*
|
||||
X148463000Y-106934000D03*
|
||||
X161417000Y-103759000D03*
|
||||
X161417000Y-106934000D03*
|
||||
D28*
|
||||
X137287000Y-83439000D02*
|
||||
X137287000Y-80137000D01*
|
||||
X148336000Y-83058000D02*
|
||||
X148336000Y-79629000D01*
|
||||
X148463000Y-83185000D02*
|
||||
X148336000Y-83058000D01*
|
||||
X172593000Y-83312000D02*
|
||||
X172593000Y-80137000D01*
|
||||
X161417000Y-83439000D02*
|
||||
X161417000Y-80010000D01*
|
||||
X137287000Y-106680000D02*
|
||||
X137287000Y-103505000D01*
|
||||
X172593000Y-106934000D02*
|
||||
X172593000Y-103378000D01*
|
||||
X148463000Y-106934000D02*
|
||||
X148463000Y-103505000D01*
|
||||
X161417000Y-106934000D02*
|
||||
X161417000Y-103759000D01*
|
||||
M02*
|
||||
249
samples/Gerber Image/simonShield-F.Mask.gbr
Normal file
249
samples/Gerber Image/simonShield-F.Mask.gbr
Normal file
@@ -0,0 +1,249 @@
|
||||
G04 #@! TF.FileFunction,Soldermask,Top*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 4.0.6-e0-6349~53~ubuntu16.04.1) date Sat Jul 1 03:26:18 2017*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,0.150000*%
|
||||
%ADD12C,2.000000*%
|
||||
%ADD13O,2.000000X2.000000*%
|
||||
%ADD14R,2.400000X1.924000*%
|
||||
%ADD15O,2.400000X1.924000*%
|
||||
%ADD16R,1.700000X1.700000*%
|
||||
%ADD17C,1.700000*%
|
||||
%ADD18C,2.398980*%
|
||||
%ADD19R,2.300000X2.400000*%
|
||||
%ADD20C,2.300000*%
|
||||
%ADD21C,4.000000*%
|
||||
%ADD22R,2.127200X2.127200*%
|
||||
%ADD23O,2.127200X2.127200*%
|
||||
%ADD24C,1.400760*%
|
||||
%ADD25C,1.797000*%
|
||||
%ADD26C,2.000200*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X196250000Y-118000000D02*
|
||||
X113000000Y-118000000D01*
|
||||
X196250000Y-52750000D02*
|
||||
X196250000Y-118000000D01*
|
||||
X113000000Y-52750000D02*
|
||||
X196250000Y-52750000D01*
|
||||
X113000000Y-118000000D02*
|
||||
X113000000Y-52750000D01*
|
||||
D12*
|
||||
X145400000Y-68800000D03*
|
||||
D13*
|
||||
X145400000Y-58640000D03*
|
||||
D14*
|
||||
X189230000Y-61468000D03*
|
||||
D15*
|
||||
X191770000Y-61468000D03*
|
||||
X189230000Y-74168000D03*
|
||||
X191770000Y-64008000D03*
|
||||
X189230000Y-76708000D03*
|
||||
X191770000Y-66548000D03*
|
||||
X189230000Y-79248000D03*
|
||||
X191770000Y-69088000D03*
|
||||
X189230000Y-81788000D03*
|
||||
X191770000Y-71628000D03*
|
||||
X189230000Y-84328000D03*
|
||||
X191770000Y-74168000D03*
|
||||
X189230000Y-86868000D03*
|
||||
X191770000Y-76708000D03*
|
||||
X189230000Y-89408000D03*
|
||||
X191770000Y-79248000D03*
|
||||
X189230000Y-91948000D03*
|
||||
X191770000Y-81788000D03*
|
||||
X189230000Y-94488000D03*
|
||||
X191770000Y-84328000D03*
|
||||
X189230000Y-97028000D03*
|
||||
X191770000Y-86868000D03*
|
||||
X189230000Y-99568000D03*
|
||||
X191770000Y-89408000D03*
|
||||
X191770000Y-91948000D03*
|
||||
X189230000Y-102108000D03*
|
||||
X191770000Y-94488000D03*
|
||||
X191770000Y-99568000D03*
|
||||
X191770000Y-102108000D03*
|
||||
X191770000Y-104648000D03*
|
||||
X191770000Y-107188000D03*
|
||||
X189230000Y-104648000D03*
|
||||
X189230000Y-107188000D03*
|
||||
X189230000Y-64008000D03*
|
||||
X189230000Y-66548000D03*
|
||||
X189230000Y-69088000D03*
|
||||
X189230000Y-71628000D03*
|
||||
X189230000Y-109728000D03*
|
||||
X191770000Y-109728000D03*
|
||||
X191770000Y-97028000D03*
|
||||
D14*
|
||||
X118110000Y-61468000D03*
|
||||
D15*
|
||||
X120650000Y-61468000D03*
|
||||
X118110000Y-64008000D03*
|
||||
X120650000Y-64008000D03*
|
||||
X118110000Y-66548000D03*
|
||||
X120650000Y-66548000D03*
|
||||
X118110000Y-69088000D03*
|
||||
X120650000Y-69088000D03*
|
||||
X118110000Y-71628000D03*
|
||||
X120650000Y-71628000D03*
|
||||
X118110000Y-74168000D03*
|
||||
X120650000Y-74168000D03*
|
||||
X118110000Y-76708000D03*
|
||||
X120650000Y-76708000D03*
|
||||
X118110000Y-79248000D03*
|
||||
X120650000Y-79248000D03*
|
||||
X118110000Y-81788000D03*
|
||||
X120650000Y-81788000D03*
|
||||
X118110000Y-84328000D03*
|
||||
X120650000Y-84328000D03*
|
||||
X118110000Y-86868000D03*
|
||||
X120650000Y-86868000D03*
|
||||
X118110000Y-89408000D03*
|
||||
X120650000Y-89408000D03*
|
||||
X118110000Y-91948000D03*
|
||||
X120650000Y-91948000D03*
|
||||
X118110000Y-94488000D03*
|
||||
X120650000Y-94488000D03*
|
||||
X118110000Y-97028000D03*
|
||||
X120650000Y-97028000D03*
|
||||
X118110000Y-99568000D03*
|
||||
X120650000Y-99568000D03*
|
||||
X118110000Y-102108000D03*
|
||||
X120650000Y-102108000D03*
|
||||
X118110000Y-104648000D03*
|
||||
X120650000Y-104648000D03*
|
||||
X118110000Y-107188000D03*
|
||||
X120650000Y-107188000D03*
|
||||
X118110000Y-109728000D03*
|
||||
X120650000Y-109728000D03*
|
||||
D16*
|
||||
X135255000Y-64008000D03*
|
||||
D17*
|
||||
X135255000Y-61508000D03*
|
||||
D18*
|
||||
X164465000Y-85471000D03*
|
||||
X164465000Y-77851000D03*
|
||||
D19*
|
||||
X136017000Y-72644000D03*
|
||||
D20*
|
||||
X133477000Y-72644000D03*
|
||||
D19*
|
||||
X173863000Y-72644000D03*
|
||||
D20*
|
||||
X176403000Y-72644000D03*
|
||||
D19*
|
||||
X136017000Y-96139000D03*
|
||||
D20*
|
||||
X133477000Y-96139000D03*
|
||||
D19*
|
||||
X173863000Y-96012000D03*
|
||||
D20*
|
||||
X176403000Y-96012000D03*
|
||||
D21*
|
||||
X125250000Y-112250000D03*
|
||||
X160500000Y-70500000D03*
|
||||
X167250000Y-92250000D03*
|
||||
D22*
|
||||
X127007800Y-61542700D03*
|
||||
D23*
|
||||
X129547800Y-61542700D03*
|
||||
X127007800Y-64082700D03*
|
||||
X129547800Y-64082700D03*
|
||||
D24*
|
||||
X166243000Y-67056000D03*
|
||||
X164973000Y-68326000D03*
|
||||
X164973000Y-65786000D03*
|
||||
X128143000Y-71374000D03*
|
||||
X129413000Y-72644000D03*
|
||||
X126873000Y-72644000D03*
|
||||
X181737000Y-73914000D03*
|
||||
X180467000Y-72644000D03*
|
||||
X183007000Y-72644000D03*
|
||||
X128143000Y-94742000D03*
|
||||
X129413000Y-96012000D03*
|
||||
X126873000Y-96012000D03*
|
||||
X181737000Y-97282000D03*
|
||||
X180467000Y-96012000D03*
|
||||
X183007000Y-96012000D03*
|
||||
D18*
|
||||
X134239000Y-85344000D03*
|
||||
X134239000Y-77724000D03*
|
||||
X145415000Y-85344000D03*
|
||||
X145415000Y-77724000D03*
|
||||
X175641000Y-85217000D03*
|
||||
X175641000Y-77597000D03*
|
||||
X145415000Y-108966000D03*
|
||||
X145415000Y-101346000D03*
|
||||
X134239000Y-108458000D03*
|
||||
X134239000Y-100838000D03*
|
||||
X175641000Y-108585000D03*
|
||||
X175641000Y-100965000D03*
|
||||
X164465000Y-108839000D03*
|
||||
X164465000Y-101219000D03*
|
||||
X169164000Y-62611000D03*
|
||||
X161544000Y-62611000D03*
|
||||
X169164000Y-59563000D03*
|
||||
X161544000Y-59563000D03*
|
||||
X129921000Y-85217000D03*
|
||||
X129921000Y-77597000D03*
|
||||
X126365000Y-85217000D03*
|
||||
X126365000Y-77597000D03*
|
||||
X180086000Y-85217000D03*
|
||||
X180086000Y-77597000D03*
|
||||
X183515000Y-85217000D03*
|
||||
X183515000Y-77597000D03*
|
||||
X129921000Y-108458000D03*
|
||||
X129921000Y-100838000D03*
|
||||
X126365000Y-108458000D03*
|
||||
X126365000Y-100838000D03*
|
||||
X179959000Y-108585000D03*
|
||||
X179959000Y-100965000D03*
|
||||
X183515000Y-108585000D03*
|
||||
X183515000Y-100965000D03*
|
||||
D12*
|
||||
X155000000Y-99000000D03*
|
||||
D13*
|
||||
X155000000Y-88840000D03*
|
||||
D25*
|
||||
X137287000Y-77724000D03*
|
||||
X142367000Y-77724000D03*
|
||||
X137287000Y-85344000D03*
|
||||
X142367000Y-85344000D03*
|
||||
X148463000Y-77724000D03*
|
||||
X153543000Y-77724000D03*
|
||||
X148463000Y-85344000D03*
|
||||
X153543000Y-85344000D03*
|
||||
X172593000Y-85344000D03*
|
||||
X167513000Y-85344000D03*
|
||||
X172593000Y-77724000D03*
|
||||
X167513000Y-77724000D03*
|
||||
X161417000Y-85344000D03*
|
||||
X156337000Y-85344000D03*
|
||||
X161417000Y-77724000D03*
|
||||
X156337000Y-77724000D03*
|
||||
X148463000Y-101219000D03*
|
||||
X153543000Y-101219000D03*
|
||||
X148463000Y-108839000D03*
|
||||
X153543000Y-108839000D03*
|
||||
X137287000Y-101219000D03*
|
||||
X142367000Y-101219000D03*
|
||||
X137287000Y-108839000D03*
|
||||
X142367000Y-108839000D03*
|
||||
X172593000Y-108712000D03*
|
||||
X167513000Y-108712000D03*
|
||||
X172593000Y-101092000D03*
|
||||
X167513000Y-101092000D03*
|
||||
X161417000Y-108712000D03*
|
||||
X156337000Y-108712000D03*
|
||||
X161417000Y-101092000D03*
|
||||
X156337000Y-101092000D03*
|
||||
D26*
|
||||
X157178971Y-64124429D03*
|
||||
X150828971Y-64124429D03*
|
||||
M02*
|
||||
392
samples/Gerber Image/simonShield-F.SilkS.gbr
Normal file
392
samples/Gerber Image/simonShield-F.SilkS.gbr
Normal file
@@ -0,0 +1,392 @@
|
||||
G04 #@! TF.FileFunction,Legend,Top*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 4.0.6-e0-6349~53~ubuntu16.04.1) date Sat Jul 1 03:26:18 2017*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,0.150000*%
|
||||
%ADD12C,0.187500*%
|
||||
%ADD13C,0.125000*%
|
||||
%ADD14C,0.300000*%
|
||||
%ADD15C,0.120000*%
|
||||
%ADD16C,0.002540*%
|
||||
%ADD17C,0.200000*%
|
||||
%ADD18C,0.170000*%
|
||||
%ADD19C,0.175000*%
|
||||
%ADD20C,0.180000*%
|
||||
%ADD21C,0.190000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X196250000Y-118000000D02*
|
||||
X113000000Y-118000000D01*
|
||||
X196250000Y-52750000D02*
|
||||
X196250000Y-118000000D01*
|
||||
X113000000Y-52750000D02*
|
||||
X196250000Y-52750000D01*
|
||||
X113000000Y-118000000D02*
|
||||
X113000000Y-52750000D01*
|
||||
D12*
|
||||
X171964285Y-68083333D02*
|
||||
X123317001Y-106767381D01*
|
||||
X123650334Y-106767381D02*
|
||||
X123745572Y-106767381D01*
|
||||
X123793191Y-106815000D01*
|
||||
X123840810Y-106910238D01*
|
||||
X123864619Y-107100714D01*
|
||||
X123864619Y-107434048D01*
|
||||
X123840810Y-107624524D01*
|
||||
X123793191Y-107719762D01*
|
||||
X123745572Y-107767381D01*
|
||||
X123650334Y-107767381D01*
|
||||
X123602715Y-107719762D01*
|
||||
X123555096Y-107624524D01*
|
||||
X123531286Y-107434048D01*
|
||||
X123531286Y-107100714D01*
|
||||
X123555096Y-106910238D01*
|
||||
X123602715Y-106815000D01*
|
||||
X123650334Y-106767381D01*
|
||||
X124031287Y-106767381D02*
|
||||
X196102429Y-69431810D01*
|
||||
D13*
|
||||
X193274334Y-66254381D02*
|
||||
X193393381Y-67254381D01*
|
||||
X193488619Y-66540095D01*
|
||||
X193583857Y-67254381D01*
|
||||
X193702905Y-66254381D01*
|
||||
X193869572Y-66968667D02*
|
||||
X194107667Y-66968667D01*
|
||||
X193821953Y-67254381D02*
|
||||
X193988620Y-66254381D01*
|
||||
X194155286Y-67254381D01*
|
||||
X194321953Y-67254381D02*
|
||||
X194321953Y-66254381D01*
|
||||
X194607667Y-67254381D02*
|
||||
X194393381Y-66682952D01*
|
||||
X194607667Y-66254381D02*
|
||||
X194321953Y-66825810D01*
|
||||
X194821953Y-66730571D02*
|
||||
X194988619Y-66730571D01*
|
||||
X195060048Y-67254381D02*
|
||||
X194821953Y-67254381D01*
|
||||
X194821953Y-66254381D01*
|
||||
X195060048Y-66254381D01*
|
||||
X195274334Y-66254381D02*
|
||||
X195274334Y-67063905D01*
|
||||
X195298143Y-67159143D01*
|
||||
X195321953Y-67206762D01*
|
||||
X195369572Y-67254381D01*
|
||||
X195464810Y-67254381D01*
|
||||
X195512429Y-67206762D01*
|
||||
X195536238Y-67159143D01*
|
||||
X195560048Y-67063905D01*
|
||||
X195560048Y-66254381D01*
|
||||
X195798144Y-67254381D02*
|
||||
X195798144Y-66254381D01*
|
||||
X195988620Y-66254381D01*
|
||||
X196036239Y-66302000D01*
|
||||
X196060048Y-66349619D01*
|
||||
X196083858Y-66444857D01*
|
||||
X196083858Y-66587714D01*
|
||||
X196060048Y-66682952D01*
|
||||
X196036239Y-66730571D01*
|
||||
X195988620Y-66778190D01*
|
||||
X195798144Y-66778190D01*
|
||||
D17*
|
||||
X193929096Y-64016000D02*
|
||||
X193833858Y-63968381D01*
|
||||
X193691001Y-63968381D01*
|
||||
X193548143Y-64016000D01*
|
||||
X193452905Y-64111238D01*
|
||||
X193405286Y-64206476D01*
|
||||
X193357667Y-64396952D01*
|
||||
X193357667Y-64539810D01*
|
||||
X193405286Y-64730286D01*
|
||||
X193452905Y-64825524D01*
|
||||
X193548143Y-64920762D01*
|
||||
X193691001Y-64968381D01*
|
||||
X193786239Y-64968381D01*
|
||||
X193929096Y-64920762D01*
|
||||
X193976715Y-64873143D01*
|
||||
X193976715Y-64539810D01*
|
||||
X193786239Y-64539810D01*
|
||||
X194405286Y-64968381D02*
|
||||
X194405286Y-63968381D01*
|
||||
X194976715Y-64968381D01*
|
||||
X194976715Y-63968381D01*
|
||||
X195452905Y-64968381D02*
|
||||
X195452905Y-63968381D01*
|
||||
X195691000Y-63968381D01*
|
||||
X195833858Y-64016000D01*
|
||||
X195929096Y-64111238D01*
|
||||
X195976715Y-64206476D01*
|
||||
X196024334Y-64396952D01*
|
||||
X196024334Y-64539810D01*
|
||||
X195976715Y-64730286D01*
|
||||
X195929096Y-64825524D01*
|
||||
X195833858Y-64920762D01*
|
||||
X195691000Y-64968381D01*
|
||||
X195452905Y-64968381D01*
|
||||
X193278286Y-61539429D02*
|
||||
X194040191Y-61539429D01*
|
||||
X193659239Y-61920381D02*
|
||||
X193659239Y-61158476D01*
|
||||
X194992572Y-60920381D02*
|
||||
X194516381Y-60920381D01*
|
||||
X194468762Y-61396571D01*
|
||||
X194516381Y-61348952D01*
|
||||
X194611619Y-61301333D01*
|
||||
X194849715Y-61301333D01*
|
||||
X194944953Y-61348952D01*
|
||||
X194992572Y-61396571D01*
|
||||
X186697905Y-84637524D01*
|
||||
X186602667Y-84732762D01*
|
||||
X186459809Y-84780381D01*
|
||||
X186221714Y-84780381D01*
|
||||
X187174095Y-84494667D02*
|
||||
X187650286Y-84494667D01*
|
||||
X187078857Y-84780381D02*
|
||||
X187412190Y-83780381D01*
|
||||
X187745524Y-84780381D01*
|
||||
D13*
|
||||
X185555048Y-81240381D02*
|
||||
X185721715Y-82240381D01*
|
||||
X185888381Y-81240381D01*
|
||||
X186055048Y-82240381D02*
|
||||
X186055048Y-81240381D01*
|
||||
X186174095Y-81240381D01*
|
||||
X186245524Y-81288000D01*
|
||||
X186293143Y-81383238D01*
|
||||
X186316952Y-81478476D01*
|
||||
X186340762Y-81668952D01*
|
||||
X186340762Y-81811810D01*
|
||||
X186316952Y-82002286D01*
|
||||
X186293143Y-82097524D01*
|
||||
X186245524Y-82192762D01*
|
||||
X186174095Y-82240381D01*
|
||||
X186055048Y-82240381D01*
|
||||
X186555048Y-82240381D02*
|
||||
X186555048Y-81240381D01*
|
||||
X186674095Y-81240381D01*
|
||||
X186745524Y-81288000D01*
|
||||
X186793143Y-81383238D01*
|
||||
X186816952Y-81478476D01*
|
||||
X186840762Y-81668952D01*
|
||||
X186840762Y-81811810D01*
|
||||
X186816952Y-82002286D01*
|
||||
X186793143Y-82097524D01*
|
||||
X186745524Y-82192762D01*
|
||||
X186674095Y-82240381D01*
|
||||
X186555048Y-82240381D01*
|
||||
X187031238Y-81954667D02*
|
||||
X187269333Y-81954667D01*
|
||||
X186983619Y-82240381D02*
|
||||
X187150286Y-81240381D01*
|
||||
X187316952Y-82240381D01*
|
||||
D17*
|
||||
X185245524Y-79700381D02*
|
||||
X185245524Y-78700381D01*
|
||||
X185483619Y-78700381D01*
|
||||
X185626477Y-78748000D01*
|
||||
X185721715Y-78843238D01*
|
||||
X185769334Y-78938476D01*
|
||||
X185816953Y-79128952D01*
|
||||
X185816953Y-79271810D01*
|
||||
X185769334Y-79462286D01*
|
||||
X185721715Y-79557524D01*
|
||||
X185626477Y-79652762D01*
|
||||
X185483619Y-79700381D01*
|
||||
X185245524Y-79700381D01*
|
||||
X186197905Y-79414667D02*
|
||||
X186674096Y-79414667D01*
|
||||
X186102667Y-79700381D02*
|
||||
X186436000Y-78700381D01*
|
||||
X186769334Y-79700381D01*
|
||||
X187674096Y-79605143D02*
|
||||
X187626477Y-79652762D01*
|
||||
X187483620Y-79700381D01*
|
||||
X187388382Y-79700381D01*
|
||||
X187245524Y-79652762D01*
|
||||
X187150286Y-79557524D01*
|
||||
X187102667Y-79462286D01*
|
||||
X187055048Y-79271810D01*
|
||||
X187055048Y-79128952D01*
|
||||
X187102667Y-78938476D01*
|
||||
X187150286Y-78843238D01*
|
||||
X187245524Y-78748000D01*
|
||||
X187388382Y-78700381D01*
|
||||
X187483620Y-78700381D01*
|
||||
X187626477Y-78748000D01*
|
||||
X187674096Y-78795619D01*
|
||||
X185745524Y-77065143D02*
|
||||
X185697905Y-77112762D01*
|
||||
X185555048Y-77160381D01*
|
||||
X185459810Y-77160381D01*
|
||||
X185316952Y-77112762D01*
|
||||
X185221714Y-77017524D01*
|
||||
X185174095Y-76922286D01*
|
||||
X185126476Y-76731810D01*
|
||||
X185126476Y-76588952D01*
|
||||
X185174095Y-76398476D01*
|
||||
X185221714Y-76303238D01*
|
||||
X185316952Y-76208000D01*
|
||||
X185459810Y-76160381D01*
|
||||
X185555048Y-76160381D01*
|
||||
X185697905Y-76208000D01*
|
||||
X185745524Y-76255619D01*
|
||||
X186174095Y-77160381D02*
|
||||
X186174095Y-76160381D01*
|
||||
X186174095Y-76636571D02*
|
||||
X186745524Y-76636571D01*
|
||||
X186745524Y-77160381D02*
|
||||
X186745524Y-76160381D01*
|
||||
X187745524Y-77160381D02*
|
||||
X187174095Y-77160381D01*
|
||||
X187459809Y-77160381D02*
|
||||
X187459809Y-76160381D01*
|
||||
X187364571Y-76303238D01*
|
||||
X187269333Y-76398476D01*
|
||||
X187174095Y-76446095D01*
|
||||
X185491524Y-74525143D02*
|
||||
X185443905Y-74572762D01*
|
||||
X185301048Y-74620381D01*
|
||||
X185205810Y-74620381D01*
|
||||
X185062952Y-74572762D01*
|
||||
X184967714Y-74477524D01*
|
||||
X184920095Y-74382286D01*
|
||||
X184872476Y-74191810D01*
|
||||
X184872476Y-74048952D01*
|
||||
X184920095Y-73858476D01*
|
||||
X184967714Y-73763238D01*
|
||||
X185062952Y-73668000D01*
|
||||
X185205810Y-73620381D01*
|
||||
X185301048Y-73620381D01*
|
||||
X185443905Y-73668000D01*
|
||||
X185491524Y-73715619D01*
|
||||
X185920095Y-74620381D02*
|
||||
X185920095Y-73620381D01*
|
||||
X185920095Y-74096571D02*
|
||||
X186491524Y-74096571D01*
|
||||
X186491524Y-74620381D02*
|
||||
X186491524Y-73620381D01*
|
||||
X186920095Y-73715619D02*
|
||||
X186967714Y-73668000D01*
|
||||
X187062952Y-73620381D01*
|
||||
X187301048Y-73620381D01*
|
||||
X187396286Y-73668000D01*
|
||||
X187443905Y-73715619D01*
|
||||
X187491524Y-73810857D01*
|
||||
X187491524Y-73906095D01*
|
||||
X187443905Y-74048952D01*
|
||||
X186872476Y-74620381D01*
|
||||
X187491524Y-74620381D01*
|
||||
X185491524Y-71985143D02*
|
||||
X185443905Y-72032762D01*
|
||||
X185301048Y-72080381D01*
|
||||
X185205810Y-72080381D01*
|
||||
X185062952Y-72032762D01*
|
||||
X184967714Y-71937524D01*
|
||||
X184920095Y-71842286D01*
|
||||
X184872476Y-71651810D01*
|
||||
X184872476Y-71508952D01*
|
||||
X184920095Y-71318476D01*
|
||||
X184967714Y-71223238D01*
|
||||
X185062952Y-71128000D01*
|
||||
X185205810Y-71080381D01*
|
||||
X185301048Y-71080381D01*
|
||||
X185443905Y-71128000D01*
|
||||
X185491524Y-71175619D01*
|
||||
X185920095Y-72080381D02*
|
||||
X185920095Y-71080381D01*
|
||||
X185920095Y-71556571D02*
|
||||
X186491524Y-71556571D01*
|
||||
X186491524Y-72080381D02*
|
||||
X186491524Y-71080381D01*
|
||||
X186872476Y-71080381D02*
|
||||
X187491524Y-71080381D01*
|
||||
X187158190Y-71461333D01*
|
||||
X187301048Y-71461333D01*
|
||||
X187396286Y-71508952D01*
|
||||
X187443905Y-71556571D01*
|
||||
X187491524Y-71651810D01*
|
||||
X187491524Y-71889905D01*
|
||||
X187443905Y-71985143D01*
|
||||
X187396286Y-72032762D01*
|
||||
X187301048Y-72080381D01*
|
||||
X187015333Y-72080381D01*
|
||||
X186920095Y-72032762D01*
|
||||
X186872476Y-71985143D01*
|
||||
D13*
|
||||
X186094762Y-68588000D02*
|
||||
X186047143Y-68540381D01*
|
||||
X185975715Y-68540381D01*
|
||||
X185904286Y-68588000D01*
|
||||
X185856667Y-68683238D01*
|
||||
X185832858Y-68778476D01*
|
||||
X185809048Y-68968952D01*
|
||||
X185809048Y-69111810D01*
|
||||
X185832858Y-69302286D01*
|
||||
X185856667Y-69397524D01*
|
||||
X185904286Y-69492762D01*
|
||||
X185975715Y-69540381D01*
|
||||
X186023334Y-69540381D01*
|
||||
X186094762Y-69492762D01*
|
||||
X186118572Y-69445143D01*
|
||||
X186118572Y-69111810D01*
|
||||
X186023334Y-69111810D01*
|
||||
X186332858Y-69540381D02*
|
||||
X186332858Y-68540381D01*
|
||||
X186618572Y-69540381D01*
|
||||
X186618572Y-68540381D01*
|
||||
X186856668Y-69540381D02*
|
||||
X186856668Y-68540381D01*
|
||||
X186975715Y-68540381D01*
|
||||
X187047144Y-68588000D01*
|
||||
X187094763Y-68683238D01*
|
||||
X187118572Y-68778476D01*
|
||||
X187142382Y-68968952D01*
|
||||
X187142382Y-69111810D01*
|
||||
X187118572Y-69302286D01*
|
||||
X187094763Y-69397524D01*
|
||||
X187047144Y-69492762D01*
|
||||
X186975715Y-69540381D01*
|
||||
X186856668Y-69540381D01*
|
||||
X187332858Y-69254667D02*
|
||||
X187570953Y-69254667D01*
|
||||
X187285239Y-69540381D02*
|
||||
X187451906Y-68540381D01*
|
||||
X187618572Y-69540381D01*
|
||||
D17*
|
||||
X185459810Y-67000381D02*
|
||||
X185459810Y-66000381D01*
|
||||
X185888381Y-66952762D02*
|
||||
X186031238Y-67000381D01*
|
||||
X186269334Y-67000381D01*
|
||||
X186364572Y-66952762D01*
|
||||
X186412191Y-66905143D01*
|
||||
X186459810Y-66809905D01*
|
||||
X186459810Y-66714667D01*
|
||||
X186412191Y-66619429D01*
|
||||
X186364572Y-66571810D01*
|
||||
X186269334Y-66524190D01*
|
||||
X186078857Y-66476571D01*
|
||||
X185983619Y-66428952D01*
|
||||
X185936000Y-66381333D01*
|
||||
X185888381Y-66286095D01*
|
||||
X185888381Y-66190857D01*
|
||||
X185936000Y-66095619D01*
|
||||
X185983619Y-66048000D01*
|
||||
X186078857Y-66000381D01*
|
||||
X186316953Y-66000381D01*
|
||||
X186459810Y-66048000D01*
|
||||
X186888381Y-67000381D02*
|
||||
X186888381Y-66000381D01*
|
||||
X170488095Y-97273810D01*
|
||||
X146122399Y-64195858D02*
|
||||
X146884304Y-64195858D01*
|
||||
X146503352Y-64576810D02*
|
||||
X146503352Y-63814905D01*
|
||||
M02*
|
||||
805
samples/Gerber Image/simonShield-drl_map.gbr
Normal file
805
samples/Gerber Image/simonShield-drl_map.gbr
Normal file
@@ -0,0 +1,805 @@
|
||||
%FSLAX45Y45*%
|
||||
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 4.0.6-e0-6349~53~ubuntu16.04.1) date Sat Jul 1 03:26:22 2017*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.127000*%
|
||||
%ADD11C,0.150000*%
|
||||
%ADD12C,0.200000*%
|
||||
%ADD13C,0.300000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
D11*
|
||||
X19625000Y-11800000D02*
|
||||
X11300000Y-11800000D01*
|
||||
X19625000Y-5275000D02*
|
||||
X19625000Y-11800000D01*
|
||||
X11300000Y-5275000D02*
|
||||
X19625000Y-5275000D01*
|
||||
X11300000Y-11800000D02*
|
||||
X11300000Y-5275000D01*
|
||||
D12*
|
||||
X12657300Y-7234400D02*
|
||||
X12717300Y-7294400D01*
|
||||
X12717300Y-7234400D02*
|
||||
X12657300Y-7294400D01*
|
||||
X12657300Y-9571200D02*
|
||||
X18270700Y-9571200D02*
|
||||
X18330700Y-9631200D01*
|
||||
X18330700Y-9571200D02*
|
||||
X18270700Y-9631200D01*
|
||||
X13764260Y-8013700D02*
|
||||
G75*
|
||||
G03X13764260Y-8013700I-35560J0D01*
|
||||
G01*
|
||||
X13764260Y-8343900D02*
|
||||
G75*
|
||||
G03X13764260Y-8343900I-35560J0D01*
|
||||
G01*
|
||||
X13764260Y-10350500D02*
|
||||
G75*
|
||||
G03X13764260Y-10350500I-35560J0D01*
|
||||
G01*
|
||||
X13764260Y-10668000D02*
|
||||
G75*
|
||||
G03X13764260Y-10668000I-35560J0D01*
|
||||
G01*
|
||||
X14869160Y-7962900D02*
|
||||
G75*
|
||||
G03X14869160Y-7962900I-35560J0D01*
|
||||
G01*
|
||||
X14881860Y-8318500D02*
|
||||
G75*
|
||||
G03X14881860Y-8318500I-35560J0D01*
|
||||
G01*
|
||||
X14881860Y-10350500D02*
|
||||
G75*
|
||||
G03X14881860Y-10350500I-35560J0D01*
|
||||
G01*
|
||||
X14881860Y-10693400D02*
|
||||
G75*
|
||||
G03X14881860Y-10693400I-35560J0D01*
|
||||
G01*
|
||||
X16177260Y-8001000D02*
|
||||
G75*
|
||||
G03X16177260Y-8001000I-35560J0D01*
|
||||
G01*
|
||||
X16177260Y-8343900D02*
|
||||
G75*
|
||||
G03X16177260Y-8343900I-35560J0D01*
|
||||
G01*
|
||||
X16177260Y-10375900D02*
|
||||
G75*
|
||||
G03X16177260Y-10375900I-35560J0D01*
|
||||
G01*
|
||||
X16177260Y-10693400D02*
|
||||
G75*
|
||||
G03X16177260Y-10693400I-35560J0D01*
|
||||
G01*
|
||||
X17294860Y-8013700D02*
|
||||
G75*
|
||||
G03X17294860Y-8013700I-35560J0D01*
|
||||
G01*
|
||||
X17294860Y-8331200D02*
|
||||
G75*
|
||||
G03X17294860Y-8331200I-35560J0D01*
|
||||
G01*
|
||||
X17294860Y-10337800D02*
|
||||
G75*
|
||||
G03X17294860Y-10337800I-35560J0D01*
|
||||
G01*
|
||||
X17294860Y-10693400D02*
|
||||
G75*
|
||||
G03X17294860Y-10693400I-35560J0D01*
|
||||
G01*
|
||||
X13525500Y-6360800D02*
|
||||
X13525500Y-6440800D01*
|
||||
X13485500Y-6400800D02*
|
||||
X13565500Y-6400800D01*
|
||||
X14540000Y-5824000D02*
|
||||
X14540000Y-5904000D01*
|
||||
X14500000Y-5864000D02*
|
||||
X14580000Y-5864000D01*
|
||||
X14540000Y-6840000D02*
|
||||
X14540000Y-6920000D01*
|
||||
X14500000Y-6880000D02*
|
||||
X14580000Y-6880000D01*
|
||||
X15500000Y-8844000D02*
|
||||
X15500000Y-8924000D01*
|
||||
X15460000Y-8884000D02*
|
||||
X15540000Y-8884000D01*
|
||||
X15500000Y-9860000D02*
|
||||
X15500000Y-9940000D01*
|
||||
X15460000Y-9900000D02*
|
||||
X15540000Y-9900000D01*
|
||||
X12586462Y-7809738D01*
|
||||
X12686538Y-7759700D02*
|
||||
G75*
|
||||
G03X12686538Y-7759700I-50038J0D01*
|
||||
G01*
|
||||
X12586462Y-8471662D02*
|
||||
X12686538Y-8571738D01*
|
||||
X12686538Y-8471662D02*
|
||||
X12586462Y-8571738D01*
|
||||
X12686538Y-8521700D02*
|
||||
G75*
|
||||
G03X12686538Y-8521700I-50038J0D01*
|
||||
G01*
|
||||
X12586462Y-10033762D02*
|
||||
X12686538Y-10133838D01*
|
||||
X12686538Y-10033762D02*
|
||||
X12586462Y-10133838D01*
|
||||
X12686538Y-10083800D02*
|
||||
G75*
|
||||
G03X12686538Y-10083800I-50038J0D01*
|
||||
G01*
|
||||
X12586462Y-10795762D02*
|
||||
X12686538Y-10895838D01*
|
||||
X12686538Y-10795762D02*
|
||||
X12586462Y-10895838D01*
|
||||
X12686538Y-10845800D02*
|
||||
G75*
|
||||
G03X12686538Y-10845800I-50038J0D01*
|
||||
G01*
|
||||
X12942062Y-7709662D02*
|
||||
X13042138Y-7809738D01*
|
||||
X13042138Y-7709662D02*
|
||||
X12942062Y-7809738D01*
|
||||
X13042138Y-7759700D02*
|
||||
G75*
|
||||
G03X13042138Y-7759700I-50038J0D01*
|
||||
G01*
|
||||
X12942062Y-8471662D02*
|
||||
X13042138Y-8571738D01*
|
||||
X13042138Y-8471662D02*
|
||||
X12942062Y-8571738D01*
|
||||
X13042138Y-8521700D02*
|
||||
G75*
|
||||
G03X13042138Y-8521700I-50038J0D01*
|
||||
G01*
|
||||
X12942062Y-10033762D02*
|
||||
X13042138Y-10133838D01*
|
||||
X13042138Y-10033762D02*
|
||||
X12942062Y-10133838D01*
|
||||
X13042138Y-10083800D02*
|
||||
G75*
|
||||
G03X13042138Y-10083800I-50038J0D01*
|
||||
G01*
|
||||
X12942062Y-10795762D02*
|
||||
X13042138Y-10895838D01*
|
||||
X13042138Y-10795762D02*
|
||||
X12942062Y-10895838D01*
|
||||
X13042138Y-10845800D02*
|
||||
G75*
|
||||
G03X13042138Y-10845800I-50038J0D01*
|
||||
G01*
|
||||
X13297662Y-7214362D02*
|
||||
X13397738Y-7314438D01*
|
||||
X13397738Y-7214362D02*
|
||||
X13297662Y-7314438D01*
|
||||
X13397738Y-7264400D02*
|
||||
G75*
|
||||
G03X13397738Y-7264400I-50038J0D01*
|
||||
G01*
|
||||
X13297662Y-9563862D02*
|
||||
X13397738Y-9663938D01*
|
||||
X13397738Y-9563862D02*
|
||||
X13297662Y-9663938D01*
|
||||
X13397738Y-9613900D02*
|
||||
G75*
|
||||
G03X13397738Y-9613900I-50038J0D01*
|
||||
G01*
|
||||
X13373862Y-7722362D02*
|
||||
X13473938Y-7822438D01*
|
||||
X13473938Y-7722362D02*
|
||||
X13373862Y-7822438D01*
|
||||
X13473938Y-7772400D02*
|
||||
G75*
|
||||
G03X13473938Y-7772400I-50038J0D01*
|
||||
G01*
|
||||
X13373862Y-8484362D02*
|
||||
X13473938Y-8584438D01*
|
||||
X13473938Y-8484362D02*
|
||||
X13373862Y-8584438D01*
|
||||
X13473938Y-8534400D02*
|
||||
G75*
|
||||
G03X13473938Y-8534400I-50038J0D01*
|
||||
G01*
|
||||
X13373862Y-10033762D02*
|
||||
X13473938Y-10133838D01*
|
||||
X13473938Y-10033762D02*
|
||||
X13373862Y-10133838D01*
|
||||
X13473938Y-10083800D02*
|
||||
G75*
|
||||
G03X13473938Y-10083800I-50038J0D01*
|
||||
G01*
|
||||
X13373862Y-10795762D02*
|
||||
X13473938Y-10895838D01*
|
||||
X13473938Y-10795762D02*
|
||||
X13373862Y-10895838D01*
|
||||
X13473938Y-10845800D02*
|
||||
G75*
|
||||
G03X13473938Y-10845800I-50038J0D01*
|
||||
G01*
|
||||
X13551662Y-7214362D02*
|
||||
X13651738Y-7314438D01*
|
||||
X13651738Y-7214362D02*
|
||||
X13551662Y-7314438D01*
|
||||
X13651738Y-7264400D02*
|
||||
G75*
|
||||
G03X13651738Y-7264400I-50038J0D01*
|
||||
G01*
|
||||
X13551662Y-9563862D02*
|
||||
X13651738Y-9663938D01*
|
||||
X13651738Y-9563862D02*
|
||||
X13551662Y-9663938D01*
|
||||
X13651738Y-9613900D02*
|
||||
G75*
|
||||
G03X13651738Y-9613900I-50038J0D01*
|
||||
G01*
|
||||
X14491462Y-7722362D02*
|
||||
X14591538Y-7822438D01*
|
||||
X14591538Y-7722362D02*
|
||||
X14491462Y-7822438D01*
|
||||
X14591538Y-7772400D02*
|
||||
G75*
|
||||
G03X14591538Y-7772400I-50038J0D01*
|
||||
G01*
|
||||
X14491462Y-8484362D02*
|
||||
X14591538Y-8584438D01*
|
||||
X14591538Y-8484362D02*
|
||||
X14491462Y-8584438D01*
|
||||
X14591538Y-8534400D02*
|
||||
G75*
|
||||
G03X14591538Y-8534400I-50038J0D01*
|
||||
G01*
|
||||
X14491462Y-10084562D02*
|
||||
X14591538Y-10184638D01*
|
||||
X14591538Y-10084562D02*
|
||||
X14491462Y-10184638D01*
|
||||
X14591538Y-10134600D02*
|
||||
G75*
|
||||
G03X14591538Y-10134600I-50038J0D01*
|
||||
G01*
|
||||
X14491462Y-10846562D02*
|
||||
X14591538Y-10946638D01*
|
||||
X14591538Y-10846562D02*
|
||||
X14491462Y-10946638D01*
|
||||
X14591538Y-10896600D02*
|
||||
G75*
|
||||
G03X14591538Y-10896600I-50038J0D01*
|
||||
G01*
|
||||
X15032859Y-6362405D02*
|
||||
X15132935Y-6462481D01*
|
||||
X15132935Y-6362405D02*
|
||||
X15032859Y-6462481D01*
|
||||
X15132935Y-6412443D02*
|
||||
G75*
|
||||
G03X15132935Y-6412443I-50038J0D01*
|
||||
G01*
|
||||
X15667859Y-6362405D02*
|
||||
X15767935Y-6462481D01*
|
||||
X15767935Y-6362405D02*
|
||||
X15667859Y-6462481D01*
|
||||
X15767935Y-6412443D02*
|
||||
G75*
|
||||
G03X15767935Y-6412443I-50038J0D01*
|
||||
G01*
|
||||
X16104362Y-5906262D02*
|
||||
X16204438Y-6006338D01*
|
||||
X16204438Y-5906262D02*
|
||||
X16104362Y-6006338D01*
|
||||
X16204438Y-5956300D02*
|
||||
G75*
|
||||
G03X16204438Y-5956300I-50038J0D01*
|
||||
G01*
|
||||
X16104362Y-6211062D02*
|
||||
X16204438Y-6311138D01*
|
||||
X16204438Y-6211062D02*
|
||||
X16104362Y-6311138D01*
|
||||
X16204438Y-6261100D02*
|
||||
G75*
|
||||
G03X16204438Y-6261100I-50038J0D01*
|
||||
G01*
|
||||
X16396462Y-7735062D02*
|
||||
X16496538Y-7835138D01*
|
||||
X16496538Y-7735062D02*
|
||||
X16396462Y-7835138D01*
|
||||
X16496538Y-7785100D02*
|
||||
G75*
|
||||
G03X16496538Y-7785100I-50038J0D01*
|
||||
G01*
|
||||
X16396462Y-8497062D02*
|
||||
X16496538Y-8597138D01*
|
||||
X16496538Y-8497062D02*
|
||||
X16396462Y-8597138D01*
|
||||
X16496538Y-8547100D02*
|
||||
G75*
|
||||
G03X16496538Y-8547100I-50038J0D01*
|
||||
G01*
|
||||
X16396462Y-10071862D02*
|
||||
X16496538Y-10171938D01*
|
||||
X16496538Y-10071862D02*
|
||||
X16396462Y-10171938D01*
|
||||
X16496538Y-10121900D02*
|
||||
G75*
|
||||
G03X16496538Y-10121900I-50038J0D01*
|
||||
G01*
|
||||
X16396462Y-10833862D02*
|
||||
X16496538Y-10933938D01*
|
||||
X16496538Y-10833862D02*
|
||||
X16396462Y-10933938D01*
|
||||
X16496538Y-10883900D02*
|
||||
G75*
|
||||
G03X16496538Y-10883900I-50038J0D01*
|
||||
G01*
|
||||
X16866362Y-5906262D02*
|
||||
X16966438Y-6006338D01*
|
||||
X16966438Y-5906262D02*
|
||||
X16866362Y-6006338D01*
|
||||
X16966438Y-5956300D02*
|
||||
G75*
|
||||
G03X16966438Y-5956300I-50038J0D01*
|
||||
G01*
|
||||
X16866362Y-6211062D02*
|
||||
X16966438Y-6311138D01*
|
||||
X16966438Y-6211062D02*
|
||||
X16866362Y-6311138D01*
|
||||
X16966438Y-6261100D02*
|
||||
G75*
|
||||
G03X16966438Y-6261100I-50038J0D01*
|
||||
G01*
|
||||
X17336262Y-7214362D02*
|
||||
X17436338Y-7314438D01*
|
||||
X17436338Y-7214362D02*
|
||||
X17336262Y-7314438D01*
|
||||
X17436338Y-7264400D02*
|
||||
G75*
|
||||
G03X17436338Y-7264400I-50038J0D01*
|
||||
G01*
|
||||
X17336262Y-9551162D02*
|
||||
X17436338Y-9651238D01*
|
||||
X17436338Y-9551162D02*
|
||||
X17336262Y-9651238D01*
|
||||
X17436338Y-9601200D02*
|
||||
G75*
|
||||
G03X17436338Y-9601200I-50038J0D01*
|
||||
G01*
|
||||
X17514062Y-7709662D02*
|
||||
X17614138Y-7809738D01*
|
||||
X17614138Y-7709662D02*
|
||||
X17514062Y-7809738D01*
|
||||
X17614138Y-7759700D02*
|
||||
G75*
|
||||
G03X17614138Y-7759700I-50038J0D01*
|
||||
G01*
|
||||
X17514062Y-8471662D02*
|
||||
X17614138Y-8571738D01*
|
||||
X17614138Y-8471662D02*
|
||||
X17514062Y-8571738D01*
|
||||
X17614138Y-8521700D02*
|
||||
G75*
|
||||
G03X17614138Y-8521700I-50038J0D01*
|
||||
G01*
|
||||
X17514062Y-10046462D02*
|
||||
X17614138Y-10146538D01*
|
||||
X17614138Y-10046462D02*
|
||||
X17514062Y-10146538D01*
|
||||
X17614138Y-10096500D02*
|
||||
G75*
|
||||
G03X17614138Y-10096500I-50038J0D01*
|
||||
G01*
|
||||
X17514062Y-10808462D02*
|
||||
X17614138Y-10908538D01*
|
||||
X17614138Y-10808462D02*
|
||||
X17514062Y-10908538D01*
|
||||
X17614138Y-10858500D02*
|
||||
G75*
|
||||
G03X17614138Y-10858500I-50038J0D01*
|
||||
G01*
|
||||
X17590262Y-7214362D02*
|
||||
X17690338Y-7314438D01*
|
||||
X17690338Y-7214362D02*
|
||||
X17590262Y-7314438D01*
|
||||
X17690338Y-7264400D02*
|
||||
G75*
|
||||
G03X17690338Y-7264400I-50038J0D01*
|
||||
G01*
|
||||
X17590262Y-9551162D02*
|
||||
X17690338Y-9651238D01*
|
||||
X17690338Y-9551162D02*
|
||||
X17590262Y-9651238D01*
|
||||
X17690338Y-9601200D02*
|
||||
G75*
|
||||
G03X17690338Y-9601200I-50038J0D01*
|
||||
G01*
|
||||
X17945862Y-10046462D02*
|
||||
X18045938Y-10146538D01*
|
||||
X18045938Y-10046462D02*
|
||||
X17945862Y-10146538D01*
|
||||
X18045938Y-10096500D02*
|
||||
G75*
|
||||
G03X18045938Y-10096500I-50038J0D01*
|
||||
G01*
|
||||
X17945862Y-10808462D02*
|
||||
X18045938Y-10908538D01*
|
||||
X18045938Y-10808462D02*
|
||||
X17945862Y-10908538D01*
|
||||
X18045938Y-10858500D02*
|
||||
G75*
|
||||
G03X18045938Y-10858500I-50038J0D01*
|
||||
G01*
|
||||
X17958562Y-7709662D02*
|
||||
X18058638Y-7809738D01*
|
||||
X18058638Y-7709662D02*
|
||||
X17958562Y-7809738D01*
|
||||
X18058638Y-7759700D02*
|
||||
G75*
|
||||
G03X18058638Y-7759700I-50038J0D01*
|
||||
G01*
|
||||
X17958562Y-8471662D02*
|
||||
X18058638Y-8571738D01*
|
||||
X18058638Y-8471662D02*
|
||||
X17958562Y-8571738D01*
|
||||
X18058638Y-8521700D02*
|
||||
G75*
|
||||
G03X18058638Y-8521700I-50038J0D01*
|
||||
G01*
|
||||
X18301462Y-7709662D02*
|
||||
X18401538Y-7809738D01*
|
||||
X18401538Y-7709662D02*
|
||||
X18301462Y-7809738D01*
|
||||
X18401538Y-7759700D02*
|
||||
G75*
|
||||
G03X18401538Y-7759700I-50038J0D01*
|
||||
G01*
|
||||
X18301462Y-8471662D02*
|
||||
X18401538Y-8571738D01*
|
||||
X18401538Y-8471662D02*
|
||||
X18301462Y-8571738D01*
|
||||
X18401538Y-8521700D02*
|
||||
G75*
|
||||
G03X18401538Y-8521700I-50038J0D01*
|
||||
G01*
|
||||
X18301462Y-10046462D02*
|
||||
X18401538Y-10146538D01*
|
||||
X18401538Y-10046462D02*
|
||||
X18301462Y-10146538D01*
|
||||
X18401538Y-10096500D02*
|
||||
G75*
|
||||
G03X18401538Y-10096500I-50038J0D01*
|
||||
G01*
|
||||
X18301462Y-10808462D02*
|
||||
X18401538Y-10908538D01*
|
||||
X18401538Y-10808462D02*
|
||||
X18301462Y-10908538D01*
|
||||
X18401538Y-10858500D02*
|
||||
G75*
|
||||
G03X18401538Y-10858500I-50038J0D01*
|
||||
G01*
|
||||
X11760200Y-6096000D02*
|
||||
X11861800Y-6197600D01*
|
||||
X11861800Y-6096000D02*
|
||||
X18872200Y-10668000D02*
|
||||
X18973800Y-10769600D01*
|
||||
X18973800Y-10668000D02*
|
||||
X18872200Y-10769600D01*
|
||||
X18923000Y-10668000D02*
|
||||
X18923000Y-10769600D01*
|
||||
X18872200Y-10718800D02*
|
||||
X18973800Y-10718800D01*
|
||||
X18872200Y-10922000D02*
|
||||
X18973800Y-11023600D01*
|
||||
X18973800Y-10922000D02*
|
||||
X18872200Y-11023600D01*
|
||||
X18923000Y-10922000D02*
|
||||
X18923000Y-11023600D01*
|
||||
X18872200Y-10972800D02*
|
||||
X18973800Y-10972800D01*
|
||||
X19126200Y-6096000D02*
|
||||
X19227800Y-6197600D01*
|
||||
X19227800Y-6096000D02*
|
||||
X19126200Y-6197600D01*
|
||||
X19177000Y-6096000D02*
|
||||
X19177000Y-6197600D01*
|
||||
X19126200Y-6146800D02*
|
||||
X19227800Y-6146800D01*
|
||||
X19126200Y-6350000D02*
|
||||
X19227800Y-6451600D01*
|
||||
X19227800Y-6350000D02*
|
||||
X19126200Y-6451600D01*
|
||||
X19177000Y-6350000D02*
|
||||
X19177000Y-6451600D01*
|
||||
X19126200Y-6400800D02*
|
||||
X19227800Y-6400800D01*
|
||||
X19126200Y-6604000D02*
|
||||
X19227800Y-6705600D01*
|
||||
X19227800Y-6604000D02*
|
||||
X19126200Y-6705600D01*
|
||||
X19177000Y-6604000D02*
|
||||
X19177000Y-6705600D01*
|
||||
X19126200Y-6654800D02*
|
||||
X19227800Y-6654800D01*
|
||||
X19126200Y-6858000D02*
|
||||
X19227800Y-6959600D01*
|
||||
X19227800Y-6858000D02*
|
||||
X19126200Y-6959600D01*
|
||||
X19177000Y-6858000D02*
|
||||
X19177000Y-6959600D01*
|
||||
X19126200Y-6908800D02*
|
||||
X19227800Y-6908800D01*
|
||||
X19126200Y-7112000D02*
|
||||
X19227800Y-7213600D01*
|
||||
X19227800Y-7112000D02*
|
||||
X19126200Y-7213600D01*
|
||||
X19177000Y-7112000D02*
|
||||
X19177000Y-7213600D01*
|
||||
X19126200Y-7162800D02*
|
||||
X19227800Y-7162800D01*
|
||||
X19126200Y-7366000D02*
|
||||
X19227800Y-7467600D01*
|
||||
X19227800Y-7366000D02*
|
||||
X19126200Y-7467600D01*
|
||||
X19177000Y-7366000D02*
|
||||
X19177000Y-7467600D01*
|
||||
X19126200Y-7416800D02*
|
||||
X19227800Y-7416800D01*
|
||||
X19126200Y-7620000D02*
|
||||
X19227800Y-7721600D01*
|
||||
X19227800Y-7620000D02*
|
||||
X19126200Y-7721600D01*
|
||||
X19177000Y-7620000D02*
|
||||
X19177000Y-7721600D01*
|
||||
X19126200Y-7670800D02*
|
||||
X19227800Y-7670800D01*
|
||||
X19126200Y-7874000D02*
|
||||
X19227800Y-7975600D01*
|
||||
X19227800Y-7874000D02*
|
||||
X19126200Y-7975600D01*
|
||||
X19177000Y-7874000D02*
|
||||
X19177000Y-7975600D01*
|
||||
X19126200Y-7924800D02*
|
||||
X19227800Y-7924800D01*
|
||||
X19126200Y-8128000D02*
|
||||
X19227800Y-8229600D01*
|
||||
X19227800Y-8128000D02*
|
||||
X19126200Y-8229600D01*
|
||||
X19177000Y-8128000D02*
|
||||
X19177000Y-8229600D01*
|
||||
X19126200Y-8178800D02*
|
||||
X19227800Y-8178800D01*
|
||||
X19126200Y-8382000D02*
|
||||
X19227800Y-8483600D01*
|
||||
X19227800Y-8382000D02*
|
||||
X19126200Y-8483600D01*
|
||||
X19177000Y-8382000D02*
|
||||
X19177000Y-8483600D01*
|
||||
X19126200Y-8432800D02*
|
||||
X19227800Y-8432800D01*
|
||||
X19126200Y-8636000D02*
|
||||
X19227800Y-8737600D01*
|
||||
X19227800Y-8636000D02*
|
||||
X19126200Y-8737600D01*
|
||||
X19177000Y-8636000D02*
|
||||
X19177000Y-8737600D01*
|
||||
X19126200Y-8686800D02*
|
||||
X19227800Y-8686800D01*
|
||||
X19126200Y-8890000D02*
|
||||
X19227800Y-8991600D01*
|
||||
X19227800Y-8890000D02*
|
||||
X19126200Y-8991600D01*
|
||||
X19177000Y-8890000D02*
|
||||
X19177000Y-8991600D01*
|
||||
X19126200Y-8940800D02*
|
||||
X19227800Y-8940800D01*
|
||||
X19126200Y-9144000D02*
|
||||
X19227800Y-9245600D01*
|
||||
X19227800Y-9144000D02*
|
||||
X19126200Y-9245600D01*
|
||||
X19177000Y-9144000D02*
|
||||
X19177000Y-9245600D01*
|
||||
X19126200Y-9194800D02*
|
||||
X19227800Y-9194800D01*
|
||||
X19126200Y-9398000D02*
|
||||
X19227800Y-9499600D01*
|
||||
X19227800Y-9398000D02*
|
||||
X19126200Y-9499600D01*
|
||||
X19177000Y-9398000D02*
|
||||
X19177000Y-9499600D01*
|
||||
X19126200Y-9448800D02*
|
||||
X19227800Y-9448800D01*
|
||||
X19126200Y-9652000D02*
|
||||
X19227800Y-9753600D01*
|
||||
X19227800Y-9652000D02*
|
||||
X19126200Y-9753600D01*
|
||||
X19177000Y-9652000D02*
|
||||
X19177000Y-9753600D01*
|
||||
X19126200Y-9702800D02*
|
||||
X19227800Y-9702800D01*
|
||||
X19126200Y-9906000D02*
|
||||
X19227800Y-10007600D01*
|
||||
X19227800Y-9906000D02*
|
||||
X19126200Y-10007600D01*
|
||||
X19177000Y-9906000D02*
|
||||
X19177000Y-10007600D01*
|
||||
X19126200Y-9956800D02*
|
||||
X19227800Y-9956800D01*
|
||||
X19126200Y-10160000D02*
|
||||
X19227800Y-10261600D01*
|
||||
X19227800Y-10160000D02*
|
||||
X19126200Y-10261600D01*
|
||||
X19177000Y-10160000D02*
|
||||
X19177000Y-10261600D01*
|
||||
X19126200Y-10210800D02*
|
||||
X19227800Y-10210800D01*
|
||||
X19126200Y-10414000D02*
|
||||
X19227800Y-10515600D01*
|
||||
X19227800Y-10414000D02*
|
||||
X19126200Y-10515600D01*
|
||||
X19177000Y-10414000D02*
|
||||
X19177000Y-10515600D01*
|
||||
X19126200Y-10464800D02*
|
||||
X19227800Y-10464800D01*
|
||||
X19126200Y-10668000D02*
|
||||
X19227800Y-10769600D01*
|
||||
X19227800Y-10668000D02*
|
||||
X19126200Y-10769600D01*
|
||||
X19177000Y-10668000D02*
|
||||
X19177000Y-10769600D01*
|
||||
X19126200Y-10718800D02*
|
||||
X19227800Y-10718800D01*
|
||||
X19126200Y-10922000D02*
|
||||
X19227800Y-11023600D01*
|
||||
X19227800Y-10922000D02*
|
||||
X19126200Y-11023600D01*
|
||||
X19177000Y-10922000D02*
|
||||
X19177000Y-11023600D01*
|
||||
X19126200Y-10972800D02*
|
||||
X19227800Y-10972800D01*
|
||||
D13*
|
||||
X11563928Y-12273214D02*
|
||||
X11563928Y-11973214D01*
|
||||
X11635357Y-11973214D01*
|
||||
X11678214Y-11987500D01*
|
||||
X11706786Y-12016071D01*
|
||||
X11721071Y-12044643D01*
|
||||
X11735357Y-12101786D01*
|
||||
X11735357Y-12144643D01*
|
||||
X11721071Y-12201786D01*
|
||||
X11706786Y-12230357D01*
|
||||
X11678214Y-12258929D01*
|
||||
X11635357Y-12273214D01*
|
||||
X11563928Y-12273214D01*
|
||||
X11863928Y-12273214D02*
|
||||
X11863928Y-12073214D01*
|
||||
X11863928Y-12130357D02*
|
||||
X11878214Y-12101786D01*
|
||||
X11892500Y-12087500D01*
|
||||
X11921071Y-12073214D01*
|
||||
X11949643Y-12073214D01*
|
||||
X12049643Y-12273214D02*
|
||||
X12049643Y-12073214D01*
|
||||
X12049643Y-11973214D02*
|
||||
X12035357Y-11987500D01*
|
||||
X12049643Y-12001786D01*
|
||||
X12063928Y-11987500D01*
|
||||
X12049643Y-11973214D01*
|
||||
X18121071Y-12688929D01*
|
||||
X18106786Y-12646071D01*
|
||||
X18092500Y-12617500D01*
|
||||
X18063929Y-12574643D01*
|
||||
X18049643Y-12560357D01*
|
||||
X11292500Y-13163500D02*
|
||||
G75*
|
||||
G03X11292500Y-13163500I-35560J0D01*
|
||||
G01*
|
||||
X11621071Y-12999214D02*
|
||||
X11649643Y-12999214D01*
|
||||
X11678214Y-13013500D01*
|
||||
X11692500Y-13027786D01*
|
||||
X11706786Y-13056357D01*
|
||||
X11721071Y-13113500D01*
|
||||
X11721071Y-13184929D01*
|
||||
X11706786Y-13242071D01*
|
||||
X11692500Y-13270643D01*
|
||||
X12706786Y-13509500D01*
|
||||
X12735357Y-13495214D01*
|
||||
X12778214Y-13495214D01*
|
||||
X12806786Y-13509500D01*
|
||||
X12821071Y-13538071D01*
|
||||
X12821071Y-13695214D01*
|
||||
X12963928Y-13695214D02*
|
||||
X12963928Y-13495214D01*
|
||||
X12963928Y-13523786D02*
|
||||
X12978214Y-13509500D01*
|
||||
X13006786Y-13495214D01*
|
||||
X13049643Y-13495214D01*
|
||||
X13078214Y-13509500D01*
|
||||
X13092500Y-13538071D01*
|
||||
X13092500Y-13695214D01*
|
||||
X13092500Y-13538071D02*
|
||||
X13106786Y-13509500D01*
|
||||
X13135357Y-13495214D01*
|
||||
X13178214Y-13495214D01*
|
||||
X13206786Y-13509500D01*
|
||||
X13221071Y-13538071D01*
|
||||
X13221071Y-13695214D01*
|
||||
X13806786Y-13380929D02*
|
||||
X13549643Y-13766643D01*
|
||||
X14192500Y-13395214D02*
|
||||
X14221071Y-13395214D01*
|
||||
X14249643Y-13409500D01*
|
||||
X14263928Y-13423786D01*
|
||||
X14278214Y-13452357D01*
|
||||
X14292500Y-13509500D01*
|
||||
X14292500Y-13580929D01*
|
||||
X14278214Y-13638071D01*
|
||||
X14263928Y-13666643D01*
|
||||
X14249643Y-13680929D01*
|
||||
X14221071Y-13695214D01*
|
||||
X14192500Y-13695214D01*
|
||||
X14163928Y-13680929D01*
|
||||
X14149643Y-13666643D01*
|
||||
X14135357Y-13638071D01*
|
||||
X14121071Y-13580929D01*
|
||||
X14121071Y-13509500D01*
|
||||
X14135357Y-13452357D01*
|
||||
X14149643Y-13423786D01*
|
||||
X14163928Y-13409500D01*
|
||||
X14192500Y-13395214D01*
|
||||
X14421071Y-13666643D02*
|
||||
X14435357Y-13680929D01*
|
||||
X14421071Y-13695214D01*
|
||||
X14406786Y-13680929D01*
|
||||
X14421071Y-13666643D01*
|
||||
X14421071Y-13695214D01*
|
||||
X14621071Y-13395214D02*
|
||||
X14649643Y-13395214D01*
|
||||
X14678214Y-13409500D01*
|
||||
X14692500Y-13423786D01*
|
||||
X14706785Y-13452357D01*
|
||||
X14721071Y-13509500D01*
|
||||
X14721071Y-13580929D01*
|
||||
X14706785Y-13638071D01*
|
||||
X14692500Y-13666643D01*
|
||||
X14678214Y-13680929D01*
|
||||
X14649643Y-13695214D01*
|
||||
X14621071Y-13695214D01*
|
||||
X14592500Y-13680929D01*
|
||||
X14578214Y-13666643D01*
|
||||
X14563928Y-13638071D01*
|
||||
X14549643Y-13580929D01*
|
||||
X14549643Y-13509500D01*
|
||||
X14563928Y-13452357D01*
|
||||
X14578214Y-13423786D01*
|
||||
X14592500Y-13409500D01*
|
||||
X14621071Y-13395214D01*
|
||||
X14821071Y-13395214D02*
|
||||
X15006785Y-13395214D01*
|
||||
X14906785Y-13509500D01*
|
||||
X14949643Y-13509500D01*
|
||||
X14978214Y-13523786D01*
|
||||
X14992500Y-13538071D01*
|
||||
X15006785Y-13566643D01*
|
||||
X11292500Y-14797538D01*
|
||||
X11292500Y-14697462D02*
|
||||
X11192424Y-14797538D01*
|
||||
X11292500Y-14747500D02*
|
||||
G75*
|
||||
G03X11292500Y-14747500I-50038J0D01*
|
||||
G01*
|
||||
X11721071Y-14883214D02*
|
||||
X11549643Y-14883214D01*
|
||||
X11635357Y-14883214D02*
|
||||
X11635357Y-14583214D01*
|
||||
X11606786Y-14626071D01*
|
||||
X11578214Y-14654643D01*
|
||||
X18135357Y-15136357D01*
|
||||
X18121071Y-15064929D01*
|
||||
X18106786Y-15022071D01*
|
||||
X18092500Y-14993500D01*
|
||||
X18063929Y-14950643D01*
|
||||
X18049643Y-14936357D01*
|
||||
M02*
|
||||
58
samples/HCL/terraform.tfvars
Normal file
58
samples/HCL/terraform.tfvars
Normal file
@@ -0,0 +1,58 @@
|
||||
# Terragrunt is a thin wrapper for Terraform that provides extra tools for working with multiple Terraform modules,
|
||||
# remote state, and locking: https://github.com/gruntwork-io/terragrunt
|
||||
terragrunt = {
|
||||
# Configure Terragrunt to automatically store tfstate files in an S3 bucket
|
||||
remote_state {
|
||||
backend = "s3"
|
||||
config {
|
||||
encrypt = true
|
||||
bucket = "acme-main-terraform-state"
|
||||
key = "${path_relative_to_include()}/terraform.tfstate"
|
||||
region = "us-east-1"
|
||||
dynamodb_table = "terraform-locks"
|
||||
}
|
||||
}
|
||||
|
||||
# Configure Terragrunt to use common var files to help you keep often-repeated variables (e.g., account ID) DRY.
|
||||
# Note that even though Terraform automatically pulls in terraform.tfvars, we include it explicitly at the end of the
|
||||
# list to make sure its variables override anything in the common var files.
|
||||
terraform {
|
||||
extra_arguments "common_vars" {
|
||||
commands = ["${get_terraform_commands_that_need_vars()}"]
|
||||
|
||||
optional_var_files = [
|
||||
"${get_tfvars_dir()}/${find_in_parent_folders("account.tfvars", "skip-account-if-does-not-exist")}",
|
||||
"${get_tfvars_dir()}/${find_in_parent_folders("region.tfvars", "skip-region-if-does-not-exist")}",
|
||||
"${get_tfvars_dir()}/${find_in_parent_folders("env.tfvars", "skip-env-if-does-not-exist")}",
|
||||
"${get_tfvars_dir()}/terraform.tfvars"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
key1 = "val1"
|
||||
key2 = 0
|
||||
key3 = 1
|
||||
key4 = true
|
||||
|
||||
# Sample comments
|
||||
key5 = false
|
||||
|
||||
key6 = ["hello", "from", "gruntwork.io"]
|
||||
|
||||
key7 = {
|
||||
key1 = "hello"
|
||||
key2 = "from"
|
||||
key3 = "gruntwork.io"
|
||||
}
|
||||
|
||||
key8 = [
|
||||
{
|
||||
keyA = "hello"
|
||||
keyB = "there"
|
||||
},
|
||||
{
|
||||
keyA = "hello"
|
||||
keyB = "there"
|
||||
}
|
||||
]
|
||||
38
samples/HTML+Django/_worker.jinja2
Normal file
38
samples/HTML+Django/_worker.jinja2
Normal file
@@ -0,0 +1,38 @@
|
||||
<h1>Workers</h1>
|
||||
|
||||
<table class="workers">
|
||||
<tr>
|
||||
<th>Job server</th>
|
||||
<th>IP</th>
|
||||
<th>File descriptor</th>
|
||||
<th>Client ID</th>
|
||||
<th>Functions</th>
|
||||
</tr>
|
||||
|
||||
{% for server_info in server_infos %}
|
||||
<tr {% if server_info['failed'] %} class="failure" {% endif %} >
|
||||
|
||||
<th>{{ server_info['hostport'][0] }}:{{ server_info['hostport'][1] }}</th>
|
||||
<th>
|
||||
{%- if server_info['failed'] -%} Not responding! {%- endif -%}
|
||||
</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
||||
{% if not server_info['failed'] %}
|
||||
{% for worker in server_info['workers'] %}
|
||||
<tr>
|
||||
<td class="server"></td>
|
||||
<td class="ip">{{ worker['ip'] }}</td>
|
||||
<td class="file_descriptor">{{ worker['file_descriptor'] }}</td>
|
||||
<td class="client_id">{{ worker['client_id'] }}</td>
|
||||
<td class="functions">
|
||||
{{ worker['tasks']|join(', ') }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
10
samples/HXML/checkstyle.hxml
Normal file
10
samples/HXML/checkstyle.hxml
Normal file
@@ -0,0 +1,10 @@
|
||||
buildGlobal.hxml
|
||||
-lib mcover:2.1.1
|
||||
-D unittest
|
||||
-x TestMain
|
||||
--macro mcover.MCover.coverage(['checkstyle'], ['src'], ['checkstyle.reporter', 'checkstyle.Main'])
|
||||
|
||||
--next
|
||||
-cmd neko run -s src -s test -p resources/static-analysis.txt
|
||||
-cmd neko run --default-config resources/default-config.json
|
||||
-cmd neko run -c resources/default-config.json
|
||||
31
samples/HXML/vshaxe.hxml
Normal file
31
samples/HXML/vshaxe.hxml
Normal file
@@ -0,0 +1,31 @@
|
||||
# This file is generated with vshaxe-build - DO NOT EDIT MANUALLY!
|
||||
-cp vscode-extern/src
|
||||
-cp src-api
|
||||
-cp src
|
||||
-cp server/src
|
||||
-cp server/protocol/src
|
||||
-cp server/formatter/src
|
||||
-cp server/test
|
||||
-cp server/formatter/test
|
||||
-cp syntaxes/src
|
||||
-D analyzer-optimize
|
||||
-D js_unflatten
|
||||
-D hxnodejs-no-version-warning
|
||||
-D JSTACK_MAIN=vshaxe.Main.main
|
||||
-D JSTACK_ASYNC_ENTRY
|
||||
-D JSTACK_FORMAT=vscode
|
||||
-lib hxnodejs
|
||||
-lib jstack
|
||||
-lib haxe-hxparser
|
||||
-lib compiletime
|
||||
-lib mockatoo
|
||||
-lib mconsole
|
||||
-lib hx3compat
|
||||
-lib hxargs
|
||||
-lib json2object
|
||||
-lib yaml
|
||||
-lib plist
|
||||
-debug
|
||||
-js bin/build.js
|
||||
--no-inline
|
||||
-main Build
|
||||
227
samples/INI/filenames/buildozer.spec
Normal file
227
samples/INI/filenames/buildozer.spec
Normal file
@@ -0,0 +1,227 @@
|
||||
[app]
|
||||
|
||||
# (str) Title of your application
|
||||
title = Kivy Kazam
|
||||
|
||||
# (str) Package name
|
||||
package.name = kivykazam
|
||||
|
||||
# (str) Package domain (needed for android/ios packaging)
|
||||
package.domain = org.test
|
||||
|
||||
# (str) Source code where the main.py live
|
||||
source.dir = .
|
||||
|
||||
# (list) Source files to include (let empty to include all the files)
|
||||
source.include_exts = py,png,jpg,kv,atlas
|
||||
|
||||
# (list) List of inclusions using pattern matching
|
||||
#source.include_patterns = assets/*,images/*.png
|
||||
|
||||
# (list) Source files to exclude (let empty to not exclude anything)
|
||||
#source.exclude_exts = spec
|
||||
|
||||
# (list) List of directory to exclude (let empty to not exclude anything)
|
||||
#source.exclude_dirs = tests, bin
|
||||
|
||||
# (list) List of exclusions using pattern matching
|
||||
#source.exclude_patterns = license,images/*/*.jpg
|
||||
|
||||
# (str) Application versioning (method 1)
|
||||
version = 0.1
|
||||
|
||||
# (str) Application versioning (method 2)
|
||||
# version.regex = __version__ = ['"](.*)['"]
|
||||
# version.filename = %(source.dir)s/main.py
|
||||
|
||||
# (list) Application requirements
|
||||
# comma seperated e.g. requirements = sqlite3,kivy
|
||||
requirements = kivy
|
||||
|
||||
# (str) Custom source folders for requirements
|
||||
# Sets custom source for any requirements with recipes
|
||||
# requirements.source.kivy = ../../kivy
|
||||
|
||||
# (list) Garden requirements
|
||||
#garden_requirements =
|
||||
|
||||
# (str) Presplash of the application
|
||||
#presplash.filename = %(source.dir)s/data/presplash.png
|
||||
|
||||
# (str) Icon of the application
|
||||
#icon.filename = %(source.dir)s/data/icon.png
|
||||
|
||||
# (str) Supported orientation (one of landscape, portrait or all)
|
||||
orientation = all
|
||||
|
||||
# (list) List of service to declare
|
||||
#services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY
|
||||
|
||||
#
|
||||
# OSX Specific
|
||||
#
|
||||
|
||||
#
|
||||
# author = © Copyright Info
|
||||
|
||||
#
|
||||
# Android specific
|
||||
#
|
||||
|
||||
# (bool) Indicate if the application should be fullscreen or not
|
||||
fullscreen = 1
|
||||
|
||||
# (list) Permissions
|
||||
#android.permissions = INTERNET
|
||||
|
||||
# (int) Android API to use
|
||||
#android.api = 19
|
||||
|
||||
# (int) Minimum API required
|
||||
android.minapi = 13
|
||||
|
||||
# (int) Android SDK version to use
|
||||
#android.sdk = 20
|
||||
|
||||
# (str) Android NDK version to use
|
||||
#android.ndk = 9c
|
||||
|
||||
# (bool) Use --private data storage (True) or --dir public storage (False)
|
||||
#android.private_storage = True
|
||||
|
||||
# (str) Android NDK directory (if empty, it will be automatically downloaded.)
|
||||
#android.ndk_path =
|
||||
|
||||
# (str) Android SDK directory (if empty, it will be automatically downloaded.)
|
||||
#android.sdk_path =
|
||||
|
||||
# (str) ANT directory (if empty, it will be automatically downloaded.)
|
||||
#android.ant_path =
|
||||
|
||||
# (str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
|
||||
#android.p4a_dir =
|
||||
|
||||
# (list) python-for-android whitelist
|
||||
#android.p4a_whitelist =
|
||||
|
||||
# (bool) If True, then skip trying to update the Android sdk
|
||||
# This can be useful to avoid excess Internet downloads or save time
|
||||
# when an update is due and you just want to test/build your package
|
||||
# android.skip_update = False
|
||||
|
||||
# (str) Android entry point, default is ok for Kivy-based app
|
||||
#android.entrypoint = org.renpy.android.PythonActivity
|
||||
|
||||
# (list) List of Java .jar files to add to the libs so that pyjnius can access
|
||||
# their classes. Don't add jars that you do not need, since extra jars can slow
|
||||
# down the build process. Allows wildcards matching, for example:
|
||||
# OUYA-ODK/libs/*.jar
|
||||
#android.add_jars = foo.jar,bar.jar,path/to/more/*.jar
|
||||
|
||||
# (list) List of Java files to add to the android project (can be java or a
|
||||
# directory containing the files)
|
||||
#android.add_src =
|
||||
|
||||
# (str) python-for-android branch to use, if not master, useful to try
|
||||
# not yet merged features.
|
||||
#android.branch = master
|
||||
|
||||
# (str) OUYA Console category. Should be one of GAME or APP
|
||||
# If you leave this blank, OUYA support will not be enabled
|
||||
#android.ouya.category = GAME
|
||||
|
||||
# (str) Filename of OUYA Console icon. It must be a 732x412 png image.
|
||||
#android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png
|
||||
|
||||
# (str) XML file to include as an intent filters in <activity> tag
|
||||
#android.manifest.intent_filters =
|
||||
|
||||
# (list) Android additionnal libraries to copy into libs/armeabi
|
||||
#android.add_libs_armeabi = libs/android/*.so
|
||||
#android.add_libs_armeabi_v7a = libs/android-v7/*.so
|
||||
#android.add_libs_x86 = libs/android-x86/*.so
|
||||
#android.add_libs_mips = libs/android-mips/*.so
|
||||
|
||||
# (bool) Indicate whether the screen should stay on
|
||||
# Don't forget to add the WAKE_LOCK permission if you set this to True
|
||||
#android.wakelock = False
|
||||
|
||||
# (list) Android application meta-data to set (key=value format)
|
||||
#android.meta_data =
|
||||
|
||||
# (list) Android library project to add (will be added in the
|
||||
# project.properties automatically.)
|
||||
#android.library_references =
|
||||
|
||||
# (str) Android logcat filters to use
|
||||
#android.logcat_filters = *:S python:D
|
||||
|
||||
# (bool) Copy library instead of making a libpymodules.so
|
||||
#android.copy_libs = 1
|
||||
|
||||
#
|
||||
# iOS specific
|
||||
#
|
||||
|
||||
# (str) Path to a custom kivy-ios folder
|
||||
#ios.kivy_ios_dir = ../kivy-ios
|
||||
|
||||
# (str) Name of the certificate to use for signing the debug version
|
||||
# Get a list of available identities: buildozer ios list_identities
|
||||
#ios.codesign.debug = "iPhone Developer: <lastname> <firstname> (<hexstring>)"
|
||||
|
||||
# (str) Name of the certificate to use for signing the release version
|
||||
#ios.codesign.release = %(ios.codesign.debug)s
|
||||
|
||||
|
||||
[buildozer]
|
||||
|
||||
# (int) Log level (0 = error only, 1 = info, 2 = debug (with command output))
|
||||
log_level = 1
|
||||
|
||||
# (int) Display warning if buildozer is run as root (0 = False, 1 = True)
|
||||
warn_on_root = 1
|
||||
|
||||
# (str) Path to build artifact storage, absolute or relative to spec file
|
||||
# build_dir = ./.buildozer
|
||||
|
||||
# (str) Path to build output (i.e. .apk, .ipa) storage
|
||||
# bin_dir = ./bin
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# List as sections
|
||||
#
|
||||
# You can define all the "list" as [section:key].
|
||||
# Each line will be considered as a option to the list.
|
||||
# Let's take [app] / source.exclude_patterns.
|
||||
# Instead of doing:
|
||||
#
|
||||
#[app]
|
||||
#source.exclude_patterns = license,data/audio/*.wav,data/images/original/*
|
||||
#
|
||||
# This can be translated into:
|
||||
#
|
||||
#[app:source.exclude_patterns]
|
||||
#license
|
||||
#data/audio/*.wav
|
||||
#data/images/original/*
|
||||
#
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Profiles
|
||||
#
|
||||
# You can extend section / key with a profile
|
||||
# For example, you want to deploy a demo version of your application without
|
||||
# HD content. You could first change the title to add "(demo)" in the name
|
||||
# and extend the excluded directories to remove the HD content.
|
||||
#
|
||||
#[app@demo]
|
||||
#title = My Application (demo)
|
||||
#
|
||||
#[app:source.exclude_patterns@demo]
|
||||
#images/hd/*
|
||||
#
|
||||
# Then, invoke the command line with the "demo" profile:
|
||||
#
|
||||
#buildozer --profile demo android debug
|
||||
62
samples/INI/ultimate-temp-controller.pro
Normal file
62
samples/INI/ultimate-temp-controller.pro
Normal file
@@ -0,0 +1,62 @@
|
||||
update=22/05/2015 07:44:53
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[pcbnew]
|
||||
version=1
|
||||
LastNetListRead=
|
||||
UseCmpFile=1
|
||||
PadDrill=0.600000000000
|
||||
PadDrillOvalY=0.600000000000
|
||||
PadSizeH=1.500000000000
|
||||
PadSizeV=1.500000000000
|
||||
PcbTextSizeV=1.500000000000
|
||||
PcbTextSizeH=1.500000000000
|
||||
PcbTextThickness=0.300000000000
|
||||
ModuleTextSizeV=1.000000000000
|
||||
ModuleTextSizeH=1.000000000000
|
||||
ModuleTextSizeThickness=0.150000000000
|
||||
SolderMaskClearance=0.000000000000
|
||||
SolderMaskMinWidth=0.000000000000
|
||||
DrawSegmentWidth=0.200000000000
|
||||
BoardOutlineThickness=0.100000000000
|
||||
ModuleOutlineThickness=0.150000000000
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
LibName1=power
|
||||
LibName2=device
|
||||
LibName3=transistors
|
||||
LibName4=conn
|
||||
LibName5=linear
|
||||
LibName6=regul
|
||||
LibName7=74xx
|
||||
LibName8=cmos4000
|
||||
LibName9=adc-dac
|
||||
LibName10=memory
|
||||
LibName11=xilinx
|
||||
LibName12=microcontrollers
|
||||
LibName13=dsp
|
||||
LibName14=microchip
|
||||
LibName15=analog_switches
|
||||
LibName16=motorola
|
||||
LibName17=texas
|
||||
LibName18=intel
|
||||
LibName19=audio
|
||||
LibName20=interface
|
||||
LibName21=digital-audio
|
||||
LibName22=philips
|
||||
LibName23=display
|
||||
LibName24=cypress
|
||||
LibName25=siliconi
|
||||
LibName26=opto
|
||||
LibName27=atmel
|
||||
LibName28=contrib
|
||||
LibName29=valves
|
||||
136
samples/JSON/Material_Alpha_01.gltf
Normal file
136
samples/JSON/Material_Alpha_01.gltf
Normal file
@@ -0,0 +1,136 @@
|
||||
{
|
||||
"accessors": [
|
||||
{
|
||||
"bufferView": 0,
|
||||
"componentType": 5126,
|
||||
"count": 4,
|
||||
"type": "VEC3",
|
||||
"max": [
|
||||
0.5,
|
||||
0.5,
|
||||
0.0
|
||||
],
|
||||
"min": [
|
||||
-0.5,
|
||||
-0.5,
|
||||
0.0
|
||||
],
|
||||
"name": "Positions Accessor"
|
||||
},
|
||||
{
|
||||
"bufferView": 1,
|
||||
"componentType": 5126,
|
||||
"count": 4,
|
||||
"type": "VEC4",
|
||||
"name": "Colors Accessor"
|
||||
},
|
||||
{
|
||||
"bufferView": 2,
|
||||
"componentType": 5126,
|
||||
"count": 4,
|
||||
"type": "VEC2",
|
||||
"name": "UV Accessor 0"
|
||||
},
|
||||
{
|
||||
"bufferView": 3,
|
||||
"componentType": 5125,
|
||||
"count": 6,
|
||||
"type": "SCALAR",
|
||||
"name": "Indices Accessor"
|
||||
}
|
||||
],
|
||||
"asset": {
|
||||
"generator": "glTF Asset Generator",
|
||||
"version": "2.0",
|
||||
"extras": {
|
||||
"Attributes": "VertexColor_Vector4_Float - AlphaMode_Mask - AlphaCutoff - DoubleSided - BaseColorFactor - BaseColorTexture"
|
||||
}
|
||||
},
|
||||
"buffers": [
|
||||
{
|
||||
"uri": "Material_Alpha_01.bin",
|
||||
"byteLength": 168
|
||||
}
|
||||
],
|
||||
"bufferViews": [
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteLength": 48,
|
||||
"name": "Positions"
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 48,
|
||||
"byteLength": 64,
|
||||
"name": "Colors"
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 112,
|
||||
"byteLength": 32,
|
||||
"name": "Texture Coords 0"
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 144,
|
||||
"byteLength": 24,
|
||||
"name": "Indices"
|
||||
}
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"uri": "Texture_baseColor.png"
|
||||
}
|
||||
],
|
||||
"materials": [
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorFactor": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0,
|
||||
0.6
|
||||
],
|
||||
"baseColorTexture": {
|
||||
"index": 0
|
||||
}
|
||||
},
|
||||
"alphaMode": "MASK",
|
||||
"alphaCutoff": 0.7,
|
||||
"doubleSided": true
|
||||
}
|
||||
],
|
||||
"meshes": [
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"POSITION": 0,
|
||||
"COLOR_0": 1,
|
||||
"TEXCOORD_0": 2
|
||||
},
|
||||
"indices": 3,
|
||||
"material": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"mesh": 0
|
||||
}
|
||||
],
|
||||
"scene": 0,
|
||||
"scenes": [
|
||||
{
|
||||
"nodes": [
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures": [
|
||||
{
|
||||
"source": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
25
samples/JSON/filenames/.htmlhintrc
Normal file
25
samples/JSON/filenames/.htmlhintrc
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"alt-require": true,
|
||||
"attr-lowercase": true,
|
||||
"attr-no-duplication": true,
|
||||
"attr-unsafe-chars": true,
|
||||
"attr-value-double-quotes": true,
|
||||
"attr-value-not-empty": false,
|
||||
"doctype-first": true,
|
||||
"doctype-html5": true,
|
||||
"head-script-disabled": false,
|
||||
"href-abs-or-rel": false,
|
||||
"id-class-ad-disabled": true,
|
||||
"id-class-value": false,
|
||||
"id-unique": true,
|
||||
"inline-script-disabled": true,
|
||||
"inline-style-disabled": true,
|
||||
"space-tab-mixed-disabled": "space",
|
||||
"spec-char-escape": true,
|
||||
"src-not-empty": true,
|
||||
"style-disabled": false,
|
||||
"tag-pair": true,
|
||||
"tag-self-close": false,
|
||||
"tagname-lowercase": true,
|
||||
"title-require": true
|
||||
}
|
||||
88
samples/JSON/filenames/.jscsrc
Normal file
88
samples/JSON/filenames/.jscsrc
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"requireCurlyBraces": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do",
|
||||
"try",
|
||||
"catch"
|
||||
],
|
||||
"requireSpaceAfterKeywords": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do",
|
||||
"switch",
|
||||
"case",
|
||||
"return",
|
||||
"try",
|
||||
"catch",
|
||||
"typeof"
|
||||
],
|
||||
"requireSpaceBeforeBlockStatements": true,
|
||||
"requireParenthesesAroundIIFE": true,
|
||||
"requireSpacesInConditionalExpression": true,
|
||||
"disallowSpacesInNamedFunctionExpression": {
|
||||
"beforeOpeningRoundBrace": true
|
||||
},
|
||||
"disallowSpacesInFunctionDeclaration": {
|
||||
"beforeOpeningRoundBrace": true
|
||||
},
|
||||
"requireSpaceBetweenArguments": true,
|
||||
"requireBlocksOnNewline": true,
|
||||
"disallowEmptyBlocks": true,
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
"disallowDanglingUnderscores": true,
|
||||
"requireCommaBeforeLineBreak": true,
|
||||
"disallowSpacesInCallExpression": true,
|
||||
"disallowSpaceAfterPrefixUnaryOperators": true,
|
||||
"disallowSpaceBeforePostfixUnaryOperators": true,
|
||||
"disallowSpaceBeforeBinaryOperators": [
|
||||
","
|
||||
],
|
||||
"requireSpacesInForStatement": true,
|
||||
"requireSpaceBeforeBinaryOperators": true,
|
||||
"requireSpaceAfterBinaryOperators": true,
|
||||
"disallowKeywords": [
|
||||
"with"
|
||||
],
|
||||
"disallowMixedSpacesAndTabs": true,
|
||||
"disallowTrailingWhitespace": true,
|
||||
"disallowKeywordsOnNewLine": [
|
||||
"else"
|
||||
],
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
"requireCapitalizedConstructors": true,
|
||||
"requireDotNotation": true,
|
||||
"disallowNewlineBeforeBlockStatements": true,
|
||||
"disallowMultipleLineStrings": true,
|
||||
"requireSpaceBeforeObjectValues": true,
|
||||
"validateQuoteMarks": "'",
|
||||
"requireSpaceAfterLineComment": true,
|
||||
"validateIndentation": 2,
|
||||
"validateLineBreaks": "LF",
|
||||
"disallowSpacesInFunction": {
|
||||
"beforeOpeningRoundBrace": true
|
||||
},
|
||||
"requireSpacesInFunction": {
|
||||
"beforeOpeningCurlyBrace": true
|
||||
},
|
||||
"disallowMultipleLineBreaks": true,
|
||||
"disallowYodaConditions": true,
|
||||
"disallowFunctionDeclarations": true,
|
||||
"disallowMultipleVarDecl": "exceptUndefined",
|
||||
"requirePaddingNewlinesBeforeKeywords": [
|
||||
"do",
|
||||
"for",
|
||||
"if",
|
||||
"switch",
|
||||
"try",
|
||||
"void",
|
||||
"while",
|
||||
"return"
|
||||
],
|
||||
"excludeFiles": ["**/node_modules/**", "**/min/**", "**/*.min.js"]
|
||||
}
|
||||
19
samples/JSON/filenames/.tern-config
Normal file
19
samples/JSON/filenames/.tern-config
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"ecmaVersion": 6,
|
||||
"libs": [
|
||||
"browser",
|
||||
"jquery"
|
||||
],
|
||||
"dontLoad": [
|
||||
"node_modules/**"
|
||||
],
|
||||
"plugins": {
|
||||
"es_modules": {},
|
||||
"node": {},
|
||||
"angular": {},
|
||||
"doc_comment": {
|
||||
"fullDocs": true,
|
||||
"strong": true
|
||||
}
|
||||
}
|
||||
}
|
||||
15
samples/JSON/filenames/.tern-project
Normal file
15
samples/JSON/filenames/.tern-project
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"ecmaVersion": 6,
|
||||
"libs": [],
|
||||
"loadEagerly": [
|
||||
"src/app/**/*.js"
|
||||
],
|
||||
"dontLoad": [
|
||||
"node_modules"
|
||||
],
|
||||
"plugins": {
|
||||
"requirejs": {
|
||||
"baseURL": "src"
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user