Compare commits

...

219 Commits

Author SHA1 Message Date
Arfon Smith
346aa99fcf Merge pull request #3296 from github/cut-release-v4.8.16
Staging PR for Linguist v4.8.16 release
2016-10-26 13:43:22 -04:00
Arfon Smith
d147778677 Bumping to v4.8.16 2016-10-25 20:30:46 -04:00
Arfon Smith
e520209e49 Grammar update 2016-10-25 20:25:07 -04:00
Arfon Smith
338cc16239 Merge pull request #3264 from Alhadis/rexx-interpreters
Add REXX interpreters
2016-10-25 20:15:05 -04:00
Arfon Smith
67ea35094b Merge pull request #3295 from github/3233-local
UPDATE: Add support for MQL4 and MQL5 languages
2016-10-25 20:10:56 -04:00
Arfon Smith
6f0393fcbd Merge branch 'master' into 3233-local 2016-10-25 20:00:48 -04:00
Arfon Smith
2923d50d7e Merge pull request #3294 from larsbrinkhoff/boot
Makefile.boot misclassified as Clojure.
2016-10-25 18:45:39 -04:00
Lars Brinkhoff
4e26f609ef Makefile.boot misclassified as Clojure. 2016-10-25 22:21:31 +02:00
Arfon Smith
e86d6e8dd2 Merge pull request #3193 from Alhadis/grammar-scripts
Add script to add or replace grammars
2016-10-25 07:36:01 -04:00
Arfon Smith
5fa02ad1fb Merge pull request #3182 from adius/patch-1
Exclude "dist" directory from language statistics
2016-10-22 18:39:51 -04:00
Arfon Smith
5a06240f69 Merge pull request #3289 from pchaigno/change-grammar-actionscript
Update grammar for ActionScript
2016-10-22 18:39:22 -04:00
Arfon Smith
d6e0f74c80 Merge pull request #3279 from Alhadis/mirror-modes
Add CodeMirror modes for GPG keys and IRC logs
2016-10-22 18:38:38 -04:00
Paul Chaignon
a5c08bb203 Update grammar for ActionScript 2016-10-22 21:35:28 +02:00
Arfon Smith
c6dc29abb1 Merge pull request #3242 from JoshCheek/julia-interpreters
Set interpreters for Julia
2016-10-22 12:24:44 -05:00
Arfon Smith
ffd984bb7e Merge pull request #3277 from Alhadis/pic
Add support for the Pic language
2016-10-17 12:03:43 -05:00
Alhadis
dc5473559b Merge branch 'master' into grammar-scripts 2016-10-17 17:38:19 +11:00
Lars Brinkhoff
8e9c224952 Remove color attribute from all languages with a group attribute. 2016-10-13 06:54:21 +02:00
Lars Brinkhoff
d43f111723 Remove redundant group attribute for ColdFusion. 2016-10-13 06:54:21 +02:00
Lars Brinkhoff
de9ff713a4 Test that grouped languages have no color. 2016-10-13 06:54:21 +02:00
Alhadis
98783560ec Add CodeMirror modes for GPG keys and IRC logs 2016-10-12 14:20:58 +11:00
Alhadis
8f31fbbd55 Bump language ID 2016-10-12 11:19:22 +11:00
Alhadis
e4cdbd2b2b Merge branch 'master' into pic 2016-10-12 11:18:28 +11:00
Arfon Smith
ba52e48ceb Merge pull request #3175 from Alhadis/cson
Classify CSON as data
2016-10-11 17:16:08 -07:00
Alhadis
a44ebe493b Bump language ID 2016-10-12 11:10:44 +11:00
Alhadis
eb0e75e11e Add support for the Pic language 2016-10-12 02:46:17 +11:00
Arfon Smith
22c2cf4967 Merge pull request #3268 from Alhadis/sublime
Add new entry for Sublime Text config files
2016-10-10 16:36:53 -07:00
Alhadis
39e3688fb8 Bump language ID for Sublime Text config files 2016-10-11 09:59:17 +11:00
Alhadis
6b83e5fb7b Merge branch 'master' into sublime 2016-10-11 09:57:05 +11:00
Arfon Smith
dd2e5ffe07 Merge pull request #3258 from scottmangiapane/master
Added support for TI Code
2016-10-10 08:55:23 -07:00
Andrew Case
f6b6c4e165 Merge branch 'master' into add-mql4-mql5-current 2016-10-10 17:41:29 +03:00
Andrew Case
608ed60b5c Merge branch 'master' of https://github.com/github/linguist 2016-10-10 17:31:02 +03:00
Arfon Smith
2ce2945058 Merge pull request #3272 from pchaigno/doc-set-language-id
Improve documentation on the language_id
2016-10-10 06:47:01 -07:00
Paul Chaignon
c8d376754e Improve documentation on the language_id 2016-10-09 17:55:50 +02:00
Arfon Smith
ecaef91fa1 Merge pull request #3266 from Alhadis/make
Add ".make" as a Makefile file extension
2016-10-09 07:58:17 -07:00
Alhadis
d265b78e7e Copy Sublime configs from submodules 2016-10-07 11:38:11 +11:00
Alhadis
5a5bf7d5e5 Add new entry for Sublime Text config files 2016-10-07 10:56:15 +11:00
Alhadis
e46781b903 Merge upstream changes into topic branch 2016-10-07 10:25:03 +11:00
Arfon Smith
9543a8c8e9 Merge pull request #3259 from Alhadis/colour-removal
Guard against unused colour definitions
2016-10-06 09:52:29 -07:00
Alhadis
6ac1ac9232 Resolve conflicts from upstream changes 2016-10-06 17:00:28 +11:00
Alhadis
1bbb919fef Reclassify Sublime configuration files as JSON
See:
- https://github.com/github/linguist/issues/2662#issuecomment-251865073
- https://github.com/github/linguist/pull/3267
2016-10-06 16:42:01 +11:00
Scott Mangiapane
71dfed0e45 Restored .8xp.txt extension 2016-10-05 12:31:32 -04:00
Scott Mangiapane
a2db058ce4 TI Code -> TI Program 2016-10-05 12:24:50 -04:00
Alhadis
12695fee2f Add ".make" as a Makefile file extension 2016-10-05 21:36:22 +11:00
Alhadis
4a775dca37 Add REXX interpreters 2016-10-05 17:45:38 +11:00
Alhadis
d7c689fd6b Merge branch 'master' into grammar-scripts 2016-10-05 16:34:24 +11:00
Alhadis
20b8188384 Add test to guard against unused colours 2016-10-05 16:17:00 +11:00
Scott Mangiapane
26310d9515 TI PRGM -> TI Code 2016-10-04 23:02:11 -04:00
Alhadis
e38cc75da5 Update ASN.1 grammar
This stops the ASN.1 submodule from being flagged as modified due to its
.DS_Store file being wiped locally by an automated process.

References: ajLangley12/language-asn1#1
2016-10-05 13:08:36 +11:00
Scott Mangiapane
8d55fc1bd5 Reordered extensions for TI PRGM 2016-10-04 14:38:28 -04:00
Alhadis
7e63399196 Delete colour property for ASN.1 language
This is classified on GitHub as "data", so the colour it's assigned only
wastes valuable "real estate" when checking colour proximity.

References: github/linguist#3113
2016-10-04 17:23:45 +11:00
Scott Mangiapane
520e5a5cfe Alphabetized extensions for TI PRGM (again) 2016-10-03 22:13:43 -04:00
Scott Mangiapane
5d85692c24 Updated TI PRGM languages.yml entry
Alphabetized extensions and added a language_id.
2016-10-03 22:07:23 -04:00
Scott Mangiapane
676861fff3 Removed binary files from the TI PRGM sample 2016-10-03 21:59:46 -04:00
Scott Mangiapane
6589bd9dc7 Added tm_scope to TI PRGM 2016-10-03 21:47:52 -04:00
Scott Mangiapane
e32a4f13ef Updated languages.yml 2016-10-03 21:37:56 -04:00
Scott Mangiapane
4e4d851f71 Alphabetized "TI PRGM" 2016-10-03 21:15:36 -04:00
Scott Mangiapane
a3628f86da Added example files for TI-83+/84 programs 2016-10-03 21:12:30 -04:00
Scott Mangiapane
fe70965906 Added entry for TI-83+/84 programs and apps 2016-10-03 21:11:28 -04:00
Lars Brinkhoff
c863435c84 Add '</' to Markdown heuristic. (#3255) 2016-10-03 19:22:34 +02:00
Paul Chaignon
eeec48198a Update submodules 2016-10-02 11:16:25 +02:00
Paul Chaignon
82167063da Tests to ensure the whitelists are up-to-date 2016-10-02 11:16:25 +02:00
Paul Chaignon
3ae89b48ba Improve Mathematica's heuristic rule
Use closing of Mathematica comment instead of opening
Unit test to check that test file is not detected as Mathematica anymore
2016-10-01 08:46:31 +02:00
Paul Chaignon
cd9401c424 Enable testing absence of heuristic result 2016-10-01 08:46:31 +02:00
Paul Chaignon
e7e8a7d835 Tests for .m heuristic rules 2016-10-01 08:46:31 +02:00
Arfon Smith
7654032d2e Merge pull request #3254 from alexruperez/master
Added BuddyBuildSDK.framework to lib/linguist/vendor.yml
2016-09-30 19:29:23 -07:00
alexruperez
05b536fc61 Added BuddyBuildSDK.framework to lib/linguist/vendor.yml 2016-09-28 11:24:17 +02:00
Paul Chaignon
ebe85788ab Rely solely on Licensee to recognize licenses
Remove our own license classification code
Add hashes for any project which does not have a standard license body
Add projects for which a license was not found to the whitelist

Requires Licensee v8.6.0 to correctly recognize TextMate bundles' .mdown README
2016-09-27 10:44:25 +02:00
Paul Chaignon
524337d07b Use Licensee hashes to uniquely identify licenses
Since v6.1.0, Licensee exposes the hash of the license
We can use it to uniquely identify unrecognized licenses,
Thus, tests will fail if the content of an unrecognized license changes

Projects for which no license was found are kept in the whitelist
2016-09-27 10:44:25 +02:00
Paul Chaignon
f8ce42e169 Recognize licenses in READMEs using Licensee
Since v7.0.0 Licensee can detect license text in READMEs
Using this, we might be able to rely solely on Licensee in the future
2016-09-27 10:44:25 +02:00
Arfon Smith
71032cd252 Merge pull request #3249 from pchaigno/update-season-package
Update season package in npm to fix parsing error
2016-09-25 21:25:19 -07:00
Paul Chaignon
41593b3ea7 Update season package in npm to fix parsing error
Fixes the Travis build failures
2016-09-25 16:41:49 +02:00
Joshua Peek
e424e8e88c Linguist 4.8.15 2016-09-23 16:41:16 -07:00
Joshua Peek
07d4f218a3 Merge pull request #3243 from github/change_modes_to_mimetypes
Convert from mode names to mimetypes for better usage.
2016-09-23 16:38:13 -07:00
Joshua Peek
67ed060d37 Assert CodeMirror modes and mime types are valid against source 2016-09-23 16:33:12 -07:00
Joshua Peek
3abe081560 Validate codemirror modes 2016-09-23 16:30:38 -07:00
Josh Cheek
d3f3c0345c Add a sample showing the Julia interpreter is correctly analyzed 2016-09-23 15:29:02 -07:00
Joshua Peek
855f1a1f86 Validate CodeMirror modes 2016-09-23 14:47:49 -07:00
Joshua Peek
0406a5b326 Fix typescript indent 2016-09-23 14:39:15 -07:00
Joshua Peek
0108ef4386 Restore old mode 2016-09-23 14:35:02 -07:00
Joshua Peek
daefff86ff Fix JSX mode 2016-09-23 13:57:50 -07:00
Joshua Peek
fdb962518f Consistent CodeMirror casing 2016-09-23 13:54:55 -07:00
Joshua Peek
6564078061 Merge branch 'master' into change_modes_to_mimetypes 2016-09-23 13:54:20 -07:00
Joshua Peek
39ea9be5f8 Ignore ace mode warning while testing 2016-09-23 13:53:38 -07:00
Joshua Peek
152b5ade5e Fix shadowed path warning 2016-09-23 13:50:01 -07:00
Joshua Peek
c525e3fbef Ignore default external warnings 2016-09-23 13:49:30 -07:00
Todd Berman
88c74fa9c2 Convert from mode names to mimetypes for better usage. 2016-09-23 13:40:19 -07:00
Josh Cheek
6a54ee767f Set interpreters for Julia
Eg this file is not currently highlighted:
b766dcdbd2/julia/fullpath (L1)
2016-09-23 12:52:47 -07:00
Arfon Smith
2ea1ff2736 Merge pull request #3240 from github/cut-release-v4.8.14
v4.8.14 release
2016-09-22 21:36:30 -07:00
Arfon Smith
a1901fceff Bump version to v4.8.14 2016-09-22 21:03:33 -07:00
Arfon Smith
b4035a3804 Update grammars 2016-09-22 20:33:39 -07:00
Arfon Smith
fc67fc525c Merge pull request #3219 from Alhadis/emacs-files
Add .gnus, .viper and Project.ede as Emacs Lisp extensions
2016-09-22 08:10:12 -07:00
Arfon Smith
f0659d3aa5 Merge pull request #3213 from larsbrinkhoff/povray
POV-Ray heuristic: #declare
2016-09-21 22:36:49 -07:00
Lars Brinkhoff
a7a123a8db Add heuristic for .inc files: the #declare keyword is unique to POV-Ray.
Also added #local, #macro, and #while.
2016-09-22 07:02:44 +02:00
Arfon Smith
0e5327a77a Merge pull request #3238 from github/cut-release-v4.8.13
Bumping to v4.8.13
2016-09-21 21:35:19 -07:00
Arfon Smith
ecd4ae3bda Bumping to v4.8.13 2016-09-21 21:04:26 -07:00
Arfon Smith
7a8bd628e1 Merge pull request #3237 from github/3227-local
Revised Emacs modeline detection
2016-09-21 21:02:31 -07:00
Arfon Smith
8e19aea39e Removing stray Sublime-VimL grammar reference 2016-09-21 20:58:12 -07:00
Arfon Smith
6fcba83f3e Merge branch 'master' into 3227-local 2016-09-21 20:55:07 -07:00
Todd Berman
d6d7d38eb8 Fix w/ a test 2016-09-21 20:52:49 -07:00
Arfon Smith
c8094d3775 Merge branch 'master' into 3227-local 2016-09-21 20:26:51 -07:00
Arfon Smith
de478d2f2d Merge pull request #3235 from github/add_codemirror_mode
Add Codemirror modes
2016-09-21 20:17:48 -07:00
Arfon Smith
991dcef18b Merge pull request #3223 from Alhadis/vimscript
Swap grammar used for Vimscript highlighting
2016-09-21 20:16:12 -07:00
Arfon Smith
f30e9270f1 Merge pull request #3197 from Alhadis/modelines
Revise patterns for Vim modeline detection
2016-09-21 20:13:28 -07:00
Arfon Smith
1d7ba18b15 M scope 2016-09-21 20:12:27 -07:00
Arfon Smith
35a06d6cb8 Merge branch 'master' into add_codemirror_mode 2016-09-21 20:05:22 -07:00
Arfon Smith
4cf7feb275 Merge pull request #3236 from github/license-whitelist
Whitelist troublesome licenses
2016-09-21 19:54:27 -07:00
Arfon Smith
30298a9ef8 Whitelist troublesome licenses 2016-09-21 09:27:35 -07:00
Todd Berman
cc5f1c57ca Add Codemirror modes 2016-09-20 23:23:22 -07:00
Andrew Case
82af10e3fd add support for MQL4 and MQL5 2016-09-19 22:03:57 +03:00
Andrey Osorgin
63c8d2284c Merge pull request #4 from github/master
Update from upstream repo github/linguist
2016-09-19 10:38:33 +03:00
Alhadis
697380336c Revise pattern for Emacs modeline detection
This is a rewrite of the regex that handles Emacs modeline matching. The
current one is a little flaky, causing some files to be misclassified as
"E", among other things.

It's worth noting malformed modelines can still change a file's language
in Emacs. Provided the -*- delimiters are intact, and the mode's name is
decipherable, Emacs will set the appropriate language mode *and* display
a warning about a malformed modeline:

    -*- foo-bar mode: ruby -*-   # Malformed, but understandable
            -*- mode: ruby--*-   # Completely invalid

The new pattern accommodates this leniency, making no effort to validate
a modeline's syntax beyond readable mode-names. In other words, if Emacs
accepts certain errors, we should too.
2016-09-17 19:45:43 +10:00
Alhadis
5fd8d71858 Remove license for old grammar 2016-09-16 06:17:16 +10:00
Alhadis
5bc88814e2 Swap grammar used for Vimscript highlighting 2016-09-16 04:22:09 +10:00
Lars Brinkhoff
00efd6a463 Add FORTRAN keyword "data" to .f and .for heuristics. (#3218)
bug-185631.f sample from OpenFortranProject; BSD license.
2016-09-15 19:24:53 +02:00
Alhadis
81ca6e7766 Add "abbrev_defs" and "_emacs" as Elisp filenames 2016-09-15 18:57:35 +10:00
Alhadis
cd288a8ee4 Add .gnus, .viper and Project.ede as Emacs Lisp extensions 2016-09-15 17:06:59 +10:00
Arfon Smith
a8d84f3d55 Merge pull request #3215 from github/cut-release-v4.8.12
Bumping to v4.8.12
2016-09-14 16:33:33 -07:00
Arfon Smith
600115afed Bumping to v4.8.12 2016-09-14 16:01:19 -07:00
Arfon Smith
e57273c839 Merge pull request #3214 from pchaigno/remove-sublime-syntax
Remove support for .sublime-syntax
2016-09-14 15:21:54 -07:00
Paul Chaignon
65491d460e Remove support for .sublime-syntax 2016-09-14 23:09:22 +02:00
Arfon Smith
8dc4a1308f Merge pull request #3212 from github/cut-release-v4.8.11
Cut release v4.8.11
2016-09-13 13:02:13 -07:00
Arfon Smith
6841b4d259 Updating to v4.8.11 2016-09-13 11:37:42 -07:00
Arfon Smith
a53423b6e0 Grammar updates 2016-09-13 11:33:20 -07:00
Arfon Smith
02f3ba1840 Merge pull request #3205 from github/language-id
Language ids
2016-09-13 11:27:25 -07:00
Arfon Smith
e1216ea4ee Merge branch 'language-id' of github.com:github/linguist into language-id 2016-09-13 11:14:19 -07:00
Arfon Smith
a3227c2c27 Adding basic find_by_id functionality to Language 2016-09-13 11:09:05 -07:00
Arfon Smith
9f1c950a1f Merge pull request #3206 from pchaigno/fix-elm-highlighting
Fix Elm highlighting
2016-09-13 10:44:46 -07:00
Arfon Smith
c7a0d7b83d Merge pull request #3208 from pchaigno/lock-grammar-versions
Lock grammar versions
2016-09-13 10:43:39 -07:00
Arfon Smith
53c9b2b435 Merge pull request #3207 from pchaigno/test-uniqueness-language-ids
Test the uniqueness of language ids
2016-09-13 10:42:53 -07:00
Paul Chaignon
b4a77abd82 Lock SourcePawn grammar to last working version 2016-09-13 13:50:57 +02:00
Paul Chaignon
8a622823b0 Lock NSIS grammar to last working version 2016-09-13 13:47:03 +02:00
Paul Chaignon
3310d925b6 Lock awk grammar to last working version 2016-09-13 13:41:11 +02:00
Paul Chaignon
65201b322a Test the uniqueness of language ids 2016-09-13 13:10:07 +02:00
Paul Chaignon
b71bf19e37 Fix Elm highlighting
Elm grammar repository contains several YAML files with a source.elm scope
We need to restrict the path to the Syntaxes directory
to make sure we select the appropriate YAML file
2016-09-13 11:04:49 +02:00
Arfon Smith
1f43664a51 Adding some tests for some known language_ids 2016-09-12 22:10:59 -07:00
Arfon Smith
7cda13afcb A Language should know about it's language_id 2016-09-12 22:02:49 -07:00
Arfon Smith
e0d890240b Adding basic script for adding language_id fields to languages.yml 2016-09-12 21:35:10 -07:00
Alhadis
abf7bee464 Include tests for version-specific Vim modelines 2016-09-12 20:00:05 +10:00
Alhadis
e73a4ecd0e Allow " ex:" to match at beginning of file
Although unlikely to be valid syntax in most programming languages, such
a modeline is valid syntax in Vim, and will trigger any filetype modes.
2016-09-12 19:59:08 +10:00
Alhadis
70779c9986 Merge branch 'master' into modelines 2016-09-12 18:48:45 +10:00
Arfon Smith
1fc4c9fdc6 Merge pull request #3203 from github/cut-release-v4.8.10
Cut release v4.8.10
2016-09-11 22:35:56 -07:00
Arfon Smith
fdec52c89a Bumping to v4.8.10 2016-09-11 22:12:38 -07:00
Arfon Smith
6e40de47da Grammar update 2016-09-11 22:05:40 -07:00
Arfon Smith
28be72892e Merge pull request #3173 from Alhadis/specfiles
Add support for RPM Spec files
2016-09-11 21:17:57 -07:00
Arfon Smith
6df0e4591d Merge pull request #3198 from larsbrinkhoff/filebench
Add Filebench WML
2016-09-11 21:16:03 -07:00
Arfon Smith
879c63a25e Merge pull request #3201 from pchaigno/lock-babel-grammar
Lock language-babel grammar to v2.22.0
2016-09-11 19:53:10 -07:00
Arfon Smith
ab2e640759 Merge pull request #3189 from Alhadis/batch-fix
Replace Batchfile grammar and cleanup submodule list
2016-09-11 19:52:51 -07:00
Alhadis
b61fe90d12 Terminate script if submodule registration failed 2016-09-12 02:17:10 +10:00
Alhadis
e6c849d92c Document --verbose option in usage message 2016-09-12 02:08:52 +10:00
Paul Chaignon
5e4e38b39a Lock language-babel grammar to v2.22.0
Use our own fork to make sure we don't update it by mistake
2016-09-11 16:56:17 +02:00
Alhadis
22d4865c52 Revise patterns for Vim modeline detection
The current expressions fail to match certain permutations of options:

    vim: noexpandtab: ft=javascript:
    vim: titlestring=foo\ ft=notperl ft=javascript:

Version-specific modelines are also unaccounted for:

    vim600: set foldmethod=marker ft=javascript:   # >= Vim 6.0
    vim<600: set ft=javascript:                    # <  Vim 6.0

See http://vimdoc.sourceforge.net/htmldoc/options.html#modeline
2016-09-11 00:51:03 +10:00
Lars Brinkhoff
dad3191238 Add Filebench Workload Model Language.
Sample file from filebench project, Sun CDDL license.
2016-09-09 08:27:17 +02:00
Alhadis
35a13b3633 Add .spec as a supported Python and Ruby extension 2016-09-09 05:41:46 +10:00
Alhadis
56fb48ea96 Merge branch 'master' into specfiles 2016-09-09 05:07:55 +10:00
Lars Brinkhoff
983ff20d3c Merge pull request #3195 from larsbrinkhoff/r
Recognise R comments in heuristic.
2016-09-07 18:57:45 +02:00
Lars Brinkhoff
2d51a5dba4 Recognise R comments in heuristic. 2016-09-07 08:05:22 +02:00
Arfon Smith
df98c86acd Merge pull request #3183 from akhtars/master
Add support for Schematron XML validation files (.sch)
2016-09-06 14:22:49 -07:00
Alhadis
98118eb70b Add new grammar for MSDOS Batchfile highlighting 2016-09-07 06:05:02 +10:00
Alhadis
1ec84da277 Remove dangling submodules 2016-09-07 06:04:51 +10:00
Alhadis
3112e6deda Normalise .gitmodules formatting 2016-09-07 06:03:35 +10:00
Alhadis
be316c2943 Update contributor notes to mention new script 2016-09-07 05:36:00 +10:00
Alhadis
68c45be47d Flatten whitespace 2016-09-07 04:37:04 +10:00
Alhadis
4584963dd2 Add logic to update submodules and licenses 2016-09-07 04:26:45 +10:00
Alhadis
f382abc2f3 Add logic to consume and parse options 2016-09-07 03:14:49 +10:00
Arfon Smith
04e1cc6d0a Merge pull request #3079 from pchaigno/yaml-grammars
YAML grammar files
2016-09-04 16:54:35 -07:00
Paul Chaignon
dd7b125869 Merge pull request #3174 from Alhadis/emacs-lisp
Use a dedicated grammar for Emacs Lisp highlighting
2016-09-04 19:48:42 +02:00
Arfon Smith
426818120c Merge pull request #3176 from Alhadis/typo-fixes
Fix typos
2016-09-04 08:46:31 -07:00
Shaun Akhtar
50bd2cc3c8 Add support for Schematron XML validation files (.sch)
Update languages.yml and add three public domain sample documents.
2016-08-31 12:56:02 -04:00
Adrian Sieber
00647be113 Exclude "dist" directory from language statistics 2016-08-31 14:56:07 +00:00
Alhadis
e930ee1a8e Fix typos 2016-08-29 02:24:21 +10:00
Alhadis
48b64c2d31 Add CSON samples 2016-08-29 01:57:32 +10:00
Alhadis
f95365946c Separate CSON from CoffeeScript 2016-08-29 01:56:05 +10:00
Alhadis
5ddccaac83 Add ".spacemacs" as a recognised filename 2016-08-29 01:08:10 +10:00
Alhadis
51d7c8f905 Use a dedicated grammar to highlight Emacs Lisp 2016-08-29 00:52:15 +10:00
Alhadis
ed71855612 Add sample .spec files 2016-08-29 00:28:18 +10:00
Alhadis
742faebd8b Add RPM Spec files to languages list 2016-08-29 00:25:33 +10:00
Paul Chaignon
6763b73d9c Fix .ts heuristic rule (#3171)
Use the opening TS tag instead of the closing tag since
the closing tag might be at the end of the file,
after the max number of lines we read with a LazyBlob
2016-08-27 21:01:58 +02:00
Arfon Smith
5c3744dfd6 Merge pull request #3165 from github/cut-release-v4.8.9
Linguist v4.8.9
2016-08-26 13:17:32 -07:00
Arfon Smith
cb5bc91fe3 Grammar update 2016-08-25 09:22:13 -07:00
Arfon Smith
9171ee602b Ordering 2016-08-24 23:02:54 -07:00
Arfon Smith
4da0463768 Typo fix 2016-08-24 23:01:25 -07:00
Arfon Smith
8d0a2d9dc1 Grammar re-ordering 2016-08-24 22:59:42 -07:00
Arfon Smith
6a2cebea7d Updating location of XQuery grammar 2016-08-24 22:56:17 -07:00
Arfon Smith
ae10395b3a Updating location of VHDL grammar 2016-08-24 22:53:49 -07:00
Arfon Smith
510abc7cee Updating location of SecondLife LSL grammar 2016-08-24 22:51:13 -07:00
Arfon Smith
e8a700e4e3 Updating location of Parrot grammar 2016-08-24 22:48:10 -07:00
Arfon Smith
c13e384e18 Updating location of Forth grammar 2016-08-24 22:44:36 -07:00
Arfon Smith
4204078b19 Updating location of Cython grammar 2016-08-24 22:40:08 -07:00
Arfon Smith
17fc3d0640 Blitzmax license 2016-08-24 22:31:08 -07:00
Arfon Smith
7715254212 Moving blitzmax grammar to GitHub-hosted copy 2016-08-24 20:48:31 -07:00
Arfon Smith
2f50aa460a Removing nuked grammars 2016-08-24 09:50:12 -07:00
Arfon Smith
6adec161fa Updating version to v4.8.9 2016-08-24 09:40:22 -07:00
Arfon Smith
c802ba3a1d Grammar update 2016-08-24 09:37:47 -07:00
Arfon Smith
06e80f3889 Grammar update 2016-08-24 09:30:20 -07:00
Arfon Smith
216d63f575 Merge pull request #3162 from pchaigno/grammar-rexx
Grammar for REXX from Sublime Text package
2016-08-24 08:54:09 -07:00
Paul Chaignon
ff042a87a4 Grammar for REXX from Sublime Text package 2016-08-24 08:23:35 +02:00
John Gardner
56f0f93bbb Change grammar used for Haskell highlighting (#3147) 2016-08-19 18:49:15 +02:00
Arfon Smith
99a3a5b85b Merge pull request #2773 from nixel2007/master
Add 1C (BSL) language support
2016-08-19 09:12:49 -07:00
Nikita Gryzlov
1868d1d190 Add 1C (BSL) language support 2016-08-19 10:21:48 +03:00
ajLangley12
705e234044 Added ASN.1 language package (#3152) 2016-08-13 10:25:59 +02:00
Arfon Smith
0dd78704f7 Update CONTRIBUTING.md 2016-08-10 13:10:05 -07:00
Arfon Smith
257425141d Merge pull request #3141 from Alhadis/ps-red
Make PostScript red again
2016-08-03 11:35:50 -07:00
Alhadis
6482a60c6e Add colour to PostScript 2016-08-03 01:39:07 +10:00
Lars Brinkhoff
1466b70f10 Merge pull request #3126 from Alhadis/roff
Improve Roff support / Add RUNOFF to recognised languages
2016-07-29 20:01:54 +02:00
Lars Brinkhoff
b87146056b Merge pull request #3124 from larsbrinkhoff/rexx
Add REXX.
2016-07-29 19:58:29 +02:00
Arfon Smith
b29696d684 Merge pull request #3123 from sahildua2305/replace-dtrace-samples
Replace DTrace sample with one having permissive license
2016-07-29 06:27:18 -06:00
Sahil Dua
514a8d54db Add new language PowerBuilder (#3077) 2016-07-24 12:59:24 +02:00
Alhadis
abfe89d8ff Kill orphaned submodule 2016-07-21 11:05:44 +10:00
Alhadis
22609dc297 Add heuristic to distinguish RUNOFF from Roff 2016-07-21 08:57:09 +10:00
Alhadis
93341be396 Add language definition and samples for RUNOFF 2016-07-21 08:41:05 +10:00
Alhadis
f2ae3b6223 Define additional extensions/names for Troff files 2016-07-21 07:46:33 +10:00
Alhadis
e84204a274 Swap language grammar used for Roff highlighting 2016-07-21 07:13:17 +10:00
Iggy Drougge
7024c7cb37 Add REXX. 2016-07-18 21:02:51 +02:00
Sahil Dua
91e0823b04 Replace DTrace sample with a premissive license 2016-07-17 02:05:07 +02:00
Andrey Osorgin
b056df06f4 Merge pull request #3 from github/master
Update from upstream repo github/linguist
2016-07-14 21:34:28 +03:00
osorgin
6bf223e641 Merge pull request #2 from github/master
Update from upstream repo github/linguist
2016-07-14 14:58:17 +03:00
osorgin
fa817b6a1d Merge pull request #1 from github/master
Update from upstream repo github/linguist
2016-07-12 16:14:26 +03:00
Paul Chaignon
adaf4011bc Support for .YAML-tmLanguage grammar files 2016-06-26 20:57:50 +02:00
Paul Chaignon
4a031107ac Support for Sublime Text YAML syntax definitions
Sublime Text YAML syntax definitions use the .sublime-syntax file extension

Most syntax files declare a YAML 1.2 syntax although they are YAML 1.1 compatible
Thus, the YAML version header is stripped off before parsing
Displays a warning if parsing fails

In .sublime-syntax files, the scope is under the 'scope' key -- as opposed to the usual 'scopeName' key
2016-06-26 19:47:34 +02:00
229 changed files with 24951 additions and 2729 deletions

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
/Gemfile.lock
.bundle/
.idea
benchmark/
lib/linguist/samples.json
/grammars

88
.gitmodules vendored
View File

@@ -12,7 +12,7 @@
url = https://github.com/Drako/SublimeBrainfuck
[submodule "vendor/grammars/awk-sublime"]
path = vendor/grammars/awk-sublime
url = https://github.com/JohnNilsson/awk-sublime
url = https://github.com/github-linguist/awk-sublime
[submodule "vendor/grammars/Sublime-SQF-Language"]
path = vendor/grammars/Sublime-SQF-Language
url = https://github.com/JonBons/Sublime-SQF-Language
@@ -22,15 +22,15 @@
[submodule "vendor/grammars/Sublime-REBOL"]
path = vendor/grammars/Sublime-REBOL
url = https://github.com/Oldes/Sublime-REBOL
[submodule "vendor/grammars/Sublime-VimL"]
path = vendor/grammars/Sublime-VimL
url = https://github.com/SalGnt/Sublime-VimL
[submodule "vendor/grammars/language-viml"]
path = vendor/grammars/language-viml
url = https://github.com/Alhadis/language-viml
[submodule "vendor/grammars/ColdFusion"]
path = vendor/grammars/ColdFusion
url = https://github.com/SublimeText/ColdFusion
[submodule "vendor/grammars/NSIS"]
path = vendor/grammars/NSIS
url = https://github.com/SublimeText/NSIS
url = https://github.com/github-linguist/NSIS
[submodule "vendor/grammars/NimLime"]
path = vendor/grammars/NimLime
url = https://github.com/Varriount/NimLime
@@ -91,9 +91,6 @@
[submodule "vendor/grammars/bro-sublime"]
path = vendor/grammars/bro-sublime
url = https://github.com/bro/bro-sublime
[submodule "vendor/grammars/sublime_man_page_support"]
path = vendor/grammars/sublime_man_page_support
url = https://github.com/carsonoid/sublime_man_page_support
[submodule "vendor/grammars/sublime-MuPAD"]
path = vendor/grammars/sublime-MuPAD
url = https://github.com/ccreutzig/sublime-MuPAD
@@ -205,9 +202,6 @@
[submodule "vendor/grammars/sublime-robot-plugin"]
path = vendor/grammars/sublime-robot-plugin
url = https://github.com/shellderp/sublime-robot-plugin
[submodule "vendor/grammars/actionscript3-tmbundle"]
path = vendor/grammars/actionscript3-tmbundle
url = https://github.com/honzabrecka/actionscript3-tmbundle
[submodule "vendor/grammars/Sublime-QML"]
path = vendor/grammars/Sublime-QML
url = https://github.com/skozlovf/Sublime-QML
@@ -283,9 +277,6 @@
[submodule "vendor/grammars/groovy.tmbundle"]
path = vendor/grammars/groovy.tmbundle
url = https://github.com/textmate/groovy.tmbundle
[submodule "vendor/grammars/haskell.tmbundle"]
path = vendor/grammars/haskell.tmbundle
url = https://github.com/textmate/haskell.tmbundle
[submodule "vendor/grammars/html.tmbundle"]
path = vendor/grammars/html.tmbundle
url = https://github.com/textmate/html.tmbundle
@@ -418,9 +409,9 @@
[submodule "vendor/grammars/oz-tmbundle"]
path = vendor/grammars/oz-tmbundle
url = https://github.com/eregon/oz-tmbundle
[submodule "vendor/grammars/ebundles"]
path = vendor/grammars/ebundles
url = https://github.com/ericzou/ebundles
[submodule "vendor/grammars/language-batchfile"]
path = vendor/grammars/language-batchfile
url = https://github.com/mmims/language-batchfile
[submodule "vendor/grammars/sublime-mask"]
path = vendor/grammars/sublime-mask
url = https://github.com/tenbits/sublime-mask
@@ -565,7 +556,7 @@
url = https://github.com/ShaneWilton/sublime-smali
[submodule "vendor/grammars/language-jsoniq"]
path = vendor/grammars/language-jsoniq
url = http://github.com/wcandillon/language-jsoniq
url = https://github.com/wcandillon/language-jsoniq
[submodule "vendor/grammars/atom-fsharp"]
path = vendor/grammars/atom-fsharp
url = https://github.com/fsprojects/atom-fsharp
@@ -608,9 +599,6 @@
[submodule "vendor/grammars/X10"]
path = vendor/grammars/X10
url = https://github.com/x10-lang/x10-highlighting
[submodule "vendor/grammars/language-babel"]
path = vendor/grammars/language-babel
url = https://github.com/gandm/language-babel
[submodule "vendor/grammars/UrWeb-Language-Definition"]
path = vendor/grammars/UrWeb-Language-Definition
url = https://github.com/gwalborn/UrWeb-Language-Definition.git
@@ -675,8 +663,8 @@
path = vendor/grammars/pig-latin
url = https://github.com/goblindegook/sublime-text-pig-latin
[submodule "vendor/grammars/sourcepawn"]
path = vendor/grammars/sourcepawn
url = https://github.com/austinwagner/sublime-sourcepawn
path = vendor/grammars/sourcepawn
url = https://github.com/github-linguist/sublime-sourcepawn
[submodule "vendor/grammars/gdscript"]
path = vendor/grammars/gdscript
url = https://github.com/beefsack/GDScript-sublime
@@ -755,3 +743,57 @@ url = https://github.com/austinwagner/sublime-sourcepawn
[submodule "vendor/grammars/SublimeGDB"]
path = vendor/grammars/SublimeGDB
url = https://github.com/quarnster/SublimeGDB
[submodule "vendor/grammars/language-roff"]
path = vendor/grammars/language-roff
url = https://github.com/Alhadis/language-roff
[submodule "vendor/grammars/language-haskell"]
path = vendor/grammars/language-haskell
url = https://github.com/atom-haskell/language-haskell
[submodule "vendor/grammars/language-asn1"]
path = vendor/grammars/language-asn1
url = https://github.com/ajLangley12/language-asn1
[submodule "vendor/grammars/atom-language-1c-bsl"]
path = vendor/grammars/atom-language-1c-bsl
url = https://github.com/xDrivenDevelopment/atom-language-1c-bsl.git
[submodule "vendor/grammars/sublime-rexx"]
path = vendor/grammars/sublime-rexx
url = https://github.com/mblocker/rexx-sublime
[submodule "vendor/grammars/blitzmax"]
path = vendor/grammars/blitzmax
url = https://github.com/textmate/blitzmax.tmbundle
[submodule "vendor/grammars/cython"]
path = vendor/grammars/cython
url = https://github.com/textmate/cython.tmbundle
[submodule "vendor/grammars/forth"]
path = vendor/grammars/forth
url = https://github.com/textmate/forth.tmbundle
[submodule "vendor/grammars/parrot"]
path = vendor/grammars/parrot
url = https://github.com/textmate/parrot.tmbundle
[submodule "vendor/grammars/secondlife-lsl"]
path = vendor/grammars/secondlife-lsl
url = https://github.com/textmate/secondlife-lsl.tmbundle
[submodule "vendor/grammars/vhdl"]
path = vendor/grammars/vhdl
url = https://github.com/textmate/vhdl.tmbundle
[submodule "vendor/grammars/xquery"]
path = vendor/grammars/xquery
url = https://github.com/textmate/xquery.tmbundle
[submodule "vendor/grammars/language-rpm-spec"]
path = vendor/grammars/language-rpm-spec
url = https://github.com/waveclaw/language-rpm-spec
[submodule "vendor/grammars/language-emacs-lisp"]
path = vendor/grammars/language-emacs-lisp
url = https://github.com/Alhadis/language-emacs-lisp
[submodule "vendor/grammars/language-babel"]
path = vendor/grammars/language-babel
url = https://github.com/github-linguist/language-babel
[submodule "vendor/CodeMirror"]
path = vendor/CodeMirror
url = https://github.com/codemirror/CodeMirror
[submodule "vendor/grammars/MQL5-sublime"]
path = vendor/grammars/MQL5-sublime
url = https://github.com/mqsoft/MQL5-sublime
[submodule "vendor/grammars/actionscript3-tmbundle"]
path = vendor/grammars/actionscript3-tmbundle
url = https://github.com/simongregory/actionscript3-tmbundle

View File

@@ -17,7 +17,7 @@ To add support for a new extension:
In addition, if this extension is already listed in [`languages.yml`][languages] then sometimes a few more steps will need to be taken:
0. Make sure that example `.yourextension` files are present in the [samples directory][samples] for each language that uses `.yourextension`.
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files.
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.yourextension` files. (ping **@arfon** or **@bkeepers** to help with this) to ensure we're not misclassifying files.
0. If the Bayesian classifier does a bad job with the sample `.yourextension` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
@@ -27,18 +27,16 @@ We try only to add languages once they have some usage on GitHub. In most cases
To add support for a new language:
0. Add an entry for your language to [`languages.yml`][languages].
0. Add a grammar for your language. Please only add grammars that have a license that permits redistribution.
0. Add your grammar as a submodule: `git submodule add https://github.com/JaneSmith/MyGrammar vendor/grammars/MyGrammar`.
0. Add your grammar to [`grammars.yml`][grammars] by running `script/convert-grammars --add vendor/grammars/MyGrammar`.
0. Download the license for the grammar: `script/licensed`. Be careful to only commit the file for the new grammar, as this script may update licenses for other grammars as well.
0. Add an entry for your language to [`languages.yml`][languages]. Omit the `language_id` field for now.
0. 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].
0. Add samples for your language to the [samples directory][samples] in the correct subdirectory.
0. 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:**
0. 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.
In addition, if your new language defines an extension that's already listed in [`languages.yml`][languages] (such as `.foo`) then sometimes a few more steps will need to be taken:
0. Make sure that example `.foo` files are present in the [samples directory][samples] for each language that uses `.foo`.
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping @arfon or @bkeepers to help with this) to ensure we're not misclassifying files.
0. Test the performance of the Bayesian classifier with a relatively large number (1000s) of sample `.foo` files. (ping **@arfon** or **@bkeepers** to help with this) to ensure we're not misclassifying files.
0. If the Bayesian classifier does a bad job with the sample `.foo` files then a [heuristic](https://github.com/github/linguist/blob/master/lib/linguist/heuristics.rb) may need to be written to help.
Remember, the goal here is to try and avoid false positives!
@@ -81,10 +79,10 @@ Here's our current build status: [![Build Status](https://api.travis-ci.org/gith
Linguist is maintained with :heart: by:
- @arfon (GitHub Staff)
- @larsbrinkhoff
- @pchaigno
- **@arfon** (GitHub Staff)
- **@larsbrinkhoff**
- **@pchaigno**
As Linguist is a production dependency for GitHub we have a couple of workflow restrictions:
- Anyone with commit rights can merge Pull Requests provided that there is a :+1: from a GitHub member of staff
@@ -112,5 +110,6 @@ If you are the current maintainer of this gem:
[grammars]: /grammars.yml
[languages]: /lib/linguist/languages.yml
[licenses]: https://github.com/github/linguist/blob/257425141d4e2a5232786bf0b13c901ada075f93/vendor/licenses/config.yml#L2-L11
[samples]: /samples
[new-issue]: https://github.com/github/linguist/issues/new

View File

@@ -23,7 +23,7 @@ class GitLinguist
if @incremental && stats = load_language_stats
old_commit_oid, old_stats = stats
# A cache with NULL oid means that we want to froze
# A cache with NULL oid means that we want to freeze
# these language stats in place and stop computing
# them (for performance reasons)
return old_stats if old_commit_oid == NULL_OID
@@ -111,7 +111,7 @@ def git_linguist(args)
parser.parse!(args)
git_dir = `git rev-parse --git-dir`.strip
raise "git-linguist must be ran in a Git repository (#{Dir.pwd})" unless $?.success?
raise "git-linguist must be run in a Git repository (#{Dir.pwd})" unless $?.success?
wrapper = GitLinguist.new(git_dir, commit, incremental)
case args.pop

View File

@@ -26,6 +26,6 @@ Gem::Specification.new do |s|
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.3.0'
s.add_development_dependency 'licensee', '>= 8.6.0'
end

View File

@@ -1,20 +1,6 @@
---
http://svn.edgewall.org/repos/genshi/contrib/textmate/Genshi.tmbundle/Syntaxes/Markup%20Template%20%28XML%29.tmLanguage:
- text.xml.genshi
http://svn.textmate.org/trunk/Review/Bundles/BlitzMax.tmbundle:
- source.blitzmax
http://svn.textmate.org/trunk/Review/Bundles/Cython.tmbundle:
- source.cython
http://svn.textmate.org/trunk/Review/Bundles/Forth.tmbundle:
- source.forth
http://svn.textmate.org/trunk/Review/Bundles/Parrot.tmbundle:
- source.parrot.pir
http://svn.textmate.org/trunk/Review/Bundles/SecondLife%20LSL.tmbundle:
- source.lsl
http://svn.textmate.org/trunk/Review/Bundles/VHDL.tmbundle:
- source.vhdl
http://svn.textmate.org/trunk/Review/Bundles/XQuery.tmbundle:
- source.xquery
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
- source.systemverilog
- source.ucfconstraints
@@ -22,9 +8,9 @@ vendor/grammars/Agda.tmbundle:
- source.agda
vendor/grammars/Alloy.tmbundle:
- source.alloy
vendor/grammars/AutoHotkey/:
vendor/grammars/AutoHotkey:
- source.ahk
vendor/grammars/BrightScript.tmbundle/:
vendor/grammars/BrightScript.tmbundle:
- source.brightauthorproject
- source.brightscript
vendor/grammars/ColdFusion:
@@ -34,11 +20,13 @@ vendor/grammars/ColdFusion:
- text.html.cfm
vendor/grammars/Docker.tmbundle:
- source.dockerfile
vendor/grammars/Elm/:
vendor/grammars/Elm/Syntaxes:
- source.elm
- text.html.mediawiki.elm-build-output
- text.html.mediawiki.elm-documentation
vendor/grammars/FreeMarker.tmbundle:
- text.html.ftl
vendor/grammars/G-Code/:
vendor/grammars/G-Code:
- source.LS
- source.MCPOST
- source.MOD
@@ -51,7 +39,7 @@ vendor/grammars/IDL-Syntax:
vendor/grammars/Isabelle.tmbundle:
- source.isabelle.root
- source.isabelle.theory
vendor/grammars/JSyntax/:
vendor/grammars/JSyntax:
- source.j
vendor/grammars/Julia.tmbundle:
- source.julia
@@ -59,10 +47,12 @@ vendor/grammars/Lean.tmbundle:
- source.lean
vendor/grammars/LiveScript.tmbundle:
- source.livescript
vendor/grammars/MQL5-sublime:
- source.mql5
vendor/grammars/MagicPython:
- source.python
- source.regexp.python
vendor/grammars/Modelica/:
vendor/grammars/Modelica:
- source.modelica
vendor/grammars/NSIS:
- source.nsis
@@ -72,7 +62,7 @@ vendor/grammars/NimLime:
- source.nimcfg
vendor/grammars/PHP-Twig.tmbundle:
- text.html.twig
vendor/grammars/PogoScript.tmbundle/:
vendor/grammars/PogoScript.tmbundle:
- source.pogoscript
vendor/grammars/RDoc.tmbundle:
- text.rdoc
@@ -87,10 +77,10 @@ vendor/grammars/Scalate.tmbundle:
- text.html.ssp
vendor/grammars/Slash.tmbundle:
- text.html.slash
vendor/grammars/Stata.tmbundle/:
vendor/grammars/Stata.tmbundle:
- source.mata
- source.stata
vendor/grammars/Stylus/:
vendor/grammars/Stylus:
- source.stylus
vendor/grammars/Sublime-Coq:
- source.coq
@@ -100,7 +90,7 @@ vendor/grammars/Sublime-Lasso:
- file.lasso
vendor/grammars/Sublime-Loom:
- source.loomscript
vendor/grammars/Sublime-Modula-2/:
vendor/grammars/Sublime-Modula-2:
- source.modula2
vendor/grammars/Sublime-Nit:
- source.nit
@@ -115,26 +105,24 @@ vendor/grammars/Sublime-SQF-Language:
vendor/grammars/Sublime-Text-2-OpenEdge-ABL:
- source.abl
- text.html.abl
vendor/grammars/Sublime-VimL:
- source.viml
vendor/grammars/SublimeBrainfuck:
- source.bf
vendor/grammars/SublimeClarion/:
vendor/grammars/SublimeClarion:
- source.clarion
vendor/grammars/SublimeGDB/:
vendor/grammars/SublimeGDB:
- source.disasm
- source.gdb
- source.gdb.session
- source.gdbregs
vendor/grammars/SublimePapyrus/:
vendor/grammars/SublimePapyrus:
- source.papyrus.skyrim
vendor/grammars/SublimePuppet/:
vendor/grammars/SublimePuppet:
- source.puppet
vendor/grammars/SublimeXtend:
- source.xtend
vendor/grammars/TLA:
- source.tla
vendor/grammars/TXL/:
vendor/grammars/TXL:
- source.txl
vendor/grammars/Textmate-Gosu-Bundle:
- source.gosu.2
@@ -148,7 +136,7 @@ vendor/grammars/X10:
- source.x10
vendor/grammars/abap.tmbundle:
- source.abap
vendor/grammars/actionscript3-tmbundle:
vendor/grammars/actionscript3-tmbundle/:
- source.actionscript.3
- text.html.asdoc
- text.xml.flex-config
@@ -163,36 +151,39 @@ vendor/grammars/antlr.tmbundle:
vendor/grammars/apache.tmbundle:
- source.apache-config
- source.apache-config.mod_perl
vendor/grammars/api-blueprint-sublime-plugin/:
vendor/grammars/api-blueprint-sublime-plugin:
- text.html.markdown.source.gfm.apib
- text.html.markdown.source.gfm.mson
vendor/grammars/applescript.tmbundle:
- source.applescript
vendor/grammars/asciidoc.tmbundle/:
vendor/grammars/asciidoc.tmbundle:
- text.html.asciidoc
vendor/grammars/asp.tmbundle:
- source.asp
- text.html.asp
vendor/grammars/assembly/:
vendor/grammars/assembly:
- objdump.x86asm
- source.x86asm
vendor/grammars/atom-fsharp/:
vendor/grammars/atom-fsharp:
- source.fsharp
- source.fsharp.fsi
- source.fsharp.fsl
- source.fsharp.fsx
vendor/grammars/atom-language-1c-bsl:
- source.bsl
- source.sdbl
vendor/grammars/atom-language-clean:
- source.clean
vendor/grammars/atom-language-purescript/:
vendor/grammars/atom-language-purescript:
- source.purescript
vendor/grammars/atom-language-srt:
- text.srt
vendor/grammars/atom-language-stan/:
vendor/grammars/atom-language-stan:
- source.stan
vendor/grammars/atom-salt:
- source.python.salt
- source.yaml.salt
vendor/grammars/atomic-dreams/:
vendor/grammars/atomic-dreams:
- source.dm
- source.dmf
vendor/grammars/ats:
@@ -201,7 +192,9 @@ vendor/grammars/awk-sublime:
- source.awk
vendor/grammars/bison.tmbundle:
- source.bison
vendor/grammars/boo/:
vendor/grammars/blitzmax:
- source.blitzmax
vendor/grammars/boo:
- source.boo
vendor/grammars/bro-sublime:
- source.bro
@@ -226,13 +219,15 @@ vendor/grammars/cool-tmbundle:
vendor/grammars/cpp-qt.tmbundle:
- source.c++.qt
- source.qmake
vendor/grammars/creole/:
vendor/grammars/creole:
- text.html.creole
vendor/grammars/css.tmbundle:
- source.css
vendor/grammars/cucumber-tmbundle:
- source.ruby.rspec.cucumber.steps
- text.gherkin.feature
vendor/grammars/cython:
- source.cython
vendor/grammars/d.tmbundle:
- source.d
vendor/grammars/dart-sublime-bundle:
@@ -248,9 +243,7 @@ vendor/grammars/dylan.tmbundle:
- source.dylan
- source.lid
- source.makegen
vendor/grammars/ebundles/Bundles/MSDOS batch file.tmbundle:
- source.dosbatch
vendor/grammars/ec.tmbundle/:
vendor/grammars/ec.tmbundle:
- source.c.ec
vendor/grammars/eiffel.tmbundle:
- source.eiffel
@@ -270,12 +263,14 @@ vendor/grammars/fancy-tmbundle:
- source.fancy
vendor/grammars/fish-tmbundle:
- source.fish
vendor/grammars/forth:
- source.forth
vendor/grammars/fortran.tmbundle:
- source.fortran
- source.fortran.modern
vendor/grammars/gap-tmbundle/:
vendor/grammars/gap-tmbundle:
- source.gap
vendor/grammars/gdscript/:
vendor/grammars/gdscript:
- source.gdscript
vendor/grammars/gettext.tmbundle:
- source.po
@@ -291,9 +286,6 @@ vendor/grammars/graphviz.tmbundle:
- source.dot
vendor/grammars/groovy.tmbundle:
- source.groovy
vendor/grammars/haskell.tmbundle:
- source.haskell
- text.tex.latex.haskell
vendor/grammars/haxe-sublime-bundle:
- source.erazor
- source.haxe.2
@@ -306,7 +298,7 @@ vendor/grammars/idl.tmbundle:
- source.idl
- source.idl-dlm
- text.idl-idldoc
vendor/grammars/idris/:
vendor/grammars/idris:
- source.idris
vendor/grammars/ini.tmbundle:
- source.ini
@@ -336,12 +328,16 @@ vendor/grammars/language-agc:
- source.agc
vendor/grammars/language-apl:
- source.apl
vendor/grammars/language-babel/:
vendor/grammars/language-asn1:
- source.asn
vendor/grammars/language-babel:
- source.js.jsx
- source.regexp.babel
vendor/grammars/language-blade/:
vendor/grammars/language-batchfile:
- source.batchfile
vendor/grammars/language-blade:
- text.html.php.blade
vendor/grammars/language-click/:
vendor/grammars/language-click:
- source.click
vendor/grammars/language-clojure:
- source.clojure
@@ -360,22 +356,34 @@ vendor/grammars/language-csound:
- source.csound
- source.csound-document
- source.csound-score
vendor/grammars/language-emacs-lisp:
- source.emacs.lisp
vendor/grammars/language-gfm:
- source.gfm
vendor/grammars/language-graphql:
- source.graphql
vendor/grammars/language-haskell:
- hint.haskell
- hint.message.haskell
- hint.type.haskell
- source.c2hs
- source.cabal
- source.haskell
- source.hsc2hs
- text.tex.latex.haskell
vendor/grammars/language-hy:
- source.hy
vendor/grammars/language-inform7:
- source.inform7
vendor/grammars/language-javascript:
- source.js
- source.js.embedded.html
- source.js.regexp
- source.js.regexp.replacement
vendor/grammars/language-jsoniq/:
vendor/grammars/language-jsoniq:
- source.jq
- source.xq
vendor/grammars/language-less/:
vendor/grammars/language-less:
- source.css.less
vendor/grammars/language-maxscript:
- source.maxscript
@@ -390,6 +398,14 @@ vendor/grammars/language-renpy:
- source.renpy
vendor/grammars/language-restructuredtext:
- text.restructuredtext
vendor/grammars/language-roff:
- source.ideal
- source.pic
- text.roff
- text.runoff
vendor/grammars/language-rpm-spec:
- source.changelogs.rpm-spec
- source.rpm-spec
vendor/grammars/language-shellscript:
- source.shell
- text.shell-session
@@ -399,6 +415,8 @@ vendor/grammars/language-toc-wow:
- source.toc
vendor/grammars/language-turing:
- source.turing
vendor/grammars/language-viml:
- source.viml
vendor/grammars/language-wavefront:
- source.wavefront.mtl
- source.wavefront.obj
@@ -406,7 +424,7 @@ vendor/grammars/language-xbase:
- source.harbour
vendor/grammars/language-yaml:
- source.yaml
vendor/grammars/language-yang/:
vendor/grammars/language-yang:
- source.yang
vendor/grammars/latex.tmbundle:
- text.bibtex
@@ -440,11 +458,11 @@ vendor/grammars/matlab.tmbundle:
- source.octave
vendor/grammars/maven.tmbundle:
- text.xml.pom
vendor/grammars/mediawiki.tmbundle/:
vendor/grammars/mediawiki.tmbundle:
- text.html.mediawiki
vendor/grammars/mercury-tmlanguage:
- source.mercury
vendor/grammars/monkey/:
vendor/grammars/monkey:
- source.monkey
vendor/grammars/moonscript-tmbundle:
- source.moonscript
@@ -474,11 +492,13 @@ vendor/grammars/opa.tmbundle:
- source.opa
vendor/grammars/oz-tmbundle/Syntaxes/Oz.tmLanguage:
- source.oz
vendor/grammars/parrot:
- source.parrot.pir
vendor/grammars/pascal.tmbundle:
- source.pascal
vendor/grammars/pawn-sublime-language/:
vendor/grammars/pawn-sublime-language:
- source.pawn
vendor/grammars/perl.tmbundle/:
vendor/grammars/perl.tmbundle:
- source.perl
- source.perl.6
vendor/grammars/perl6fe:
@@ -489,7 +509,7 @@ vendor/grammars/php-smarty.tmbundle:
- text.html.smarty
vendor/grammars/php.tmbundle:
- text.html.php
vendor/grammars/pig-latin/:
vendor/grammars/pig-latin:
- source.pig_latin
vendor/grammars/pike-textmate:
- source.pike
@@ -526,11 +546,13 @@ vendor/grammars/scheme.tmbundle:
- source.scheme
vendor/grammars/scilab.tmbundle:
- source.scilab
vendor/grammars/smali-sublime/smali.tmLanguage:
vendor/grammars/secondlife-lsl:
- source.lsl
vendor/grammars/smali-sublime:
- source.smali
vendor/grammars/smalltalk-tmbundle:
- source.smalltalk
vendor/grammars/sourcepawn/:
vendor/grammars/sourcepawn:
- source.sp
vendor/grammars/sql.tmbundle:
- source.sql
@@ -541,9 +563,9 @@ vendor/grammars/standard-ml.tmbundle:
- source.ml
vendor/grammars/sublime-MuPAD:
- source.mupad
vendor/grammars/sublime-aspectj/:
vendor/grammars/sublime-aspectj:
- source.aspectj
vendor/grammars/sublime-autoit/:
vendor/grammars/sublime-autoit:
- source.autoit
vendor/grammars/sublime-befunge:
- source.befunge
@@ -551,12 +573,12 @@ vendor/grammars/sublime-bsv:
- source.bsv
vendor/grammars/sublime-cirru:
- source.cirru
vendor/grammars/sublime-clips/:
vendor/grammars/sublime-clips:
- source.clips
vendor/grammars/sublime-glsl:
- source.essl
- source.glsl
vendor/grammars/sublime-golo/:
vendor/grammars/sublime-golo:
- source.golo
vendor/grammars/sublime-mask:
- source.mask
@@ -565,27 +587,31 @@ vendor/grammars/sublime-netlinx:
- source.netlinx.erb
vendor/grammars/sublime-nginx:
- source.nginx
vendor/grammars/sublime-opal/:
vendor/grammars/sublime-opal:
- source.opal
- source.opalsysdefs
vendor/grammars/sublime-pony:
- source.pony
vendor/grammars/sublime-rexx:
- source.rexx
vendor/grammars/sublime-robot-plugin:
- text.robot
vendor/grammars/sublime-rust:
- source.rust
vendor/grammars/sublime-spintools/:
vendor/grammars/sublime-spintools:
- source.regexp.spin
- source.spin
vendor/grammars/sublime-tea:
- source.tea
vendor/grammars/sublime-terra:
- source.terra
vendor/grammars/sublime-text-ox/:
vendor/grammars/sublime-text-ox:
- source.ox
vendor/grammars/sublime-typescript/:
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:
@@ -593,12 +619,9 @@ vendor/grammars/sublime_cobol:
- source.cobol
- source.jcl
- source.opencobol
vendor/grammars/sublime_man_page_support:
- source.man
- text.groff
vendor/grammars/sublimeassembly/:
vendor/grammars/sublimeassembly:
- source.assembly
vendor/grammars/sublimeprolog/:
vendor/grammars/sublimeprolog:
- source.prolog
- source.prolog.eclipse
vendor/grammars/sublimetext-cuda-cpp:
@@ -617,12 +640,16 @@ vendor/grammars/turtle.tmbundle:
- source.turtle
vendor/grammars/verilog.tmbundle:
- source.verilog
vendor/grammars/vhdl:
- source.vhdl
vendor/grammars/vue-syntax-highlight:
- text.html.vue
vendor/grammars/xc.tmbundle/:
vendor/grammars/xc.tmbundle:
- source.xc
vendor/grammars/xml.tmbundle:
- text.xml
- text.xml.xsl
vendor/grammars/xquery:
- source.xquery
vendor/grammars/zephir-sublime:
- source.php.zephir

View File

@@ -144,10 +144,22 @@ module Linguist
end
end
disambiguate ".for", ".f" do |data|
fortran_rx = /^([c*][^abd-z]| (subroutine|program|end|data)\s|\s*!)/i
disambiguate ".f" do |data|
if /^: /.match(data)
Language["Forth"]
elsif /^([c*][^abd-z]| (subroutine|program|end)\s|\s*!)/i.match(data)
elsif data.include?("flowop")
Language["Filebench WML"]
elsif fortran_rx.match(data)
Language["FORTRAN"]
end
end
disambiguate ".for" do |data|
if /^: /.match(data)
Language["Forth"]
elsif fortran_rx.match(data)
Language["FORTRAN"]
end
end
@@ -190,6 +202,8 @@ module Linguist
disambiguate ".inc" do |data|
if /^<\?(?:php)?/.match(data)
Language["PHP"]
elsif /^\s*#(declare|local|macro|while)\s/.match(data)
Language["POV-Ray SDL"]
end
end
@@ -230,7 +244,7 @@ module Linguist
Language["MUF"]
elsif /^\s*;/.match(data)
Language["M"]
elsif /^\s*\(\*/.match(data)
elsif /\*\)$/.match(data)
Language["Mathematica"]
elsif /^\s*%/.match(data)
Language["Matlab"]
@@ -240,7 +254,7 @@ module Linguist
end
disambiguate ".md" do |data|
if /^[-a-z0-9=#!\*\[|]/i.match(data)
if /(^[-a-z0-9=#!\*\[|])|<\//i.match(data) || data.empty?
Language["Markdown"]
elsif /^(;;|\(define_)/.match(data)
Language["GCC machine description"]
@@ -354,11 +368,19 @@ module Linguist
disambiguate ".r" do |data|
if /\bRebol\b/i.match(data)
Language["Rebol"]
elsif data.include?("<-")
elsif /<-|^\s*#/.match(data)
Language["R"]
end
end
disambiguate ".rno" do |data|
if /^\.!|^\.end lit(?:eral)?\b/i.match(data)
Language["RUNOFF"]
elsif /^\.\\" /.match(data)
Language["Groff"]
end
end
disambiguate ".rpy" do |data|
if /(^(import|from|class|def)\s)/m.match(data)
Language["Python"]
@@ -422,7 +444,7 @@ module Linguist
end
disambiguate ".ts" do |data|
if data.include?("</TS>")
if data.include?("<TS")
Language["XML"]
else
Language["TypeScript"]

View File

@@ -20,10 +20,11 @@ module Linguist
#
# Languages are defined in `lib/linguist/languages.yml`.
class Language
@languages = []
@index = {}
@name_index = {}
@alias_index = {}
@languages = []
@index = {}
@name_index = {}
@alias_index = {}
@language_id_index = {}
@extension_index = Hash.new { |h,k| h[k] = [] }
@interpreter_index = Hash.new { |h,k| h[k] = [] }
@@ -84,6 +85,8 @@ module Linguist
@filename_index[filename] << language
end
@language_id_index[language.language_id] = language
language
end
@@ -193,6 +196,19 @@ module Linguist
@interpreter_index[interpreter]
end
# Public: Look up Languages by its language_id.
#
# language_id - Integer of language_id
#
# Examples
#
# Language.find_by_id(100)
# # => [#<Language name="Elixir">]
#
# Returns the matching Language
def self.find_by_id(language_id)
@language_id_index[language_id.to_i]
end
# Public: Look up Language by its name.
#
@@ -251,6 +267,7 @@ module Linguist
# Returns an Array of Languages.
def self.ace_modes
warn "This method will be deprecated in a future 5.x release. Every language now has an `ace_mode` set."
warn caller
@ace_modes ||= all.select(&:ace_mode).sort_by { |lang| lang.name.downcase }
end
@@ -284,11 +301,16 @@ module Linguist
end
@ace_mode = attributes[:ace_mode]
@codemirror_mode = attributes[:codemirror_mode]
@codemirror_mime_type = attributes[:codemirror_mime_type]
@wrap = attributes[:wrap] || false
# Set legacy search term
@search_term = attributes[:search_term] || default_alias_name
# Set the language_id
@language_id = attributes[:language_id]
# Set extensions or default to [].
@extensions = attributes[:extensions] || []
@interpreters = attributes[:interpreters] || []
@@ -351,6 +373,17 @@ module Linguist
# Returns the name String
attr_reader :search_term
# Public: Get language_id (used in GitHub search)
#
# Examples
#
# # => "1"
# # => "2"
# # => "3"
#
# Returns the integer language_id
attr_reader :language_id
# Public: Get the name of a TextMate-compatible scope
#
# Returns the scope
@@ -367,6 +400,31 @@ module Linguist
# Returns a String name or nil
attr_reader :ace_mode
# Public: Get CodeMirror mode
#
# Maps to a directory in the `mode/` source code.
# https://github.com/codemirror/CodeMirror/tree/master/mode
#
# Examples
#
# # => "nil"
# # => "javascript"
# # => "clike"
#
# Returns a String name or nil
attr_reader :codemirror_mode
# Public: Get CodeMirror MIME type mode
#
# Examples
#
# # => "nil"
# # => "text/x-javascript"
# # => "text/x-csrc"
#
# Returns a String name or nil
attr_reader :codemirror_mime_type
# Public: Should language lines be wrapped
#
# Returns true or false
@@ -543,10 +601,13 @@ module Linguist
:aliases => options['aliases'],
:tm_scope => options['tm_scope'],
:ace_mode => options['ace_mode'],
:codemirror_mode => options['codemirror_mode'],
:codemirror_mime_type => options['codemirror_mime_type'],
:wrap => options['wrap'],
:group_name => options['group'],
:searchable => options.fetch('searchable', true),
:search_term => options['search_term'],
:language_id => options['language_id'],
:extensions => Array(options['extensions']),
:interpreters => options['interpreters'].sort,
:filenames => options['filenames'],

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,98 @@
module Linguist
module Strategy
class Modeline
EMACS_MODELINE = /-\*-\s*(?:(?!mode)[\w-]+\s*:\s*(?:[\w+-]+)\s*;?\s*)*(?:mode\s*:)?\s*([\w+-]+)\s*(?:;\s*(?!mode)[\w-]+\s*:\s*[\w+-]+\s*)*;?\s*-\*-/i
EMACS_MODELINE = /
-\*-
(?:
# Short form: `-*- ruby -*-`
\s* (?= [^:;\s]+ \s* -\*-)
|
# Longer form: `-*- foo:bar; mode: ruby; -*-`
(?:
.*? # Preceding variables: `-*- foo:bar bar:baz;`
[;\s] # Which are delimited by spaces or semicolons
|
(?<=-\*-) # Not preceded by anything: `-*-mode:ruby-*-`
)
mode # Major mode indicator
\s*:\s* # Allow whitespace around colon: `mode : ruby`
)
([^:;\s]+) # Name of mode
# First form vim modeline
# [text]{white}{vi:|vim:|ex:}[white]{options}
# ex: 'vim: syntax=ruby'
VIM_MODELINE_1 = /(?:vim|vi|ex):\s*(?:ft|filetype|syntax)=(\w+)\s?/i
# Ensure the mode is terminated correctly
(?=
# Followed by semicolon or whitespace
[\s;]
|
# Touching the ending sequence: `ruby-*-`
(?<![-*]) # Don't allow stuff like `ruby--*-` to match; it'll invalidate the mode
-\*- # Emacs has no problems reading `ruby --*-`, however.
)
.*? # Anything between a cleanly-terminated mode and the ending -*-
-\*-
/xi
# Second form vim modeline (compatible with some versions of Vi)
# [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
# ex: 'vim set syntax=ruby:'
VIM_MODELINE_2 = /(?:vim|vi|Vim|ex):\s*se(?:t)?.*\s(?:ft|filetype|syntax)=(\w+)\s?.*:/i
VIM_MODELINE = /
MODELINES = [EMACS_MODELINE, VIM_MODELINE_1, VIM_MODELINE_2]
# Start modeline. Could be `vim:`, `vi:` or `ex:`
(?:
(?:\s|^)
vi
(?:m[<=>]?\d+|m)? # Version-specific modeline
|
[\t\x20] # `ex:` requires whitespace, because "ex:" might be short for "example:"
ex
)
# If the option-list begins with `set ` or `se `, it indicates an alternative
# modeline syntax partly-compatible with older versions of Vi. Here, the colon
# serves as a terminator for an option sequence, delimited by whitespace.
(?=
# So we have to ensure the modeline ends with a colon
: (?=\s* set? \s [^\n:]+ :) |
# Otherwise, it isn't valid syntax and should be ignored
: (?!\s* set? \s)
)
# Possible (unrelated) `option=value` pairs to skip past
(?:
# Option separator. Vim uses whitespace or colons to separate options (except if
# the alternate "vim: set " form is used, where only whitespace is used)
(?:
\s
|
\s* : \s* # Note that whitespace around colons is accepted too:
) # vim: noai : ft=ruby:noexpandtab
# Option's name. All recognised Vim options have an alphanumeric form.
\w*
# Possible value. Not every option takes an argument.
(?:
# Whitespace between name and value is allowed: `vim: ft =ruby`
\s*=
# Option's value. Might be blank; `vim: ft= ` says "use no filetype".
(?:
[^\\\s] # Beware of escaped characters: titlestring=\ ft=ruby
| # will be read by Vim as { titlestring: " ft=ruby" }.
\\.
)*
)?
)*
# The actual filetype declaration
[\s:] (?:filetype|ft|syntax) \s*=
# Language's name
(\w+)
# Ensure it's followed by a legal separator
(?=\s|:|$)
/xi
MODELINES = [EMACS_MODELINE, VIM_MODELINE]
# Scope of the search for modelines
# Number of lines to check at the beginning and at the end of the file

View File

@@ -15,6 +15,9 @@
# Dependencies
- ^[Dd]ependencies/
# Distributions
- (^|/)dist/
# C deps
# https://github.com/joyent/node
- ^deps/
@@ -165,7 +168,7 @@
# Chart.js
- (^|/)Chart\.js$
# Codemirror
# CodeMirror
- (^|/)[Cc]ode[Mm]irror/(\d+\.\d+/)?(lib|mode|theme|addon|keymap|demo)
# SyntaxHighlighter - http://alexgorbatchev.com/
@@ -229,6 +232,9 @@
# Fabric
- Fabric.framework/
# BuddyBuild
- BuddyBuildSDK.framework/
# git config files
- gitattributes$
- gitignore$

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "4.8.8"
VERSION = "4.8.16"
end

View File

@@ -1,7 +1,7 @@
{
"repository": "https://github.com/github/linguist",
"dependencies": {
"season": "~>5.0"
"season": "~>5.4"
},
"license": "MIT"
}

View File

@@ -0,0 +1,265 @@
&НаСервереБезКонтекста
Функция ПолучитьКонтактноеЛицоПоЭлектроннойПочте(ЭлектроннаяПочта)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ ЭлектроннаяПочта = &ЭлектроннаяПочта";
Запрос.Параметры.Вставить("ЭлектроннаяПочта", СокрЛП(ЭлектроннаяПочта));
Выборка = Запрос.Выполнить().Выбрать();
КонтактноеЛицо = "";
Если Выборка.Следующий() Тогда
КонтактноеЛицо = Выборка.КонтактноеЛицо;
КонецЕсли;
Возврат КонтактноеЛицо;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьКонтактноеЛицоПоПолучателю(Получатель)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ Ссылка = &Получатель";
Запрос.Параметры.Вставить("Получатель", Получатель);
Выборка = Запрос.Выполнить().Выбрать();
КонтактноеЛицо = "";
Если Выборка.Следующий() Тогда
КонтактноеЛицо = Выборка.КонтактноеЛицо;
КонецЕсли;
Возврат КонтактноеЛицо;
КонецФункции
&НаСервереБезКонтекста
Процедура ДобавитьПолучателей(Получатель, Получатели)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ЭлектроннаяПочта ИЗ Справочник.Контрагенты ГДЕ Ссылка ";
Если ТипЗнч(Получатели) = Тип("Массив") Тогда
Запрос.Текст = Запрос.Текст + "В (&Получатели)";
Иначе
Запрос.Текст = Запрос.Текст + "= &Получатели";
КонецЕсли;
Запрос.Параметры.Вставить("Получатели", Получатели);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Получатель <> "" Тогда
Получатель = Получатель + "; ";
КонецЕсли;
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Ключ.Пустая() Тогда
Заголовок = "Исходящее письмо (Создание)";
Объект.Дата = ТекущаяДата();
ПоШаблону = Параметры.Свойство("ПоШаблону");
ВходящееПисьмо = Параметры.ВходящееПисьмо;
Если ПоШаблону = Истина Тогда
Элементы.ЗаполнитьПоШаблону.Видимость = Истина;
РаботаСПочтой.ЗаполнитьПисьмоПоШаблону(Объект, Содержимое);
ИначеЕсли Не ВходящееПисьмо.Пустая() Тогда
РаботаСПочтой.ЗаполнитьОтветНаПисьмо(ВходящееПисьмо, Объект, Содержимое);
КонецЕсли;
Адресаты = Параметры.Адресаты;
Если Адресаты <> Неопределено Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Контрагенты.ЭлектроннаяПочта
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Ссылка В(&Адресаты)
| И Контрагенты.ЭлектроннаяПочта <> """"";
Запрос.УстановитьПараметр("Адресаты", Адресаты);
Получатель = "";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Получатель <> "" Тогда
Получатель = Получатель + "; ";
КонецЕсли;
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
КонецЦикла;
Объект.Получатель = Получатель;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Содержимое = ТекущийОбъект.Содержимое.Получить();
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
Если РаботаСПочтой.ПисьмоОтправлено(ТекущийОбъект.Ссылка) Тогда
Заголовок = Заголовок + " - Отправлено";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.Содержимое = Новый ХранилищеЗначения(Содержимое, Новый СжатиеДанных());
ТекущийОбъект.Текст = Содержимое.ПолучитьТекст();
КонецПроцедуры
&НаСервере
Функция ОтправитьПисьмо(Ошибка)
Если Не Записать() Тогда
Ошибка = "ОшибкаЗаписи";
Возврат Ложь;
КонецЕсли;
Если Не РаботаСПочтой.ОтправитьПисьмо(Объект.Ссылка) Тогда
Ошибка = "ОшибкаОтправки";
Возврат Ложь;
КонецЕсли;
Заголовок = Заголовок + " - Отправлено";
Возврат Истина;
КонецФункции
&НаКлиенте
Функция ОтправитьПисьмоКлиент()
Ошибка = "";
Если Не ОтправитьПисьмо(Ошибка) Тогда
Если Ошибка = "ОшибкаОтправки" Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(1, "Настроить почту");
Кнопки.Добавить(2, "Закрыть");
Оп = Новый ОписаниеОповещения(
"ОтправитьПисьмоКлиентВопросЗавершение",
ЭтотОбъект);
ПоказатьВопрос(Оп,
"Не указаны настройки интернет почты!",
Кнопки, , 1);
КонецЕсли;
Возврат Ложь;
КонецЕсли;
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.Ссылка);
ПоказатьОповещениеПользователя("Письмо отправлено", НавигационнаяСсылка, Объект.Наименование);
ОповеститьОбИзменении(Объект.Ссылка);
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ОтправитьПисьмоКлиентВопросЗавершение(Результат, Параметры) Экспорт
Если Результат = 1 Тогда
ОткрытьФорму("ОбщаяФорма.НастройкаПочты");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
ОтправитьПисьмоКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьИЗакрыть(Команда)
Если Не ОтправитьПисьмоКлиент() Тогда
Возврат;
КонецЕсли;
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтрокуВТекущуюПозицию(Поле, Документ, Строка)
Перем Начало, Конец;
Поле.ПолучитьГраницыВыделения(Начало, Конец);
Позиция = Документ.ПолучитьПозициюПоЗакладке(Начало);
Документ.Удалить(Начало, Конец);
Начало = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
Документ.Вставить(Начало, Строка);
Позиция = Позиция + СтрДлина(Строка);
Закладка = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
Поле.УстановитьГраницыВыделения(Закладка, Закладка);
КонецПроцедуры
&НаКлиенте
Процедура ВставитьКонтактноеЛицо(Команда)
Если Объект.Контрагент.Пустая() Тогда
Сообщить("Выберите контрагента");
Иначе
КонтактноеЛицо = ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент);
ВставитьСтрокуВТекущуюПозицию(Элементы.Содержимое, Содержимое, КонтактноеЛицо + " ");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
ДобавитьПолучателей(Объект.Получатель, Объект.Контрагент);
КонецПроцедуры
&НаКлиенте
Процедура ВыделитьВажное(Команда)
Перем Начало, Конец;
ВсеВажное = Истина;
Элементы.Содержимое.ПолучитьГраницыВыделения(Начало, Конец);
Если Начало = Конец Тогда
Возврат;
КонецЕсли;
НаборТекстовыхЭлементов = Новый Массив();
Для Каждого ТекстовыйЭлемент Из Содержимое.СформироватьЭлементы(Начало, Конец) Цикл
Если Тип(ТекстовыйЭлемент) = Тип("ТекстФорматированногоДокумента") Тогда
НаборТекстовыхЭлементов.Добавить(ТекстовыйЭлемент);
КонецЕсли;
КонецЦикла;
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
Если ТекстовыйЭлемент.Шрифт.Жирный <> Истина И
ТекстовыйЭлемент.ЦветТекста <> Новый Цвет(255, 0, 0) Тогда
ВсеВажное = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
ТекстовыйЭлемент.Шрифт = Новый Шрифт(ТекстовыйЭлемент.Шрифт, , , Не ВсеВажное);
ТекстовыйЭлемент.ЦветТекста = Новый Цвет(?(ВсеВажное, 0, 255), 0, 0);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоШаблону(Команда)
Если Объект.Контрагент.Пустая() Тогда
Сообщить("Выберите контрагента");
Иначе
НайтиИЗаменить("[Контрагент]", Объект.Контрагент);
НайтиИЗаменить("[КонтактноеЛицо]", ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент));
КонецЕсли;
НайтиИЗаменить("[ДатаПисьма]", Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура НайтиИЗаменить(СтрокаДляПоиска, СтрокаДляЗамены)
Перем ВставленныйТекст, ШрифтОформления, ЦветТекстаОформления, ЦветФонаОформления, НавигационнаяСсылкаОформления;
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска);
Пока ((РезультатПоиска <> Неопределено) И (РезультатПоиска.ЗакладкаНачала <> Неопределено) И (РезультатПоиска.ЗакладкаКонца <> Неопределено)) Цикл
ПозицияНачалаСледующегоЦиклаПоиска = Содержимое.ПолучитьПозициюПоЗакладке(РезультатПоиска.ЗакладкаНачала) + СтрДлина(СтрокаДляЗамены);
МассивЭлементовДляОформления = Содержимое.ПолучитьЭлементы(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
Для Каждого ЭлементДляОформления Из МассивЭлементовДляОформления Цикл
Если Тип(ЭлементДляОформления) = Тип("ТекстФорматированногоДокумента") Тогда
ШрифтОформления = ЭлементДляОформления.Шрифт;
ЦветТекстаОформления = ЭлементДляОформления.ЦветТекста;
ЦветФонаОформления = ЭлементДляОформления.ЦветФона;
НавигационнаяСсылкаОформления = ЭлементДляОформления.НавигационнаяССылка;
Прервать;
КонецЕсли;
КонецЦикла;
Содержимое.Удалить(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
ВставленныйТекст = Содержимое.Вставить(РезультатПоиска.ЗакладкаНачала, СтрокаДляЗамены);
Если ВставленныйТекст <> Неопределено И ШрифтОформления <> Неопределено Тогда
ВставленныйТекст.Шрифт = ШрифтОформления;
КонецЕсли;
Если ВставленныйТекст <> Неопределено И ЦветТекстаОформления <> Неопределено Тогда
ВставленныйТекст.ЦветТекста = ЦветТекстаОформления;
КонецЕсли;
Если ВставленныйТекст <> Неопределено И ЦветФонаОформления <> Неопределено Тогда
ВставленныйТекст.ЦветФона = ЦветФонаОформления;
КонецЕсли;
Если ВставленныйТекст <> Неопределено И НавигационнаяСсылкаОформления <> Неопределено Тогда
ВставленныйТекст.НавигационнаяССылка = НавигационнаяСсылкаОформления;
КонецЕсли;
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска, Содержимое.ПолучитьЗакладкуПоПозиции(ПозицияНачалаСледующегоЦиклаПоиска));
КонецЦикла;
КонецПроцедуры

View File

@@ -0,0 +1,85 @@
&НаСервере
Функция ПечатнаяФорма(ПараметрКоманды)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ОтображатьСетку = Истина;
ТабличныйДокумент.ОтображатьЗаголовки = Истина;
Сформирован = Ложь;
ТабМакет = Справочники.Товары.ПолучитьМакет("МакетПрайсЛиста");
Шапка = ТабМакет.ПолучитьОбласть("Шапка");
ТабличныйДокумент.Вывести(Шапка);
ОбластьНоменклатура = ТабМакет.ПолучитьОбласть("ОбластьНоменклатура");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Товары.Код КАК Код,
| Товары.Наименование КАК Наименование,
| Товары.Артикул КАК Артикул,
| Товары.ФайлКартинки КАК Картинка,
| Товары.Описание КАК Описание,
| Товары.Вид КАК Вид,
| ЦеныТоваров.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныТоваров КАК ЦеныТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары
| ПО ЦеныТоваров.Товар = Товары.Ссылка
|ГДЕ
| Товары.ЭтоГруппа = ЛОЖЬ
| И ЦеныТоваров.ВидЦен = &ВидЦен
|
|УПОРЯДОЧИТЬ ПО
| Вид,
| Товары.Родитель.Код,
| Код";
Запрос.УстановитьПараметр("ВидЦен", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьНоменклатура.Параметры.Заполнить(Выборка);
Описание = "";
Чтение = Новый ЧтениеHTML();
Чтение.УстановитьСтроку(Выборка.Описание);
ДокDOM = Новый ПостроительDOM();
HTML = ДокDOM.Прочитать(Чтение);
Если Не HTML.ЭлементДокумента = Неопределено Тогда
Для Каждого Узел из HTML.ЭлементДокумента.ДочерниеУзлы Цикл
Если Узел.ИмяУзла = "body" Тогда
Для Каждого ЭлементОписания из Узел.ДочерниеУзлы Цикл
Описание = Описание + ЭлементОписания.ТекстовоеСодержимое;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбластьНоменклатура.Параметры.Описание = Описание;
Если (Выборка.Картинка <> Null) Тогда
ОбластьНоменклатура.Параметры.ПараметрКартинки = Новый Картинка(Выборка.Картинка.ДанныеФайла.Получить());
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНоменклатура, Выборка.Уровень());
Сформирован = Истина;
КонецЦикла;
Если Сформирован Тогда
Возврат ТабличныйДокумент;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ТабличныйДокумент = ПечатнаяФорма(ПараметрКоманды);
Если ТабличныйДокумент <> Неопределено Тогда
ТабличныйДокумент.Показать();
КонецЕсли;
КонецПроцедуры

View File

@@ -0,0 +1,109 @@
// Процедура на основании анализа типа данных заменяет их на данные, удаляющие
// информацию из узла в котором их не должно быть
//
// Параметры:
// Данные Объект, набор записей,... который нужно преобразовать
//
Процедура УдалениеДанных(Данные)
// Получаем объект описания метаданного, соответствующий данным
ОбъектМетаданных = ?(ТипЗнч(Данные) = Тип("УдалениеОбъекта"), Данные.Ссылка.Метаданные(), Данные.Метаданные());
// Проверяем тип, интересуют только те типы, которые реализованы на мобильной платформе
Если Метаданные.Справочники.Содержит(ОбъектМетаданных)
ИЛИ Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
// Перенос удаления объекта для объектных
Данные = Новый УдалениеОбъекта(Данные.Ссылка);
ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных)
ИЛИ Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных)
ИЛИ Метаданные.Последовательности.Содержит(ОбъектМетаданных) Тогда
// Очищаем данные
Данные.Очистить();
КонецЕсли;
КонецПроцедуры
// Функция формирует пакет обмена, который будет отправлен узлу "УзелОбмена"
//
// Параметры:
// УзелОбмена узел плана обмена "мобильные", с которым осуществляется обмен
//
// Возвращаемое значение:
// сформированный пакет, помещенный в хранилище значения
Функция СформироватьПакетОбмена(УзелОбмена) Экспорт
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
ТипДанныхУдаления = Тип("УдалениеОбъекта");
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл
Данные = ВыборкаИзменений.Получить();
// Если перенос данных не нужен, то, возможно, необходимо записать удаление данных
Если Не ОбменМобильныеПереопределяемый.НуженПереносДанных(Данные, УзелОбмена) Тогда
// Получаем значение с возможным удалением данных
УдалениеДанных(Данные);
КонецЕсли;
// Записываем данные в сообщение
ОбменМобильныеПереопределяемый.ЗаписатьДанные(ЗаписьXML, Данные);
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));
КонецФункции
// Процедура вносит в информационную базу данные, которые присланы из узла "УзелОбмена"
//
// Параметры:
// УзелОбмена узел плана обмена "мобильные", с которым осуществляется обмен
// ДанныеОбмена - пакет обмена полученный из узла УзелОбмена, помещен в ХранилищеЗначения
//
Процедура ПринятьПакетОбмена(УзелОбмена, ДанныеОбмена) Экспорт
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить());
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
НачатьТранзакцию();
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
Данные = ОбменМобильныеПереопределяемый.ПрочитатьДанные(ЧтениеXML);
Если Не Данные = Неопределено Тогда
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Записать();
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
КонецПроцедуры

View File

@@ -0,0 +1,302 @@
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ
//
// Формирование печатной формы документа
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// ТабличныйДокумент - Сформированный табличный документ.
Процедура ПечатнаяФорма(ТабличныйДокумент) Экспорт
Макет = Документы.РасходТовара.ПолучитьМакет("МакетПечати");
// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабличныйДокумент.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабличныйДокумент.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабличныйДокумент.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабличныйДокумент.Вывести(ОбластьТовары);
КонецЦикла;
КонецПроцедуры
// Формирование печатной формы документа
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// ТабличныйДокумент - Сформированный табличный документ.
Процедура Пересчитать() Экспорт
Для каждого ТекСтрокаТовары Из Товары Цикл
ТекСтрокаТовары.Сумма = ТекСтрокаТовары.Количество * ТекСтрокаТовары.Цена;
КонецЦикла;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ОБЪЕКТА
Процедура ОбработкаПроведения(Отказ, Режим)
// Формирование движений регистров накопления ТоварныеЗапасы и Продажи.
Движения.ТоварныеЗапасы.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Движения.ТоварныеЗапасы.БлокироватьДляИзменения = Истина;
КонецЕсли;
// Создадим запрос, чтобы получать информацию об услугах
Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыВДокументе.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.РасходТовара.Товары КАК ТоварыВДокументе
|ГДЕ
| ТоварыВДокументе.Ссылка = &Ссылка
| И ТоварыВДокументе.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатУслуги = Запрос.Выполнить().Выгрузить();
РезультатУслуги.Индексы.Добавить("НомерСтроки");
Для каждого ТекСтрокаТовары Из Товары Цикл
Строка = РезультатУслуги.Найти(ТекСтрокаТовары.НомерСтроки, "НомерСтроки");
Если Строка = Неопределено Тогда
// Не услуга
Движение = Движения.ТоварныеЗапасы.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Товар = ТекСтрокаТовары.Товар;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количество;
КонецЕсли;
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Товар = ТекСтрокаТовары.Товар;
Движение.Покупатель = Покупатель;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
КонецЦикла;
// Формирование движения регистра накопления Взаиморасчеты.
Движения.Взаиморасчеты.Записывать = Истина;
Движение = Движения.Взаиморасчеты.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Контрагент = Покупатель;
Движение.Валюта = Валюта;
Если Валюта.Пустая() Тогда
Движение.Сумма = Товары.Итог("Сумма");
Иначе
Курс = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура("Валюта", Валюта)).Курс;
Если Курс = 0 Тогда
Движение.Сумма = Товары.Итог("Сумма");
Иначе
Движение.Сумма = Товары.Итог("Сумма") / Курс;
КонецЕсли;
КонецЕсли;
//Запишем движения
Движения.Записать();
//Контроль остатков при оперативном проведении
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
// Создадим запрос, чтобы контролировать остатки по товарам
Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыВДокументе.Товар КАК Товар,
| СУММА(ТоварыВДокументе.Количество) КАК Количество,
| МАКСИМУМ(ТоварыВДокументе.НомерСтроки) КАК НомерСтроки
|
|ПОМЕСТИТЬ ТребуетсяТовара
|
|ИЗ
| Документ.РасходТовара.Товары КАК ТоварыВДокументе
|
|ГДЕ
| ТоварыВДокументе.Ссылка = &Ссылка
| И ТоварыВДокументе.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)
|
|СГРУППИРОВАТЬ ПО
| ТоварыВДокументе.Товар
|
|ИНДЕКСИРОВАТЬ ПО
| Товар
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПРЕДСТАВЛЕНИЕ(ТребуетсяТовара.Товар) КАК ТоварПредставление,
| ВЫБОР
| КОГДА - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) > ТоварыВДокументе.Количество
| ТОГДА ТоварыВДокументе.Количество
| ИНАЧЕ - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0)
| КОНЕЦ КАК Нехватка,
| ТоварыВДокументе.Количество - ВЫБОР
| КОГДА - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) > ТоварыВДокументе.Количество
| ТОГДА ТоварыВДокументе.Количество
| ИНАЧЕ - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0)
| КОНЕЦ КАК МаксимальноеКоличество,
| ТребуетсяТовара.НомерСтроки КАК НомерСтроки
|
|ИЗ
| ТребуетсяТовара КАК ТребуетсяТовара
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварныеЗапасы.Остатки(
| ,
| Товар В
| (ВЫБРАТЬ
| ТребуетсяТовара.Товар
| ИЗ
| ТребуетсяТовара)
| И Склад = &Склад) КАК ТоварныеЗапасыОстатки
| ПО ТребуетсяТовара.Товар = ТоварныеЗапасыОстатки.Товар
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходТовара.Товары КАК ТоварыВДокументе
| ПО ТребуетсяТовара.Товар = ТоварыВДокументе.Товар
| И ТребуетсяТовара.НомерСтроки = ТоварыВДокументе.НомерСтроки
|
|ГДЕ
| ТоварыВДокументе.Ссылка = &Ссылка И
| 0 > ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки");
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатСНехваткой = Запрос.Выполнить();
ВыборкаРезультатаСНехваткой = РезультатСНехваткой.Выбрать();
// Выдадим ошибки для строк, в которых не хватает остатка
Пока ВыборкаРезультатаСНехваткой.Следующий() Цикл
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'Не хватает '", "ru")
+ ВыборкаРезультатаСНехваткой.Нехватка
+ НСтр("ru = ' единиц товара'", "ru") + """"
+ ВыборкаРезультатаСНехваткой.ТоварПредставление
+ """"
+ НСтр("ru = ' на складе'", "ru")
+ """"
+ Склад
+ """."
+ НСтр("ru = 'Максимальное количество: '", "ru")
+ ВыборкаРезультатаСНехваткой.МаксимальноеКоличество
+ ".";
Сообщение.Поле = НСтр("ru = 'Товары'", "ru")
+ "["
+ (ВыборкаРезультатаСНехваткой.НомерСтроки - 1)
+ "]."
+ НСтр("ru = 'Количество'", "ru");
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Проверим заполненность поля "Покупатель"
Если Покупатель.Пустая() Тогда
// Если поле Покупатель не заполнено, сообщим об этом пользователю
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'Не указан Покупатель, для которого выписывается накладная!'", "ru");
Сообщение.Поле = НСтр("ru = 'Покупатель'", "ru");
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
// Сообщим платформе, что мы сами обработали проверку заполнения поля "Покупатель"
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель"));
// Так как информация в документе не консистентна, то продолжать работу дальше смысла нет
Отказ = Истина;
КонецЕсли;
//Если склад не заполнен, то проверим есть ли в документе что-то кроме услуг
Если Склад.Пустая() И Товары.Количество() > 0 Тогда
// Создадим запрос, чтобы получать информацию об товарах
Запрос = Новый Запрос("ВЫБРАТЬ
| Количество(*) КАК Количество
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В (&ТоварыВДокументе)
| И Товары.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)");

View File

@@ -0,0 +1,20 @@
Каталог = ОбъединитьПути(ТекущийКаталог(), "libs\oscript-library\src");
Загрузчик_Оригинал_ИмяФайла = ОбъединитьПути(Каталог, "package-loader.os");
Файлы = НайтиФайлы(Каталог, , Ложь);
Для Каждого ВыбФайл Из Файлы Цикл
Если ВыбФайл.ЭтоФайл() Тогда
Продолжить;
КонецЕсли;
Загрузчик_ИмяФайла = ОбъединитьПути(ВыбФайл.ПолноеИмя, "package-loader.os");
Загрузчик_Файл = Новый Файл(Загрузчик_ИмяФайла);
Если Загрузчик_Файл.Существует() Тогда
Продолжить;
КонецЕсли;
КопироватьФайл(Загрузчик_Оригинал_ИмяФайла, Загрузчик_ИмяФайла);
КонецЦикла;

View File

@@ -0,0 +1,42 @@
#Использовать "../libs/oscript-library/src/v8runner"
#Использовать "../libs/oscript-library/src/tempfiles"
Перем Лог;
Перем КодВозврата;
Процедура Инициализация()
Лог = Логирование.ПолучитьЛог("oscript.app.gitlab-test_CanCompile");
КодВозврата = 0;
КонецПроцедуры
Процедура ВыполнитьТест()
Конфигуратор = Новый УправлениеКонфигуратором();
ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска();
КомандаЗапуска = "/LoadConfigFromFiles ""%1""";
КомандаЗапуска = СтрШаблон(КомандаЗапуска, ТекущийКаталог() + "\source\cf");
Лог.Информация("Команда обновления конфигурации: " + КомандаЗапуска);
ПараметрыЗапуска.Добавить(КомандаЗапуска);
Попытка
Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска);
Исключение
Лог.Ошибка(Конфигуратор.ВыводКоманды());
КодВозврата = 1;
КонецПопытки;
УдалитьФайлы(Конфигуратор.ПутьКВременнойБазе());
КонецПроцедуры
Инициализация();
ВыполнитьТест();
ЗавершитьРаботу(КодВозврата);

33
samples/ASN.1/example.asn Normal file
View File

@@ -0,0 +1,33 @@
MyShopPurchaseOrders DEFINITIONS AUTOMATIC TAGS ::= BEGIN
PurchaseOrder ::= SEQUENCE {
dateOfOrder DATE,
customer CustomerInfo,
items ListOfItems
}
CustomerInfo ::= SEQUENCE {
companyName VisibleString (SIZE (3..50)),
billingAddress Address,
contactPhone NumericString (SIZE (7..12))
}
Address::= SEQUENCE {
street VisibleString (SIZE (5 .. 50)) OPTIONAL,
city VisibleString (SIZE (2..30)),
state VisibleString (SIZE(2) ^ FROM ("A".."Z")),
zipCode NumericString (SIZE(5 | 9))
}
ListOfItems ::= SEQUENCE (SIZE (1..100)) OF Item
Item ::= SEQUENCE {
itemCode INTEGER (1..99999),
color VisibleString ("Black" | "Blue" | "Brown"),
power INTEGER (110 | 220),
deliveryTime INTEGER (8..12 | 14..19),
quantity INTEGER (1..1000),
unitPrice REAL (1.00 .. 9999.00),
isTaxable BOOLEAN
}
END

72
samples/CSON/base.cson Normal file
View File

@@ -0,0 +1,72 @@
'atom-text-editor':
# Platform Bindings
'home': 'editor:move-to-first-character-of-line'
'end': 'editor:move-to-end-of-screen-line'
'shift-home': 'editor:select-to-first-character-of-line'
'shift-end': 'editor:select-to-end-of-line'
'atom-text-editor:not([mini])':
# Atom Specific
'ctrl-C': 'editor:copy-path'
# Sublime Parity
'tab': 'editor:indent'
'enter': 'editor:newline'
'shift-tab': 'editor:outdent-selected-rows'
'ctrl-K': 'editor:delete-line'
'.select-list atom-text-editor[mini]':
'enter': 'core:confirm'
'.tool-panel.panel-left, .tool-panel.panel-right':
'escape': 'tool-panel:unfocus'
'atom-text-editor !important, atom-text-editor[mini] !important':
'escape': 'editor:consolidate-selections'
# allow standard input fields to work correctly
'body .native-key-bindings':
'tab': 'core:focus-next'
'shift-tab': 'core:focus-previous'
'enter': 'native!'
'backspace': 'native!'
'shift-backspace': 'native!'
'delete': 'native!'
'up': 'native!'
'down': 'native!'
'shift-up': 'native!'
'shift-down': 'native!'
'alt-up': 'native!'
'alt-down': 'native!'
'alt-shift-up': 'native!'
'alt-shift-down': 'native!'
'cmd-up': 'native!'
'cmd-down': 'native!'
'cmd-shift-up': 'native!'
'cmd-shift-down': 'native!'
'ctrl-up': 'native!'
'ctrl-down': 'native!'
'ctrl-shift-up': 'native!'
'ctrl-shift-down': 'native!'
'left': 'native!'
'right': 'native!'
'shift-left': 'native!'
'shift-right': 'native!'
'alt-left': 'native!'
'alt-right': 'native!'
'alt-shift-left': 'native!'
'alt-shift-right': 'native!'
'cmd-left': 'native!'
'cmd-right': 'native!'
'cmd-shift-left': 'native!'
'cmd-shift-right': 'native!'
'ctrl-left': 'native!'
'ctrl-right': 'native!'
'ctrl-shift-left': 'native!'
'ctrl-shift-right': 'native!'
'ctrl-b': 'native!'
'ctrl-f': 'native!'
'ctrl-F': 'native!'
'ctrl-B': 'native!'
'ctrl-h': 'native!'
'ctrl-d': 'native!'

59
samples/CSON/config.cson Normal file
View File

@@ -0,0 +1,59 @@
directoryIcons:
Atom:
icon: "atom"
match: /^\.atom$/
colour: "dark-green"
Bower:
icon: "bower"
match: /^bower[-_]components$/
colour: "bower"
Dropbox:
icon: "dropbox"
match: /^(?:Dropbox|\.dropbox\.cache)$/
colour: "medium-blue"
Git:
icon: "git"
match: /^\.git$/
GitHub:
icon: "github"
match: /^\.github$/
Meteor:
icon: "meteor"
match: /^\.meteor$/
NodeJS:
icon: "node"
match: /^node_modules$/
colour: "medium-green"
Package:
icon: "package"
match: /^\.bundle$/i
TextMate:
icon: "textmate"
match: ".tmBundle"
fileIcons:
ABAP:
icon: "abap"
scope: "abp"
match: ".abap"
colour: "medium-orange"
ActionScript: # Or Flash-related
icon: "as"
match: [
[".swf", "medium-blue"]
[".as", "medium-red", scope: /\.(?:flex-config|actionscript(?:\.\d+)?)$/i, alias: /ActionScript\s?3|as3/i]
[".jsfl", "auto-yellow"]
[".swc", "dark-red"]
]

108
samples/CSON/ff-sfd.cson Normal file
View File

@@ -0,0 +1,108 @@
name: "Spline Font Database"
scopeName: "text.sfd"
fileTypes: ["sfd"]
firstLineMatch: "^SplineFontDB: [\\d.]+"
patterns: [include: "#main"]
repository:
main:
patterns: [
{include: "#punctuation"}
{include: "#private"}
{include: "#image"}
{include: "#pickleData"}
{include: "#sections"}
{include: "#copyright"}
{include: "#property"}
{include: "#control"}
{include: "#address"}
{include: "#encoding"}
{include: "source.fontforge#shared"}
{include: "#colour"}
]
punctuation:
patterns: [
{match: "<|>", name: "punctuation.definition.brackets.angle.sfd"}
{match: "[{}]", name: "punctuation.definition.brackets.curly.sfd"}
]
private:
name: "meta.section.private.sfd"
begin: "^BeginPrivate(?=:)"
end: "^EndPrivate\\b"
beginCaptures: 0: name: "keyword.control.begin.private.sfd"
endCaptures: 0: name: "keyword.control.end.private.sfd"
patterns: [
{match: "^\\S+", name: "entity.name.private.property.sfd"}
{include: "$self"}
]
image:
name: "meta.image.sfd"
begin: "^(Image)(?=:)(.+)$"
end: "^(EndImage)\\b"
contentName: "string.unquoted.raw.data.sfd"
beginCaptures:
1: name: "keyword.control.begin.image.sfd"
2: patterns: [include: "$self"]
endCaptures:
1: name: "keyword.control.end.image.sfd"
pickleData:
name: "meta.pickle-data.sfd"
begin: "^(PickledData)(:)\\s*(\")"
end: '"'
beginCaptures:
1: name: "entity.name.property.sfd"
2: name: "punctuation.separator.dictionary.key-value.sfd"
3: name: "punctuation.definition.string.begin.sfd"
endCaptures:
0: name: "punctuation.definition.string.end.sfd"
patterns: [match: "\\\\.", name: "constant.character.escape.sfd"]
sections:
name: "meta.section.${2:/downcase}.sfd"
begin: "^(Start|Begin)([A-Z]\\w+)(?=:)"
end: "^(End\\2)\\b"
beginCaptures: 0: name: "keyword.control.begin.${2:/downcase}.sfd"
endCaptures: 0: name: "keyword.control.end.${2:/downcase}.sfd"
patterns: [include: "$self"]
control:
name: "keyword.control.${1:/downcase}.sfd"
match: "\\b(Fore|Back|SplineSet|^End\\w+)\\b"
colour:
name: "constant.other.hex.colour.sfd"
match: "(#)[A-Fa-f0-9]{3,}|(?<=\\s)[A-Fa-f0-9]{6,8}"
captures:
1: name: "punctuation.definition.colour.sfd"
encoding:
name: "constant.language.encoding.sfd"
match: "(?i)\\b(ISO[-\\w]+)(?<=\\d)(?=\\s|$)"
# Don't highlight numbers in freeform strings (years/version strings)
copyright:
name: "meta.${1:/downcase}-string.sfd"
begin: "^(Copyright|U?Comments?|\\w+Name)(:)"
end: "$"
beginCaptures:
1: name: "entity.name.property.sfd"
2: name: "punctuation.separator.dictionary.key-value.sfd"
patterns: [include: "source.fontforge#stringEscapes"]
# No idea what this is, but it looks distracting without a fix
# Assuming it's referring to a memory register or something.
address:
match: "\\d+[xX][A-Fa-f0-9]+"
name: "constant.numeric.hexadecimal.sfd"
property:
match: "^([^:]+)(:)"
name: "meta.dictionary.key-value.sfd"
captures:
1: name: "entity.name.property.sfd"
2: name: "punctuation.separator.dictionary.key-value.sfd"

View File

@@ -0,0 +1,11 @@
'menu': [
{
'label': 'Packages'
'submenu': [
'label': 'Wercker Status'
'submenu': [
{ 'label': 'Check now!', 'command': 'wercker-status:checknow' }
]
]
}
]

View File

@@ -1,73 +0,0 @@
/* -*- Mode: dtrace-script; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* Copyright (C) 2007 Sun Microsystems, Inc. All Rights Reserved.
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* javascript provider probes
*
* function-entry (filename, classname, funcname)
* function-info (filename, classname, funcname, lineno,
* runfilename, runlineno)
* function-args (filename, classname, funcname, argc, argv, argv0,
* argv1, argv2, argv3, argv4)
* function-rval (filename, classname, funcname, lineno, rval, rval0)
* function-return (filename, classname, funcname)
* object-create-start (filename, classname)
* object-create (filename, classname, *object, rlineno)
* object-create-done (filename, classname)
* object-finalize (NULL, classname, *object)
* execute-start (filename, lineno)
* execute-done (filename, lineno)
*/
provider javascript {
probe function__entry(char *, char *, char *);
probe function__info(char *, char *, char *, int, char *, int);
probe function__args(char *, char *, char *, int, void *, void *, void *,
void *, void *, void *);
probe function__rval(char *, char *, char *, int, void *, void *);
probe function__return(char *, char *, char *);
probe object__create__start(char *, char *);
probe object__create__done(char *, char *);
/* XXX must use unsigned longs here instead of uintptr_t for OS X
(Apple radar: 5194316 & 5565198) */
probe object__create(char *, char *, unsigned long, int);
probe object__finalize(char *, char *, unsigned long);
probe execute__start(char *, int);
probe execute__done(char *, int);
};
/*
#pragma D attributes Unstable/Unstable/Common provider mozilla provider
#pragma D attributes Private/Private/Unknown provider mozilla module
#pragma D attributes Private/Private/Unknown provider mozilla function
#pragma D attributes Unstable/Unstable/Common provider mozilla name
#pragma D attributes Unstable/Unstable/Common provider mozilla args
*/

View File

@@ -0,0 +1,184 @@
#!/usr/sbin/dtrace -qs
// Source: https://github.com/bycn82/freebsd/blob/12a4a4a008eac3cfa71e496b33eaeaf426c374c1/sys/compat/linux/trace_futexes.d
/*-
* Copyright (c) 2011-2012 Alexander Leidinger <netchild@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer
* in this position and unchanged.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $FreeBSD$
*/
/**
* Trace futex operations:
* - internal locks
* - size of the futex list
* - report error conditions (emulation errors, kernel errors,
* programming errors)
* - execution time (wallclock) of futex related functions
*/
#pragma D option specsize=32m
/* Error conditions */
linuxulator*:futex:futex_get:error,
linuxulator*:futex:futex_sleep:requeue_error,
linuxulator*:futex:futex_sleep:sleep_error,
linuxulator*:futex:futex_wait:copyin_error,
linuxulator*:futex:futex_wait:itimerfix_error,
linuxulator*:futex:futex_wait:sleep_error,
linuxulator*:futex:futex_atomic_op:missing_access_check,
linuxulator*:futex:futex_atomic_op:unimplemented_op,
linuxulator*:futex:futex_atomic_op:unimplemented_cmp,
linuxulator*:futex:linux_sys_futex:unimplemented_clockswitch,
linuxulator*:futex:linux_sys_futex:copyin_error,
linuxulator*:futex:linux_sys_futex:unhandled_efault,
linuxulator*:futex:linux_sys_futex:unimplemented_lock_pi,
linuxulator*:futex:linux_sys_futex:unimplemented_unlock_pi,
linuxulator*:futex:linux_sys_futex:unimplemented_trylock_pi,
linuxulator*:futex:linux_sys_futex:unimplemented_wait_requeue_pi,
linuxulator*:futex:linux_sys_futex:unimplemented_cmp_requeue_pi,
linuxulator*:futex:linux_sys_futex:unknown_operation,
linuxulator*:futex:linux_get_robust_list:copyout_error,
linuxulator*:futex:handle_futex_death:copyin_error,
linuxulator*:futex:fetch_robust_entry:copyin_error,
linuxulator*:futex:release_futexes:copyin_error
{
printf("ERROR: %s in %s:%s:%s\n", probename, probeprov, probemod,
probefunc);
stack();
ustack();
}
linuxulator*:futex:linux_sys_futex:invalid_cmp_requeue_use,
linuxulator*:futex:linux_sys_futex:deprecated_requeue,
linuxulator*:futex:linux_set_robust_list:size_error
{
printf("WARNING: %s:%s:%s:%s in application %s, maybe an application error?\n",
probename, probeprov, probemod, probefunc, execname);
stack();
ustack();
}
/* Per futex checks/statistics */
linuxulator*:futex:futex:create
{
++futex_count;
@max_futexes = max(futex_count);
}
linuxulator*:futex:futex:destroy
/futex_count == 0/
{
printf("ERROR: Request to destroy a futex which was not created,\n");
printf(" or this script was started after some futexes where\n");
printf(" created. Stack trace:\n");
stack();
ustack();
}
linuxulator*:futex:futex:destroy
{
--futex_count;
}
/* Internal locks */
linuxulator*:locks:futex_mtx:locked
{
++check[probefunc, arg0];
@stats[probefunc] = count();
ts[probefunc] = timestamp;
spec[probefunc] = speculation();
printf("Stacktrace of last lock operation of the %s:\n", probefunc);
stack();
}
linuxulator*:locks:futex_mtx:unlock
/check[probefunc, arg0] == 0/
{
printf("ERROR: unlock attempt of unlocked %s (%p),", probefunc, arg0);
printf(" missing SDT probe in kernel, or dtrace program started");
printf(" while the %s was already held (race condition).", probefunc);
printf(" Stack trace follows:");
stack();
}
linuxulator*:locks:futex_mtx:unlock
{
discard(spec[probefunc]);
spec[probefunc] = 0;
--check[probefunc, arg0];
}
/* Timeout handling for internal locks */
tick-10s
/spec["futex_mtx"] != 0 && timestamp - ts["futex_mtx"] >= 9999999000/
{
commit(spec["futex_mtx"]);
spec["futex_mtx"] = 0;
}
/* Timing statistings */
linuxulator*:futex::entry
{
self->time[probefunc] = timestamp;
@calls[probeprov, execname, probefunc] = count();
}
linuxulator*:futex::return
/self->time[probefunc] != 0/
{
this->timediff = self->time[probefunc] - timestamp;
@timestats[probeprov, execname, probefunc] = quantize(this->timediff);
@longest[probeprov, probefunc] = max(this->timediff);
self->time[probefunc] = 0;
}
/* Statistics */
END
{
printf("Number of locks per type:");
printa(@stats);
printf("Number of maximum number of futexes in the futex list:");
printa(@max_futexes);
printf("Number of futexes still existing: %d", futex_count);
printf("Number of calls per provider/application/kernel function:");
printa(@calls);
printf("Wallclock-timing statistics per provider/application/kernel function (in ns):");
printa(@timestats);
printf("Longest running (wallclock!) functions per provider (in ns):");
printa(@longest);
}

View File

@@ -0,0 +1,6 @@
(define-abbrev-table 'c-mode-abbrev-table '(
))
(define-abbrev-table 'fundamental-mode-abbrev-table '(
("TM" "™" nil 0)
("(R)" "®" nil 0)
("C=" "€" nil 0)))

View File

@@ -0,0 +1,20 @@
(setq user-full-name "Alhadis")
(setq user-mail-address "fake.account@gmail.com")
(auto-image-file-mode)
(setq mm-inline-large-images t)
(add-to-list 'mm-attachment-override-types "image/*")
(setq gnus-select-method
'(nnimap "gmail"
(nnimap-address "imap.gmail.com")
(nnimap-server-port 777)
(nnimap-stream ssl)))
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-starttls-credentials '(("smtp.gmail.com" 600 nil nil))
smtpmail-auth-credentials '(("smtp.gmail.com" 700 "me@lisp.com" nil))
smtpmail-default-smtp-server "smtp.gmail.com"
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 800
setq gnus-ignored-from-addresses "^from\\.Telstra[ \t\r\n]+Thanks")

View File

@@ -0,0 +1,197 @@
;; -*- mode: emacs-lisp -*-
;; This file is loaded by Spacemacs at startup.
;; It must be stored in your home directory.
(defun dotspacemacs/layers ()
"Configuration Layers declaration."
(setq-default
;; List of additional paths where to look for configuration layers.
;; Paths must have a trailing slash (i.e. `~/.mycontribs/')
dotspacemacs-configuration-layer-path '()
;; List of configuration layers to load. If it is the symbol `all' instead
;; of a list then all discovered layers will be installed.
dotspacemacs-configuration-layers
'(
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press <SPC f e R> (Vim style) or
;; <M-m f e R> (Emacs style) to install them.
;; ----------------------------------------------------------------
emacs-lisp
charlock_holmes
escape_utils
mime-types
rugged
minitest
mocha
plist
pry
rake
yajl-ruby
colour-proximity
licensed
licensee
;; List of additional packages that will be installed without being
;; wrapped in a layer. If you need some configuration for these
;; packages then consider to create a layer, you can also put the
;; configuration in `dotspacemacs/config'.
dotspacemacs-additional-packages '()
;; A list of packages and/or extensions that will not be install and loaded.
dotspacemacs-excluded-packages '()
;; If non-nil spacemacs will delete any orphan packages, i.e. packages that
;; are declared in a layer which is not a member of
;; the list `dotspacemacs-configuration-layers'
dotspacemacs-delete-orphan-packages t))
(defun dotspacemacs/init ()
"Initialization function.
This function is called at the very startup of Spacemacs initialization
before layers configuration."
;; This setq-default sexp is an exhaustive list of all the supported
;; spacemacs settings.
(setq-default
;; Either `vim' or `emacs'. Evil is always enabled but if the variable
;; is `emacs' then the `holy-mode' is enabled at startup.
dotspacemacs-editing-style 'vim
;; If non nil output loading progress in `*Messages*' buffer.
dotspacemacs-verbose-loading nil
;; Specify the startup banner. Default value is `official', it displays
;; the official spacemacs logo. An integer value is the index of text
;; banner, `random' chooses a random text banner in `core/banners'
;; directory. A string value must be a path to an image format supported
;; by your Emacs build.
;; If the value is nil then no banner is displayed.
dotspacemacs-startup-banner 'official
;; List of items to show in the startup buffer. If nil it is disabled.
;; Possible values are: `recents' `bookmarks' `projects'."
dotspacemacs-startup-lists '(bookmarks projects recents)
;; List of themes, the first of the list is loaded when spacemacs starts.
;; Press <SPC> T n to cycle to the next theme in the list (works great
;; with 2 themes variants, one dark and one light)
dotspacemacs-themes '(
spacemacs-dark
spacemacs-light
solarized-dark
solarized-light
atom-light-ui
atom-dark-ui
atom-material-ui
zenburn
;; If non nil the cursor colour matches the state colour.
dotspacemacs-colorize-cursor-according-to-state t
;; Default font. `powerline-scale' allows to quickly tweak the mode-line
;; size to make separators look not too crappy.
dotspacemacs-default-font '("Menloco"
:size 11
:weight normal
:width normal
:powerline-scale 1.1)
;; The leader key
dotspacemacs-leader-key "SPC"
;; The leader key accessible in `emacs state' and `insert state'
dotspacemacs-emacs-leader-key "M-m"
;; Major mode leader key is a shortcut key which is the equivalent of
;; pressing `<leader> m`. Set it to `nil` to disable it.
dotspacemacs-major-mode-leader-key ","
;; Major mode leader key accessible in `emacs state' and `insert state'
dotspacemacs-major-mode-emacs-leader-key "C-M-m"
;; The command key used for Evil commands (ex-commands) and
;; Emacs commands (M-x).
;; By default the command key is `:' so ex-commands are executed like in Vim
;; with `:' and Emacs commands are executed with `<leader> :'.
dotspacemacs-command-key ":"
;; Location where to auto-save files. Possible values are `original' to
;; auto-save the file in-place, `cache' to auto-save the file to another
;; file stored in the cache directory and `nil' to disable auto-saving.
;; Default value is `cache'.
dotspacemacs-auto-save-file-location 'cache
;; If non nil then `ido' replaces `helm' for some commands. For now only
;; `find-files' (SPC f f) is replaced.
dotspacemacs-use-ido nil
;; If non nil the paste micro-state is enabled. When enabled pressing `p`
;; several times cycle between the kill ring content.
dotspacemacs-enable-paste-micro-state nil
;; Guide-key delay in seconds. The Guide-key is the popup buffer listing
;; the commands bound to the current keystrokes.
dotspacemacs-guide-key-delay 0.4
;; If non nil a progress bar is displayed when spacemacs is loading. This
;; may increase the boot time on some systems and emacs builds, set it to
;; nil ;; to boost the loading time.
dotspacemacs-loading-progress-bar t
;; If non nil the frame is fullscreen when Emacs starts up.
;; (Emacs 24.4+ only)
dotspacemacs-fullscreen-at-startup nil
;; If non nil `spacemacs/toggle-fullscreen' will not use native fullscreen.
;; Use to disable fullscreen animations in OSX."
dotspacemacs-fullscreen-use-non-native nil
;; If non nil the frame is maximized when Emacs starts up.
;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil.
;; (Emacs 24.4+ only)
dotspacemacs-maximized-at-startup nil
;; A value from the range (0..100), in increasing opacity, which describes
;; the transparency level of a frame when it's active or selected.
;; Transparency can be toggled through `toggle-transparency'.
dotspacemacs-active-transparency 90
;; A value from the range (0..100), in increasing opacity, which describes
;; the transparency level of a frame when it's inactive or deselected.
;; Transparency can be toggled through `toggle-transparency'.
dotspacemacs-inactive-transparency 90
;; If non nil unicode symbols are displayed in the mode line.
dotspacemacs-mode-line-unicode-symbols t
;; If non nil smooth scrolling (native-scrolling) is enabled. Smooth
;; scrolling overrides the default behavior of Emacs which recenters the
;; point when it reaches the top or bottom of the screen.
dotspacemacs-smooth-scrolling t
;; If non-nil smartparens-strict-mode will be enabled in programming modes.
dotspacemacs-smartparens-strict-mode nil
;; Select a scope to highlight delimiters. Possible value is `all',
;; `current' or `nil'. Default is `all'
dotspacemacs-highlight-delimiters 'all
;; If non nil advises quit functions to keep server open when quitting.
dotspacemacs-persistent-server nil
;; List of search tool executable names. Spacemacs uses the first installed
;; tool of the list. Supported tools are `ag', `pt', `ack' and `grep'.
dotspacemacs-search-tools '("ag" "pt" "ack" "grep")
;; The default package repository used if no explicit repository has been
;; specified with an installed package.
;; Not used for now.
dotspacemacs-default-package-repository nil
;; If non nil line numbers are turned on in all `prog-mode' and `text-mode'
;; derivatives. If set to `relative', also turns on relative line numbers.
;; (default nil)
dotspacemacs-line-numbers 'relative
;; Delete whitespace while saving buffer. Possible values are `all',
;; `trailing', `changed' or `nil'. Default is `changed' (cleanup whitespace
;; on changed lines) (default 'changed)
dotspacemacs-whitespace-cleanup 'changed
)
;; User initialization goes here
)
(defun dotspacemacs/user-config ()
"Configuration function.
This function is called at the very end of Spacemacs initialization after
layers configuration."
(add-hook 'alchemist-mode-hook 'company-mode)
(add-hook 'projectile-mode-hook 'projectile-rails-on)
(setq ruby-insert-encoding-magic-comment nil)
(setq web-mode-markup-indent-offset 2)
(setq web-mode-code-indent-offset 2)
(spacemacs/toggle-golden-ratio-on)
(spacemacs/toggle-indent-guide-globally-on)
(spacemacs/toggle-centered-point-globally-on)
)
;; Do not write anything past this comment. This is where Emacs will
;; auto-generate custom variable definitions.
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

View File

@@ -0,0 +1,10 @@
(setq viper-inhibit-startup-message 't)
(setq viper-expert-level '5)
; Key bindings
(define-key viper-vi-global-user-map "\C-d" 'end-of-line)
; Return to top of window
(defun my-viper-return-to-top ()
(interactive)
(beginning-of-buffer))

View File

@@ -0,0 +1,34 @@
;; Object EDE
(ede-proj-project "Linguist"
:name "Linguist"
:version "4.9"
:file "Project.ede"
:targets (list
(ede-proj-target-elisp-autoloads "autoloads"
:name "autoloads"
:path "test/samples/Emacs Lisp"
:autoload-file "dude.el"
)
(ede-proj-target-elisp "init"
:name "init"
:path ""
:source '("ede-load.el" "wait-what.el")
:compiler 'ede-emacs-preload-compiler
:pre-load-packages '("sample-names")
)
(ede-proj-target-elisp "what"
:name "the"
:path ""
:source '("h.el" "am-i-writing.el")
:versionsource '("hell.el")
:compiler 'ede-emacs-preload-compiler
:aux-packages '("what" "the" "hell-files" "am-i-writing")
)
)
:web-site-url "https://github.com/github/linguist"
:web-site-directory "../"
:web-site-file "CONTRIBUTING.md"
:ftp-upload-site "/ftp@git.hub.com:/madeup"
:configuration-variables 'nil
:metasubproject 't
)

View File

@@ -0,0 +1,70 @@
;; UTF-8 support
;; (set-language-environment "UTF-8")
(setenv "LANG" "en_AU.UTF-8")
(setenv "LC_ALL" "en_AU.UTF-8")
(setq default-tab-width 4)
;;; Function to load all ".el" files in ~/.emacs.d/config
(defun load-directory (directory)
"Recursively load all Emacs Lisp files in a directory."
(dolist (element (directory-files-and-attributes directory nil nil nil))
(let* ((path (car element))
(fullpath (concat directory "/" path))
(isdir (car (cdr element)))
(ignore-dir (or (string= path ".") (string= path ".."))))
(cond
((and (eq isdir t) (not ignore-dir))
(load-directory fullpath))
((and (eq isdir nil) (string= (substring path -3) ".el"))
(load (file-name-sans-extension fullpath)))))))
;; Tell Emacs we'd like to use Hunspell for spell-checking
(setq ispell-program-name (executable-find "hunspell"))
;; Load Homebrew-installed packages
(let ((default-directory "/usr/local/share/emacs/site-lisp/"))
(normal-top-level-add-subdirs-to-load-path))
(load "aggressive-indent")
(add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode)
(autoload 'rust-mode "rust-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode))
;; Load Git-related syntax highlighting
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "git-modes")
(load "git-commit")
;; Keybindings
(global-set-key (kbd "C-u") (lambda ()
(interactive)
(kill-line 0)))
;; Show cursor's current column number
(setq column-number-mode t)
;; Disable autosave
(setq auto-save-default nil)
;; Use a single directory for storing backup files
(setq backup-directory-alist `(("." . "~/.emacs.d/auto-save-list")))
(setq backup-by-copying t)
(setq delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(blink-cursor-mode nil)
'(column-number-mode t)
'(show-paren-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

View File

@@ -0,0 +1,8 @@
(define-abbrev-table 'fundamental-mode-abbrev-table '(
("cat" "Concatenate" nil 0)
("WTF" "World Trade Federation " nil 0)
("rtbtm" "Read that back to me" nil 0)))
(define-abbrev-table 'shell-script-mode-abbrev-table '(
("brake", "bundle rake exec" nil 0)
("pls", "warning: setting Encoding.default_external")))

View File

@@ -0,0 +1,6 @@
! Codes/HYCOM/hycom/ATLb2.00/src_2.0.01_22_one/
real onemu, twomu
data onemu/0.0098/
data twomu/1./
data threemu/0.e9/
end

View File

@@ -0,0 +1,51 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
set $dir=/tmp
set $nfiles=1000
set $meandirwidth=20
set $meanfilesize=16k
set $iosize=1m
set $nthreads=1
set mode quit firstdone
define fileset name=bigfileset,path=$dir,size=$meanfilesize,entries=$nfiles,dirwidth=$meandirwidth,prealloc=100,paralloc
define fileset name=destfiles,path=$dir,size=$meanfilesize,entries=$nfiles,dirwidth=$meandirwidth
define process name=filereader,instances=1
{
thread name=filereaderthread,memsize=10m,instances=$nthreads
{
flowop openfile name=openfile1,filesetname=bigfileset,fd=1
flowop readwholefile name=readfile1,fd=1,iosize=$iosize
flowop createfile name=createfile2,filesetname=destfiles,fd=2
flowop writewholefile name=writefile2,fd=2,srcfd=1,iosize=$iosize
flowop closefile name=closefile1,fd=1
flowop closefile name=closefile2,fd=2
}
}
echo "Copyfiles Version 3.0 personality successfully loaded"

215
samples/Groff/an-ext.tmac Normal file
View File

@@ -0,0 +1,215 @@
.\" -*- nroff -*-
.\"
.\" an-ext.tmac
.\"
.\" Copyright (C) 2007-2014 Free Software Foundation, Inc.
.\"
.\" Written by Eric S. Raymond <esr@thyrsus.com>
.\" Werner Lemberg <wl@gnu.org>
.\"
.\" You may freely use, modify and/or distribute this file.
.\"
.\" The code below provides extension macros for the `man' macro package.
.\" Care has been taken to make the code portable; groff extensions are
.\" properly hidden so that all troff implementations can use it without
.\" changes.
.\"
.\" With groff, this file is sourced by the `man' macro package itself.
.\" Man page authors who are concerned about portability might add the
.\" used macros directly to the prologue of the man page(s).
.
.
.\" Convention: Auxiliary macros and registers start with `m' followed
.\" by an uppercase letter or digit.
.
.
.\" Protect against being sourced twice.
.nr mX +1
.if \n(mX>1 \
. nx
.
.\" Check whether we are using grohtml.
.nr mH 0
.if \n(.g \
. if '\*(.T'html' \
. nr mH 1
.
.
.\" Map mono-width fonts to standard fonts for groff's TTY device.
.if n \{\
. do ftr CR R
. do ftr CI I
. do ftr CB B
.\}
.
.\" groff has glyph entities for angle brackets.
.ie \n(.g \{\
. ds la \(la\"
. ds ra \(ra\"
.\}
.el \{\
. ds la <\"
. ds ra >\"
. \" groff's man macros control hyphenation with this register.
. nr HY 1
.\}
.
.nr mS 0
.
.
.\" Declare start of command synopsis. Sets up hanging indentation.
.de SY
. ie !\\n(mS \{\
. nh
. nr mS 1
. nr mA \\n(.j
. ad l
. nr mI \\n(.i
. \}
. el \{\
. br
. ns
. \}
.
. nr mT \w'\fB\\$1\fP\ '
. HP \\n(mTu
. B "\\$1"
..
.
.
.\" End of command synopsis. Restores adjustment.
.de YS
. in \\n(mIu
. ad \\n(mA
. hy \\n(HY
. nr mS 0
..
.
.
.\" Declare optional option.
.de OP
. ie \\n(.$-1 \
. RI "[\fB\\$1\fP" "\ \\$2" "]"
. el \
. RB "[" "\\$1" "]"
..
.
.
.\" Start URL.
.de UR
. ds m1 \\$1\"
. nh
. if \\n(mH \{\
. \" Start diversion in a new environment.
. do ev URL-div
. do di URL-div
. \}
..
.
.
.\" End URL.
.de UE
. ie \\n(mH \{\
. br
. di
. ev
.
. \" Has there been one or more input lines for the link text?
. ie \\n(dn \{\
. do HTML-NS "<a href=""\\*(m1"">"
. \" Yes, strip off final newline of diversion and emit it.
. do chop URL-div
. do URL-div
\c
. do HTML-NS </a>
. \}
. el \
. do HTML-NS "<a href=""\\*(m1"">\\*(m1</a>"
\&\\$*\"
. \}
. el \
\\*(la\\*(m1\\*(ra\\$*\"
.
. hy \\n(HY
..
.
.
.\" Start email address.
.de MT
. ds m1 \\$1\"
. nh
. if \\n(mH \{\
. \" Start diversion in a new environment.
. do ev URL-div
. do di URL-div
. \}
..
.
.
.\" End email address.
.de ME
. ie \\n(mH \{\
. br
. di
. ev
.
. \" Has there been one or more input lines for the link text?
. ie \\n(dn \{\
. do HTML-NS "<a href=""mailto:\\*(m1"">"
. \" Yes, strip off final newline of diversion and emit it.
. do chop URL-div
. do URL-div
\c
. do HTML-NS </a>
. \}
. el \
. do HTML-NS "<a href=""mailto:\\*(m1"">\\*(m1</a>"
\&\\$*\"
. \}
. el \
\\*(la\\*(m1\\*(ra\\$*\"
.
. hy \\n(HY
..
.
.
.\" Continuation line for .TP header.
.de TQ
. br
. ns
. TP \\$1\" no doublequotes around argument!
..
.
.
.\" Start example.
.de EX
. do ds mF \\n[.fam]
. nr mE \\n(.f
. nf
. nh
. do fam C
. ft CW
..
.
.
.\" End example.
.de EE
. do fam \\*(mF
. ft \\n(mE
. fi
. hy \\n(HY
..
.
.
.\" Start display.
.de DS
. \" XXX to be written
..
.
.
.\" End display.
.de DE
. \" XXX to be written
..
.
.\" EOF

35
samples/Groff/refs.rno Normal file
View File

@@ -0,0 +1,35 @@
.\" Copyright (c) 1980 Regents of the University of California.
.\" All rights reserved. The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\"
.\" @(#)refs.rno 6.1 (Berkeley) 4/29/86
.\"
.NS 1 "References"
.sp
.ip "[Bac78]"
John Backus, \*(lqCan Programming Be Liberated from the von Neumann Style?
A Functional Style and Its Algebra of Programs,\*(rq \fICACM\fP, Turing
Award Lecture, 21, 8 (August 1978), 613-641.
.sp 6p
.ip "[Fod80]"
John K. Foderaro, \*(lqThe \s-2FRANZ LISP\s+2
Manual,\*(rq University of California,
Berkeley, California, 1980.
.sp 6p
.ip "[Joy79]"
W.N. Joy, O. Babaoglu, \*(lqUNIX Programmer's Manual,\*(rq November 7,
1979, Computer Science Division, University of California, Berkeley,
California.
.sp 6p
.ip "[Mc60]"
J. McCarthy, \*(lqRecursive Functions of Symbolic expressions and their
Computation by Machine,\*(rq Part I, \fICACM\fP 3, 4 (April 1960), 184-195.
.sp 6p
.ip "[Pat80]"
Dorab Ratan Patel, \*(lqA System Organization for Applicative Programming,\*(rq
M.S Thesis, University of California, Los Angeles, California, 1980.
.sp 6p
.ip "[Pat81]"
Dorab Patel, \*(lqFunctional Language Interpreter User Manual,\*(rq
University of California, Los Angeles, California, 1981.
.bp

60
samples/Julia/julia Normal file
View File

@@ -0,0 +1,60 @@
#!/usr/bin/env julia
# From https://github.com/JoshCheek/language-sampler-for-fullpath/blob/b766dcdbd249ec63516f491390a75315e78cba95/julia/fullpath
help_screen = """
usage: fullpath *[relative-paths] [-c]
Prints the fullpath of the paths
If no paths are given as args, it will read them from stdin
If there is only one path, the trailing newline is omitted
The -c flag will copy the results into your pasteboard
"""
help = false
copy = false
dir = pwd()
paths = []
for arg = ARGS
if arg == "-h" || arg == "--help"
help = true
elseif arg == "-c" || arg == "--copy"
copy = true
elseif arg != ""
push!(paths, arg)
end
end
if help
print(help_screen)
exit()
end
function notempty(string)
return !isempty(string)
end
if length(paths) == 0
paths = filter(notempty, map(chomp, readlines()))
end
function print_paths(stream, paths)
if length(paths) == 1
path = paths[1]
print(stream, "$dir/$path")
else
for path = paths
println(stream, "$dir/$path")
end
end
end
if copy
read, write, process = readandwrite(`pbcopy`)
print_paths(write, paths)
close(write)
end
print_paths(STDOUT, paths)

View File

@@ -0,0 +1,47 @@
//+------------------------------------------------------------------+
//| header-sample.mqh |
//| Copyright 2016, Andrey Osorgin |
//+------------------------------------------------------------------+
//| The MIT License (MIT) |
//| |
//| 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. |
//| |
//| A copy of the MIT License (MIT) is available at |
//| https://opensource.org/licenses/MIT |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CSomeObject
{
protected:
int m_someproperty;
private:
bool SomeFunction() {return true;}
public:
CSomeObject(void): m_someproperty(0) {}
~CSomeObject(void) {}
void SetName(int n){m_someproperty=n;}// sets somepropery
int GetName(){return(m_someproperty);} // returns someproperty
};
//+------------------------------------------------------------------+

View File

@@ -0,0 +1,61 @@
//+------------------------------------------------------------------+
//| indicator-sample.mq4 |
//| Copyright 2016, Andrey Osorgin |
//+------------------------------------------------------------------+
//| The MIT License (MIT) |
//| |
//| 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. |
//| |
//| A copy of the MIT License (MIT) is available at |
//| https://opensource.org/licenses/MIT |
//+------------------------------------------------------------------+
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit(void)
{
//---
}
//+------------------------------------------------------------------+
//| Bears Power |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
Print("The number of bars on the current chart: ",iBars(Symbol(),Period()));
//---
return(rates_total);
}
//+------------------------------------------------------------------+

View File

@@ -0,0 +1,51 @@
//+------------------------------------------------------------------+
//| script-sample.mq4 |
//| Copyright 2016, Andrey Osorgin |
//+------------------------------------------------------------------+
//| The MIT License (MIT) |
//| |
//| 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. |
//| |
//| A copy of the MIT License (MIT) is available at |
//| https://opensource.org/licenses/MIT |
//+------------------------------------------------------------------+
#property version "1.00"
#property strict
#property script_show_inputs
input int StopLoss=100; //Stop Loss
input int TakeProfit=100; //Take Profit
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
Print("Minimum Stop Level=",minstoplevel," points");
//---
double sl=NormalizeDouble(Bid-StopLoss*Point,Digits);
double tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
//---
int result=OrderSend(Symbol(),OP_BUY,0.01,Ask,1,sl,tp,"Test",0,0,clrNONE);
Print("Success? ",result);
}
//+------------------------------------------------------------------+

1390
samples/MQL5/Regex.mqh Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
//+------------------------------------------------------------------+
//| indicator-sample.mq5 |
//| Copyright 2016, Andrey Osorgin |
//+------------------------------------------------------------------+
//| The MIT License (MIT) |
//| |
//| 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. |
//| |
//| A copy of the MIT License (MIT) is available at |
//| https://opensource.org/licenses/MIT |
//+------------------------------------------------------------------+
#property version "1.00"
#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int bars=Bars(Symbol(),0);
Print("Bars = ",bars,", rates_total = ",rates_total,", prev_calculated = ",prev_calculated);
Print("time[0] = ",time[0]," time[rates_total-1] = ",time[rates_total-1]);
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+

View File

@@ -0,0 +1,56 @@
//+------------------------------------------------------------------+
//| script-sample.mq5 |
//| Copyright 2016, Andrey Osorgin |
//+------------------------------------------------------------------+
//| The MIT License (MIT) |
//| |
//| 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. |
//| |
//| A copy of the MIT License (MIT) is available at |
//| https://opensource.org/licenses/MIT |
//+------------------------------------------------------------------+
#property version "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
input int StopLoss=100; // Stop Loss
input int TakeProfit=100; // Take Profit
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
CTrade trade;
//---
long stoplevel=SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
Print("Minimum stop level is: ",stoplevel);
double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
double sl = NormalizeDouble(bid - StopLoss*Point(),Digits());
double tp = NormalizeDouble(ask + TakeProfit*Point(),Digits());
//---
bool result=trade.Buy(0.01,Symbol(),ask,sl,tp,"test");
//---
Print("Success? ",result);
}
//+------------------------------------------------------------------+

View File

@@ -0,0 +1,134 @@
charmap := charmap.md
font-name := file-icons
font-folder := dist
font-config := icomoon.json
icon-size := 34
icon-folder := svg
repo-name := Alhadis/FileIcons
svg := $(wildcard $(icon-folder)/*.svg)
last-commit = $(shell git log -1 --oneline --no-abbrev | cut -d' ' -f1)
all: unpack $(font-folder)/$(font-name).woff2 charmap
# Aliases
unpack: $(font-folder)/$(font-name).ttf
charmap: $(charmap)
# Extract a downloaded IcoMoon folder
$(font-folder)/%.ttf: %.zip
@rm -rf $(font-folder) tmp $(font-config)
@unzip -qd tmp $^
@mv tmp/fonts $(font-folder)
@mv tmp/selection.json $(font-config)
@rm -rf tmp $^
@perl -pi -e 's|^( {2})+|"\t" x (length($$&)/2)|ge' $(font-config)
@echo "" >> $(font-config) # Ensure trailing newline
@echo "Files extracted."
# Generate a WOFF2 file from a TTF
%.woff2: %.ttf
@[ ! -f $@ ] && { \
hash woff2_compress 2>/dev/null || { \
echo >&2 "WOFF2 conversion tools not found. Consult the readme file."; \
exit 2; \
}; \
woff2_compress $^ >/dev/null; \
echo "WOFF2 file generated."; \
};
# Clean up SVG source
lint: $(svg)
@perl -0777 -pi -e '\
s/\r\n/\n/g; \
s/<g id="icomoon-ignore">\s*<\/g>//gmi; \
s/<g\s*>\s*<\/g>//gmi; \
s/\s+(id|viewBox|xml:space)="[^"]*"/ /gmi; \
s/<!DOCTYPE[^>]*>//gi; \
s/<\?xml.*?\?>//gi; \
s/<!--.*?-->//gm; \
s/ style="enable-background:.*?;"//gmi; \
s/"\s+>/">/g; \
s/\x20{2,}/ /g; \
s/[\t\n]+//gm;' $^
# Generate/update character map
$(charmap):
@./create-map.pl -r=$(repo-name) -i=$(icon-folder) --size=$(icon-size) $(font-folder)/$(font-name).svg $@
# POSIX systems only: reattach hard links to File-Icons package
relink:
@$(call need-var,ATOM_FILE_ICONS,ERROR_NO_PKG)
@ln -f $(font-folder)/$(font-name).woff2 $(wildcard $(ATOM_FILE_ICONS)/fonts/file-icons-*.woff2)
# Force an icon's preview to be refreshed on GitHub
cachebust:
@$(call need-var,icon,ERROR_NO_ICON)
@base="https://cdn.rawgit.com/Alhadis/FileIcons/"; \
perl -pi -e 's{$$base\K\w+(?=/svg/$(icon:%.svg=%)\.svg")}{$(last-commit)}ig;' $(charmap)
# Dummy task to improve feedback if `cachebust` is mistyped
icon:
$(call need-var,,ERROR_UNDEF_ICON)
# Reset unstaged changes/additions in object directories
clean:
@git clean -fd $(font-folder)
@git checkout -- $(font-folder) 2>/dev/null || true
# Delete extracted and generated files
distclean:
@rm -rf $(font-folder)
.PHONY: clean distclean $(charmap) cachebust icon
.ONESHELL:
# Error message shown to users attempting to run `make relink` without a link
ERROR_NO_PKG := Environment variable ATOM_FILE_ICONS not found. \
| \
| Try this instead:\
| \
| \ make relink ATOM_FILE_ICONS=/path/to/your/file-icons/installation |
# Error message shown when running `make cachebust` without an icon
ERROR_NO_ICON := No icon specified. Task aborted.| \
| Usage: \
| \ make icon=file[.svg] cachebust \
| \
| Examples: \
| \ make icon=Manpage cachebust \
| \ make icon=APL.svg cachebust |
# Shown if user tries running `make icon NAME cachebust` by mistake
ERROR_UNDEF_ICON := No task named \"icon\". \
| \
| Did you mean this? \
| \ make icon=NAME cachebust |
# If the given value is empty, die with an error message
need = @$(if $(1),,echo $(subst | ,$$'\n',$(2)); exit 2)
# Like `need`, but uses variable names instead of string values
need-var = @$(call need,$($(1)),$($(2)))

View File

@@ -0,0 +1,413 @@
//========================================================================
// GLFW 3.3 OS X - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2016 Camilla Berglund <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
#include "internal.h"
#include <stdlib.h>
#include <limits.h>
#include <IOKit/graphics/IOGraphicsLib.h>
#include <CoreVideo/CVBase.h>
#include <CoreVideo/CVDisplayLink.h>
#include <ApplicationServices/ApplicationServices.h>
// Get the name of the specified display
//
static char* getDisplayName(CGDirectDisplayID displayID)
{
char* name;
CFDictionaryRef info, names;
CFStringRef value;
CFIndex size;
// NOTE: This uses a deprecated function because Apple has
// (as of January 2015) not provided any alternative
info = IODisplayCreateInfoDictionary(CGDisplayIOServicePort(displayID),
kIODisplayOnlyPreferredName);
names = CFDictionaryGetValue(info, CFSTR(kDisplayProductName));
if (!names || !CFDictionaryGetValueIfPresent(names, CFSTR("en_US"),
(const void**) &value))
{
// This may happen if a desktop Mac is running headless
_glfwInputError(GLFW_PLATFORM_ERROR,
"Cocoa: Failed to retrieve display name");
CFRelease(info);
return strdup("Unknown");
}
size = CFStringGetMaximumSizeForEncoding(CFStringGetLength(value),
kCFStringEncodingUTF8);
name = calloc(size + 1, 1);
CFStringGetCString(value, name, size, kCFStringEncodingUTF8);
CFRelease(info);
return name;
}
// Check whether the display mode should be included in enumeration
//
static GLFWbool modeIsGood(CGDisplayModeRef mode)
{
uint32_t flags = CGDisplayModeGetIOFlags(mode);
if (!(flags & kDisplayModeValidFlag) || !(flags & kDisplayModeSafeFlag))
return GLFW_FALSE;
if (flags & kDisplayModeInterlacedFlag)
return GLFW_FALSE;
if (flags & kDisplayModeStretchedFlag)
return GLFW_FALSE;
CFStringRef format = CGDisplayModeCopyPixelEncoding(mode);
if (CFStringCompare(format, CFSTR(IO16BitDirectPixels), 0) &&
CFStringCompare(format, CFSTR(IO32BitDirectPixels), 0))
{
CFRelease(format);
return GLFW_FALSE;
}
CFRelease(format);
return GLFW_TRUE;
}
// Convert Core Graphics display mode to GLFW video mode
//
static GLFWvidmode vidmodeFromCGDisplayMode(CGDisplayModeRef mode,
CVDisplayLinkRef link)
{
GLFWvidmode result;
result.width = (int) CGDisplayModeGetWidth(mode);
result.height = (int) CGDisplayModeGetHeight(mode);
result.refreshRate = (int) CGDisplayModeGetRefreshRate(mode);
if (result.refreshRate == 0)
{
const CVTime time = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(link);
if (!(time.flags & kCVTimeIsIndefinite))
result.refreshRate = (int) (time.timeScale / (double) time.timeValue);
}
CFStringRef format = CGDisplayModeCopyPixelEncoding(mode);
if (CFStringCompare(format, CFSTR(IO16BitDirectPixels), 0) == 0)
{
result.redBits = 5;
result.greenBits = 5;
result.blueBits = 5;
}
else
{
result.redBits = 8;
result.greenBits = 8;
result.blueBits = 8;
}
CFRelease(format);
return result;
}
// Starts reservation for display fading
//
static CGDisplayFadeReservationToken beginFadeReservation(void)
{
CGDisplayFadeReservationToken token = kCGDisplayFadeReservationInvalidToken;
if (CGAcquireDisplayFadeReservation(5, &token) == kCGErrorSuccess)
CGDisplayFade(token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, TRUE);
return token;
}
// Ends reservation for display fading
//
static void endFadeReservation(CGDisplayFadeReservationToken token)
{
if (token != kCGDisplayFadeReservationInvalidToken)
{
CGDisplayFade(token, 0.5, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal, 0.0, 0.0, 0.0, FALSE);
CGReleaseDisplayFadeReservation(token);
}
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Change the current video mode
//
GLFWbool _glfwSetVideoModeNS(_GLFWmonitor* monitor, const GLFWvidmode* desired)
{
CFArrayRef modes;
CFIndex count, i;
CVDisplayLinkRef link;
CGDisplayModeRef native = NULL;
GLFWvidmode current;
const GLFWvidmode* best;
best = _glfwChooseVideoMode(monitor, desired);
_glfwPlatformGetVideoMode(monitor, &current);
if (_glfwCompareVideoModes(&current, best) == 0)
return GLFW_TRUE;
CVDisplayLinkCreateWithCGDisplay(monitor->ns.displayID, &link);
modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL);
count = CFArrayGetCount(modes);
for (i = 0; i < count; i++)
{
CGDisplayModeRef dm = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i);
if (!modeIsGood(dm))
continue;
const GLFWvidmode mode = vidmodeFromCGDisplayMode(dm, link);
if (_glfwCompareVideoModes(best, &mode) == 0)
{
native = dm;
break;
}
}
if (native)
{
if (monitor->ns.previousMode == NULL)
monitor->ns.previousMode = CGDisplayCopyDisplayMode(monitor->ns.displayID);
CGDisplayFadeReservationToken token = beginFadeReservation();
CGDisplaySetDisplayMode(monitor->ns.displayID, native, NULL);
endFadeReservation(token);
}
CFRelease(modes);
CVDisplayLinkRelease(link);
if (!native)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Cocoa: Monitor mode list changed");
return GLFW_FALSE;
}
return GLFW_TRUE;
}
// Restore the previously saved (original) video mode
//
void _glfwRestoreVideoModeNS(_GLFWmonitor* monitor)
{
if (monitor->ns.previousMode)
{
CGDisplayFadeReservationToken token = beginFadeReservation();
CGDisplaySetDisplayMode(monitor->ns.displayID,
monitor->ns.previousMode, NULL);
endFadeReservation(token);
CGDisplayModeRelease(monitor->ns.previousMode);
monitor->ns.previousMode = NULL;
}
}
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
_GLFWmonitor** _glfwPlatformGetMonitors(int* count)
{
uint32_t i, found = 0, displayCount;
_GLFWmonitor** monitors;
CGDirectDisplayID* displays;
*count = 0;
CGGetOnlineDisplayList(0, NULL, &displayCount);
displays = calloc(displayCount, sizeof(CGDirectDisplayID));
monitors = calloc(displayCount, sizeof(_GLFWmonitor*));
CGGetOnlineDisplayList(displayCount, displays, &displayCount);
for (i = 0; i < displayCount; i++)
{
_GLFWmonitor* monitor;
if (CGDisplayIsAsleep(displays[i]))
continue;
const CGSize size = CGDisplayScreenSize(displays[i]);
char* name = getDisplayName(displays[i]);
monitor = _glfwAllocMonitor(name, size.width, size.height);
monitor->ns.displayID = displays[i];
monitor->ns.unitNumber = CGDisplayUnitNumber(displays[i]);
free(name);
found++;
monitors[found - 1] = monitor;
}
free(displays);
*count = found;
return monitors;
}
GLFWbool _glfwPlatformIsSameMonitor(_GLFWmonitor* first, _GLFWmonitor* second)
{
// HACK: Compare unit numbers instead of display IDs to work around display
// replacement on machines with automatic graphics switching
return first->ns.unitNumber == second->ns.unitNumber;
}
void _glfwPlatformGetMonitorPos(_GLFWmonitor* monitor, int* xpos, int* ypos)
{
const CGRect bounds = CGDisplayBounds(monitor->ns.displayID);
if (xpos)
*xpos = (int) bounds.origin.x;
if (ypos)
*ypos = (int) bounds.origin.y;
}
GLFWvidmode* _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, int* count)
{
CFArrayRef modes;
CFIndex found, i, j;
GLFWvidmode* result;
CVDisplayLinkRef link;
*count = 0;
CVDisplayLinkCreateWithCGDisplay(monitor->ns.displayID, &link);
modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL);
found = CFArrayGetCount(modes);
result = calloc(found, sizeof(GLFWvidmode));
for (i = 0; i < found; i++)
{
CGDisplayModeRef dm = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i);
if (!modeIsGood(dm))
continue;
const GLFWvidmode mode = vidmodeFromCGDisplayMode(dm, link);
for (j = 0; j < *count; j++)
{
if (_glfwCompareVideoModes(result + j, &mode) == 0)
break;
}
// Skip duplicate modes
if (i < *count)
continue;
(*count)++;
result[*count - 1] = mode;
}
CFRelease(modes);
CVDisplayLinkRelease(link);
return result;
}
void _glfwPlatformGetVideoMode(_GLFWmonitor* monitor, GLFWvidmode *mode)
{
CGDisplayModeRef displayMode;
CVDisplayLinkRef link;
CVDisplayLinkCreateWithCGDisplay(monitor->ns.displayID, &link);
displayMode = CGDisplayCopyDisplayMode(monitor->ns.displayID);
*mode = vidmodeFromCGDisplayMode(displayMode, link);
CGDisplayModeRelease(displayMode);
CVDisplayLinkRelease(link);
}
void _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
{
uint32_t i, size = CGDisplayGammaTableCapacity(monitor->ns.displayID);
CGGammaValue* values = calloc(size * 3, sizeof(CGGammaValue));
CGGetDisplayTransferByTable(monitor->ns.displayID,
size,
values,
values + size,
values + size * 2,
&size);
_glfwAllocGammaArrays(ramp, size);
for (i = 0; i < size; i++)
{
ramp->red[i] = (unsigned short) (values[i] * 65535);
ramp->green[i] = (unsigned short) (values[i + size] * 65535);
ramp->blue[i] = (unsigned short) (values[i + size * 2] * 65535);
}
free(values);
}
void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
{
int i;
CGGammaValue* values = calloc(ramp->size * 3, sizeof(CGGammaValue));
for (i = 0; i < ramp->size; i++)
{
values[i] = ramp->red[i] / 65535.f;
values[i + ramp->size] = ramp->green[i] / 65535.f;
values[i + ramp->size * 2] = ramp->blue[i] / 65535.f;
}
CGSetDisplayTransferByTable(monitor->ns.displayID,
ramp->size,
values,
values + ramp->size,
values + ramp->size * 2);
free(values);
}
//////////////////////////////////////////////////////////////////////////
////// GLFW native API //////
//////////////////////////////////////////////////////////////////////////
GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(kCGNullDirectDisplay);
return monitor->ns.displayID;
}

View File

@@ -0,0 +1,13 @@
# Dextroamphetamine molecule
.cstart
.ps 26
size 28
R1:
ring double 1,2 3,4 5,6
bond 60 from R1.V2
bond 120
A1:
front bond down ; CH3
bond 60 from A1 ; NH2
.ps
.cend

25
samples/Pic/graph.pic Normal file
View File

@@ -0,0 +1,25 @@
.PS
ellipse "Pic" "example"
arrow
box "This is" "a box"
arrow right
box "Another" "box" dashed
move down then right;
Thing: ellipse "This is a" "circle-thing"
arrow <-> from last box.r to Thing.l
move down then left;
B: box "Still a box"
arrow from Thing.l to B.r
sprintf("Width = %g, Height = %g ", B.wid, B.ht) rjust at B.w
move down
.ps 15
define sadness {
boxwid = 3;
boxht = 1;
textht = .5;
box "\"I run from my depression by" " " "burying myself in code\""
arrow down from last box.s
"Me"
}
sadness();
.PE

15
samples/Pic/ritalin.chem Normal file
View File

@@ -0,0 +1,15 @@
.\" RITALIN: Methylphenidate Hydrochloride
.cstart
.ps 15
size 15
R1: ring double 1,2 3,4 5,6 pointing up
bond 60 length .35 from R1.V2 ; BP
bond 120 length .35 from BP
R2: ring pointing up put N at 1
H above R2
bond up length .35 from BP ; BP
bond -60 length .35 from BP ; O
bond up
double bond 60 length .35 from BP ; O
.ps 10
.cend

View File

@@ -0,0 +1,42 @@
// The MIT License (MIT)
// Copyright (c) 2016 dario ureña
// 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.
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/c7f167b4852c75d3da2f7b024bda7d7dda241a00/resources/advanced/real/myproject/myproject.pbt
Save Format v3.0(19990112)
@begin Libraries
"Scs\\Lib\\ScsApex1\\ScsApex1.pbl" "";
@end;
@begin Objects
"Scs\\Lib\\ScsApex1\\m_mant_apbe.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_mant_envio.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_inp_bolsa.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_mant_imput.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_inp_conce.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_mant_rete.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_info_noti.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_mant_concsani.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_mant_expe.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_proc_expe.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_mant_soli.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
"Scs\\Lib\\ScsApex1\\m_proc_soli.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
@end;

View File

@@ -0,0 +1,174 @@
// The MIT License (MIT)
// Copyright (c) 2016 dario ureña
// 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.
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/07bf527194b73e133943221dc2199a9442d463eb/resources/inventoryModel/nivel0/ginpix7.sra
HA$PBExportHeader$ginpix7.sra
$PBExportComments$Aplicaci$$HEX1$$f300$$ENDHEX$$n Ginpix7
forward
global type ginpix7 from application
end type
global n_tr_apli sqlca
global dynamicdescriptionarea sqlda
global dynamicstagingarea sqlsa
global error error
global message message
end forward
global variables
n_appmanager gnv_app
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Satxa - 02-Jun-2009.27760 No tenemos constancia del uso de esta ayuda, asi que la eliminamos.
//n_help gn_help
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------
// Satxa - 17-Jun-2010.42351 No se usa.
//n_help2 gn_help2
//----------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
// Satxa - 15-Jun-2009.27760
//Para el modulo de contratos.
String gs_enlacemacros, gs_office2000 // Posibles de Pulir.(en estudio).
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
end variables
global type ginpix7 from application
string appname = "ginpix7"
string toolbarframetitle = "ginpix7"
boolean toolbarusercontrol = false
end type
global ginpix7 ginpix7
type prototypes
//------------------------------------------------------------------------------------------------------------------------------------------------------
// Satxa - 15-Jun-2009.27760 Copio la llamada a la API del objeto aplicaci$$HEX1$$f300$$ENDHEX$$n de LCS.
// Satxa - 25-Oct-2005.25577 Viene de LCS y RCS, abre un archivo independientemente del tipo ejecutando el programa asociado en WINDOWS
Public Function long ShellExecuteA(long hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, long nShowCmd) Library "SHELL32.DLL" alias for "ShellExecuteA;Ansi"
//------------------------------------------------------------------------------------------------------------------------------------------------------
//
// Fernando Baldellou.14/05/2009. Ginpix7.// Funciones Externas Globales para el Proyecto de Mensajer$$HEX1$$ed00$$ENDHEX$$a.
//
Public Function Long GetWindowRect (Long hWnd, Ref mensajeria lpRect) Library "user32" alias for "GetWindowRect;Ansi"
Public Function Long GetClientRect (Long hWnd, Ref mensajeria lpRect) Library "user32" alias for "GetClientRect;Ansi"
Public Function Long SetWindowPos (Long hWnd, Long hWndInsertAfter, Long x, Long y, Long cx, Long cy, Long wFlags) Library "user32"
Public Function Boolean sndPlaySoundA (String SoundName, uint Flags)Library "winmm.dll" alias for "sndPlaySoundA;Ansi"
// Fin de la anotaci$$HEX1$$f300$$ENDHEX$$n anterior.
end prototypes
type variables
end variables
on ginpix7.create
appname="ginpix7"
message=create message
sqlca=create n_tr_apli
sqlda=create dynamicdescriptionarea
sqlsa=create dynamicstagingarea
error=create error
end on
on ginpix7.destroy
destroy(sqlca)
destroy(sqlda)
destroy(sqlsa)
destroy(error)
destroy(message)
end on
event open;// Inicializa propiedades del objeto aplicaci$$HEX1$$f300$$ENDHEX$$n:
This.MicroHelpDefault = "SAVIA"
//----------------------------------------------------------
// Satxa - 17-Jun-2010.42351 No se usa.
// Crea el servicio de ayuda nivel2:
//IF NOT IsValid(gn_help2) THEN
// gn_help2 = CREATE n_help2
//END IF
//----------------------------------------------------------
// Presenta la aplicaci$$HEX1$$f300$$ENDHEX$$n:
OpenWithParm(w_ini_ginpix7,commandline)
//OpenWithParm(w_logontab,commandline)
// PORQU$$HEX2$$c9002000$$ENDHEX$$RETRASAMOS LA INSTANCIACI$$HEX1$$d300$$ENDHEX$$N DEL MANEJADOR DE LA APLICACI$$HEX1$$d300$$ENDHEX$$N "n_appmanager" ???
//
// El CNVUO n_appmanager conlleva consigo el proceso de apertura de la ventana w_logon de
// conexi$$HEX1$$f300$$ENDHEX$$n a la base de datos. Nosotros sin embargo, deseamos presentar previamente
// nuestra ventana de presentaci$$HEX1$$f300$$ENDHEX$$n "w_ini".
//
// Si instanciamos n_appmanager aqu$$HEX1$$ed00$$ENDHEX$$, abre "w_ini" pero pasa de largo y no se "queda" en la
// ventana esperando que pulsemos <CONTINUAR> o bien <SALIR>, ll$$HEX1$$e900$$ENDHEX$$ndose directamente a la
// apertura de "w_logon" y requirimientos de datos para la conexi$$HEX1$$f300$$ENDHEX$$n a la base de datos.
//
// Por eso instanciamos el CNVUO n_appmanager en el evento w_ini::cb_ini_con::clicked, para
// retrasar este proceso de conexi$$HEX1$$f300$$ENDHEX$$n a base de datos.
//
//gnv_app = CREATE n_appmanager
//gnv_app.Event pfc_Open(commandline)
end event
event close;//----------------------------------------------------------
// Satxa - 17-Jun-2010.42351 No se usa.
// Destruye el servicio de ayuda nivel2:
//IF IsValid(gn_help2) THEN
// DESTROY n_help2
//END IF
//----------------------------------------------------------
// Destruye el manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
IF IsValid(gnv_app) THEN
DESTROY gnv_app
END IF
// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
IF IsValid(gnv_app) THEN
gnv_app.Event pfc_Close()
END IF
end event
event connectionbegin;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
RETURN gnv_app.Event pfc_ConnectionBegin(userid,password,connectstring)
end event
event connectionend;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
gnv_app.Event pfc_ConnectionEnd()
end event
event idle;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
gnv_app.Event pfc_Idle()
end event
event systemerror;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
gnv_app.Event pfc_SystemError()
end event

View File

@@ -0,0 +1,32 @@
// The MIT License (MIT)
// Copyright (c) 2016 dario ureña
// 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.
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/173c3949d5684150c34f7405f0689310eade0362/resources/basics/TestPBT.pbt
Save Format v3.0(19990112)
@begin Projects
0 "myproject\\myprojectlib.pbl";
@end;
appname "myproject";
applib "myproject\\myproject.pbl";
LibList "myproject\\myproject.pbl;myproject\\lib\\logger\\logger.pbl;myproject\\lib\\payroll\\payroll.pbl;myproject\\lib\\contract\\contract.pbl;myproject\\lib\\common\\common.pbl;";
type "pb";

View File

@@ -0,0 +1,765 @@
// The MIT License (MIT)
// Copyright (c) 2016 dario ureña
// 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.
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/07bf527194b73e133943221dc2199a9442d463eb/resources/inventoryModel/nivel0/nivel1/n_cst_buttonlistbar_gradient.sru
HA$PBExportHeader$n_cst_buttonlistbar_gradient.sru
forward
global type n_cst_buttonlistbar_gradient from nonvisualobject
end type
type gradient_rect from structure within n_cst_buttonlistbar_gradient
end type
type gradient_triangle from structure within n_cst_buttonlistbar_gradient
end type
type rect from structure within n_cst_buttonlistbar_gradient
end type
type trivertex from structure within n_cst_buttonlistbar_gradient
end type
type logfont from structure within n_cst_buttonlistbar_gradient
end type
end forward
type gradient_rect from structure
unsignedlong upperleft
unsignedlong lowerright
end type
type gradient_triangle from structure
unsignedlong vertex1
unsignedlong vertex2
unsignedlong vertex3
end type
type rect from structure
long left
long top
long right
long bottom
end type
type trivertex from structure
long x
long y
integer red
integer green
integer blue
integer alpha
end type
type logfont from structure
long lfheight
long lfwidth
long lfescapement
long lforientation
long lfweight
character lfitalic
character lfunderline
character lfstrikeout
character lfcharset
character lfoutprecision
character lfclipprecision
character lfquality
character lfpitchandfamily
character lffacename[32]
end type
global type n_cst_buttonlistbar_gradient from nonvisualobject autoinstantiate
end type
type prototypes
FUNCTION ulong SetBkMode(ulong lhdc,ulong nBkMode) LIBRARY "gdi32.dll"
Function Long GetDC (Long hwnd) Library 'user32'
Function Long GetClientRect (Long hwnd, REF RECT lpRect) Library 'user32' alias for "GetClientRect;Ansi"
Function Long ReleaseDC (Long hwnd, Long hdc1) Library 'user32'
Function Boolean GradientRectangle (Long hdc2, TRIVERTEX pVert[], ULong numVert, GRADIENT_RECT pMesh [], ULong numMesh, ULong dMode) Library 'msimg32' Alias For 'GradientFill;Ansi'
Function Boolean GradientTriangle (Long hdc3, TRIVERTEX pVert[], ULong numVert, GRADIENT_TRIANGLE pMesh [], ULong numMesh, ULong dMode) Library 'msimg32' Alias For 'GradientFill;Ansi'
Function ulong Rectangle (ulong hwnd, ulong X1, ulong Y1, ulong X2, ulong Y2) library "gdi32"
Function ulong CreatePen (ulong nPenStyle, ulong nWidth, ulong crColor) LIBRARY "Gdi32.dll"
Function ULONG SelectObject (uLong hdc4, uLong hObject ) LIBRARY "Gdi32.dll"
function boolean DeleteObject(ulong hgdiobject) library "gdi32.dll"
FUNCTION ulong DrawText(ulong lhdc,ref string lpStr,ulong nCount,ref RECT lpRect,ulong wFormat) LIBRARY "user32.dll" ALIAS FOR "DrawTextA;Ansi"
FUNCTION ulong SetTextColor(ulong lhdc,ulong crColor) LIBRARY "gdi32.dll"
FUNCTION ulong CreateFontIndirect(ref LOGFONT lpLogFont) LIBRARY "gdi32.dll" ALIAS FOR "CreateFontIndirectA;ANSI"
Function ulong RoundRect (uLong hdc5 , uLong X1, ulong Y1 , ulong X2 , ulong Y2 , ulong X3 , ulong Y3 ) LIBRARY "Gdi32.dll"
Function ULONG FillRgn (Long hdc6, Long hRgn , Long hBrush ) LIBRARY "Gdi32.dll"
Function ulong CreateRectRgn (Long X1, Long Y1 , Long X2 , Long Y2 ) LIBRARY "Gdi32.dll"
Function ulong CreateRoundRectRgn (long X1 , long Y1 , long X2 , long Y2 , long X3 , long Y3 ) LIBRARY "Gdi32.dll"
Function ULONG PolyBezier (Long hdc7, REF RECT lpRect, long cPoints ) LIBRARY "Gdi32.dll"
Function ULONG Polyline( Long hdc8, GRADIENT_RECT lppt[], int cPoints) LIBRARY "Gdi32.dll"
FUNCTION boolean Ellipse(ulong hwnd,long x1,long y1,long x2,long y2) LIBRARY "Gdi32.dll"
FUNCTION ulong CreatePolygonRgn(ref POINT ppoint[], int count, int fillMode) Library "GDI32.DLL"
FUNCTION long SelectClipRgn(ulong lhdc, ulong lhrgn) Library "GDI32.DLL"
FUNCTION long PtInRegion(ulong hrgn, int x, int y) LIBRARY "GDI32.dll"
Function boolean ImageList_Draw(long himl, long i, long hdcDst, long lx, long ly, ulong fStyle) Library "comctl32.dll"
Function boolean ImageList_DrawEx(long himl, long i, long hdcDst, long lx, long ly, long lwidth, long lheight, long lback, long lfore , ulong fStyle) Library "comctl32.dll"
end prototypes
type variables
// MS Windows enumerations
CONSTANT ULong GRADIENT_FILL_RECT_H = 0
CONSTANT ULong GRADIENT_FILL_RECT_V = 1
CONSTANT ULong GRADIENT_FILL_TRIANGLE = 2
CONSTANT ULong GRADIENT_FILL_OP_FLAG = 255
CONSTANT Long ILD_TRANSPARENT = 1
CONSTANT Long LVM_GETIMAGELIST = 4098
CONSTANT Long LVSIL_NORMAL = 0
CONSTANT Long ILD_BLEND50 = 4
CONSTANT Long ILD_BLEND25 = 2
// User object enumerations
CONSTANT String TOPLEFT = "TOPLEFT"
CONSTANT String TOPRIGHT = "TOPRIGHT"
CONSTANT String BOTTOMRIGHT = "BOTTOMRIGHT"
CONSTANT String BOTTOMLEFT = "BOTTOMLEFT"
BOOLEAN ib_displayborder
CONSTANT LONG ALIGN_LEFT = 0
CONSTANT LONG ALIGN_CENTER = 1
CONSTANT LONG ALIGN_RIGHT = 2
CONSTANT LONG DT_WORD_ELLIPSIS = 262144
CONSTANT LONG DT_CALCRECT = 1024
CONSTANT LONG DT_WORDBREAK = 16
Long il_HDC
Long il_newHeight
Long il_newWidth
PRIVATE:
// Object Handle
Long HDC
Long il_ShadowBackColor
ULong iul_font
ULong iul_fontbold
// Dimensions
RECT DC_Rect
// Vertices
TRIVERTEX Corner[4]
TRIVERTEX BorderCorner[2]
TRIVERTEX VistaCorner1[4]
TRIVERTEX VistaCorner2[4]
TRIVERTEX VistaCorner3[4]
end variables
forward prototypes
public subroutine of_verticalgradient (long al_color1, long al_color2)
public subroutine of_splitrgb (long al_color, ref long red, ref long green, ref long blue)
public function boolean of_setdevicecontext (graphicobject ado_palette)
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette)
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor, integer ai_style)
public subroutine of_xpgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor)
public function boolean of_setdevicecontext (graphicobject ado_palette, integer ai_style, boolean ab_border)
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow)
public function integer of_sethdc (long al_hdc)
public function boolean of_getbit (long al_decimal, integer ai_bit)
public function unsignedlong of_createfont (string as_name, long al_size, boolean ab_underline)
public function long of_bitwiseand (long al_value1, long al_value2)
public function long of_bitwiseor (long al_value1, long al_value2)
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow, boolean ab_elipse, boolean ab_underline, boolean ab_wordwrap)
public function integer of_drawbuttons (dragobject ado_palette, buttons ast_buttons[], long al_bordercolor, long al_imagelist, boolean ab_boldselected, long il_imagesize, long al_height)
public subroutine of_verticalgradient (long al_color1, long al_color2)
public subroutine of_splitrgb (long al_color, ref long red, ref long green, ref long blue)
public function boolean of_setdevicecontext (graphicobject ado_palette)
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette)
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor, integer ai_style)
public subroutine of_xpgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor)
public function boolean of_setdevicecontext (graphicobject ado_palette, integer ai_style, boolean ab_border)
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow)
public function integer of_sethdc (long al_hdc)
public function boolean of_getbit (long al_decimal, integer ai_bit)
public function unsignedlong of_createfont (string as_name, long al_size, boolean ab_underline)
public function long of_bitwiseand (long al_value1, long al_value2)
public function long of_bitwiseor (long al_value1, long al_value2)
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow, boolean ab_elipse, boolean ab_underline, boolean ab_wordwrap)
public function integer of_drawbuttons (dragobject ado_palette, buttons ast_buttons[], long al_bordercolor, long al_imagelist, boolean ab_boldselected, long il_imagesize, long al_height)
end prototypes
public subroutine of_verticalgradient (long al_color1, long al_color2);Long ll_Red, &
ll_Green, &
ll_Blue, &
ll_DC
GRADIENT_RECT l_Gradient[1]
LONG hRPen
// Set the colors in the first corner (top left)
of_SplitRGB (al_Color1, ll_Red, ll_Green, ll_Blue)
Corner[1].Red = ll_Red
Corner[1].Green = ll_Green
Corner[1].Blue = ll_Blue
// Set the colors in the third corner (bottom right)
of_SplitRGB (al_Color2, ll_Red, ll_Green, ll_Blue)
Corner[3].Red = ll_Red
Corner[3].Green = ll_Green
Corner[3].Blue = ll_Blue
l_Gradient[1].UpperLeft = 0 // First corner, top left
l_Gradient[1].LowerRight = 2 // Third corner, bottom right
ll_DC = il_HDC//GetDC (HDC)
// Create a border if ib_displayborder is true
IF ib_displayborder THEN
hRPen = CreatePen(0,0,1090519039)
SelectObject(ll_DC, hRPen)
Rectangle(ll_DC, Corner[1].X - 1, Corner[1].Y - 1, Corner[3].X +1, Corner[3].Y +1)
END IF
GradientRectangle (ll_DC, Corner, 4, l_Gradient, 1, GRADIENT_FILL_RECT_V)
//ReleaseDC (HDC, ll_DC)
end subroutine
public subroutine of_splitrgb (long al_color, ref long red, ref long green, ref long blue);Red = Mod (al_Color, 256)
Red *= 256
al_Color /= 256
Green = Mod (al_Color, 256)
Green *= 256
Blue = al_Color / 256
Blue *= 256
end subroutine
public function boolean of_setdevicecontext (graphicobject ado_palette);IF NOT IsValid (ado_Palette) THEN RETURN FALSE
// Get the object's handle
HDC = Handle (ado_Palette)
// Get the object's dimensions
GetClientRect (HDC, DC_RECT)
// let's resize the grandient rectangle if border is displayed
IF ib_displayborder THEN
// Initialize the vertices
Corner[1].X = DC_RECT.Left +1
Corner[1].Y = DC_RECT.Top +1
Corner[2].X = DC_RECT.Right -1
Corner[2].Y = DC_RECT.Top +1
Corner[3].X = DC_RECT.Right -1
Corner[3].Y = DC_RECT.Bottom - 1
Corner[4].X = DC_RECT.Left +1
Corner[4].Y = DC_RECT.Bottom - 1
VistaCorner1[1].X = DC_RECT.Left + 1
VistaCorner1[1].Y = DC_RECT.Top + 1
VistaCorner1[2].X = DC_RECT.Right -1
VistaCorner1[2].Y = DC_RECT.Top + 1
VistaCorner1[3].X = DC_RECT.Right -1
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)//20
VistaCorner1[4].X = DC_RECT.Left +1
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)//20
VistaCorner3[1].X = DC_RECT.Left + 1
VistaCorner3[1].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2)//10
VistaCorner3[2].X = DC_RECT.Right -1
VistaCorner3[2].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2)//10
VistaCorner3[3].X = DC_RECT.Right -1
VistaCorner3[3].Y = DC_RECT.Bottom - 1
VistaCorner3[4].X = DC_RECT.Left +1
VistaCorner3[4].Y = DC_RECT.Bottom - 1
ELSE
Corner[1].X = DC_RECT.Left
Corner[1].Y = DC_RECT.Top
Corner[2].X = DC_RECT.Right
Corner[2].Y = DC_RECT.Top
Corner[3].X = DC_RECT.Right
Corner[3].Y = DC_RECT.Bottom
Corner[4].X = DC_RECT.Left
Corner[4].Y = DC_RECT.Bottom
VistaCorner1[1].X = DC_RECT.Left
VistaCorner1[1].Y = DC_RECT.Top
VistaCorner1[2].X = DC_RECT.Right
VistaCorner1[2].Y = DC_RECT.Top
VistaCorner1[3].X = DC_RECT.Right
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)// - 19
VistaCorner1[4].X = DC_RECT.Left
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)// - 19
VistaCorner3[1].X = DC_RECT.Left
VistaCorner3[1].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2) - 1// + 9//12
VistaCorner3[2].X = DC_RECT.Right
VistaCorner3[2].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2) - 1// + 9//12
VistaCorner3[3].X = DC_RECT.Right
VistaCorner3[3].Y = DC_RECT.Bottom
VistaCorner3[4].X = DC_RECT.Left
VistaCorner3[4].Y = DC_RECT.Bottom
END IF
RETURN TRUE
end function
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette);IF NOT of_SetDeviceContext (ado_Palette) THEN RETURN
of_VerticalGradient (al_Color1, al_Color2)
end subroutine
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor, integer ai_style);CHOOSE CASE ai_STYLE
CASE 0
of_XPGradient (al_color1, al_color2, ado_palette,ab_displayborder,al_bordercolor)
END CHOOSE
end subroutine
public subroutine of_xpgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor);Long ll_Red, &
ll_Green, &
ll_Blue, &
ll_DC
GRADIENT_RECT l_Gradient[1]
LONG hRPen
ib_displayborder = ab_displayborder
IF NOT of_SetDeviceContext (ado_Palette) THEN RETURN
//of_VerticalGradient (al_Color1, al_Color2)
// Set the colors in the first corner (top left)
of_SplitRGB (al_Color1, ll_Red, ll_Green, ll_Blue)
Corner[1].Red = ll_Red
Corner[1].Green = ll_Green
Corner[1].Blue = ll_Blue
// Set the colors in the third corner (bottom right)
of_SplitRGB (al_Color2, ll_Red, ll_Green, ll_Blue)
Corner[3].Red = ll_Red
Corner[3].Green = ll_Green
Corner[3].Blue = ll_Blue
l_Gradient[1].UpperLeft = 0 // First corner, top left
l_Gradient[1].LowerRight = 2 // Third corner, bottom right
ll_DC = il_HDC//GetDC (HDC)
// Create a border if ib_displayborder is true
IF ab_displayborder THEN
hRPen = CreatePen(0,0,al_bordercolor)
SelectObject(ll_DC, hRPen)
Rectangle(ll_DC, Corner[1].X - 1, Corner[1].Y - 1, Corner[3].X +1, Corner[3].Y +1)
DeleteObject(hRPen)
END IF
GradientRectangle (ll_DC, Corner, 4, l_Gradient, 1, GRADIENT_FILL_RECT_V)
//ReleaseDC (HDC, ll_DC)
end subroutine
public function boolean of_setdevicecontext (graphicobject ado_palette, integer ai_style, boolean ab_border);IF NOT IsValid (ado_Palette) THEN RETURN FALSE
// Get the object's handle
HDC = Handle (ado_Palette)
// Get the object's dimensions
GetClientRect (HDC, DC_RECT)
// let's resize the grandient rectangle if border is displayed
choose case ai_style
case 2
IF ab_border THEN
// Initialize the vertices
Corner[1].X = DC_RECT.Left +1
Corner[1].Y = DC_RECT.Top +1
Corner[2].X = DC_RECT.Right -1
Corner[2].Y = DC_RECT.Top +1
Corner[3].X = DC_RECT.Right -1
Corner[3].Y = DC_RECT.Bottom - 1
Corner[4].X = DC_RECT.Left +1
Corner[4].Y = DC_RECT.Bottom - 1
VistaCorner1[1].X = DC_RECT.Left + 2
VistaCorner1[1].Y = DC_RECT.Top + 2
VistaCorner1[2].X = DC_RECT.Right - 1
VistaCorner1[2].Y = DC_RECT.Top + 2
VistaCorner1[3].X = DC_RECT.Right -2
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
VistaCorner1[4].X = DC_RECT.Left +1
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
VistaCorner3[1].X = DC_RECT.Left + 2
VistaCorner3[1].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
VistaCorner3[2].X = DC_RECT.Right //-1
VistaCorner3[2].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
VistaCorner3[3].X = DC_RECT.Right - 2
VistaCorner3[3].Y = DC_RECT.Bottom - 2
VistaCorner3[4].X = DC_RECT.Left
VistaCorner3[4].Y = DC_RECT.Bottom - 2
ELSE
Corner[1].X = DC_RECT.Left +1
Corner[1].Y = DC_RECT.Top +1
Corner[2].X = DC_RECT.Right -1
Corner[2].Y = DC_RECT.Top +1
Corner[3].X = DC_RECT.Right -1
Corner[3].Y = DC_RECT.Bottom - 1
Corner[4].X = DC_RECT.Left +1
Corner[4].Y = DC_RECT.Bottom - 1
VistaCorner1[1].X = DC_RECT.Left
VistaCorner1[1].Y = DC_RECT.Top
VistaCorner1[2].X = DC_RECT.Right
VistaCorner1[2].Y = DC_RECT.Top
VistaCorner1[3].X = DC_RECT.Right
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
VistaCorner1[4].X = DC_RECT.Left
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
VistaCorner3[1].X = DC_RECT.Left
VistaCorner3[1].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
VistaCorner3[2].X = DC_RECT.Right
VistaCorner3[2].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
VistaCorner3[3].X = DC_RECT.Right
VistaCorner3[3].Y = DC_RECT.Bottom
VistaCorner3[4].X = DC_RECT.Left
VistaCorner3[4].Y = DC_RECT.Bottom
END IF
end choose
RETURN TRUE
end function
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow);RETURN of_DrawText (ado_palette, as_text, al_color, as_font, al_size, ab_bold, al_align, al_x, al_y, al_width, al_height, ab_displayshadow, FALSE, FALSE, FALSE)
end function
public function integer of_sethdc (long al_hdc);il_HDC = al_hdc
RETURN 1
end function
public function boolean of_getbit (long al_decimal, integer ai_bit);Boolean lb_null
//Check parameters
If IsNull(al_decimal) or IsNull(ai_bit) then
SetNull(lb_null)
Return lb_null
End If
//Assumption ai_bit is the nth bit counting right to left with
//the leftmost bit being bit one.
//al_decimal is a binary number as a base 10 long.
If Int(Mod(al_decimal / (2 ^(ai_bit - 1)), 2)) > 0 Then
Return True
End If
Return False
end function
public function unsignedlong of_createfont (string as_name, long al_size, boolean ab_underline);LogFont lstr_Lf
uLong lul_Font
lstr_Lf.lffacename = as_name
lstr_Lf.lfweight = 400
lstr_Lf.lfheight = al_size * -1
lstr_Lf.lfPitchAndFamily = '1'
lstr_Lf.lfClipPrecision = Char(2)
lstr_Lf.lfOutPrecision = Char(1)
lstr_Lf.lfQuality = Char(1)
lstr_Lf.lfCharset = Char(1)
IF ab_underline THEN
lstr_Lf.lfunderline = Char(1)
END IF
iul_font = CreateFontIndirect( lstr_Lf )
lstr_Lf.lfweight = 700
iul_fontbold = CreateFontIndirect( lstr_Lf )
RETURN 1
end function
public function long of_bitwiseand (long al_value1, long al_value2);Integer li_Cnt
Long ll_Result
Boolean lb_Value1[32], lb_Value2[32]
// Check for nulls
If IsNull(al_Value1) Or IsNull(al_Value2) Then
SetNull(ll_Result)
Return ll_Result
End If
// Get all bits for both values
For li_Cnt = 1 To 32
lb_Value1[li_Cnt] = of_getbit(al_Value1, li_Cnt)
lb_Value2[li_Cnt] = of_getbit(al_Value2, li_Cnt)
Next
// And them together
For li_Cnt = 1 To 32
If lb_Value1[li_Cnt] And lb_Value2[li_Cnt] Then
ll_Result = ll_Result + (2^(li_Cnt - 1))
End If
Next
Return ll_Result
end function
public function long of_bitwiseor (long al_value1, long al_value2);Integer li_Cnt
Long ll_Result
Boolean lb_Value1[32], lb_Value2[32]
// Check for nulls
If IsNull(al_Value1) Or IsNull(al_Value2) Then
SetNull(ll_Result)
Return ll_Result
End If
// Get all bits for both values
For li_Cnt = 1 To 32
lb_Value1[li_Cnt] = of_getbit(al_Value1, li_Cnt)
lb_Value2[li_Cnt] = of_getbit(al_Value2, li_Cnt)
Next
// Or them together
For li_Cnt = 1 To 32
If lb_Value1[li_Cnt] Or lb_Value2[li_Cnt] Then
ll_Result = ll_Result + (2^(li_Cnt - 1))
End If
Next
Return ll_Result
end function
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow, boolean ab_elipse, boolean ab_underline, boolean ab_wordwrap);Long ll_Red, &
ll_Green, &
ll_Blue, &
ll_DC, ll_parm, ll_sizeparm
GRADIENT_RECT l_Gradient[1]
RECT l_Rect, l_Rectback
LONG hRPen
IF Len(Trim(as_text)) = 0 THEN
il_newWidth = 1
il_NewHeight = al_height
RETURN 0
END IF
IF NOT of_SetDeviceContext (ado_Palette) THEN RETURN 0
ll_DC = il_HDC//GetDC (HDC)
of_CreateFont(as_font, al_size, ab_underline)
IF ab_bold THEN
SelectObject(ll_DC, iul_fontbold)
ELSE
SelectObject(ll_DC, iul_font)
END IF
IF ab_elipse THEN
ll_sizeparm = of_BitWiseOr(al_align, DT_WORD_ELLIPSIS)
ELSE
IF ab_wordwrap THEN
ll_sizeparm = of_BitWiseOr(al_align, DT_WORDBREAK)
END IF
END IF
IF ab_wordwrap THEN
ll_parm = of_BitWiseOr(DT_CALCRECT, DT_WORDBREAK)
ELSE
ll_parm = DT_CALCRECT
END IF
SetBkMode(ll_DC, 1)
/*-------------------------------------------------------------------
Normal text
-------------------------------------------------------------------*/
// Position
l_Rect.Left = al_x
l_Rect.Top = al_y
l_Rect.Right = al_width
l_Rect.Bottom = al_height
//SetBkMode(ll_DC, 1)
SetTextColor(ll_DC, al_color)
IF NOT ab_elipse THEN
Drawtext(ll_DC, as_text, LEN(as_text), l_Rect, ll_parm)
END IF
IF al_align = ALIGN_RIGHT OR &
al_align = ALIGN_CENTER THEN
l_Rect.Right = al_width
END IF
Drawtext(ll_DC, as_text, LEN(as_text), l_Rect, ll_sizeparm)
il_NewHeight = l_Rect.Bottom
il_newWidth = l_Rect.RIGHT
DeleteObject(iul_font)
DeleteObject(iul_fontbold)
//ReleaseDC (HDC, ll_DC)
RETURN 1
end function
public function integer of_drawbuttons (dragobject ado_palette, buttons ast_buttons[], long al_bordercolor, long al_imagelist, boolean ab_boldselected, long il_imagesize, long al_height);point lp[], lp_line[]
point lp_empty[]
gradient_rect l_Gradient[1]
GRADIENT_RECT l_Line[]
rect rc
Long ll_Red, &
ll_Green, &
ll_Blue
long hRgn, hRPen, ll_index, ll_count, ll_textcolor, ll_parm
Long ll_inner, ll_innercount
Long ll_textx, ll_texty, ll_textwidth, ll_y
Boolean lb_bold
ll_count = UpperBound(ast_buttons)
FOR ll_index = 1 TO ll_count
lp = lp_empty
lp = ast_buttons[ll_index].ast_point
IF lp[4].py < 0 OR lp[1].py > al_height THEN
CONTINUE
END IF
l_Gradient[1].UpperLeft = 0
l_Gradient[1].LowerRight = 2
IF ast_buttons[ll_index].ab_selected OR &
ast_buttons[ll_index].ab_mouseover THEN
Corner[1].X = lp[1].px
Corner[1].Y = lp[1].py
Corner[2].X = lp[2].px
Corner[2].Y = lp[2].py
Corner[3].X = lp[3].px
Corner[3].Y = lp[3].py
Corner[4].X = lp[4].px
Corner[4].Y = lp[4].py
// Set the colors in the first corner (top left)
of_SplitRGB (ast_buttons[ll_index].al_backcolor1, ll_Red, ll_Green, ll_Blue)
Corner[1].Red = ll_Red
Corner[1].Green = ll_Green
Corner[1].Blue = ll_Blue
// Set the colors in the third corner (bottom right)
of_SplitRGB (ast_buttons[ll_index].al_backcolor2, ll_Red, ll_Green, ll_Blue)
Corner[3].Red = ll_Red
Corner[3].Green = ll_Green
Corner[3].Blue = ll_Blue
//Create Polygon
hRPen = CreatePen(0,0,al_bordercolor)
SelectObject(il_HDC, hRPen)
hRgn = CreateRoundRectRgn( Corner[1].X, Corner[1].Y, Corner[3].X, Corner[3].Y,7,7)
RoundRect( il_HDC, Corner[1].X - 1, Corner[1].Y - 1, Corner[3].X, Corner[3].Y,10,10)
SelectClipRgn(il_HDC, hRgn)
//Gradient Fill
GradientRectangle (il_HDC, Corner, 4, l_Gradient, 1, GRADIENT_FILL_RECT_V)
SelectClipRgn(il_HDC, 0)
DeleteObject(hRPen)
DeleteObject(hRgn)
END IF
IF ast_buttons[ll_index].ab_enabled THEN
ll_textcolor = 0
ELSE
ll_textcolor = RGB(100,100,100)
END IF
IF ab_boldselected AND ast_buttons[ll_index].ab_selected THEN
lb_bold = TRUE
ELSE
lb_bold = FALSE
END IF
of_DrawText(ado_palette, &
ast_buttons[ll_index].as_text, &
ll_textcolor, &
'tahoma', &
11, lb_bold, ALIGN_CENTER, &
ast_buttons[ll_index].ast_point[1].px, &
ast_buttons[ll_index].ast_point[1].py + il_imagesize + 6, &
ast_buttons[ll_index].ast_point[2].px - ast_buttons[ll_index].ast_point[1].px + 10, &
ast_buttons[ll_index].al_textheight, &
FALSE, FALSE, FALSE, TRUE)
//----------------------------------------
IF ast_buttons[ll_index].ab_enabled THEN
ImageList_DrawEx(al_imagelist, &
ast_buttons[ll_index].al_image - 1, &
il_HDC, &
ast_buttons[ll_index].ast_point[1].px + (ast_buttons[ll_index].ast_point[2].px - ast_buttons[ll_index].ast_point[1].px) / 2 - (il_imagesize / 2) , &
ast_buttons[ll_index].ast_point[1].py + 4, &
il_imagesize,il_imagesize, &
0, 0, ILD_TRANSPARENT )
ELSE
ll_parm = of_BitWiseOR(ILD_TRANSPARENT, ILD_BLEND50)
ImageList_DrawEx(al_imagelist, &
ast_buttons[ll_index].al_image - 1, &
il_HDC, &
ast_buttons[ll_index].ast_point[1].px + (ast_buttons[ll_index].ast_point[2].px - ast_buttons[ll_index].ast_point[1].px) / 2 - (il_imagesize / 2) , &
ast_buttons[ll_index].ast_point[1].py + 4, &
il_imagesize,il_imagesize, &
4294967295, RGB(128,128,128), ll_parm )
END IF
NEXT
RETURN 1
end function
on n_cst_buttonlistbar_gradient.create
call super::create
TriggerEvent( this, "constructor" )
end on
on n_cst_buttonlistbar_gradient.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

View File

@@ -0,0 +1,46 @@
// The MIT License (MIT)
// Copyright (c) 2016 dario ureña
// 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.
// Source - https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/62083e4cd4f9ead9975427ee9f558d6adef67bbe/resources/advanced/w_mant_seg/part1.srw
forward
global type w_mant_seg_scs from w_mant
end type
type sle_anio from singlelineedit within w_mant_seg_scs
end type
type st_1 from statictext within w_mant_seg_scs
end type
end forward
global type w_mant_seg_scs from w_mant
integer height = 952
sle_anio sle_anio
st_1 st_1
end type
global w_mant_seg_scs w_mant_seg_scs
type variables
//------------------------------------------------------------------------------------------
// Satxa - 26-Ene-2005.19417
String is_anio
//------------------------------------------------------------------------------------------
end variables

View File

@@ -0,0 +1,399 @@
// The MIT License (MIT)
// Copyright (c) 2016 Sébastien Kirche
// 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.
// Source: https://github.com/sebkirche/libexport/blob/c2459a5399ff87f29344b3b0472b041ebb6f9246/sources/115/w_export.srw
HA$PBExportHeader$w_export.srw
forward
global type w_export from window
end type
type st_2 from statictext within w_export
end type
type sle_destdir from singlelineedit within w_export
end type
type cb_browse_dest from commandbutton within w_export
end type
type cb_export_some from commandbutton within w_export
end type
type cb_export_all from commandbutton within w_export
end type
type dw_objects from datawindow within w_export
end type
type cb_browse from commandbutton within w_export
end type
type sle_pbl from singlelineedit within w_export
end type
type st_1 from statictext within w_export
end type
end forward
global type w_export from window
integer width = 3209
integer height = 1600
boolean titlebar = true
string title = "Export"
boolean controlmenu = true
boolean minbox = true
boolean maxbox = true
boolean resizable = true
long backcolor = 67108864
string icon = "AppIcon!"
boolean center = true
st_2 st_2
sle_destdir sle_destdir
cb_browse_dest cb_browse_dest
cb_export_some cb_export_some
cb_export_all cb_export_all
dw_objects dw_objects
cb_browse cb_browse
sle_pbl sle_pbl
st_1 st_1
end type
global w_export w_export
forward prototypes
public subroutine get_objects (string as_pbl)
public function boolean export_object (string as_lib, string as_object, string as_type, string as_comment)
public function string get_object_suffix (string as_type)
public function libexporttype get_object_libtype (string as_type)
public subroutine export_object_at_row (long al_row, string as_lib)
end prototypes
public subroutine get_objects (string as_pbl);
if not fileexists(as_pbl) then return
int i, p = 1
string ls_entries, ls_entry
ls_entries = LibraryDirectoryEx(as_pbl, DirAll!)
debug_message('get_objects()', ls_entries)
dw_objects.reset()
dw_objects.importstring(ls_entries)
end subroutine
public function boolean export_object (string as_lib, string as_object, string as_type, string as_comment);
LibExportType l_ot
string ls_syntax, ls_filename, ls_dir
int li_file
ls_dir = sle_destdir.text
l_ot = get_object_libtype(as_type)
ls_syntax = libraryexport(as_lib, as_object, l_ot)
ls_filename = as_object + '.' + get_object_suffix(as_type)
li_file = FileOpen(ls_dir + '\' + ls_filename, streammode!, write!, LockReadWrite!, Replace!, EncodingUTF16LE!)
if li_file = -1 then return false
FileWrite(li_file, "$PBExportHeader$" + ls_filename + "~r~n")
if as_comment <> "" then
FileWrite(li_file, "$PBExportComments$" + as_comment + "~r~n")
end if
FileWrite(li_file, ls_syntax)
FileClose(li_file)
return true
end function
public function string get_object_suffix (string as_type);
string ls_suf = ""
choose case as_type
case 'Application'; ls_suf = 'sra'
case 'DataWindow'; ls_suf = 'srd'
case 'Function'; ls_suf = 'srf'
case 'Menu'; ls_suf = 'srm'
case 'Pipeline'; ls_suf = 'srp'
case 'Project'; ls_suf = 'srj'
case 'Query'; ls_suf = 'srq'
case 'Structure'; ls_suf = 'srs'
case 'UserObject'; ls_suf = 'sru'
case 'Window'; ls_suf = 'srw'
end choose
return ls_suf
end function
public function libexporttype get_object_libtype (string as_type);
libexporttype l_ot
choose case as_type
case 'Application'; l_ot = ExportApplication!
case 'DataWindow'; l_ot = ExportDataWindow!
case 'Function'; l_ot = ExportFunction!
case 'Menu'; l_ot = ExportMenu!
case 'Pipeline'; l_ot = ExportPipeline!
case 'Project'; l_ot = ExportProject!
case 'Query'; l_ot = ExportQuery!
case 'Structure'; l_ot = ExportStructure!
case 'UserObject'; l_ot = ExportUserObject!
case 'Window'; l_ot = ExportWindow!
end choose
return l_ot
end function
public subroutine export_object_at_row (long al_row, string as_lib);
string ls_obj, ls_type, ls_comment
ls_obj = dw_objects.getitemstring(al_row, "obj_name")
ls_type = dw_objects.getitemstring(al_row, "obj_type")
ls_comment = dw_objects.getitemstring(al_row, "comment")
export_object(as_lib, ls_obj, ls_type, ls_comment)
end subroutine
on w_export.create
this.st_2=create st_2
this.sle_destdir=create sle_destdir
this.cb_browse_dest=create cb_browse_dest
this.cb_export_some=create cb_export_some
this.cb_export_all=create cb_export_all
this.dw_objects=create dw_objects
this.cb_browse=create cb_browse
this.sle_pbl=create sle_pbl
this.st_1=create st_1
this.Control[]={this.st_2,&
this.sle_destdir,&
this.cb_browse_dest,&
this.cb_export_some,&
this.cb_export_all,&
this.dw_objects,&
this.cb_browse,&
this.sle_pbl,&
this.st_1}
end on
on w_export.destroy
destroy(this.st_2)
destroy(this.sle_destdir)
destroy(this.cb_browse_dest)
destroy(this.cb_export_some)
destroy(this.cb_export_all)
destroy(this.dw_objects)
destroy(this.cb_browse)
destroy(this.sle_pbl)
destroy(this.st_1)
end on
type st_2 from statictext within w_export
integer x = 32
integer y = 1208
integer width = 251
integer height = 76
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
long textcolor = 33554432
long backcolor = 67108864
string text = "Export into"
boolean focusrectangle = false
end type
type sle_destdir from singlelineedit within w_export
integer x = 325
integer y = 1204
integer width = 2619
integer height = 80
integer taborder = 30
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
long textcolor = 33554432
string text = "none"
borderstyle borderstyle = stylelowered!
end type
type cb_browse_dest from commandbutton within w_export
integer x = 2985
integer y = 1204
integer width = 169
integer height = 80
integer taborder = 30
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
string text = "..."
end type
event clicked;
string ls_dir
ls_dir = getfolder("Select the directory where you want to export")
if ls_dir <> "" then
sle_destdir.text = ls_dir
end if
end event
type cb_export_some from commandbutton within w_export
integer x = 398
integer y = 1344
integer width = 457
integer height = 100
integer taborder = 50
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
string text = "Export selected"
end type
event clicked;
string ls_lib
int r
ls_lib = sle_pbl.text
if not fileexists(ls_lib) then return
r = dw_objects.getselectedrow(0)
do while r > 0
export_object_at_row(r, ls_lib)
r = dw_objects.getselectedrow(r)
loop
end event
type cb_export_all from commandbutton within w_export
integer x = 37
integer y = 1344
integer width = 338
integer height = 100
integer taborder = 40
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
string text = "Export all"
end type
event clicked;
string ls_lib
int i, li_max
ls_lib = sle_pbl.text
if not fileexists(ls_lib) then return
li_max = dw_objects.rowcount()
for i = 1 to li_max
export_object_at_row(i, ls_lib)
next
end event
type dw_objects from datawindow within w_export
integer x = 32
integer y = 212
integer width = 2912
integer height = 876
integer taborder = 30
string title = "none"
string dataobject = "dw_objects"
boolean hscrollbar = true
boolean vscrollbar = true
boolean livescroll = true
borderstyle borderstyle = stylelowered!
end type
event clicked;
boolean lb_sel
lb_sel = dw_objects.isselected(row)
dw_objects.selectrow(row, not lb_sel)
end event
type cb_browse from commandbutton within w_export
integer x = 2985
integer y = 64
integer width = 169
integer height = 80
integer taborder = 20
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
string text = "..."
end type
event clicked;
string ls_dir, ls_file, ls_path
if 1 = getfileopenname("Choose a library to export", ls_dir, ls_file, "pbl", "Libraries (*.PBL),*.PBL") then
ls_path = ls_dir
sle_pbl.text = ls_path
get_objects(ls_path)
end if
end event
type sle_pbl from singlelineedit within w_export
integer x = 256
integer y = 64
integer width = 2688
integer height = 80
integer taborder = 10
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
long textcolor = 33554432
string text = "none"
borderstyle borderstyle = stylelowered!
end type
type st_1 from statictext within w_export
integer x = 32
integer y = 72
integer width = 215
integer height = 76
integer textsize = -8
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Tahoma"
long textcolor = 33554432
long backcolor = 67108864
string text = "Library"
boolean focusrectangle = false
end type

View File

@@ -0,0 +1,22 @@
a = Analysis(['portablizer.pyqt4.py'],
hiddenimports=[],
hookspath=None,
runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='Portablizer',
debug=False,
strip=None,
upx=True,
console=False)
node = Tree('node', prefix='node')
collect = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
node,
strip=None,
upx=True,
name='Portablizer')

View File

@@ -0,0 +1,174 @@
/* Ga igenom lador med IFF-filer rekursivt och skapa:
1: Spritekartor om 320x256 med alla spritar
2: En tabell med enumererade spritenummer
Aterstar:
*: Att skriva shapesfiler direkt
$VER: 1.0
*/
SIGNAL ON BREAK_C
PARSE ARG argument
template = 'START/N COLOURS/N REMAP/S RECURSIVE/S PALETTE/K DIRECTORY/A'
CALL Init
ADDRESS 'PPAINT'
OPTIONS RESULTS
GetBestVideoMode WIDTH 320 HEIGHT 256 COLORS args.colours
modeid=Word(RESULT,1)
say modeid
Set 'FORCE "DISPLAY=' || modeid || '"'
IF RC~=0 THEN EXIT 20
Set 'FORCE "IMAGEW=320" "IMAGEH=256" "COLORS='args.colours'"'
ClearImage
LockGUI
ScreenToFront
x=0 ; y=0 ; maxhoejd=0 ; fil#=0 ; blad#=0
CALL WriteLn konstfil, ';Blad' blad#
DO UNTIL Lines()==0 & fillista==''
DO WHILE fillista~=''
PARSE VAR fillista filnamn 'y' fillista
IF Right(filnamn,5)=='.info' THEN ITERATE
IF Word(StateF(dir||filnamn),1)=='DIR' THEN DO
PUSH fillista
PUSH dir
dir=dir||filnamn||'/'
SAY 'Entering directory' dir'...'
fillista=ShowDir(dir,'ALL','y')
ITERATE
END
LoadBrush FILE dir || filnamn NOPROGRESS
IF RC~==0 THEN DO
SAY 'Skipping file:' dir || filnamn
ITERATE
END
IF args.remap THEN RemapBrush NOPROGRESS
GetBrushAttributes WIDTH ; bredd=RESULT
GetBrushAttributes HEIGHT ; hoejd=RESULT
GetBrushAttributes COLORS ; djup=RESULT
IF bredd//16==0 THEN ebwidth=bredd
ELSE ebwidth=bredd+(16-(bredd//16))
maxhoejd=Max(maxhoejd,hoejd)
SAY 'File:' Left(filnamn,29) 'Width:' bredd ' Height:' hoejd ' Depth:' djup ' ebwidth:' ebwidth
SetCurrentBrush RECTANGULAR WIDTH 1 HEIGHT 1
DrawRectangle x y x+ebwidth y+hoejd
Text fil# 'X' x+2 'Y' y+2
SetCurrentBrush 1 ; SetBrushHandle 0 0
PutBrush x y
CALL WriteLn(konstfil,'; '||fil# ||': '|| filnamn ||' ('||ebwidth||'x'||hoejd||'x'||djup||')')
CALL WriteLn(konstfil,'#'||Upper(Left(filnamn,Min(Length(filnamn),Max(LastPos('.',filnamn)-1,0))))||'='fil#)
x=x+ebwidth
IF x+ebwidth>319 THEN DO
x=0
y=y+maxhoejd
IF y+maxhoejd>255 THEN DO
SaveImage FILE 'Spritesheet' || blad# || '.ilbm' FORCE
IF RC==0 THEN SAY 'Saved sheet' blad#
ELSE SAY "Couldn't save spritesheet"
ClearImage
y=0
blad#=blad#+1
CALL WriteLn konstfil, ';Blad' blad#
END
maxhoejd=0
END
fil#=fil#+1
END /* WHILE fillista */
IF Lines()>0 THEN DO
PARSE PULL dir
PARSE PULL fillista
SAY 'Going back to' dir'...'
END
END /* UNTIL Lines() */
BREAK_C:
FreeBrush FORCE
UnLockGUI
medd=fil# 'files processed in' blad#+1 'sheets'
SAY medd
RequestNotify 'TITLE SpriteSheet.pprx PROMPT "'medd'"'
ScreenToBack
CALL Close(konstfil)
DO WHILE Lines()>0; PULL .; END
EXIT 0
Init:
IF argument = '' | argument = '?' THEN DO
SAY template
EXIT 0
END
CALL ReadArgs()
IF ~Show('L',"rexxsupport.library") THEN DO
IF ~AddLib("rexxsupport.library",0,-30,0) THEN DO
SAY 'Hittade inte rexxsupport.library'
EXIT 20
END
END
IF ~Open(konstfil,'SpriteConstants.txt','WRITE') THEN EXIT 10
IF ~SHOW('P', 'PPAINT') THEN DO
SAY "Couldn't find PPaint. Please start the program first."
EXIT 5
END
dir=args.directory
IF dir='""' THEN dir=Pragma('DIRECTORY')
IF dir='' THEN dir='Ram:Megamanv6/Graphics/'
IF Right(dir,1)~=='/' THEN dir=dir || '/'
fillista=ShowDir(dir,'FILES','y')
fillista=ShowDir(dir,'ALL','y')
IF fillista="" THEN DO
SAY "Found no files"
EXIT 5
END
IF args.colours==0 THEN args.colours=16
ADDRESS 'PPAINT'
OPTIONS RESULTS
IF args.palette~='' THEN LoadPalette args.palette
RETURN
ReadArgs:
/* ReadArgs()-like evaluation of command line arguments */
SAY 'ReadArgs'
DO key# = 1 TO Words(Template)
key=Word(template,key#)
PARSE VAR key key "/" keytype
SELECT
WHEN keytype='S'|keytype='N' THEN args.key=0
WHEN keytype='K'|keytype='A' THEN args.key=''
OTHERWISE NOP /* Error in template */
END
END
DO WHILE argument ~= ''
PARSE VAR argument arg1 argument
arg2=''
DO key# = 1 TO Words(template)
key = Word(template,key#)
PARSE VAR key key '/' keytype
IF Upper(Left(arg1,Length(key))) = key THEN DO
SELECT
WHEN keytype='S' THEN DO
args.key=1
END
WHEN keytype='K' | keytype='N' | keytype='A' THEN DO
IF Index(arg1,'=')>0
THEN DO
SAY 'Innehaller ='
PARSE VAR arg1 '=' arg2
SAY 'arg2:' arg2
END
ELSE PARSE VAR argument arg2 argument
args.key=arg2
IF keytype='N' & DataType(arg2)~==NUM THEN DO
SAY 'Illegal numerical argument' key arg2
EXIT 10
END
END
END
arg1=''
LEAVE key#
END
END
IF arg1~='' THEN args.directory=arg1
END
RETURN

View File

@@ -0,0 +1,135 @@
/* Display information about Blitz Basic .shapes file,
optionally displaying the shape's cookiecut
$AUTHOR: Iggy Drougge 2016
$VER: 1.1
*/
PARSE ARG argument
template = 'FROM/N TO/N SHOW/S FILE/A'
IF argument = '' | argument = '?' THEN DO
SAY 'ShapesInfo' template
EXIT 0
END
CALL ReadArgs()
IF ~Open(fh,args.file,READ) then DO
SAY "Couldn't Open file:" args.file
EXIT 10
END
shape#=0
filebad=0
IF args.to=0 THEN args.to=9999
IF args.from>1 THEN SAY 'Seeking...'
DO WHILE ~EOF(fh)
header=ReadCh(fh,32)
IF EOF(fh) THEN DO
SAY 'Reached end of file.'
EXIT 0
END
PARSE VALUE header WITH pixwidth +2 pixheight +2 depth +2 ebwidth +2 bltsize +2 xhandle +2 yhandle +2 . +4 . +4 onebpmem +2 onebpmemx +2 allbpmem +2 allbpmemx +2 .
CALL CheckHeader
IF filebad THEN DO
SAY 'Not a valid shapes file.'
SAY C2X(header)
EXIT 10
END
shape#=shape#+1
bitplanesize = C2D(ebwidth) * C2D(pixheight)
bitmapsize = bitplanesize * C2D(depth)
IF shape# < args.from THEN DO
CALL Seek(fh,bitmapsize,CURRENT)
ITERATE
END
IF shape# > args.to THEN LEAVE
CALL PrintHeader
IF args.show THEN CALL ShowCookiecut
ELSE CALL Seek(fh,bitmapsize,CURRENT)
END
EXIT 0
CheckHeader:
IF C2D(pixwidth)>C2D(ebwidth)*8 THEN filebad=1
IF Left(C2B(bltsize),10)~=C2B(pixheight) THEN filebad=1
RETURN
PrintHeader:
SAY 'Shape #' || shape# || ':'
SAY ' Width: ' C2D(pixwidth) 'pixels' '('C2D(ebwidth) 'bytes)'
SAY ' Height: ' C2D(pixheight) 'pixels'
SAY ' Depth: ' C2D(depth) 'bitplanes'
SAY ' BLTSIZE: ' '$'C2X(bltsize) '('||,
C2D(B2C(Left(C2B(bltsize),10))) 'x',
C2D(B2C(Right(C2B(bltsize),6)))')'
SAY ' Handle: ' C2D(xhandle)','C2D(yhandle)
/*
SAY 'Onebpmem: ' C2D(onebpmem)
SAY 'OnebpmemX:' C2D(onebpmemx)
SAY 'Allbpmem: ' C2D(allbpmem)
SAY 'AllbpmemX:' C2D(allbpmemx)
*/
RETURN
ShowCookiecut:
depth=C2D(depth)
bmap=Copies('00'x,bitplanesize)
DO FOR depth
bmap=BitOr(bmap,readch(fh,bitplanesize))
END
ln=1 ; pixheight=C2D(pixheight) ; ebwidth=C2D(ebwidth)
DO FOR pixheight
SAY C2B(SubStr(bmap,ln,ebwidth))
ln=ln+ebwidth
END
RETURN
EXIT 0
ReadArgs:
/* ReadArgs()-like evaluation of command line arguments */
DO key# = 1 TO Words(Template) /* Initialise the keywords */
key=Word(template,key#)
PARSE VAR key key "/" keytype
SELECT
WHEN keytype='S'|keytype='N' THEN args.key=0
WHEN keytype='K'|keytype='A' THEN args.key=''
OTHERWISE NOP /* Error in template */
END
END
DO WHILE argument ~= ''
PARSE VAR argument arg1 argument
arg2=''
DO key# = 1 TO Words(template)
key = Word(template,key#)
PARSE VAR key key '/' keytype
IF Upper(Left(arg1,Length(key))) = key THEN DO
SELECT
WHEN keytype='S' THEN DO
args.key=1
END
WHEN keytype='K' | keytype='N' | keytype='A' THEN DO
IF Index(arg1,'=')>0
THEN DO
SAY 'Innehaller ='
PARSE VAR arg1 '=' arg2
SAY 'arg2:' arg2
END
ELSE PARSE VAR argument arg2 argument
args.key=arg2
IF keytype='N' & DataType(arg2)~==NUM THEN DO
SAY 'Illegal numerical argument' key arg2
EXIT 10
END
END
END
arg1=''
LEAVE key#
END
END
IF arg1~='' THEN args.file=arg1
END
RETURN

View File

@@ -0,0 +1,54 @@
/* rexx */
PARSE ARG filnamn
IF filnamn='' THEN DO
filnamn='raw'
filnamn='font.shapes'
end
IF ~open(fil,filnamn,r) THEN EXIT 10
pixwidth=48
ebwidth=pixwidth/8
pixheight=48
depth=4
SAY "Skriver utfil..."
CALL open utfil,"RAM:utfil",W
CALL skriv pixwidth,2
CALL skriv pixheight,2
CALL skriv depth,2
CALL skriv ebwidth,2
bltsize=Right(C2B(D2C(pixheight)),10,"00")
bltsize=bltsize || Right(C2B(D2C(ebwidth)),6,"00")
/* SAY bltsize */
CALL skriv C2D(B2C(bltsize)),2
CALL skriv 0,4 /* xhandle, yhandle*/
CALL skriv 0,4 /* datapekare */
CALL skriv 0,4 /* cookiepekare */
CALL skriv ebwidth*pixheight,2 /* onebpmem */
CALL skriv ebwidth*pixheight+pixheight*2,2 /* onebpmemx */
CALL skriv ebwidth*pixheight*depth,2 /* allbpmem */
CALL skriv ebwidth*pixheight*depth+pixheight*2*depth,2 /* allbpmemx */
CALL skriv 0,2 /* padding */
CALL Close utfil
EXIT
skriv:
say "Skriver $"D2X(arg(1)) "("arg(2) "byte)"
call writech utfil,right(D2C(ARG(1)),ARG(2),"00"x)
return
visacookie:
rad=copies('00'x,pixheight*ebwidth)
say "Initierar bitmap till" pixheight*ebwidth*depth
say "Ett bitplan =" pixheight*ebwidth
bmap.=''
say "laser in"
do bitplan=1 to depth
say "laser plan" bitplan
rad=bitor(rad,readch(fil,pixheight*ebwidth))
end
ln=1
say "skriver ut"
do for pixheight
say c2b(substr(rad,ln,bredd/8))
ln=ln+bredd/8
end
return

106
samples/REXX/ag2xml.rexx Normal file
View File

@@ -0,0 +1,106 @@
/* Las en Amigaguidefil och omvandla till nan slags XML */
/* $VER: 2 */
options AREXX_BIFS
options AREXX_SEMANTICS
if ~open(infil,'Blitz2_V1.3.guide',R) then exit 10
if ~open(utfil,'bb2.xml',W) then exit 10
call writeln utfil,'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
call writeln utfil,'<root>'
radnr=1
inrad=readln(infil)
do while ~eof(infil)
och=1
do while index(inrad,'&',och)>0
och=index(inrad,'&',och)
if index(inrad,';',och)=0 then do
parse value inrad with prefix =(och) +1 suffix
inrad=prefix'&amp;'suffix
och=index(inrad,';',och)
end
end
do while index(inrad,'<')>0
parse var inrad prefix '<' suffix
inrad = prefix'&lt;'suffix
end
do while index(inrad,'>')>0
parse var inrad prefix '>' suffix
inrad = prefix'&gt;'suffix
end
inrad=behandlarad(inrad)
if right(inrad,1)~='>' & strip(inrad)~='' then inrad=inrad || ' '
testrad=inrad
do while index(testrad,'>') > 0
parse var testrad prefix '<' . '>' suffix
testrad = prefix || suffix
end
if length(testrad)<65 then inrad = inrad || '0d'x
call writech utfil,inrad
inrad=readln(infil)
radnr=radnr+1
end
call close(infil)
call writeln utfil,'</root>'
call close(utfil)
exit 0
behandlarad: procedure
parse arg inrad
do forever
if abbrev(inrad,'@NODE') then do
parse var inrad '@NODE ' nod inrad
/* say 'Hittade nod:' nod */
inrad='<story id="' || nod || '">' || inrad
end
if inrad='@ENDNODE' then inrad='</story>' || '0d'x
/* say inrad */
if abbrev(inrad,'-----') then inrad='<streck> </streck>'
if abbrev(inrad,'Command'),
| abbrev(inrad,'Function'),
| abbrev(inrad,'Statement') then do
parse var inrad kommandotyp ':' inrad
/* if index(inrad,'@{')>0 then */
parse var inrad inrad '@{' rest
if rest~='' then rest='@{' || rest
/* say 'rest:' rest */
inrad='<commandheadline>'||strip(kommandotyp)||' </commandheadline><commandname>'||behandlarad(inrad)||'</commandname>'||behandlarad(rest)
end
if index(inrad,'@{')>0 then do
parse var inrad inrad '@{' tagg '}' rest
select
when tagg='fg shine' then tagg='<fgshine>'
when tagg='fg text' then tagg='</fgshine>'
when tagg='b' then tagg='<bold>'
when tagg='ub' then tagg='</bold>'
/* @{" SpriteMode " link BUM_SPRITEMODE} */
when abbrev(tagg,'"') then do
parse var tagg '"' besk '"' . 'link' dest
tagg='<link dest="' || dest || '">' || besk || '</link>'
end
otherwise tagg='<okand>'
end
rest=behandlarad(rest)
/*
if index(rest,'@{')>0 then rest=behandlarad(left(rest,index(rest,'@{'))) || substr(rest,index(rest,'@{'))
*/
inrad=inrad || tagg || rest
/* iterate */
end
if abbrev(inrad,'@') then do
say 'Hittade okand tagg:' inrad
/* inrad='<okand>' inrad '</okand>' */
parse var inrad '@' tagg inrad
if abbrev(tagg,'$') then parse var tagg '$' tagg ':'
inrad='<'tagg'>'inrad'</'tagg'>'
end
if abbrev(inrad,'Modes') then do
parse var inrad . ':' inrad
inrad='<modeheadline>Modes: </modeheadline><modename>' || strip(inrad) || '</modename>'
end
if abbrev(inrad,'Syntax') then do
parse var inrad . ':' inrad
inrad='<syntaxheadline>Syntax: </syntaxheadline><syntax>' || strip(inrad) || '</syntax>'
end
return inrad
end

View File

@@ -0,0 +1,673 @@
%define _prefix /usr/local
%define _mandir /usr/local/man
%define _sysconfdir /etc
%define apache_ver 1.3.42
%define mod_ssl_ver 2.8.31
%define mod_perl_ver 1.31
%define libapreq_ver 1.34
%define aname apache
%define pname httpd13
%define contentdir %{_var}/www
%define suexec_caller apache
Summary: The 1.x Apache webserver (with static mod_perl, mod_ssl)
Name: apache
Version: %{apache_ver}
Release: 4%{?dist}
License: Apache Software License 2.0
URL: http://httpd.apache.org/
Group: System Environment/Daemons
Requires: initscripts >= 3.25
Requires: openssl >= 0.9.6
BuildRequires: openssl-devel mm-devel krb5-devel pkgconfig
BuildRequires: perl-ExtUtils-MakeMaker perl-libwww-perl perl-HTML-Parser perl-ExtUtils-Embed
BuildRequires: gdbm-devel flex
Requires: /sbin/chkconfig /bin/mktemp /usr/sbin/useradd
Requires: findutils procps
Provides: webserver
Provides: mod_perl = %{mod_perl_ver}
Provides: perl(mod_perl) = %{mod_perl_ver}
Provides: mod_ssl = %{mod_ssl_ver}
Provides: apache = %{apache_ver}
Source0: http://httpd.apache.org/dist/apache_%{apache_ver}.tar.bz2
Source1: http://www.modssl.org/source/mod_ssl-%{mod_ssl_ver}-%{apache_ver}.tar.gz
Source2: http://perl.apache.org/dist/mod_perl-%{mod_perl_ver}.tar.gz
Source3: httpd.init
Source4: apache.logrotate
Source5: SSL-Certificate-Creation
Source6: ftp://ftp.cpan.org/authors/id/J/JO/JOESUF/libapreq-%{libapreq_ver}.tar.gz
Patch0: sslcfg.patch
Patch1: apache_1.3.39-config.patch
Patch3: apache_1.3.39-Makefile.patch
Patch5: apache_1.3.20-apachectl-init.patch
Patch11: mod_ssl-2.8.4-openssl.patch
Patch12: apache_1.3.42-db.patch
Patch13: apache-1.3.39-gcc44.patch
Patch14: mod_ssl-2.8.31-STACK.patch
Patch15: apache_1.3.39-ap_getline.patch
Patch16: mod_ssl-openssl-x86_64.patch
Patch17: mp1+perl5.14.diff
Patch18: apache_1.3.42-64bits.patch
%description
This package contains a powerful, full-featured, efficient, and
freely-available Web server based on work done by the Apache Software
Foundation. It is also the most popular Web server on the Internet.
------------------------------------------------------------------------------
This package is a custom release containing the httpd server (v%{apache_ver})
bundled with: mod_perl v.%{mod_ssl_ver},
and mod_ssl v%{mod_ssl_ver}, all BUILT-IN.
------------------------------------------------------------------------------
The Apache/Perl integration project brings together the full power
of the Perl programming language and the Apache HTTP server.
With mod_perl it is possible to write Apache modules entirely in Perl.
In addition, the persistent interpreter embedded in the server avoids the
overhead of starting an external interpreter and the penalty of Perl
start-up time.
Mod_SSL provides strong cryptography for the Apache 1.3 webserver
via the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security
(TLSv1) protocols by the help of the Open Source SSL/TLS toolkit OpenSSL.
%package devel
Group: Development/Libraries
Summary: Module development tools for apache-mod_ssl
Provides: eapi = %{mod_ssl_ver}
Requires: %{name} = %{version}
Provides: mod_perl-devel = %{mod_perl_ver}
Provides: mod_ssl-devel = %{mod_ssl_ver}
Provides: apache-devel = %{apache_ver}
%description devel
The apache-devel package contains the APXS binary and other files
that you need to build Dynamic Shared Objects (DSOs) for Apache.
If you are installing the Apache Web server and you want to be able
to compile or develop additional modules for Apache, you need to install
this package.
%package manual
Group: Documentation
Summary: Documentation for the Apache Web server
%description manual
The apache-manual package contains the complete manual and reference
guide for the Apache Web server.
It also contains the basic web content (icons, default welcome messages,
etc) provided with Apache's HTTPD distribution.
%prep
%setup -q -c -T -n %{name}-%{version} -a 0
%setup -q -c -T -D -n %{name}-%{version} -a 1
%setup -q -c -T -D -n %{name}-%{version} -a 2
%setup -q -c -T -D -n %{name}-%{version} -a 6
pushd %{aname}_%{apache_ver}
%patch0 -p0 -b .sslcfg
%patch1 -p1 -b .config
%patch3 -p0 -b .make
%patch5 -p1 -b .apachectl-init
%ifarch x86_64
%patch18 -p1 -b .apache-x86_64
%endif
#patch12 -p1 -b .dbmdb
%patch13 -p1 -b .compile
%patch15 -p0 -b .ap_getline
patch -p0 < ../libapreq-%{libapreq_ver}/patches/apache-1.3+apreq.patch
cp ../libapreq-%{libapreq_ver}/c/*.[ch] src/lib/apreq/
popd
pushd mod_ssl-%{mod_ssl_ver}-%{apache_ver}
%patch11 -p1 -b .openssl
%patch14 -p0 -b .stack
%ifarch x86_64
%patch16 -p1 -b .openssl-x86_64
%endif
popd
pushd mod_perl-%{mod_perl_ver}
%patch17 -p1 -b .mp1+perl5.14.diff
popd
# Substitute values to match the configuration. The first two are
# for the default httpd.conf file, the rest is for the mod_ssl
# additions.
pushd %{aname}_%{apache_ver}
sed -e 's,@@ServerRoot@@,%{_sysconfdir}/%{pname},g' \
-e 's,@@ContentRoot@@,%{contentdir},g' \
-e 's,^DocumentRoot "@@ContentRoot@@",#DocumentRoot "%{_sysconfdir}/%{pname}/htdocs",g' \
-e 's,^<Directory "@@ContentRoot@@/cgi-bin">,<Directory "%{contentdir}/cgi-bin">,g' \
-e 's,^ServerName new.host.name,#ServerName new.host.name,g' \
-e 's,^ServerAdmin you@your.address,#ServerAdmin you@your.address,g' \
-e 's,^SSLCipherSuite,#SSLCipherSuite,g' \
-e 's,^SSLLogLevel info,SSLLogLevel error,g' \
-e 's,^SSLSessionCache dbm:logs/ssl_scache,SSLSessionCache shm:logs/ssl_scache(512000),g' \
conf/httpd.conf-dist > conf/httpd.conf
popd
cp %{SOURCE5} .
#cp %{_tmppath}/rpm-tmp* /tmp/01prep.sh
%build
export CFLAGS="$RPM_OPT_FLAGS -fPIC $(pkg-config --cflags openssl)"
export LIBS="-lpthread"
export EAPI_MM=SYSTEM
###############################################
echo mod_perl ...
pushd mod_perl-%{mod_perl_ver}
perl Makefile.PL CCFLAGS="$RPM_OPT_FLAGS -fPIC" \
APACHE_SRC=../%{aname}_%{apache_ver}/src \
DO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1
make %{?_smp_mflags}
## put mod_perl docs in a safe place ;-]~
mkdir mod_perl-doc
cp -a eg/ faq/ mod_perl-doc/
cp {CREDITS,LICENSE,README,SUPPORT,STATUS,Changes,INSTALL*} mod_perl-doc/
cp *.{pod,html,gif} mod_perl-doc/
find mod_perl-doc -type f -exec chmod 644 {} \;
popd
###############################################
echo mod_ssl ...
export SSL_COMPAT=yes
export SSL_EXPERIMENTAL=yes
pushd mod_ssl-%{mod_ssl_ver}-%{apache_ver}
./configure --with-apache=../apache_%{apache_ver} \
--with-mm=SYSTEM --force
popd
###############################################
echo apache ...
pushd %{aname}_%{apache_ver}
./configure \
--prefix=%{_prefix} \
--exec-prefix=%{_prefix} \
--bindir=%{_bindir} \
--sbindir=%{_sbindir} \
--mandir=%{_mandir} \
--sysconfdir=%{_sysconfdir}/%{pname}/conf \
--libexecdir=%{_libdir}/apache \
--datadir=%{contentdir} \
--iconsdir=%{contentdir}/icons \
--htdocsdir=%{contentdir}/html \
--manualdir=%{contentdir}/html/manual \
--cgidir=%{contentdir}/cgi-bin \
--localstatedir=%{_localstatedir} \
--runtimedir=%{_sysconfdir}/%{pname}/run \
--logfiledir=logs \
--proxycachedir=%{_localstatedir}/cache/%{pname} \
--with-perl=%{__perl} \
--enable-rule=EAPI \
--enable-rule=SSL_COMPAT \
--enable-rule=SSL_EXPERIMENTAL \
--disable-rule=SSL_VENDOR \
--disable-rule=WANTHSREGEX \
--disable-rule=EXPAT \
%{?_with_backtrace:--activate-module=src/modules/experimental/mod_backtrace.c} \
%{?_with_whatkilledus:--activate-module=src/modules/experimental/mod_whatkilledus.c} \
--activate-module=src/modules/perl/libperl.a \
--enable-module=auth_dbm \
--enable-module=ssl \
--enable-module=all \
--enable-shared=max \
--disable-shared=perl \
--disable-shared=ssl \
--disable-module=example \
--disable-module=auth_db \
--without-execstrip \
%{?_with_suexec:--enable-suexec --suexec-docroot=%{contentdir}} \
%{?_with_suexec:--suexec-uidmin=300 --suexec-gidmin=300} \
%{?_with_suexec:--suexec-umask=022 --suexec-caller=%{suexec_caller}}
make %{?_smp_mflags}
popd
#cp %{_tmppath}/rpm-tmp* /tmp/02build.sh
%install
###############################################################################
### install basic apache stuff
pushd apache_%{apache_ver}
make install root="$RPM_BUILD_ROOT"
popd
### rename
mv $RPM_BUILD_ROOT%{_sbindir}/httpd $RPM_BUILD_ROOT%{_sbindir}/%{pname}
### install SYSV init stuff
mkdir -p $RPM_BUILD_ROOT%{_initrddir}
install -m755 %{SOURCE3} $RPM_BUILD_ROOT%{_initrddir}/%{pname}
### install log rotation stuff
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
install -m644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/apache
### default rootdir links
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/%{pname}
pushd $RPM_BUILD_ROOT%{_sysconfdir}/%{pname}
ln -s %{_localstatedir}/log/%{pname} logs
ln -s %{_libdir}/%{aname} modules
ln -s %{_localstatedir}/run run
popd
### replace Apache's default config file with our patched version
install -m644 apache_%{apache_ver}/conf/httpd.conf \
$RPM_BUILD_ROOT%{_sysconfdir}/%{pname}/conf/httpd.conf
# fix up apxs so that it doesn't think it's in the build root
perl -pi -e "s^$RPM_BUILD_ROOT^^g" $RPM_BUILD_ROOT%{_sbindir}/apxs
# fixup the documentation file naming
find $RPM_BUILD_ROOT%{contentdir} -name "*.html.html" | xargs rename .html.html .html
###############################################################################
### install mod_perl files
pushd mod_perl-%{mod_perl_ver}
export PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
make pure_install PREFIX=/usr INSTALLDIRS=vendor
# convert man pages to UTF-8
recode() {
iconv -f "$2" -t utf-8 < "$1" > "${1}_"
%{__mv} -f "${1}_" "$1"
}
pushd $RPM_BUILD_ROOT/usr/share/man/man3/
for i in * ; do
recode "${i}" iso-8859-1
done
popd
# fix files mod
find $RPM_BUILD_ROOT%{perl_vendorarch} -iname '*.pm' -exec chmod 0644 {} \;
# bake web docs...
mkdir -p $RPM_BUILD_ROOT%{contentdir}/html/manual/mod/mod_perl
install -c -m 644 htdocs/manual/mod/mod_perl.html \
$RPM_BUILD_ROOT%{contentdir}/html/manual/mod/mod_perl/
make -C faq
rm -f faq/pod2htm*
install -m644 faq/*.html \
$RPM_BUILD_ROOT%{contentdir}/html/manual/mod/mod_perl/
popd
# remove special perl files this is specific for rpms , already have in own .packlist
find $RPM_BUILD_ROOT%{perl_vendorarch}/.. -name perllocal.pod -o -name .packlist \
-o -name '*.bs' | xargs -r -i rm -f {}
### ssl leftovers
# point to the right makefile.
ln -sf ../../../etc/pki/tls/certs/Makefile $RPM_BUILD_ROOT%{_sysconfdir}/%{pname}/conf
# create a prototype session cache
touch $RPM_BUILD_ROOT%{_localstatedir}/cache/ssl_gcache_data.{dir,pag,sem}
# drop shellbang from .exp files
for exp in $RPM_BUILD_ROOT%{perl_vendorarch}/auto/Apache/mod_perl.exp $RPM_BUILD_ROOT%{_libdir}/%{aname}/httpd.exp
do
sed -i '/^#!/ d' $exp
done
#cp %{_tmppath}/rpm-tmp* /tmp/03install.sh
%post
/sbin/chkconfig --add %{pname}
/sbin/ldconfig
# safely build a test certificate
umask 077
if [ ! -f %{_sysconfdir}/%{pname}/conf/ssl.key/server.key ] ; then
openssl genrsa -rand /proc/apm:/proc/cpuinfo:/proc/dma:/proc/filesystems:/proc/interrupts:/proc/ioports:/proc/pci:/proc/rtc:/proc/uptime 1024 > %{_sysconfdir}/%{pname}/conf/ssl.key/server.key 2> /dev/null
fi
if [ ! -f %{_sysconfdir}/%{pname}/conf/ssl.crt/server.crt ] ; then
cat << EOF | openssl req -new -key %{_sysconfdir}/%{pname}/conf/ssl.key/server.key -x509 -days 365 -out %{_sysconfdir}/%{pname}/conf/ssl.crt/server.crt 2>/dev/null
--
SomeState
SomeCity
SomeOrganization
SomeOrganizationalUnit
localhost.localdomain
root@localhost.localdomain
EOF
fi
# safely add .htm to mime types if it is not already there
[ -f %{_sysconfdir}/mime.types ] || exit 0
TEMPTYPES=`/bin/mktemp /tmp/mimetypes.XXXXXX`
[ -z "$TEMPTYPES" ] && {
echo "could not make temporary file, htm not added to %{_sysconfdir}/mime.types" >&2
exit 1
}
( grep -v "^text/html" %{_sysconfdir}/mime.types
types=$(grep "^text/html" %{_sysconfdir}/mime.types | cut -f2-)
echo -en "text/html\t\t\t"
for val in $types ; do
if [ "$val" = "htm" ] ; then
continue
fi
echo -n "$val "
done
echo "htm"
) > $TEMPTYPES
cat $TEMPTYPES > %{_sysconfdir}/mime.types && /bin/rm -f $TEMPTYPES
cp %{_tmppath}/rpm-tmp* /tmp/04post.sh
%pre
# Add the "apache" user
/usr/sbin/useradd -c "Apache" -u 48 \
-s /sbin/nologin -r -d "%{contentdir}" apache 2> /dev/null || :
%preun
if [ $1 = 0 ]; then
if [ -f /var/lock/subsys/%{pname} ]; then
%{_initrddir}/%{pname} stop
fi
if [ -f %{_initrddir}/%{pname} ]; then
/sbin/chkconfig --del %{pname}
fi
fi
%files
%defattr(-,root,root)
%dir %{_sysconfdir}/%{pname}
%dir %{_sysconfdir}/%{pname}/conf
%config(noreplace) %{_sysconfdir}/%{pname}/conf/*.conf
%config(noreplace) %{_sysconfdir}/%{pname}/conf/Makefile
%config(noreplace) %{_sysconfdir}/%{pname}/conf/magic
%config(noreplace) %{_sysconfdir}/%{pname}/conf/mime.types
%config(noreplace) %{_sysconfdir}/logrotate.d/*
%config(noreplace) %{_sysconfdir}/%{pname}/conf/ssl.*
%doc %{_sysconfdir}/%{pname}/conf/*.default
%attr(755,root,root) %{_initrddir}/*
%{_sysconfdir}/%{pname}/logs
%{_sysconfdir}/%{pname}/modules
%{_sysconfdir}/%{pname}/run
%{_libdir}/%{aname}
%{perl_vendorarch}/Apache
%{perl_vendorarch}/Bundle
%{perl_vendorarch}/*.pm
%{perl_vendorarch}/*.PL
%dir %{perl_vendorarch}/auto/Apache
%{perl_vendorarch}/auto/Apache/Leak
%{perl_vendorarch}/auto/Apache/Symbol
%{perl_vendorarch}/auto/Apache/mod_perl.exp
%{perl_vendorarch}/auto/Apache/typemap
%attr(0755,root,root) %{_bindir}/*
%attr(0755,root,root) %{_sbindir}/ab
%attr(0755,root,root) %{_sbindir}/apachectl
%attr(0755,root,root) %{_sbindir}/httpd13
%attr(0755,root,root) %{_sbindir}/logresolve
%attr(0755,root,root) %{_sbindir}/rotatelogs
%{?_with_suexec:%attr(4710,root,%{suexec_caller}) %{_sbindir}/suexec}
%{_mandir}/man1*/*
%{_mandir}/man8/ab.8*
%{_mandir}/man8/apachectl.8*
%{_mandir}/man8/httpd.8*
%{_mandir}/man8/logresolve.8*
%{_mandir}/man8/rotatelogs.8*
%{?_with_suexec:%{_mandir}/man8/suexec.8*}
%attr(0755,apache,root) %dir %{_localstatedir}/cache/%{pname}
%attr(0640,apache,root) %{_localstatedir}/cache/ssl_*
%attr(0750,root,apache) %dir %{_localstatedir}/log/%{pname}
%files devel
%defattr(-,root,root)
%{_includedir}
%attr(0755,root,root) %{_sbindir}/apxs
%{_mandir}/man8/apxs.8*
%doc %{perl_vendorarch}/*.pod
%{perl_vendorarch}/auto/Apache/include
%files manual
%defattr(-,root,root)
%doc apache_%{apache_ver}/cgi-bin
%dir %{contentdir}
%dir %{contentdir}/cgi-bin
%config(noreplace) %{contentdir}/cgi-bin/*
%dir %{contentdir}/html
%config(noreplace) %{contentdir}/html/*.html*
%config(noreplace) %{contentdir}/html/*.gif
%dir %{contentdir}/icons
%dir %{contentdir}/icons/small
%config(noreplace) %{contentdir}/icons/*.*
%config(noreplace) %{contentdir}/icons/small/*.*
%doc %{contentdir}/icons/README
%doc apache_%{apache_ver}/{ABOUT_APACHE,LICENSE*,NOTICE,README*,cgi-bin}
%doc apache_%{apache_ver}/src/{CHANGES,README}*
%doc mod_ssl-%{mod_ssl_ver}-%{apache_ver}/README.*
%doc mod_ssl-%{mod_ssl_ver}-%{apache_ver}/NEWS
%doc mod_perl-%{mod_perl_ver}/mod_perl-doc
%doc SSL-Certificate-Creation
%doc %{contentdir}/html/manual
%exclude %{contentdir}/html/manual/mod/mod_ssl/ssl_cover.wml
#man3 conflicts with mod_perl2
/usr/share/man/man3*/*
%changelog
* Sun May 13 2012 Sérgio Basto <sergio@serjux.com> - 1.3.42-4
- Many improvements on defaults directories
- Separate libapreq in other package, to compile libapreq is need other sources installed.
- more cleanups.
* Wed Nov 16 2011 Sérgio Basto <sergio@serjux.com>
- build for F16
- mp1+perl5.14.diff (mod_perl1 + perl5.14)
- many improvents.
* Sat Oct 29 2011 Sérgio Basto <sergio@serjux.com>
- mock build add many buildrequires
- many improvemts on confs
* Tue Oct 16 2007 Sérgio Basto <sergio@serjux.com>
- UNDROPPED CONFIGURATION COMPLETELY: rpm it suposed do all alone.
- rename httpd to http13 to work independently of apache 2.2
- add patch to Makefile.tmp, resolve all problems at once
- change server port number to run out of the box.
- Update link to certs/Makefile.
* Tue Sep 11 2007 Marius FERARU <altblue@n0i.net> - 1.3.39-1.n0i.23.MPSSL
- apache 1.3.39
- mod_ssl 2.8.29
* Mon Apr 02 2007 Marius FERARU <altblue@n0i.net> - 1.3.37-3.n0i.22.MPSSL
- mod_perl 1.30
- initscript: use a "$pidfile" variable for all operations
- initscript: added a dummy "alias" for "reload" (will do a 'restart'!)
- initscript: added missing "fullstatus" option (will run through "apachectl")
- dropped shellbang from .exp files
- dropped 2 explicit provides (mod_perl and Apache::Constants)
* Fri Sep 08 2006 Marius FERARU <altblue@n0i.net> - 1.3.37-2.n0i.21.MPSSL
- BR: gdbm-devel, db4-devel
* Mon Aug 21 2006 Marius FERARU <altblue@n0i.net> - 1.3.37-1.n0i.20.MPSSL
- apache 1.3.37
- mod_ssl 2.8.28
- Dist macro
- URL update
- updated description
- spec cleanups
- use "--with backtrace" to activate "mod_backtrace"
- use "--with whatkilledus" to activate "mod_whatkilledus"
- use "--with suexec" to activate suexec functionality
- moved default web content into documentation package
* Tue Jun 06 2006 Marius FERARU <altblue@n0i.net> - 1.3.36-2.n0i.19.MPSSL
- changed "runtimedir" and "logfiledir" to relative paths,
letting users run apache on their own
* Tue Jun 06 2006 Marius FERARU <altblue@n0i.net> - 1.3.36-1.n0i.19.MPSSL
- apache 1.3.36
- mod_ssl version 2.8.27
- spec cleanups
* Mon Mar 13 2006 Marius FERARU <altblue@n0i.net> - 1.3.34-2.n0i.18.MPSSL
- rebuild
* Thu Nov 24 2005 Marius FERARU <altblue@n0i.net> 1.3.34-1.n0i.17.MPSSL
- apache 1.3.34
- mod_ssl version 2.8.25
* Tue Sep 20 2005 Marius FERARU <altblue@n0i.net> 1.3.33-5.n0i.16.MPSSL
- mod_ssl version 2.8.24
* Fri Sep 02 2005 Marius FERARU <altblue@n0i.net> 1.3.33-4.n0i.15.MPSSL
- rebuild
- dropped more requirements (which Fedora considers to "always have")
* Sat Jul 23 2005 Marius FERARU <altblue@n0i.net> 1.3.33-3.n0i.14.MPSSL
- dropped Epoch
- changed Summary and Description
- rebuild (perl 5.8.7)
* Tue Jan 04 2005 Marius FERARU <altblue@n0i.net> 1.3.33-2.n0i.13.MPSSL
- libapreq version 1.33
* Mon Dec 06 2004 Marius FERARU <altblue@n0i.net> 1.3.33-1.n0i.12.MPSSL
- apache version 1.3.33
- mod_ssl version 2.8.22
- description update
* Tue Aug 17 2004 Marius FERARU <altblue@n0i.net> 1.3.31-5.n0i.11.MPSSL
- mod_ssl version 2.8.19
* Thu Jul 15 2004 Marius FERARU <altblue@n0i.net> 1.3.31-4.n0i.10.MPSSL
- mod_ssl version 2.8.18
* Tue Jul 13 2004 Marius FERARU <altblue@n0i.net> 1.3.31-3.n0i.9.MPSSL
- tweaked rotatelog's build: drop linking with apache libs
* Tue Jul 13 2004 Marius FERARU <altblue@n0i.net> 1.3.31-2.n0i.8.MPSSL
- applied some fixing patches from current CVS version
* Thu May 13 2004 Marius FERARU <altblue@n0i.net> 1.3.31-1.n0i.7.MPSSL
- apache version 1.3.31
- mod_ssl version 2.8.17
- updated apxs patch
- slight spec tweaks
- enabled backtrace experimental module
- updated config patch
* Fri Apr 30 2004 Marius Feraru <altblue@n0i.net> 1.3.29-6.n0i.6.MPSSL
- automatic rebuild
* Thu Apr 22 2004 Marius FERARU <altblue@n0i.net> 1.3.29-5.n0i.5.MPSSL
- rebuild (perl 5.8.4)
* Tue Feb 10 2004 Marius FERARU <altblue@n0i.net> 1.3.29-4.n0i.4.MPSSL
- fixed the shameful bugs from my httpd.init script
* Fri Jan 23 2004 Marius FERARU <altblue@n0i.net> 1.3.29-3.n0i.3.MPSSL
- rebuild (perl 5.8.3)
* Fri Jan 16 2004 Marius FERARU <altblue@n0i.net> 1.3.29-2.n0i.2.MPSSL
- rebuilt on perl 5.8.2 / Fedora 1 Devel (tobe FC2)
- finally clearly enabled modperl.c in apache_1.3.23-config.patch
as many helpless people seem to use this dumb default configuration file :(
- also updated the same patch to properly define SSL too :)
- added a lame "MPSSL" extra tag in release to make people understand this
is a !SPECIAL! apache + mod_perl + mod_ssl + libapreq package suite!!!
- updated init script to do "real" server shutdown (in squid style) and to NOT
shutdown all the apache servers, just the one started with /var/run/httpd.pid
- added USE_MODULEARGS=[yes/no] and SHUTDOWN_TIMEOUT=[seconds] configuration
parameters to init script
* Thu Nov 13 2003 Marius FERARU <altblue@n0i.net> 1.3.29-1.n0i.1
- apache 1.3.29
- modssl 2.8.16
- dropped zombie patch
- dropped fderr patch
- dropped for good thttpd conflict note as THERE IS NO CONFLICT!!! In fact
we really use them both for long time without a problem :))
- added more Prereq stuff
- more Fedora style spec updates
* Thu Oct 16 2003 Marius FERARU <altblue@n0i.net> 1.3.28-2.n0i
- mod_perl 1.29
- libapreq 1.3
- replaced ALL direct 'etc' occurences to macros (some for other stuff)
- perl %%files are now more properly quested.
- switched krb5-config to pkg-config
- switched textutils to coreutils
- using mm 1.3
- disabled internal expat linking
- added the 'zombie' patch
- added the 'file descriptors are erroneously closed' patch
* Mon Jul 28 2003 Marius FERARU <altblue.net> 1.3.28-1.n0i
- mod_perl 1.28
- added builtin libapreq
* Fri Jul 25 2003 Marius FERARU <altblue@n0i.net> 1.3.28-0.n0i
- apache version 1.3.28
- mod_ssl version 2.8.15
- switched the old dbm-gdbm patch with a more elegant one (apache_1.3.27-db);
yet, more tests are to be done on other systems before dropping the old one
from our src.rpm
- disabled suexec SSL env support patch as Apache ppl changed their code heavily
and I do not yet have time to update this patch
- moved mod_perl header files into apache-devel (are they needed by someone?!)
- dropped using RPM_SOURCE_DIR/<filename> stuff.
- disabled auth_db module (db4 API changes?!)
* Mon Apr 21 2003 Marius FERARU <altblue@n0i.net> 1.3.27-2.n0i
- automatic rebuild on RHL9
* Wed Mar 26 2003 Marius FERARU <altblue@n0i.net> 1.3.27-1.n0i
- mod_ssl version 2.8.14
- dropped thttpd conflict note as THERE IS NO CONFLICT!!! In fact we really
use them both :))
* Fri Oct 18 2002 Marius Feraru <altblue@n0i.net>
- apache version 1.3.27
- mod_ssl version 2.8.11
- eliminated db4 patch
- disabled thttpd conflict flag
* Tue Sep 24 2002 Marius Feraru <altblue@n0i.net>
- automatic rebuild (to conform with the openssl update)
* Wed Sep 4 2002 Marius Feraru <altblue@n0i.net>
- some spec cleanups (rpm 4.1.x compatibility)
* Tue Jul 23 2002 Marius FERARU <altblue@n0i.net>
- apache 1.3.26
- mod_perl 1.27
- mod_ssl 2.8.10
- lots of new tweaks to the spec file (hopefully it will be easier now for others to
rebuild this package =] )
* Sat Sep 1 2001 Marius FERARU <altblue@n0i.net>
- updated apache to 1.3.22
- reparsed and tweaked all RedHat patches
- lots of spec file tweaks: optimisations,
file location/integration/modes fixes...
* Sat Sep 1 2001 Marius FERARU <altblue@n0i.net>
- updated mod_perl to version 1.26
- based on apache-1.3.20-15.src.rpm from Red Hat RawHide
- used apache_modperl-1.3.19-1.24-1.src.rpm from
perl.apache.org as example spec.

View File

@@ -0,0 +1,62 @@
%global debug_package %{nil}
Name: erlang-erlydtl
Version: 0.6.0
Release: 1%{?dist}
Summary: Erlang implementation of the Django Template Language.
Group: Development/Libraries
License: MIT
URL: http://code.google.com/p/erlydtl/
Source0: http://erlydtl.googlecode.com/files/erlydtl-0.6.0.tar.gz
Patch0: erlang-erlydtl-0.6.0-tests.patch
Patch1: erlang-erlydtl-0.6.0-r14a.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Provides: ErlyDTL = %{version}-%{release}
BuildRequires: erlang
Requires: erlang
%description
ErlyDTL is an Erlang implementation of the Django Template Language. The
erlydtl module compiles Django Template source code into Erlang bytecode. The
compiled template has a "render" function that takes a list of variables and
returns a fully rendered document
%prep
%setup -q -n erlydtl-%{version}
find examples/ -type f -executable -exec chmod -x {} \;
%patch0 -p0
%patch1 -p0
%build
make %{?_smp_mflags}
%check
make test
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/%{_libdir}/erlang/lib/erlydtl-%{version}/
cp -r ebin %{buildroot}/%{_libdir}/erlang/lib/erlydtl-%{version}/
cp -r bin %{buildroot}/%{_libdir}/erlang/lib/erlydtl-%{version}/
cp -r priv %{buildroot}/%{_libdir}/erlang/lib/erlydtl-%{version}/
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%dir %{_libdir}/erlang/lib/erlydtl-%{version}
%{_libdir}/erlang/lib/erlydtl-%{version}/*
%doc README
%doc examples
%changelog
* Sun Aug 1 2010 Ilia Cheishvili <ilia.cheishvili@gmail.com> - 0.6.0-1
- Initial Package

View File

@@ -0,0 +1,46 @@
#
# spec file for package manos
#
# Copyright (c) 2010 Jackson Harper (jackson@novell.com)
#
#
Name: manos-devel
Version: 0.1.1
Release: 1
License: MIT/X11
BuildRoot: %{_tmppath}/manos-%{version}-build
BuildRequires: mono-devel >= 2.6
BuildRequires: mono-nunit >= 2.6
Source0: manos-%{version}.tar.bz2
Source1: rpmlintrc
Summary: The Manos Web Application Framework
Group: Development/Web/Servers
BuildArch: noarch
%description
Manos is an easy to use, easy to test, high performance web application framework that stays out of your way and makes your life ridiculously simple.
%files
%defattr(-, root, root)
%{_prefix}/lib/manos
%{_bindir}/manos
%{_datadir}/manos
%{_prefix}/lib/pkgconfig/manos.pc
%{_datadir}/man/man1/manos.1.gz
%prep
%setup -q -n manos-%{version}
%build
./configure --prefix=%{buildroot}%{_prefix} --install-prefix=%{_prefix}
make
%install
make install
%clean
rm -rf %{buildroot}
%changelog

1467
samples/RUNOFF/VMS_ZIP.RNH Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,324 @@
.na
.ll 72
.pl 90
.m1 4
.m2 4
.m3 6
.m4 6
.sp 8
.ds
.ce
CONTRIBUTING TO LINGUIST
.sp
.ce
by
.ce
GITHUB
.sp
.ce
and the
.sp
.ce
OPEN SOURCE COMMUNITY
.sp
.bp
.sp 5
.ce
_I_N_T_R_O_D_U_C_T_I_O_N:
.sp
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. By participating,
you are expected to uphold this code.
.br
The majority of contributions won't need to touch any Ruby code at all.
.sp 5
.ce
_A_d_d_i_n_g _a_n _e_x_t_e_n_s_i_o_n _t_o _a
_l_a_n_g_u_a_g_e
.sp
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.
.sp
To add support for a new extension:
.sp
.in 5
.un 5
1. Add your extension to the language entry in
_l_a_n_g_u_a_g_e_s_._y_m_l, keeping the extensions in
alphabetical order.
.br
.un 5
2. Add at least one sample for your extension to the samples directory
in the correct subdirectory.
.br
.un 5
3. Open a pull request, linking to a GitHub search result showing
in-the-wild usage.
.in 0
.sp
In addition, if this extension is already listed in
_l_a_n_g_u_a_g_e_s_._y_m_l then sometimes a few more steps
will need to be taken:
.sp
.in 5
.un 5
1. Make sure that example .yourextension files are present in the
samples directory for each language that uses .yourextension.
.br
.un 5
2. Test the performance of the Bayesian classifier with a relatively
large number (1000s) of sample .yourextension files. (ping @arfon or
@bkeepers to help with this) to ensure we're not misclassifying files.
.br
.un 5
3. If the Bayesian classifier does a bad job with the sample files
then a heuristic may need to be written to help.
.in 0
.sp 5
.ce
_A_d_d_i_n_g _a _l_a_n_g_u_a_g_e
.sp
We try only to add languages once they have some usage on GitHub.
In most cases we prefer that each new extension be in use in hundreds of
repositories before supporting them in Linguist.
.sp
To add support for a new language:
.in 5
.un 5
1. Add an entry for your language to
_l_a_n_g_u_a_g_e_s_._y_m_l.
.br
.un 5
2. Add a grammar for your language. Please only add grammars that have
a license that permits redistribution.
.br
.in +5
.un 5
i. Add your grammar as a submodule:
.br
.in +4
git submodule add
https://github.com/Alhadis/language-roff
vendor/grammars/language-roff
.in -4
.un 5
ii. Add your grammar to grammars.yml:
.br
.in +4
script/convert-grammars --add vendor/grammars/MyGrammar
.in -4
.un 5
iii. Download the license for the grammar by running script/licensed.
Be careful to only commit the file for the new grammar, as this script
may update licenses for other grammars as well.
.br
.in -5
.un 5
3. Add samples for your language to the samples directory in the
correct subdirectory.
.br
.un 5
4. Open a pull request, linking to a GitHub search result showing
in-the-wild usage.
.br
.in 0
.sp
In addition, if your new language defines an extension that's already
listed in _l_a_n_g_u_a_g_e_s_._y_m_l (such as `.foo`) then
sometimes a few more steps will need to be taken:
.sp
.in +5
.un 5
1. Make sure that example .foo files are present in the samples
directory for each language that uses .foo.
.br
.un 5
2. Test the performance of the Bayesian classifier with a relatively
large number (1000s) of sample `.foo` files. (ping @arfon or @bkeepers
to help with this) to ensure we're not misclassifying files.
.br
.un 5
3. If the Bayesian classifier does a bad job with the sample .foo
files then a heuristic may need to be written to help.
.br
.in 0
.sp
Remember, the goal here is to try and avoid false positives!
.sp 2
.ce
_F_i_x_i_n_g _a _m_i_s_c_l_a_s_s_i_f_i_e_d
_l_a_n_g_u_a_g_e
.br
Most languages are detected by their file extension defined in
_l_a_n_g_u_a_g_e_s_._y_m_l. For disambiguating between
files with common extensions, linguist applies some heuristics and a
statistical classifier. This process can help differentiate between,
for example, .h files which could be either C, C++, or Obj-C.
.sp
Misclassifications can often be solved by either adding a new
filename or extension for the language or adding more samples to make
the classifier smarter.
.sp
.m4 -2
.ce
_F_i_x_i_n_g _s_y_n_t_a_x
_h_i_g_h_l_i_g_h_t_i_n_g
.br
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 is mapped to
its corresponding TM `scope`. This scope will be used when picking up a
grammar for highlighting.
.sp
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. _g_r_a_m_m_a_r_s_._y_m_l 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.
.sp
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.
.sp
You can also try to fix the bug yourself and submit a Pull Request.
TextMate's documentation offers a good introduction on how to work with
TextMate-compatible grammars. You can test grammars using Lightshow.
.sp
Once the bug has been fixed upstream, we'll pick it up for GitHub
in the next release of Linguist.
.sp 2
.ce
_T_e_s_t_i_n_g
.br
For development you are going to want to checkout out the source.
To get it, clone the repo and run Bundler to install its dependencies.
.sp
.in 4
git clone https://github.com/github/linguist.git
.br
cd linguist/
.br
script/bootstrap
.br
.in 0
.sp
To run the tests:
.sp
.in 4
bundle exec rake test
.in 0
.sp
Sometimes getting the tests running can be too much work, especially
if you don't have much Ruby experience. It's okay: be lazy and let our
build bot Travis run the tests for you. Just open a pull request and the
bot will start cranking away.
.sp
.ce
_M_a_i_n_t_a_i_n_e_r_s
.br
Linguist is maintained with love by:
.sp
.in -2
- @arfon (GitHub Staff)
.br
- @larsbrinkhoff
.br
- @pchaigno
.in 0
.br
.sp
As Linguist is a production dependency for GitHub we have a couple of
workflow restrictions:
.sp
.in -2
- Anyone with commit rights can merge Pull Requests provided that there
is a :+1: from a GitHub member of staff
.br
- 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.
.in 0
.sp
.ce
_R_e_l_e_a_s_i_n_g
.sp
If you are the current maintainer of this gem:
.sp
.in 5
.ul 5
1. Create a branch for the release:
.sp
.in +2
git checkout -b cut-release-vxx.xx.xx
.in -2
.sp
.ul 5
2. Make sure your local dependencies are up to date:
.sp
.in +2
script/bootstrap
.in -2
.sp
.ul 5
3. If grammar submodules have not been updated recently, update them:
.sp
.in +2
git submodule update --remote _&_& git commit -a
.in -2
.sp
.ul 5
4. Ensure that samples are updated:
.sp
.in +2
bundle exec rake samples
.in -2
.sp
5. Ensure that tests are green:
.sp
.in +2
bundle exec rake test
.in -2
.sp
.ul 5
6. Bump gem version in lib/linguist/version.rb
.br
.ul 5
7. Make a PR to github/linguist
.br
.ul 5
8. Build a local gem: `bundle exec rake build_gem`
.br
.ul 5
9. Test the gem:
.sp
.in +5
.un 5
i. Bump the Gemfile and Gemfile.lock versions for an app which relies
on this gem
.un 5
ii. Install the new gem locally
.un 5
iii. Test behaviour locally, branch deploy, whatever needs to happen.
.br
.in -5
.sp
.ul 5
10. Merge github/linguist PR
.sp
.ul 5
11. Tag and push:
.sp
.in +2
git tag vx.xx.xx;
.br
git push --tags
.in -2
.sp
12. Push to rubygems.org
.br
.in +2
gem push github-linguist-3.0.0.gem
.in -2
.sp 2

8644
samples/RUNOFF/longlib.rno Normal file

File diff suppressed because it is too large Load Diff

1773
samples/RUNOFF/mcp_help.rnh Normal file

File diff suppressed because it is too large Load Diff

44
samples/Ruby/any.spec Normal file
View File

@@ -0,0 +1,44 @@
require File.dirname(File.expand_path(__FILE__)) + '/../spec_helper'
describe Spira::Types::Any do
before :all do
@uri = RDF::URI('http://example.org')
end
# this spec is going to be necessarily loose. The 'Any' type is defined to
# use RDF.rb's automatic RDF Literal boxing and unboxing, which may or may
# not change between verions.
#
context "when serializing" do
it "should serialize literals to RDF Literals" do
serialized = Spira::Types::Any.serialize(15)
serialized.should be_a RDF::Literal
serialized = Spira::Types::Any.serialize("test")
serialized.should be_a RDF::Literal
end
it "should keep RDF::URIs as URIs" do
Spira::Types::Any.serialize(@uri).should == @uri
end
it "should fail to serialize collections" do
lambda { Spira::Types::Any.serialize([]) }.should raise_error TypeError
end
end
context "when unserializing" do
it "should unserialize to ruby types" do
value = Spira::Types::Any.unserialize(RDF::Literal.new(5, :datatype => RDF::XSD.integer))
value.should == 5
value = Spira::Types::Any.unserialize(RDF::Literal.new("a string"))
value.should == "a string"
end
it "should unserialize URIs to URIs" do
Spira::Types::Any.unserialize(@uri).should == @uri
end
end
end

View File

@@ -0,0 +1,14 @@
{
"cmd": ["ampl", "${file_path}/${file_base_name}.run"],
"file_regex": "^(?:[(]file )*[ ]*(...*?), line ([0-9]*)",
"selector": "source.ampl",
"osx":
{
"env":
{
// "ILOG_LICENSE_FILE": "path/to/access.ilm"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"extensions":
[
"clp"
],
"tab_size": 8,
"translate_tabs_to_spaces": false
}

View File

@@ -0,0 +1,13 @@
[
{
"id" : "nasm",
"caption": "NASM Assembly",
"children":
[
{
"caption" : "Documentation",
"command" : "assembly_doc"
}
]
}
]

View File

@@ -0,0 +1,30 @@
[
{ "caption": "Dart: Polymer: Generate Element", "command": "dart_generate_polymer_element" },
{ "caption": "Dart: Polymer: Add Entry Point", "command": "dart_add_polymer_entry_point" },
{ "caption": "Dart: Check Configuration", "command": "dart_check_config" },
{ "caption": "Dart: Browse API Reference", "command": "dart_open_browser", "args": {"url": "https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/home" } },
{ "caption": "Dart: Set Default User Browser", "command": "dart_show_user_browsers" },
{ "caption": "Preferences: Dart Settings - Default", "command": "dart_open_settings", "args": {"kind": "default"} },
{ "caption": "Preferences: Dart Settings - User", "command": "dart_open_settings", "args": {"kind": "user"} },
{ "caption": "Preferences: Dart Settings - File Type (User)", "command": "dart_open_settings", "args": {"kind": "user", "scope": "file_type"} },
{ "caption": "Dart: Run", "command": "dart_smart_run" },
{ "caption": "Dart: Run (This File)", "command": "dart_smart_run", "args": {"force_update": true} },
{ "caption": "Dart: Stop", "command": "dart_smart_run", "args": {"kill_only": true} },
{ "caption": "Dart: Run In Observatory (This File)", "command": "dart_run_in_observatory" },
{ "caption": "Dart: Show Output Panel", "command": "show_panel", "args": {"panel": "output.dart.out"} },
{ "caption": "Dart: Show Errors Panel", "command": "show_panel", "args": {"panel": "output.dart.errors"} },
{ "caption": "Dart: Format", "command": "dart_format" },
{ "caption": "Dart: Generate Documentation", "command": "dart_generate_docs" },
{ "caption": "Dart: Serve Documentation", "command": "dart_serve_docs" },
{ "caption": "Dart: Stagehand", "command": "dart_stagehand_wizard" },
{ "caption": "Dart: Pub Get", "command": "dart_pub_get" }
]

View File

@@ -0,0 +1,40 @@
{
"folders":
[
{
"follow_symlinks": true,
"path": "."
}
],
"SublimeLinter":
{
"@python": 3.4
},
"build_systems":
[
{
"name": "Run",
"shell_cmd": "\"$project_path/scripts/build.sh\"",
"windows":
{
"shell_cmd": "powershell -noninteractive -file \"$project_path\\build.ps1\""
},
"working_dir": "${project_path}",
"variants": [
{
"name": "Dart: Test (All)",
"target": "run_dart_tests",
},
{
"name": "Dart: Test (This File Only)",
"target": "run_dart_tests",
"active_file_only": true
}
]
}
]
}

View File

@@ -0,0 +1,7 @@
[
{
"button": "button1", "count": 1, "modifiers": ["alt"],
"press_command": "drag_select",
"command": "robot_go_to_keyword"
}
]

View File

@@ -0,0 +1,6 @@
[
// Disable auto-pair for single quote
{ "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'"}, "context":
[{ "key": "selector", "operator": "equal", "operand": "source.rust" }]
}
]

View File

@@ -0,0 +1,6 @@
[
{"command": "move_to", "args": {"to": "hardeol"}},
{"command": "insert", "args": {"characters": "\n"}},
{"command": "insert", "args": {"characters": "*"}},
{"command": "insert", "args": {"characters": " "}}
]

View File

@@ -0,0 +1,5 @@
[
{
"command": "haxe_run_build"
}
]

View File

@@ -0,0 +1,19 @@
{
// For default sourcemod scripting directory :
"cmd": ["<spcomp_path>", "-o$file_path/../plugins/$file_name", "$file"],
// For custom sourcemod scripting directory :
"cmd": ["<spcomp_path>", "-i<include_path>", "-o$file_path/$file_base_name.smx", "$file"],
// Windows example:
"cmd": ["X:/somefolder/spcomp", "-iX:/somefolder", "-o$file_path/$file_base_name.smx", "$file"],
"cmd": ["X:/game/csgo/addons/sourcemod/scripting/spcomp", "-o$file_path/../plugins/$file_name", "$file"],
// Linux or OSX example:
"cmd": ["/home/User/sm/spcomp", "-i/home/User/sm/include", "-o$file_path/$file_base_name.smx", "$file"],
"cmd": ["/home/User/game/csgo/addons/sourcemod/scripting/spcomp", "-o$file_path/../plugins/$file_name", "$file"],
"file_regex": "(.*)\\((\\d+)\\) :",
"selector": "source.sp"
}

View File

@@ -0,0 +1,861 @@
[
// Tubnil theme for Sublime Text 2
// https://github.com/nilium/st2-nil-theme
//
// TABS
// ==========================================================
// - Tabset
// ------------------------------------------------------
{
"class": "tabset_control",
"layer0.texture": "SourcePawn/assets/tabset-bg.png",
"layer0.inner_margin": [2, 6],
"layer0.opacity": 1.0,
"content_margin": [-13, 0, -13,-6], // left, top, right, bottom
"tab_overlap": 25,
"tab_width": 150,
"tab_min_width": 50,
"tab_height": 35,
"mouse_wheel_switch": false
},
{
"class": "tabset_control",
"settings": ["mouse_wheel_switches_tabs"],
"mouse_wheel_switch": true
},
// - Tab element
// ------------------------------------------------------
{
"class": "tab_control",
"content_margin": [25, 0, 25, 0],
"max_margin_trim": 0,
"hit_test_level": 0.5,
// - Inactive tab settings
"layer0.texture": "SourcePawn/assets/tab-inactive.png",
"layer0.inner_margin": [23, 8],
"layer0.opacity": 1.0,
// - Active tab setting
"layer1.texture": "SourcePawn/assets/tab-active.png",
"layer1.inner_margin": [23, 8],
"layer1.opacity": 0.0,
// - Hover tab setting
"layer2.texture": "SourcePawn/assets/tab-hover.png",
"layer2.inner_margin": [23, 8],
"layer2.opacity": 0.0
},
{
// - Tab close state
"class": "tab_control",
"settings": ["show_tab_close_buttons"],
"content_margin": [20, 0, 20, 7]
},
{
// - Hover tab state
"class": "tab_control",
"attributes": ["hover"],
"layer2.opacity": 1.0
},
{
// - Active tab state
"class": "tab_control",
"attributes": ["selected"],
"layer0.opacity": 0.0,
"layer1.opacity": 1.0,
"layer2.opacity": 0.0
},
{
// - Modified tab state
"class": "tab_control",
//"settings": ["highlight_modified_tabs"],
"attributes": ["dirty"],
"layer0.texture": "SourcePawn/assets/tab-inactive-modified.png",
"layer1.texture": "SourcePawn/assets/tab-active-modified.png",
"layer2.texture": "SourcePawn/assets/tab-hover-dirty.png"
},
// - Tab labels
// ------------------------------------------------------
// - Inactive tab label
{
"class": "tab_label",
"fg": [180, 180, 180],
"shadow_color": [0, 0, 0, 200],
"shadow_offset": [0, 1]
},
// - Active tab label
{
"class": "tab_label",
"parents": [{"class": "tab_control", "attributes": ["selected"]}],
"shadow_color": [0, 0, 0, 165],
"shadow_offset": [0, 1],
"fg": [240, 240, 240, 255]
},
// - Hover tab label
{
"class": "tab_label",
"parents": [{"class": "tab_control", "attributes": ["hover"]}],
"shadow_color": [0, 0, 0, 165],
"shadow_offset": [0, 1],
"fg": [2, 196, 251, 255]
},
// - Dirty Hover tab label
{
"class": "tab_label",
"parents": [{"class": "tab_control", "attributes": ["hover", "dirty"]}],
"shadow_color": [0, 0, 0, 165],
"shadow_offset": [0, 1],
"fg": [253, 113, 1, 255]
},
// - Dirty inactive tab label
{
"class": "tab_label",
"parents": [{"class": "tab_control", "attributes": ["dirty"]}],
"settings": ["highlight_modified_tabs"]
},
// - Dirty active tab label
{
"class": "tab_label",
"parents": [{"class": "tab_control", "attributes": ["selected", "dirty"]}],
"settings": ["highlight_modified_tabs"]
},
// - Tab buttons
// ------------------------------------------------------
// - Tab button
{
"class": "tab_close_button",
"content_margin": [0, 0],
// - Tab close default settings
"layer1.texture": "SourcePawn/assets/tab-button-close.png",
"layer1.opacity": 0.0, // hide by default
"layer1.inner_margin": 0.0,
// - Tab close hover settings
"layer0.texture": "SourcePawn/assets/tab-button-close-hover.png",
"layer0.opacity": 0.0
},
{
// - Tab button size
"class": "tab_close_button",
"settings": ["show_tab_close_buttons"],
"content_margin": [8, 8]
},
{
"class": "tab_close_button",
"parents": [{"class": "tab_control", "attributes": ["dirty"]}],
"layer1.texture": "SourcePawn/assets/tab-button-close-dirty.png"
},
{
// - Tab close hover action
"class": "tab_close_button",
"parents": [{"class": "tab_control", "attributes": ["hover"]}],
"layer1.opacity": 0.0,
"layer0.opacity": 1.0
},
{
// - Tab close press action
"class": "tab_close_button",
"attributes": ["hover"],
"layer1.opacity": 0.4,
"layer0.opacity": 1.0
},
{
// - Tab close press action
"class": "tab_close_button",
"attributes": ["pressed"],
"layer1.opacity": 1.0,
"layer0.opacity": 0.0
},
// FOLD BUTTONS
// ==========================================================
{
"class": "fold_button_control",
"layer0.texture": "SourcePawn/assets/arrow-right.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": 0,
"layer1.texture": "SourcePawn/assets/arrow-right-hover.png",
"layer1.opacity": 0.0,
"layer1.inner_margin": 0,
"content_margin": [9, 7, 8, 6]
},
{
"class": "fold_button_control",
"attributes": ["hover"],
"layer0.opacity": 0.0,
"layer1.opacity": 0.75
},
{
"class": "fold_button_control",
"attributes": ["pressed"],
"layer0.opacity": 0.0,
"layer1.opacity": 1.0
},
{
"class": "fold_button_control",
"attributes": ["expanded"],
"layer0.texture": "SourcePawn/assets/arrow-down.png",
"layer1.texture": "SourcePawn/assets/arrow-down-hover.png"
},
// SCROLLBARS (overlay scrollbars from Default theme)
// ==========================================================
{
"class": "scroll_bar_control",
"layer0.texture": "SourcePawn/assets/scrollbar/well-vertical.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": [1, 1],
"blur": false
},
{
"class": "scroll_bar_control",
"attributes": ["horizontal"],
"layer0.texture": "SourcePawn/assets/scrollbar/well-horizontal.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": [1, 1],
"blur": false
},
{
"class": "scroll_corner_control",
"layer0.texture": "SourcePawn/assets/scrollbar/well-corner.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": [1, 1]
},
{
"class": "puck_control",
"layer0.texture": "SourcePawn/assets/scrollbar/bar-vertical.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": [3, 3],
"content_margin": [6, 6],
"blur": false
},
{
"class": "puck_control",
"attributes": ["horizontal"],
"layer0.texture": "SourcePawn/assets/scrollbar/bar-horizontal.png"
},
{
"class": "scroll_area_control",
"settings": ["overlay_scroll_bars"],
"overlay": true
},
{
"class": "scroll_area_control",
"settings": ["!overlay_scroll_bars"],
"overlay": false
},
{
"class": "scroll_bar_control",
"settings": ["overlay_scroll_bars"],
"layer0.texture": "SourcePawn/assets/overlay/overlay_bar_vertical.png",
"layer0.inner_margin": [0, 5],
"blur": true
},
{
"class": "scroll_bar_control",
"settings": ["overlay_scroll_bars"],
"attributes": ["horizontal"],
"layer0.texture": "SourcePawn/assets/overlay/overlay_bar_horizontal.png",
"layer0.inner_margin": [5, 0],
"blur": true
},
{
"class": "puck_control",
"settings": ["overlay_scroll_bars"],
"layer0.texture": "SourcePawn/assets/overlay/overlay_thumb_vertical.png",
"layer0.inner_margin": [0, 5],
"content_margin": [5, 20],
"blur": true
},
{
"class": "puck_control",
"settings": ["overlay_scroll_bars"],
"attributes": ["horizontal"],
"layer0.texture": "SourcePawn/assets/overlay/overlay_thumb_horizontal.png",
"layer0.inner_margin": [5, 0],
"content_margin": [20, 5],
"blur": true
},
{
"class": "puck_control",
"settings": ["overlay_scroll_bars"],
"attributes": ["dark"],
"layer0.texture": "SourcePawn/assets/overlay/overlay_dark_thumb_vertical.png"
},
{
"class": "puck_control",
"settings": ["overlay_scroll_bars"],
"attributes": ["horizontal", "dark"],
"layer0.texture": "SourcePawn/assets/overlay/overlay_dark_thumb_horizontal.png"
},
// EMPTY WINDOW BACKGROUND
// ==========================================================
{
"class": "sheet_container_control",
"layer0.tint": [16, 16, 16],
"layer0.opacity": 1.0
},
// GRID LAYOUT
// ==========================================================
{
"class": "grid_layout_control",
"border_size": 1,
"border_color": [32, 32, 32]
},
// MINI MAP
// ==========================================================
{
"class": "minimap_control",
"viewport_color": [185, 185, 185, 50]
},
// LABELS
// ==========================================================
// - General labels
{
"class": "label_control",
"color": [230, 230, 230]
},
// - Text field labels
{
"class": "label_control",
"parents": [{"class": "panel_control"}],
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
// - Button labels
{
"class": "label_control",
"parents": [{"class": "button_control"}],
"color": [230, 230, 230],
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
// TOOLTIP
// ==========================================================
// - Tooltip container
{
"class": "tool_tip_control",
"layer0.texture": "SourcePawn/assets/tooltip.png",
"layer0.inner_margin": [4, 4],
"layer0.opacity": 1,
"content_margin": [6, 4]
},
// - Tooltip content
{
"class": "tool_tip_label_control",
"color": [160, 160, 160],
"shadow_offset": [0, 1],
"shadow_color": [0, 0, 0, 255]
},
// STATUS BAR
// ==========================================================
// - Status bar container
{
"class": "status_bar",
"layer0.texture": "SourcePawn/assets/status-bar-bg.png",
"layer0.opacity": 1,
"layer0.inner_margin": [2, 2],
"content_margin": [6, 5, 6, 5]
},
{
"class": "status_button",
"min_size": [100, 0]
},
// - Status bar label
{
"class": "label_control",
"parents": [{"class": "status_bar"}],
"font.size": 10,
"color": [160, 160, 160],
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
// SIDEBAR
// ==========================================================
// - Sidebar container (border)
{
"class": "sidebar_container",
"layer0.tint": [150, 150, 150],
"layer0.opacity": 0.5,
"layer0.draw_center": false,
"layer0.inner_margin": [0, 0, 1, 0],
"content_margin": [0, 0, 1, 0]
},
// - Sidebar tree (bg)
{
"class": "sidebar_tree",
"row_padding": [8, 3],
"indent": 15,
"indent_offset": 13,
"indent_top_level": false,
"layer0.tint": [19, 20, 21], // darker gray
"layer0.opacity": 1.0,
"dark_content": true
},
// - Sidebar rows
{
"class": "tree_row",
"layer0.texture": "SourcePawn/assets/row-active.png",
"layer0.opacity": 0.0,
"layer0.inner_margin": [8, 3],
"layer1.opacity": 0.0,
"layer1.inner_margin": [8, 3]
},
// - Sidebar row selected
{
"class": "tree_row",
"attributes": ["selected"],
"layer0.opacity": 1.0
},
// - Sidebar row dirty
{
"class": "tree_row",
"attributes": ["dirty"],
"layer0.texture": "SourcePawn/assets/row-inactive-modified.png",
"layer0.opacity": 1.0
},
// - Sidebar row selected dirty
{
"class": "tree_row",
"attributes": ["selected", "dirty"],
"layer0.texture": "SourcePawn/assets/row-active-modified.png",
"layer0.opacity": 1.0
},
// - Sidebar heading
{
"class": "sidebar_heading",
"color": [2, 196, 251],
"font.bold": true,
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
{
"class": "sidebar_heading",
"parents": [{"class": "tree_row", "attributes": ["selected"]}],
"color": [180, 180, 180]
},
// - Sidebar entry label
{
"class": "sidebar_label",
"color": [200, 200, 200],
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
{
"class": "sidebar_label",
"parents": [{"class": "tree_row", "attributes": ["expandable"]}],
"settings": ["bold_folder_labels"],
"font.bold": true
},
{ // Sidebar selected entry label
"class": "sidebar_label",
"parents": [{"class": "tree_row", "attributes": ["selected"]}],
"color": [240, 240, 240],
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
{ // Sidebar Hover entry label
"class": "sidebar_label",
"parents": [{"class": "tree_row", "attributes": ["hover"]}],
"color": [2, 196, 251],
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
{ // Sidebar Hover entry label
"class": "sidebar_label",
"parents": [{"class": "tree_row", "attributes": ["dirty"]}],
"color": [253, 113, 1],
"shadow_color": [0, 0, 0],
"shadow_offset": [0, 1]
},
// - Sidebar open files close/dirty
{
"class": "close_button",
"layer0.texture": "SourcePawn/assets/tab-button-close-hover.png",
"layer0.opacity": 0.5,
"layer0.inner_margin": 4,
"layer1.opacity": 0.0,
"layer1.texture": "SourcePawn/assets/tab-button-close.png",
"layer1.inner_margin": 4,
"content_margin": [8, 8]
},
{
"class": "close_button",
"attributes": ["dirty"],
"layer0.texture": "SourcePawn/assets/tab-button-dirty.png",
"layer0.opacity": 0.5
},
{
"class": "close_button",
"attributes": ["hover"],
"layer0.texture": "SourcePawn/assets/tab-button-close-hover.png",
"layer1.opacity": 0.5,
"layer1.texture": "SourcePawn/assets/tab-button-close.png"
},
{
"class": "close_button",
"attributes": ["hover", "dirty"],
"layer1.opacity": 0.5,
"layer1.texture": "SourcePawn/assets/tab-button-close-dirty.png"
},
{
"class": "close_button",
"attributes": ["pressed"],
"layer1.opacity": 1.0,
"layer1.texture": "SourcePawn/assets/tab-button-close.png"
},
{
"class": "close_button",
"attributes": ["pressed", "dirty"],
"layer1.opacity": 1.0,
"layer1.texture": "SourcePawn/assets/tab-button-close-dirty.png"
},
// - Sidebar FOLDERS closed
{
"class": "disclosure_button_control",
"content_margin": [9, 7, 8, 6],
"layer0.texture": "SourcePawn/assets/folder/group-closed.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": 0
},
{
"class": "disclosure_button_control",
"parents": [{"class": "tree_row", "attributes": ["hover"]}],
"layer0.texture": "SourcePawn/assets/folder/group-closed-hover.png"
},
{
"class": "disclosure_button_control",
"parents": [{"class": "tree_row", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/folder/group-closed-selected.png"
},
// - Sidebar Folders open
{
"class": "disclosure_button_control",
"attributes": ["expanded"],
"layer0.texture": "SourcePawn/assets/folder/group-open.png"
},
{
"class": "disclosure_button_control",
"attributes": ["expanded"],
"parents": [{"class": "tree_row", "attributes": ["hover"]}],
"layer0.texture": "SourcePawn/assets/folder/group-open-hover.png"
},
{
"class": "disclosure_button_control",
"attributes": ["expanded"],
"parents": [{"class": "tree_row", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/folder/group-open-selected.png"
},
// STANDARD TEXT BUTTONS
// =========================================================
// - Standard buttons (used for Find / Replace panel)
{
"class": "button_control",
"content_margin": [6, 5, 6, 6],
"min_size": [75, 0],
// Default button state
"layer0.texture": "SourcePawn/assets/btn-large.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": [6, 6],
// Pressed button setup
"layer1.texture": "SourcePawn/assets/btn-large-active.png",
"layer1.opacity": 0.0,
"layer1.inner_margin": [6, 6]
},
{
// Pressed button state
"class": "button_control",
"attributes": ["pressed"],
"layer1.opacity": 1.0,
"content_margin": [6, 6, 6, 6]
},
// TEXT INPUT FIELD
// =========================================================
// - Text input field item
{
"class": "text_line_control",
"layer0.texture": "SourcePawn/assets/text-field.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": [10, 10, 10, 10],
"content_margin": [5, 5, 5, 5]
},
// PANEL BACKGROUNDS
// =========================================================
// - Bottom panel background
{
"class": "panel_control",
"layer0.texture": "SourcePawn/assets/panel-bg.png",
"layer0.inner_margin": [4, 4, 4, 4],
"layer0.opacity": 1.0
},
// - Quick panel background
{
"class": "overlay_control",
"layer0.texture": "SourcePawn/assets/overlay-bg.png",
"layer0.inner_margin": [10, 5, 10, 20], // left, top, right, bottom
"layer0.opacity": 1.0,
"layer1.opacity": 0, // HIDDEN
"content_margin": [11, 8, 11, 17]
},
// QUICK PANEL
// =========================================================
{
"class": "quick_panel",
"row_padding": [4, 3],
"layer0.tint": [45, 45, 45],
"layer0.opacity": 1,
"dark_content": true
},
{
"class": "quick_panel_row",
"layer0.texture": "SourcePawn/assets/qp-row.png",
"layer0.opacity": 1.0,
"layer0.inner_margin": [4, 4, 4, 4],
"layer1.draw_center": true
},
{
"class": "quick_panel_row",
"attributes": ["selected"],
"layer0.texture": "SourcePawn/assets/qp-row-selected.png"
},
{
"class": "quick_panel_label",
"fg": [190, 190, 190, 255],
"match_fg": [166, 229, 255, 255],
"bg": [71, 71, 71, 255],
"selected_fg": [220, 220, 220, 255],
"selected_match_fg": [2, 196, 251, 255],
"selected_bg": [134, 134, 134, 255]
},
{
"class": "quick_panel_path_label",
"fg": [100, 100, 100, 255],
"match_fg": [166, 229, 255, 255],
"bg": [41, 41, 41, 255],
"selected_fg": [120, 120, 120, 255],
"selected_match_fg": [2, 196, 251, 255],
"selected_bg": [24, 24, 24, 255]
},
{
"class": "quick_panel_score_label",
"fg": [90, 90, 90, 255],
"bg": [41, 41, 41, 255],
"selected_fg": [114, 114, 114, 255],
"selected_bg": [24, 24, 24, 255]
},
// MINI QUICK PANEL
// =========================================================
{
"class": "mini_quick_panel_row",
"layer0.texture": "SourcePawn/assets/qp-row.png",
"layer0.inner_margin": [4, 4, 4, 4],
"layer0.opacity": 1.0
},
{
"class": "mini_quick_panel_row",
"attributes": ["selected"],
"layer0.texture": "SourcePawn/assets/qp-row-selected.png"
},
// CODE COMPLETION DROPDOWN
// =========================================================
{
"class": "popup_control",
"content_margin": [0, 0]
},
{
"class": "auto_complete",
"row_padding": [2, 2],
"layer0.tint": [30, 30, 30],
"layer0.opacity": 1.0,
"dark_content": true
},
{
"class": "auto_complete_label",
"fg": [140, 140, 140],
"match_fg": [255, 255, 255],
"bg": [26, 26, 26],
"selected_fg": [255, 255, 255],
"selected_match_fg": [255, 255, 255],
"selected_bg": [86, 86, 86]
},
{
"class": "table_row",
"layer0.tint": [45, 45, 45],
"layer0.opacity": 0.0,
"layer0.inner_margin": [1, 1]
},
{
"class": "table_row",
"attributes": ["selected"],
"layer0.opacity": 1.0
},
// BOTTOM PANEL BUTTONS
// ==========================================================
{
"class": "icon_button_control",
"content_margin": [4, 4]
},
{
"class": "icon_button_control",
"attributes": ["pressed"]
},
// - Regex search button
{
"class": "icon_regex",
"layer0.texture": "SourcePawn/assets/icons/regex-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_regex",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/regex-on.png"
},
// - Case sensitive search button
{
"class": "icon_case",
"layer0.texture": "SourcePawn/assets/icons/case-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_case",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/case-on.png"
},
// - Match whole word search button
{
"class": "icon_whole_word",
"layer0.texture": "SourcePawn/assets/icons/whole-word-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_whole_word",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/whole-word-on.png"
},
// - Reverse search direction button
{
"class": "icon_reverse",
"layer0.texture": "SourcePawn/assets/icons/reverse-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_reverse",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/reverse-on.png"
},
// - Search wrap button
{
"class": "icon_wrap",
"layer0.texture": "SourcePawn/assets/icons/wrap-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_wrap",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/wrap-on.png"
},
// - Search in selection button
{
"class": "icon_in_selection",
"layer0.texture": "SourcePawn/assets/icons/selection-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_in_selection",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/selection-on.png"
},
// - Preserve case button
{
"class": "icon_preserve_case",
"layer0.texture": "SourcePawn/assets/icons/preserve-case-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_preserve_case",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/preserve-case-on.png"
},
// - Highlight results button
{
"class": "icon_highlight",
"layer0.texture": "SourcePawn/assets/icons/highlight-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_highlight",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/highlight-on.png"
},
// BOTTOM PANEL ICONS (EXTENDED: FIND IN FILES)
// =========================================================
// - Show search context button
{
"class": "icon_context",
"layer0.texture": "SourcePawn/assets/icons/context-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_context",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/context-on.png"
},
// - Use search buffer
{
"class": "icon_use_buffer",
"layer0.texture": "SourcePawn/assets/icons/buffer-off.png",
"layer0.opacity": 1.0,
"content_margin": [9, 10]
},
{
"class": "icon_use_buffer",
"parents": [{"class": "icon_button_control", "attributes": ["selected"]}],
"layer0.texture": "SourcePawn/assets/icons/buffer-on.png"
}
]

View File

@@ -0,0 +1,136 @@
{
"scope": "entity.name.tag.jade",
"completions":
[
"a",// Defines a hyperlink
"abbr",// Defines an abbreviation
"acronym",// Not supported in HTML5. Use <abbr> instead.
//Defines an acronym
"address",// Defines contact information for the author/owner of a document
"applet",// Not supported in HTML5. Use <object> instead.
//Defines an embedded applet
"area",// Defines an area inside an image-map
"article",// Defines an article
"aside",// Defines content aside from the page content
"audio",// Defines sound content
"b",// Defines bold text
"base",// Specifies the base URL/target for all relative URLs in a document
"basefont",// Not supported in HTML5. Use CSS instead.
//Specifies a default color, size, and font for all text in a document
"bdi",// Isolates a part of text that might be formatted in a different direction from other text outside it
"bdo",// Overrides the current text direction
"big",// Not supported in HTML5. Use CSS instead.
//Defines big text
"blockquote",// Defines a section that is quoted from another source
"body",// Defines the document's body
"br",// Defines a single line break
"button",// Defines a clickable button
"canvas",// Used to draw graphics, on the fly, via scripting (usually JavaScript)
"caption",// Defines a table caption
"center",// Not supported in HTML5. Use CSS instead.
//Defines centered text
"cite",// Defines the title of a work
"code",// Defines a piece of computer code
"col",// Specifies column properties for each column within a <colgroup> element
"colgroup",// Specifies a group of one or more columns in a table for formatting
"command",// Defines a command button that a user can invoke
"datalist",// Specifies a list of pre-defined options for input controls
"dd",// Defines a description/value of a term in a description list
"del",// Defines text that has been deleted from a document
"details",// Defines additional details that the user can view or hide
"dfn",// Defines a definition term
"dialog",// Defines a dialog box or window
"dir",// Not supported in HTML5. Use <ul> instead.
//Defines a directory list
"div",// Defines a section in a document
"dl",// Defines a description list
"dt",// Defines a term/name in a description list
"em",// Defines emphasized text
"embed",// Defines a container for an external (non-HTML) application
"fieldset",// Groups related elements in a form
"figcaption",// Defines a caption for a <figure> element
"figure",// Specifies self-contained content
"font",// Not supported in HTML5. Use CSS instead.
//Defines font, color, and size for text
"footer",// Defines a footer for a document or section
"form",// Defines an HTML form for user input
"frame",// Not supported in HTML5.
//Defines a window (a frame) in a frameset
"frameset",// Not supported in HTML5.
//Defines a set of frames
"h1",// to <h6> Defines HTML headings
"head",// Defines information about the document
"header",// Defines a header for a document or section
"hgroup",// Groups heading elements
"hr",// Defines a thematic change in the content
"html",// Defines the root of an HTML document
"i",// Defines a part of text in an alternate voice or mood
"iframe",// Defines an inline frame
"img",// Defines an image
"input",// Defines an input control
"ins",// Defines a text that has been inserted into a document
"kbd",// Defines keyboard input
"keygen",// Defines a key-pair generator field (for forms)
"label",// Defines a label for an <input> element
"legend",// Defines a caption for a <fieldset> element
"li",// Defines a list item
"link",// Defines the relationship between a document and an external resource (most used to link to style sheets)
"main",// Specifies the main content of a document
"map",// Defines a client-side image-map
"mark",// Defines marked/highlighted text
"menu",// Defines a list/menu of commands
"meta",// Defines metadata about an HTML document
"meter",// Defines a scalar measurement within a known range (a gauge)
"nav",// Defines navigation links
"noframes",// Not supported in HTML5.
//Defines an alternate content for users that do not support frames
"noscript",// Defines an alternate content for users that do not support client-side scripts
"object",// Defines an embedded object
"ol",// Defines an ordered list
"optgroup",// Defines a group of related options in a drop-down list
"option",// Defines an option in a drop-down list
"output",// Defines the result of a calculation
"p",// Defines a paragraph
"param",// Defines a parameter for an object
"pre",// Defines preformatted text
"progress",// Represents the progress of a task
"q",// Defines a short quotation
"rp",// Defines what to show in browsers that do not support ruby annotations
"rt",// Defines an explanation/pronunciation of characters (for East Asian typography)
"ruby",// Defines a ruby annotation (for East Asian typography)
"s",// Defines text that is no longer correct
"samp",// Defines sample output from a computer program
"script",// Defines a client-side script
"section",// Defines a section in a document
"select",// Defines a drop-down list
"small",// Defines smaller text
"source",// Defines multiple media resources for media elements (<video> and <audio>)
"span",// Defines a section in a document
"strike",// Not supported in HTML5. Use <del> instead.
//Defines strikethrough text
"strong",// Defines important text
"style",// Defines style information for a document
"sub",// Defines subscripted text
"summary",// Defines a visible heading for a <details> element
"sup",// Defines superscripted text
"table",// Defines a table
"tbody",// Groups the body content in a table
"td",// Defines a cell in a table
"textarea",// Defines a multiline input control (text area)
"tfoot",// Groups the footer content in a table
"th",// Defines a header cell in a table
"thead",// Groups the header content in a table
"time",// Defines a date/time
"title",// Defines a title for the document
"tr",// Defines a row in a table
"track",// Defines text tracks for media elements (<video> and <audio>)
"tt",// Not supported in HTML5. Use CSS instead.
//Defines teletype text
"u",// Defines text that should be stylistically different from normal text
"ul",// Defines an unordered list
"var",// Defines a variable
"video",// Defines a video or movie
"wbr"
]
}

View File

@@ -0,0 +1,63 @@
.AlphaCS
#ExprOff
If getKey(41)
sub(ADM)
End
Lbl START
"appv alpha "->Str1
"appvAlphaCS"->Str2
.ALPHA CS
[7EFFFFE7FFFFE7E7]->Pic11
[E0E0E0E0E0FFFF7F]->Pic12
[FEFFE7FFFEE0E0E0]->Pic13
[E7E7E7FFFFE7E7E7]->Pic14
[7EFFFFE7FFFFE7E7]->Pic15
[7FFFFFE0E0FFFF7F]->Pic16
[7FFFFF781EFFFFFE]->Pic17
.arch
[0038447C44440000]->Pic21
.hide
[0054004400540000]->Pic22
.lock
[0038447C7C7C0000]->Pic23
.(c) Scott Mangiapane
Data(72,8)->GDB0
[42600A360008000100994DDF2A6C61B1B28091294A22AAAAAAAB005A6DCA226A69B9A9800000000000202000000000000000C0200000000000000000000000000000000000000000]
.icon unknown
Data(16,16)->GDB11
[EFFEA803EB8308032BFB28032BFB0803EBFBA803EBFB08032B8328032FFF07FF]
.icon SRC
Data(16,16)->GDB12
[01801A583E7C3FFC3FFC3E7C1A580A500240FFFFC471BDAFCC6FF5AF8DB1FFFF]
.icon ASM
Data(16,16)->GDB13
[FFFFFFFFFFFFFFFFFFFFCE6BB5D586D5B75DB4DDFFFFFFFFFFFFFFFFFFFFFFFF]
.icon shell
Data(16,16)->GDB14
[FFFFFFFFFFFFFFFFFFFFFFFF97B5B155D5359595FFFFFFFFFFFFFFFFFFFFFFFF]
Goto SET
prgmSRCFUNC
prgmSRCGUI
prgmSRCSORT
Lbl SET
.start, set up
ClrDraw
StoreGDB
DiagnosticOff
Fix 5
Full
!If GetCalc(Str1,[Y1])
sub(NEW)
StoreGDB
End
GetCalc(Str1,[Y1])
If {[Y1]+0}
!If sub(CODE)
Goto END
End
End
Asm(FDCB249E)
If {[Y1]+6}
Asm(FDCB24DE)
End
Goto DLIST

View File

@@ -0,0 +1,194 @@
.FUNC AlphaCS
Lbl ADM
DiagnosticOff
Fix 5
Full
StoreGDB
sub(D2,13,17,70,29,"Admin Access")
sub(D1,15,27)
Text(15,37,"Admin Code: - - - -")
DispGraph
Repeat getKey->A
End
Text(55,37,"*")
DispGraph
Repeat getKey->B
End
Text(62,37,"*")
DispGraph
Repeat getKey->C
End
Text(69,37,"*")
DispGraph
Repeat getKey->D
End
Text(76,37,"*")
DispGraph
Normal
Pause 100
Full
If (A!=20) or (B!=35) or (C!=18) or (D!=27)
Goto END
End
sub(D2,13,17,70,29,"Author Info")
sub(D1,15,27)
Bitmap(15,38,GDB0)
DispGraph
Repeat (getKey) and (getKey(9))
End
DelVar "appv alpha "
Return
Lbl D1
.draws title
Pt-On([r1]+1,[r2]+1,Pic11)
Pt-On([r1]+10,[r2]+1,Pic12)
Pt-On([r1]+19,[r2]+1,Pic13)
Pt-On([r1]+28,[r2]+1,Pic14)
Pt-On([r1]+37,[r2]+1,Pic15)
Pt-On([r1]+48,[r2]+1,Pic16)
Pt-On([r1]+57,[r2]+1,Pic17)
RectI([r1],[r2],66,10)
Pxl-Off([r1],[r2])
RectI([r1]+14,[r2],4,5)
RectI([r1]+23,[r2]+7,4,3)
RectI([r1]+46,[r2]+1,1,8)
RectI([r1]+45,[r2],3,1)
RectI([r1]+46,[r2]+9,2,1)
Pxl-Off([r1]+65,[r2]+9)
Return
Lbl D2
.windows
Rect([r1]+1,[r2],[r3]-2,[r4])
Rect([r1],[r2]+1,[r3],[r4]-2)
RectI([r1]+1,[r2]+1,[r3]-2,[r4]-2)
Text([r1]+2,[r2]+2,[r5])
RectI([r1]+1,[r2]+1,[r3]-2,8)
Pt-Off([r1]+[r3]-9,[r2]+1,[C1BEAAB6AABEC1FF])
Pxl-On([r1]+1,[r2]+[r4]-2)
Pxl-On([r1]+[r3]-2,[r2]+[r4]-2)
Return
Lbl D3
.archiving box
sub(D2,15,22,66,20,"Archiving...")
Text(17,31,"Please wait...")
Return
Lbl CODE
sub(D2,15,22,66,20,"Access Denied")
Text(29,32," - - - - ")
DispGraph
1->[r2]
Repeat getKey->[r1]
End
Text(29,32,"*")
DispGraph
If [r1]!=({[Y1]+1})
0->[r2]
End
Repeat getKey->[r1]
End
Text(39,32,"*")
DispGraph
If [r1]!=({[Y1]+2})
0->[r2]
End
Repeat getKey->[r1]
End
Text(49,32,"*")
DispGraph
If [r1]!=({[Y1]+3})
0->[r2]
End
Repeat getKey->[r1]
End
Text(59,32,"*")
DispGraph
If [r1]!=({[Y1]+4})
0->[r2]
End
Normal
Pause 200
Full
Return[r2]
Lbl NEW
ClrDraw
sub(D1,0,0)
RectI(0,11,96,1)
Text(1,12,"Installation")
Text(1,20,"Enter your new keycode:")
Text(1,26," - - - - ")
DispGraph
GetCalc(Str1,16)->[r1]
Fill([r1],16,1)
0->{[r1]}
Repeat getKey->[r2]
End
[r2]->{[r1]+1}
Text(1,26,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{[r1]+2}
Text(7,26,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{[r1]+3}
Text(13,26,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{[r1]+4}
Text(19,26,"*")
DispGraph
Fill(L1,50,0)
Text(1,34,"Confirm keycode:")
Text(1,40," - - - - ")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+1}
Text(1,40,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+2}
Text(7,40,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+3}
Text(13,40,"*")
DispGraph
Repeat getKey->[r2]
End
[r2]->{L1+4}
Text(19,40,"*")
DispGraph
If ({[r1]+1}={L1+1}) and ({[r1]+2}={L1+2}) and ({[r1]+3}={L1+3}) and ({[r1]+4}={L1+4})
sub(D3)
DispGraph
GetCalc(Str2,10)
Archive Str1
GetCalc(Str1,[Y1])
ClrDraw
Return
Else
Text(1,48,"ERROR keycodes do not")
Text(1,54,"match.")
DispGraph
UnArchive Str1
DelVar Str1
Repeat getKey
End
Goto END
End
Return
Lbl END
Asm(FDCB249E)
If {[Y1]+6}
Asm(FDCB24DE)
End
ClrDraw
ClrDraw^^r
ClrHome
Return^^r

View File

@@ -0,0 +1,563 @@
.GUI AlphaCS
#Axiom(RUNPRGM)
#Axiom(ZSTAXE)
Lbl DLIST
ClrDraw
ClrDraw^^r
sub(D1,0,0)
RectI(0,11,96,1)
!If sub(POLAR,1)
RectI(0,63,96,1)
Text(1,13,"No programs found.")
DispGraph
Goto KLIST2
Else
Fill(L5,50,0)
Copy(L1,L5,20)
13->B->G
0->I
1->H
Text(1,13,L2)
If D
Pt-On(77,13,Pic21)
End
If E
Pt-On(83,13,Pic22)
End
If F
Pt-On(89,13,Pic23)
End
For(S,1,6)
If sub(ADJ,1)
S*7+13->G
Text(1,S*7+13,L2)
If D
Pt-On(77,S*7+13,Pic21)
End
If E
Pt-On(83,S*7+13,Pic22)
End
If F
Pt-On(89,S*7+13,Pic23)
End
End
End
End
Fill(L4,50,0)
Copy(L1,L4,20)
Lbl KLIST1
Rect(90,0,6,10)
RectI(90,0,6,10)
0->S->T
sub(POLAR,1)
If Equ>String(L1,L5)
S++
End
sub(POLAR,0)
If Equ>String(L1,L4)
T++
End
If (S) and (T)
Pt-On(90,6,[F870200000000000])
Pt-On(90,2,[2070F80000000000])
Else
If S
Pt-On(90,4,[2070F80000000000])
End
If T
Pt-On(90,4,[F870200000000000])
End
End
RectI(0,63,96,1)
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
RectI(0,63,96,1)
If getKey(15)
Goto DLIST
End
Repeat getKey
If getKey(41)
Repeat getKey(41)=0
End
Asm(3E01D303FB76)
Repeat getKey(41)=0
End
End
End
If getKey(48)
Goto DSET1
End
If (getKey(9)) or (getKey(54))
Fill(L1,50,0)
Copy(L5,L1,20)
If (B-13/7)=0
Fill(L1,50,0)
Copy(L5+1,L1,20)
sub(DATA)
Else
For(B-13/7)
sub(ADJ,1)
End
End
Goto DPRGM1
End
If getKey(4)
If (B!=13)
For(S,0,7)
RectI(0,63,96,1)
RectI(0,B-S,96,7)
DispGraph
RectI(0,B-S,96,7)
RectI(0,63,96,1)
End
B-7->B
Else
sub(POLAR,1)
If Equ>String(L1,L5)
Fill(L1,50,0)
Copy(L4,L1,20)
sub(ADJ,0)
Fill(L4,50,0)
Copy(L1,L4,20)
Fill(L1,50,0)
Copy(L5,L1,20)
sub(ADJ,0)
Fill(L5,50,0)
Copy(L1,L5,20)
Fill(L1,50,0)
Copy(L4,L1,20)
Rect(0,0,96,13)
RectI(0,0,96,13)
For(7)
Vertical+
End
Rect(0,62,96,2)
RectI(0,62,96,2)
Text(1,13,L2)
If D
Pt-On(77,13,Pic21)
End
If E
Pt-On(83,13,Pic22)
End
If F
Pt-On(89,13,Pic23)
End
Rect(0,0,96,13)
RectI(0,0,96,13)
sub(D1,0,0)
RectI(0,11,96,1)
End
End
End
If getKey(1)
If (B!=G)
For(S,0,7)
RectI(0,63,96,1)
RectI(0,B+S,96,7)
DispGraph
RectI(0,B+S,96,7)
RectI(0,63,96,1)
End
B+7->B
Else
sub(POLAR,0)
If Equ>String(L1,L4)
Fill(L1,50,0)
Copy(L5,L1,20)
sub(ADJ,1)
Fill(L5,50,0)
Copy(L1,L5,20)
Fill(L1,50,0)
Copy(L4,L1,20)
sub(ADJ,1)
Fill(L4,50,0)
Copy(L1,L4,20)
For(7)
Vertical-
End
Text(1,55,L2)
If D
Pt-On(77,55,Pic21)
End
If E
Pt-On(83,55,Pic22)
End
If F
Pt-On(89,55,Pic23)
End
Rect(0,0,96,13)
RectI(0,0,96,13)
sub(D1,0,0)
RectI(0,11,96,1)
End
End
End
If getKey(15)
Goto END
End
Goto KLIST1
Lbl KLIST2
If getKey(15)
Goto DLIST
End
Repeat getKey
If getKey(41)
Repeat getKey(41)=0
End
Asm(3E01D303FB76)
Repeat getKey(41)=0
End
End
End
If getKey(48)
Goto DSET1
End
If getKey(15)
Goto END
End
Goto KLIST2
Lbl DPRGM1
GetCalc("appv alpha ",[Y1])
13->B
D->X
E->Y
F->Z
Lbl DPRGM2
GetCalc(L1,[Y3])
0->H
If ({[Y3]+0}=187) and ({[Y3]+1}=109)
1->H
If {[Y3]+2}=201
2->H
End
If {[Y3]+3}=201
3->H
End
End
If {[Y3]+0}=58
4->H
End
ClrDraw
ClrDraw^^r
sub(D1,0,0)
RectI(0,11,96,1)
Text(1,49,L2)
RectI(0,48,96,16)
69->S
If Z
Pt-Change(S,56,Pic23)
S-6->S
End
If Y
Pt-Change(S,56,Pic22)
S-6->S
End
If X
Pt-Change(S,56,Pic21)
End
RectI(1,56,94,7)
Text(2,56,"size: ",{[Y3]-2}^^r>Dec)
Text(1,13,"Run (with zStart)")
If X
Text(1,20,"Unarchive PRGM")
Else
Text(1,20,"Archive PRGM")
End
If Y
Text(1,27,"Unhide PRGM")
Else
Text(1,27,"Hide PRGM")
End
If Z
Text(1,34,"Unlock PRGM")
Else
Text(1,34,"Lock PRGM")
End
Rect(76,44,20,20)
RectI(77,45,18,18)
If H=0
Bitmap(78,46,GDB11)
End
If H=1
Bitmap(78,46,GDB13)
End
If H=2
Bitmap(78,46,GDB14)
End
If H=3
Bitmap(78,46,GDB14)
End
If H=4
Bitmap(78,46,GDB12)
End
Lbl KPRGM
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
Repeat getKey
End
If (getKey(9)) or (getKey(54))
If B=13
sub(SETPRGM)
Goto RUN
Else
Fill(L2,20,0)
Copy(L1+1,L2,20)
Fill(L1,20,0)
Copy(L2,L1,20)
sub(DATA)
If B=20
If X
0->X
Else
1->X
End
Goto DPRGM2
End
If B=27
If Y
0->Y
Else
1->Y
End
Goto DPRGM2
End
If B=34
If Z
0->Z
Else
1->Z
End
Goto DPRGM2
End
End
End
If (getKey(4)) and (B!=13)
For(S,0,7)
RectI(0,B-S,96,7)
DispGraph
RectI(0,B-S,96,7)
Normal
Pause 3
Full
End
B-7->B
End
If ((getKey(1)) and (B!=34)
For(S,0,7)
RectI(0,B+S,96,7)
DispGraph
RectI(0,B+S,96,7)
Normal
Pause 3
Full
End
B+7->B
End
If getKey(15)
sub(SETPRGM)
Goto DLIST
End
Goto KPRGM
Lbl SETPRGM
If (X!=D) or (Y!=E) or (Z!=F)
If X
sub(D3)
DispGraph
End
UnArchive L1
X->D
If (E!=Y)
If Y
{C-7}-64->{C-7}
{L1+1}-64->{L1+1}
Else
{C-7}+64->{C-7}
{L1+1}+64->{L1+1}
End
Y->E
End
If (F!=Z)
If Z
6->{C}
|E06->{L1}
Else
5->{C}
|E05->{L1}
End
Z->F
End
If X
Archive L1
End
End
GetCalc(L1,[Y3])
Return
Lbl RUN
GetCalc("appv hold ",20)->S
Fill(S,20,0)
Copy(L1+1,S,10)
A->{S+15}
DiagnosticOn
Fix 4
Normal
If D
GetCalc("appvzRun",{[Y3]-2}^^r)->S
Copy([Y3],S,{[Y3]-2}^^r)
End
2-SampZInt(|LRUNERR)
If D
Fpdf("appvzRun")
Else
Fpdf(L1)
End
2-SampTInt
DelVar "appvzRun"
GetCalc("appv hold ")->S
Fill(L1,20,0)
Copy(S,L1,10)
{S+15}->A
sub(DATA)
DelVar "appv hold "
DiagnosticOff
Fix 5
Full
Repeat getKey=0
End
Goto DPRGM1
Lbl RUNERR
2-SampFTest ->S
DelVar "appvzRun"
DiagnosticOff
Fix 5
Full
sub(D2,10,22,76,20,"Error")
If S=8
Text(12,31,"Syntax")
Else
Text(12,31,"Error "[23]"",S>Dec)
End
DispGraph
Repeat (getKey) and (getKey(9))
End
GetCalc("appv hold ")->S
Fill(L1,20,0)
Copy(S,L1,10)
{S+15}->A
sub(DATA)
DelVar "appv hold "
DiagnosticOff
Fix 5
Full
Repeat getKey=0
End
Goto DPRGM1
Lbl DSET1
21->B
{[Y1]+5}->X
{[Y1]}->Y
{[Y1]+6}->Z
Lbl DSET2
ClrDraw
sub(D1,0,0)
RectI(0,11,96,1)
Text(1,12,"by ClrDraw, Nov 2013, v 1")
RectI(0,19,96,1)
RectI(0,63,96,1)
If X
Text(1,21,"Show Hidden On")
Else
Text(1,21,"Show Hidden Off")
End
If Y
Text(1,28,"Password On")
Else
Text(1,28,"Password Off")
End
If Z
Text(1,35,"Lowercase On")
Else
Text(1,35,"Lowercase Off")
End
Text(1,42,"Uninstall AlphaCS")
Lbl KSET
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
Repeat getKey
End
If (getKey(54)) or (getKey(9))
If B=21
If X
0->X
Else
1->X
End
Goto DSET2
End
If B=28
If Y
0->Y
Else
1->Y
End
Goto DSET2
End
If B=35
If Z
0->Z
Else
1->Z
End
Goto DSET2
End
If B=42
If sub(CODE)
DelVar Str1
Goto END
Else
Goto DSET2
End
End
End
If (getKey(4)) and (B!=21)
For(7)
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
B--
Normal
Pause 3
Full
End
End
If (getKey(1)) and (B!=42)
For(7)
RectI(0,B,96,7)
DispGraph
RectI(0,B,96,7)
B++
Normal
Pause 3
Full
End
End
If getKey(15)
If ({[Y1]+5}!=X) or ({[Y1]}!=Y) or ({[Y1]+6}!=Z)
UnArchive Str1
GetCalc(Str1)->S
X->{S+5}
Y->{S}
Z->{S+6}
sub(D3)
DispGraph
Archive Str1
GetCalc(Str1,[Y1])
End
Repeat getKey=0
End
Goto DLIST
End
Goto KSET

View File

@@ -0,0 +1,138 @@
.SORT AlphaCS
Lbl POLAR
Fill(L1,50,0)
{|E9830}^^r->[r2]
Repeat (({[r2]}=5) or ({[r2]}=6)) and (({[r2]-7}>48) or (({[Y1]+5}) and ({[r2]-7}<28)))
[r2]-{[r2]-6}-7->[r2]
If [r2]<={|E982E}^^r
Return0
End
End
For([r3],1,{[r2]-6})
{[r2]-6-[r3]}->{L1+[r3]-1}
End
[r2]-{[r2]-6}-7->[r2]
Repeat 0
If (({[r2]}=5) or ({[r2]}=6)) and (({[r2]-7}>48) or (({[Y1]+5}) and ({[r2]-7}<28)))
Fill(L2,50,0)
For([r3],1,{[r2]-6}
{[r2]-6-[r3]}->{L2+[r3]-1
End
0->[r3]
Repeat ({L1+[r3]}!={L2+[r3]}) or ([r3]=20)
[r3]++
End
If (({L1+[r3]}>{L2+[r3]}) and ([r1]=1)) or (({L1+[r3]}<{L2+[r3]}) and ([r1]=0))
Fill(L1,50,0)
Copy(L2,L1,20)
End
Else
If [r2]<{|E982E}^^r
sub(DATA)
Return1
End
End
[r2]-{[r2]-6}-7->[r2]
End
Lbl ADJ
Fill(L2,50,0)
Copy(L1+1,L2,20)
Fill(L1,50,0)
Copy(L2,L1)
Fill(L3,50,0)
Copy(L1,L3,20)
Fill(L1,50,0)
{|E9830}^^r->[r2]
sub(CHECK)
Repeat (({[r2]}=5) or ({[r2]}=6)) and ([r4]) and (({[r2]-7}>48) or ({[r2]-7}<28))
[r2]-{[r2]-6}-7->[r2]
If [r2]<{|E982E}^^r
Fill(L1,50,0)
Copy(L3,L1,20)
Fill(L3,50,0)
sub(DATA)
Return0
End
sub(CHECK)
End
For([r3],1,{[r2]-6})
{[r2]-6-[r3]}->{L1+[r3]-1}
End
[r2]-{[r2]-6}-7->[r2]
Repeat 0
sub(CHECK)
If (({[r2]}=5) or ({[r2]}=6)) and ([r4]) and (({[r2]-7}>48) or ({[r2]-7}<28))
Fill(L2,50,0)
For([r3],1,{[r2]-6}
{[r2]-6-[r3]}->{L2+[r3]-1
End
0->[r3]
Repeat ({L1+[r3]}!={L2+[r3]}) or ([r3]=20)
[r3]++
End
If (({L1+[r3]}>{L2+[r3]}) and ([r1]=1)) or (({L1+[r3]}<{L2+[r3]}) and ([r1]=0))
Fill(L1,50,0)
Copy(L2,L1,20)
End
Else
If [r2]<{|E982E}^^r
sub(DATA)
Return1
End
End
[r2]-{[r2]-6}-7->[r2]
End
Lbl CHECK
0->[r4]
Repeat ({[r2]-7-[r4]}!={L3+[r4]}) or (([r4]>={[r2]-6}) and ({L3+[r4]}=0))
[r4]++
End
If ((({[r2]-7-[r4]}<{L3+[r4]}) and ([r1]=1)) or (({[r2]-7-[r4]}>{L3+[r4]}) and ([r1]=0))) or (([r4]>={[r2]-6}) and ({L3+[r4]}=0))
0->[r4]
Else
1->[r4]
End
Return
Lbl DATA
{|E9830}^^r->C
Repeat 0
Repeat ({C}=5) or ({C}=6) and (({[r1]-7}>48) or ({[r1]-7}<28))
C-{C-6}-7->C
End
Fill(L2,50,0)
For([r1],1,{C-6})
{C-6-[r1]}->{L2+[r1]-1}
End
!If Equ>String(L1,L2)
If {C-5}=0
0->D
Else
1->D
End
If {C-7}<28
1->E
Else
0->E
End
If {C}=6
1->F
Else
0->F
End
Fill(L2,50,0)
Copy(L1,L2,20)
Fill(L1,50,0)
Copy(L2,L1+1,20)
If E
{L2}+64->{L2}
End
If F
|E06->{L1}
Else
|E05->{L1}
End
Return
End
C-{C-6}-7->C
End
Return

207
samples/XML/HITSP_C32.sch Normal file
View File

@@ -0,0 +1,207 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
Retrieved on 2016-08-30 from http://cda-validation.nist.gov/cda-validation/downloads.html.
Disclaimer from the National Institute of Standards and Technology website:
"Unless otherwise noted, this software was developed at the National Institute of Standards and Technology by employees of the Federal Government in the course of their official duties. Pursuant to title 17 Section 105 of the United States Code this software is not subject to copyright protection and is in the public domain. The CDA Guideline Validator is an experimental system. NIST assumes no responsibility whatsoever for its use by other parties, and makes no guarantees, expressed or implied, about its quality, reliability, or any other characteristic. We would appreciate acknowledgement if the software is used."
-->
<!DOCTYPE schema [
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.1 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.1.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.2 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.2.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.3 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.3.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.4 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.4.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.5 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.5.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.6 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.6.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.7 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.7.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.8 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.8.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.9 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.9.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.10 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.10.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.11 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.11.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.12 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.12.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.13 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.13.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.14 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.14.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.15 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.15.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.16 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.16.ent'>
<!ENTITY ent-2.16.840.1.113883.3.88.11.32.17 SYSTEM 'templates/2.16.840.1.113883.3.88.11.32.17.ent'>
]>
<schema xmlns="http://www.ascc.net/xml/schematron" xmlns:cda="urn:hl7-org:v3">
<!--
To use iso schematron instead of schematron 1.5,
change the xmlns attribute from
"http://www.ascc.net/xml/schematron"
to
"http://purl.oclc.org/dsdl/schematron"
-->
<title>HITSP_C32</title>
<ns prefix="cda" uri="urn:hl7-org:v3"/>
<ns prefix="sdtc" uri="urn:hl7-org:sdtc"/>
<ns prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance"/>
<phase id='errors'>
<active pattern='p-2.16.840.1.113883.3.88.11.32.1-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.2-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.3-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.4-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.5-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.6-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.7-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.8-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.9-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.10-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.11-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.12-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.13-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.14-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.15-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.16-errors'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.17-errors'/>
</phase>
<phase id='warning'>
<active pattern='p-2.16.840.1.113883.3.88.11.32.1-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.2-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.3-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.4-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.5-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.6-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.7-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.8-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.9-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.10-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.11-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.12-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.13-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.14-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.15-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.16-warning'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.17-warning'/>
</phase>
<phase id='note'>
<active pattern='p-2.16.840.1.113883.3.88.11.32.1-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.2-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.3-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.4-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.5-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.6-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.7-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.8-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.9-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.10-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.11-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.12-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.13-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.14-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.15-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.16-note'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.17-note'/>
</phase>
<phase id='violation'>
<active pattern='p-2.16.840.1.113883.3.88.11.32.4-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.5-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.6-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.7-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.8-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.9-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.10-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.11-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.12-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.13-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.14-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.15-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.16-violation'/>
<active pattern='p-2.16.840.1.113883.3.88.11.32.17-violation'/>
</phase>
<!-- Template_2.16.840.1.113883.3.88.11.32.1 -->
<!-- HITSP/C32 Registration and Medication History -->
&ent-2.16.840.1.113883.3.88.11.32.1;
<!-- Template_2.16.840.1.113883.3.88.11.32.2 -->
<!-- HITSP/C32 Language Spoken Module -->
&ent-2.16.840.1.113883.3.88.11.32.2;
<!-- Template_2.16.840.1.113883.3.88.11.32.3 -->
<!-- HITSP/C32 Support Module -->
&ent-2.16.840.1.113883.3.88.11.32.3;
<!-- Template_2.16.840.1.113883.3.88.11.32.4 -->
<!-- HITSP/C32 Healthcare Provider Module -->
&ent-2.16.840.1.113883.3.88.11.32.4;
<!-- Template_2.16.840.1.113883.3.88.11.32.5 -->
<!-- HITSP/C32 Insurance Provider Module -->
&ent-2.16.840.1.113883.3.88.11.32.5;
<!-- Template_2.16.840.1.113883.3.88.11.32.6 -->
<!-- HITSP/C32 Allergies and Drug Sensitivities Module -->
&ent-2.16.840.1.113883.3.88.11.32.6;
<!-- Template_2.16.840.1.113883.3.88.11.32.7 -->
<!-- HITSP/C32 Conditions Module -->
&ent-2.16.840.1.113883.3.88.11.32.7;
<!-- Template_2.16.840.1.113883.3.88.11.32.8 -->
<!-- HITSP/C32 Medications - Administration Information Module -->
&ent-2.16.840.1.113883.3.88.11.32.8;
<!-- Template_2.16.840.1.113883.3.88.11.32.9 -->
<!-- HITSP/C32 Medications Module, Medication Information data element -->
&ent-2.16.840.1.113883.3.88.11.32.9;
<!-- Template_2.16.840.1.113883.3.88.11.32.10 -->
<!-- HITSP/C32 Medications Module, Medication Information, Type of Medication data element -->
&ent-2.16.840.1.113883.3.88.11.32.10;
<!-- Template_2.16.840.1.113883.3.88.11.32.11 -->
<!-- HITSP/C32 Order Information data element -->
&ent-2.16.840.1.113883.3.88.11.32.11;
<!-- Template_2.16.840.1.113883.3.88.11.32.12 -->
<!-- HITSP/C32 Comments Module -->
&ent-2.16.840.1.113883.3.88.11.32.12;
<!-- Template_2.16.840.1.113883.3.88.11.32.13 -->
<!-- HITSP/C32 Advance Directives Module -->
&ent-2.16.840.1.113883.3.88.11.32.13;
<!-- Template_2.16.840.1.113883.3.88.11.32.14 -->
<!-- HITSP/C32 Immunizations Module -->
&ent-2.16.840.1.113883.3.88.11.32.14;
<!-- Template_2.16.840.1.113883.3.88.11.32.15 -->
<!-- HITSP/C32 Vital Signs Module -->
&ent-2.16.840.1.113883.3.88.11.32.15;
<!-- Template_2.16.840.1.113883.3.88.11.32.16 -->
<!-- HITSP/C32 Results Module -->
&ent-2.16.840.1.113883.3.88.11.32.16;
<!-- Template_2.16.840.1.113883.3.88.11.32.17 -->
<!-- HITSP/C32 Encounters Module -->
&ent-2.16.840.1.113883.3.88.11.32.17;
</schema>

View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron"
queryBinding="xslt2"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- XSLT 2.0 Schematron by Wendell Piez (Mulberry Technologies, Inc.),
August 2011 -->
<!-- This Schematron is released into the public domain.
Please credit your sources. -->
<!-- Requires Schematron that allows embedded XSLT 2.0 with support for
the namespace:: axis. Tested with Saxon 9.3.0.5. -->
<ns prefix="m" uri="http://www.mulberrytech.com/xslt/util"/>
<xsl:variable name="ns-set" xmlns:m="http://www.mulberrytech.com/xslt/util">
<!-- include elements to declare expected namespace prefixes
with their bindings, like so:
(prefix 'mml')
<m:ns prefix="mml" uri="http://www.w3.org/1998/Math/MathML"/>
(default namespace, no prefix)
<m:ns prefix="" uri="http://www.w3.org/1998/Math/MathML"/>
-->
<m:ns prefix="mml" uri="http://www.w3.org/1998/Math/MathML"/>
<m:ns prefix="xlink" uri="http://www.w3.org/1999/xlink"/>>
<m:ns prefix="oasis" uri="http://docs.oasis-open.org/ns/oasis-exchange/table"/>
<!-- 'xml' prefix is always in scope with this binding -->
<m:ns prefix="xml" uri="http://www.w3.org/XML/1998/namespace"/>
</xsl:variable>
<pattern>
<!-- checking the document element against the spec given in ns-set -->
<rule context="/*">
<let name="new-prefixes" value="in-scope-prefixes(.)[not(. = $ns-set/m:ns/@prefix)]"/>
<let name="new-namespaces" value="(for $p in (in-scope-prefixes(.)) return namespace-uri-for-prefix($p,.))
[not(. = $ns-set/m:ns/@uri)]"/>
<report test="exists($new-prefixes)">
Unrecognized namespace prefix<xsl:value-of select="('es')[count($new-prefixes) gt 1]"/>:
<value-of select="string-join(
(for $p in $new-prefixes return m:label($p)),
', ')"/>
</report>
<report test="exists($new-namespaces)">
Unrecognized namespace URI<xsl:value-of select="('s')[count($new-namespaces) gt 1]"/>:
<value-of select="string-join(($new-namespaces),', ')"/>
</report>
<let name="misassigned-prefixes" value="in-scope-prefixes(.)[not(.=$new-prefixes)]
[for $p in (.) return
namespace-uri-for-prefix($p,current()) ne $ns-set/m:ns[@prefix=$p]/@uri]"/>
<report test="exists($misassigned-prefixes)">
Prefix<xsl:value-of select="('es')[count($misassigned-prefixes) gt 1]"/>
assigned incorrectly: <value-of select="string-join(
(for $p in $misassigned-prefixes return
concat(m:label($p), ' (should be ''',$ns-set/m:ns[@prefix=$p]/@uri,''')')),
'; ')"/>
</report>
</rule>
<!-- Elsewhere, all namespaces given must correspond with those
on the parent -->
<rule context="*">
<assert test="every $n in (namespace::*) satisfies
exists(../namespace::*[deep-equal(.,$n)])">
Namespace may not be declared here.
</assert>
<assert test="every $n in (../namespace::*) satisfies
exists(namespace::*[deep-equal(.,$n)])">
Namespace may not be undeclared here.
</assert>
</rule>
</pattern>
<xsl:function name="m:label" as="xs:string">
<xsl:param name="label" as="xs:string"/>
<xsl:sequence select="if (string($label)) then concat('''',$label,'''') else '[unprefixed]'"/>
</xsl:function>
</schema>

151
samples/XML/oasis-table.sch Normal file
View File

@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ============================================================= -->
<!--
This work is in the public domain and may be reproduced, published or
otherwise used without the permission of the National Library of Medicine (NLM).
We request only that the NLM is cited as the source of the work.
Although all reasonable efforts have been taken to ensure the accuracy and
reliability of the software and data, the NLM and the U.S. Government do
not and cannot warrant the performance or results that may be obtained by
using this software or data. The NLM and the U.S. Government disclaim all
warranties, express or implied, including warranties of performance,
merchantability or fitness for any particular purpose.
-->
<!-- ============================================================= -->
<schema xmlns="http://purl.oclc.org/dsdl/schematron"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:m="http://mulberrytech.com/xslt/oasis-html/util"
queryBinding="xslt2">
<title>OASIS/CALS table validation</title>
<!-- Mulberry Technologies (wap)
Designed for JATS, but probably also useful in other
systems using OASIS/CALS/Docbook tables
Assumes a table DTD (or schema) valid to the OASIS/CALS/Docbook model
-->
<ns prefix="o" uri="http://docs.oasis-open.org/ns/oasis-exchange/table"/>
<ns prefix="m" uri="http://mulberrytech.com/xslt/oasis-html/util"/>
<!--<ns prefix="xsl" uri="http://www.w3.org/1999/XSL/Transform"/>-->
<!-- the included stylesheet includes key and function declarations required -->
<xsl:include href="oasis-exchange-support.xsl"/>
<let name="default-border-style" value="solid"/>
<pattern>
<rule context="o:tgroup">
<let name="okay-cols" value="@cols[. castable as xs:integer][. > 0]"/>
<assert test="exists(@cols)">tgroup/@cols is not given</assert>
<assert test="empty(@cols) or exists($okay-cols)">@cols should be a natural number
(integer greater than zero).</assert>
<assert test="empty($okay-cols) or empty(o:colspec) or (count(o:colspec) = @cols)">The tgroup has
<value-of select="count(o:colspec)"/> colspec<value-of select="if (count(o:colspec) = 1) then '' else 's'"/>,
but its @cols is given as '<value-of select="@cols"/>'.</assert>
<report test="not(*/o:row/m:actual-cols(.) != */o:row/m:actual-cols(.))
and ($okay-cols != m:actual-cols((*/o:row)[1]))">tgroup/@cols is given as
<value-of select="$okay-cols"/>, but all rows have <value-of
select="m:actual-cols((*/o:row)[1])"/> entr<value-of
select="if (m:actual-cols((*/o:row)[1]) eq 1) then 'y' else 'ies'"/>.
</report>
<report test="@align='char'" role="warning">Without assigning @char or @charoff to everything,
assigning @align='char' to tgroup only aligns contents to right of center.</report>
</rule>
<rule context="o:colspec">
<let name="okay-colwidth"
value="@colwidth[exists(m:colwidth-unit(current()))]"/>
<assert test="empty(@colwidth) or exists($okay-colwidth)">Malformed @colwidth.</assert>
<assert test="empty($okay-colwidth) or
(count(../o:colspec[m:colwidth-unit(.)=m:colwidth-unit(current())]) &gt;
count(../o:colspec[not(m:colwidth-unit(.)=m:colwidth-unit(current()))]))">@colwidth unit
(<value-of select="m:colwidth-unit(.)"/>) is not consistent with the
units on other colspecs.</assert>
<assert test="empty($okay-colwidth) or matches($okay-colwidth,'^\s*\*\s*$')
or (xs:double(replace($okay-colwidth,'[\s\p{L}\*]','')[. castable as xs:double]) &gt; 0)">@colwidth must be positive</assert>
<report test="empty(m:colwidth-unit(.))
and exists(../o:colspec/m:colwidth-unit(.))">The same unit of measure should be used on every
colspec/@colwidth.</report>
<assert test="empty(@colnum) or (@colnum = count(.|preceding-sibling::o:colspec))">@colnum
'<value-of select="@colnum"/>' does not correspond to
the column's actual number (<value-of select="count(.|preceding-sibling::o:colspec)"/>)</assert>
<report test="@colname = (../o:colspec except .)/@colname">The same @colname is assigned to more than
one colspec.</report>
<assert test="not(@align='char') or exists(@char)" role="warning">@align='char', but no @char is given.</assert>
<report test="normalize-space(@char) and not((@align,../@align)[1]='char')">@char is given, but alignment is not 'char'.</report>
<assert test="empty(@charoff) or ((@align,../@align)[1]='char')" role="warning">@charoff is given, but alignment is not 'char'.</assert>
</rule>
<rule context="o:row">
<let name="tgroup" value="ancestor::o:tgroup[1]"/>
<let name="rowno" value="m:rowno(.)"/>
<let name="given-entries" value="count(distinct-values(key('entry-by-row',$rowno,$tgroup)/m:across(.)))"/>
<report test="$given-entries &lt; $tgroup/@cols
and exists($tgroup/@cols[. castable as xs:integer])" role="warning">
The row doesn't have enough entries (<value-of select="$tgroup/@cols"/>
<value-of select="if ($tgroup/@cols=1) then ' is' else ' are'"/> expected;
<value-of select="$given-entries"/> <value-of select="if ($given-entries=1) then ' is' else ' are'"/> given).
</report>
</rule>
<rule context="o:entry">
<let name="tgroup" value="ancestor::o:tgroup[1]"/>
<assert test="empty(@nameend) or exists(key('colspec-by-name',@nameend,$tgroup))">No colspec is
named <value-of select="@nameend"/>.</assert>
<assert test="empty(@nameend|@namest) or
(key('colspec-by-name',@nameend,$tgroup) >> key('colspec-by-name',@namest,$tgroup))">Entry's end
column (<value-of select="@nameend"/>) must follow its start column
(<value-of select="@namest"/>).</assert>
<assert test="empty(@namest) or exists(key('colspec-by-name',@namest,$tgroup))">No colspec is
named <value-of select="@namest"/>.</assert>
<assert test="empty(@colname) or exists(key('colspec-by-name',@colname,$tgroup))">No colspec is
named <value-of select="@colname"/>.</assert>
<assert test="empty(@nameend) or exists(@colname|@namest)">Entry is assigned an end
column (<value-of select="@nameend"/>) but not a start column.</assert>
<assert test="not(@colname != @namest)">Entry is assigned to column <value-of select="@colname"/>,
so it can't start at column <value-of select="@namest"/>.
</assert>
<assert test="m:across(.)[1] &gt; (preceding-sibling::o:entry[1]/m:across(.)[last()],0)[1]">
Entry must be assigned to a free column (after its preceding entries).
</assert>
<report test="m:down(.) &gt; m:rowno(../../o:row[last()])">This entry doesn't fit into
its <value-of select="local-name(../..)"/>.</report>
<report test="(exists(@morerows) and
(key('entry-by-row',m:down(.),$tgroup)/m:across(.)[last()] &gt; $tgroup/@cols))
or empty($tgroup/@cols)" role="warning">
A row in which this entry appears has too many entries.
</report>
<!-- the next rule will never fire for entries spanning columns: they always
fit by virtue of being assigned a @nameend -->
<report test="(m:across(.)[last()] &gt; $tgroup/@cols) or empty($tgroup/@cols)">
Entry does not fit in row. (<value-of select="$tgroup/@cols"/> are allowed; entry
is in column <value-of select="m:across(.)[last()]"/>.)
<!-- Entry does not fit in row. (# columns are allowed; row ends in column #.) -->
</report>
<assert test="empty(@char) or m:align(.)='char'" role="warning">@char is given, but alignment is not 'char'.</assert>
<assert test="empty(@charoff) or m:align(.)='char'" role="warning">@charoff is given, but alignment is not 'char'.</assert>
<assert test="empty(@charoff) or ((@charoff castable as xs:integer) and
(@charoff &gt;= 0) and (@charoff &lt;= 100))">@charoff must be a whole number between 0 and 100.</assert>
<assert test="not(m:align(.)='char') or exists(@char|m:colspec-for-entry(.)/@char)" role="warning">
Entry is designated for character alignment, but no character (@char) is given on it or its colspec.
</assert>
<assert test="empty(@char) or not(@char != m:colspec-for-entry(.)/@char)">
Entry is assigned an alignment character (<value-of select="@char"/>)
different from its column's (<value-of select="m:colspec-for-entry(.)/@char"/>).</assert>
<report test="exists(*) and (m:align(.)='char')" role="warning">With @align='char', markup of
entry contents (<value-of select="string-join(distinct-values(*/name()),', ')"/>) will be ignored.</report>
</rule>
</pattern>
</schema>

93
script/add-grammar Executable file
View File

@@ -0,0 +1,93 @@
#!/usr/bin/env ruby
require "optparse"
ROOT = File.expand_path("../../", __FILE__)
# Break a repository URL into its separate components
def parse_url(input)
hosts = "github\.com|bitbucket\.org|gitlab\.com"
# HTTPS/HTTP link pointing to recognised hosts
if input =~ /^(?:https?:\/\/)?(?:[^.@]+@)?(?:www\.)?(#{hosts})\/([^\/]+)\/([^\/]+)/i
{ host: $1.downcase(), user: $2, repo: $3.sub(/\.git$/, "") }
# SSH
elsif input =~ /^git@(#{hosts}):([^\/]+)\/([^\/]+)\.git$/i
{ host: $1.downcase(), user: $2, repo: $3 }
# provider:user/repo
elsif input =~ /^(github|bitbucket|gitlab):\/?([^\/]+)\/([^\/]+)\/?$/i
{ host: $1.downcase(), user: $2, repo: $3 }
# user/repo - Common GitHub shorthand
elsif input =~ /^\/?([^\/]+)\/([^\/]+)\/?$/
{ host: "github.com", user: $1, repo: $2 }
else
raise "Unsupported URL: #{input}"
end
end
# Isolate the vendor-name component of a submodule path
def parse_submodule(name)
name =~ /^(?:.*(?:vendor\/)?grammars\/)?([^\/]+)/i
path = "vendor/grammars/#{$1}"
unless File.exist?("#{ROOT}/" + path)
warn "Submodule '#{path}' does not exist. Aborting."
exit 1
end
path
end
# Print debugging feedback to STDOUT if running with --verbose
def log(msg)
puts msg if $verbose
end
usage = """Usage:
#{$0} [-v|--verbose] [--replace grammar] url
Examples:
#{$0} https://github.com/Alhadis/language-roff
#{$0} --replace sublime-apl https://github.com/Alhadis/language-apl
"""
$replace = nil
$verbose = false
OptionParser.new do |opts|
opts.banner = usage
opts.on("-v", "--verbose", "Print verbose feedback to STDOUT") do
$verbose = true
end
opts.on("-rSUBMODULE", "--replace=SUBMODDULE", "Replace an existing grammar submodule.") do |name|
$replace = name
end
end.parse!
$url = ARGV[0]
# No URL? Print a usage message and bail.
unless $url
warn usage
exit 1;
end
# Ensure the given URL is an HTTPS link
parts = parse_url $url
https = "https://#{parts[:host]}/#{parts[:user]}/#{parts[:repo]}"
repo_new = "vendor/grammars/#{parts[:repo]}"
repo_old = parse_submodule($replace) if $replace
if repo_old
log "Deregistering: #{repo_old}"
`git submodule deinit #{repo_old}`
`git rm -rf #{repo_old}`
end
log "Registering new submodule: #{repo_new}"
`git submodule add -f #{https} #{repo_new}`
exit 1 if $?.exitstatus > 0
`script/convert-grammars --add #{repo_new}`
log "Confirming license"
`script/licensed --module "#{repo_new}"`

View File

@@ -42,7 +42,7 @@ class DirectoryPackage
case File.extname(path.downcase)
when '.plist'
path.split('/')[-2] == 'Syntaxes'
when '.tmlanguage'
when '.tmlanguage', '.yaml-tmlanguage'
true
when '.cson', '.json'
path.split('/')[-2] == 'grammars'
@@ -114,7 +114,7 @@ class SVNPackage
def fetch(tmp_dir)
`svn export -q "#{url}/Syntaxes" "#{tmp_dir}/Syntaxes"`
raise "Failed to export SVN repository: #{url}: #{$?.to_s}" unless $?.success?
Dir["#{tmp_dir}/Syntaxes/*.{plist,tmLanguage,tmlanguage}"]
Dir["#{tmp_dir}/Syntaxes/*.{plist,tmLanguage,tmlanguage,YAML-tmLanguage}"]
end
end
@@ -148,6 +148,17 @@ def load_grammar(path)
case File.extname(path.downcase)
when '.plist', '.tmlanguage'
Plist::parse_xml(path)
when '.yaml-tmlanguage'
content = File.read(path)
# Attempt to parse YAML file even if it has a YAML 1.2 header
if content.lines[0] =~ /^%YAML[ :]1\.2/
content = content.lines[1..-1].join
end
begin
YAML.load(content)
rescue Psych::SyntaxError => e
$stderr.puts "Failed to parse YAML grammar '#{path}'"
end
when '.cson'
cson = `"#{CSONC}" "#{path}"`
raise "Failed to convert CSON grammar '#{path}': #{$?.to_s}" unless $?.success?
@@ -169,7 +180,7 @@ def load_grammars(tmp_dir, source, all_scopes)
else
SingleFile.new(source)
end
elsif source.end_with?('.tmLanguage', '.plist')
elsif source.end_with?('.tmLanguage', '.plist', '.YAML-tmLanguage')
SingleGrammar.new(source)
elsif source.start_with?('https://github.com')
GitHubPackage.new(source)
@@ -185,7 +196,7 @@ def load_grammars(tmp_dir, source, all_scopes)
p.fetch(tmp_dir).map do |path|
grammar = load_grammar(path)
scope = grammar['scopeName']
scope = grammar['scopeName'] || grammar['scope']
if all_scopes.key?(scope)
unless all_scopes[scope] == p.url
@@ -204,7 +215,7 @@ def install_grammars(grammars, path)
installed = []
grammars.each do |grammar|
scope = grammar['scopeName']
scope = grammar['scopeName'] || grammar['scope']
File.write(File.join(GRAMMARS_PATH, "#{scope}.json"), JSON.pretty_generate(grammar))
installed << scope
end

View File

@@ -4,6 +4,7 @@
require "bundler/setup"
require "licensed/cli"
require "optparse"
module Licensed
module Source
@@ -32,7 +33,14 @@ module Licensed
end
end
source = Licensed::Source::Filesystem.new("vendor/grammars/*/", type: "grammar")
module_path = nil
OptionParser.new do |opts|
opts.on("-mPATH", "--module=PATH", "Cache license file for specific grammar") do |p|
module_path = p
end
end.parse!
source = Licensed::Source::Filesystem.new(module_path || "vendor/grammars/*/", type: "grammar")
config = Licensed::Configuration.new
config.sources << source
@@ -43,4 +51,5 @@ else
end
command.run
`git checkout -- vendor/licenses/grammar/` if module_path
exit command.success?

82
script/set-language-ids Executable file
View File

@@ -0,0 +1,82 @@
#!/usr/bin/env ruby
require 'yaml'
require 'pry'
header = <<-EOF
# Defines all Languages known to GitHub.
#
# type - Either data, programming, markup, prose, or nil
# aliases - An Array of additional aliases (implicitly
# includes name.downcase)
# ace_mode - A String name of the Ace Mode used for highlighting whenever
# a file is edited. This must match one of the filenames in http://git.io/3XO_Cg.
# Use "text" if a mode does not exist.
# wrap - Boolean wrap to enable line wrapping (default: false)
# extensions - An Array of associated extensions (the first one is
# considered the primary extension, the others should be
# listed alphabetically)
# interpreters - An Array of associated interpreters
# searchable - Boolean flag to enable searching (defaults to true)
# search_term - Deprecated: Some languages may be indexed under a
# different alias. Avoid defining new exceptions.
# language_id - Integer used as a language-name-independent indexed field so that we can rename
# languages in Linguist without reindexing all the code on GitHub. Must not be
# changed for existing languages without the explicit permission of GitHub staff.
# color - CSS hex color to represent the language.
# tm_scope - The TextMate scope that represents this programming
# language. This should match one of the scopes listed in
# the grammars.yml file. Use "none" if there is no grammar
# for this language.
# group - Name of the parent language. Languages in a group are counted
# in the statistics as the parent language.
#
# Any additions or modifications (even trivial) should have corresponding
# test changes in `test/test_blob.rb`.
#
# Please keep this list alphabetized. Capitalization comes before lowercase.
EOF
generated = true if ARGV[0] == "--force"
update = true if ARGV[0] == "--update"
if generated
puts "You're regenerating all of the language_id attributes for all Linguist "
puts "languages defined in languages.yml. This is almost certainly NOT what"
puts "you meant to do!"
language_index = 0
languages = YAML.load(File.read("lib/linguist/languages.yml"))
languages.each do |name, vals|
vals.merge!('language_id' => language_index)
language_index += 1
end
File.write("lib/linguist/languages.yml", header + YAML.dump(languages))
elsif update
puts "Adding new language_id attributes to languages.yml that don't have one set"
languages = YAML.load(File.read("lib/linguist/languages.yml"))
# First grab the maximum language_id
language_ids = []
languages.each { |name, vals| language_ids << vals['language_id'] if vals.has_key?('language_id')}
max_language_id = language_ids.max
puts "Current maximum language_id is #{max_language_id}"
missing_count = 0
language_index = max_language_id
languages.each do |name, vals|
unless vals.has_key?('language_id')
language_index += 1
missing_count += 1
vals.merge!('language_id' => language_index)
end
end
File.write("lib/linguist/languages.yml", header + YAML.dump(languages))
puts "Updated language_id attributes for #{missing_count} languages"
else
puts "Whatever you want me to do, I can't figure it out. Giving up..."
end

3
test/fixtures/Data/Modelines/iamjs.pl vendored Normal file
View File

@@ -0,0 +1,3 @@
# vim: noexpandtab: ft=javascript
"It's JavaScript, baby";

View File

@@ -0,0 +1,4 @@
# vim:noexpandtab titlestring=hi\|there\\\ ft=perl ts=4
# vim:noexpandtab titlestring=hi|there\\ ft=javascript ts=4
"Still JavaScript, bruh";

3
test/fixtures/Data/Modelines/ruby10 vendored Normal file
View File

@@ -0,0 +1,3 @@
ex: noexpandtab: ft=ruby
# Still Ruby

3
test/fixtures/Data/Modelines/ruby11 vendored Normal file
View File

@@ -0,0 +1,3 @@
# vim600: ft=ruby
# Targets Vim 6.0 or later

3
test/fixtures/Data/Modelines/ruby12 vendored Normal file
View File

@@ -0,0 +1,3 @@
vim<520: ft=ruby
# Targets Vim 5.20 and earlier

View File

@@ -0,0 +1,3 @@
// -*- foo-bar mode: c++ -*-
"Malformed modeline, but still understood by Emacs to be C++."

View File

@@ -0,0 +1 @@
/* -*- mode: c++ -------*- */

View File

@@ -0,0 +1 @@
-*--------- foo:bar mode: c++ -*-

View File

@@ -35,3 +35,11 @@ def sample_blob_memory(name)
content = File.read(filepath)
Linguist::Blob.new(name, content)
end
def silence_warnings
original_verbosity = $VERBOSE
$VERBOSE = nil
yield
ensure
$VERBOSE = original_verbosity
end

Some files were not shown because too many files have changed in this diff Show More