mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Compare commits
118 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ea1ff2736 | ||
|
|
a1901fceff | ||
|
|
b4035a3804 | ||
|
|
fc67fc525c | ||
|
|
f0659d3aa5 | ||
|
|
a7a123a8db | ||
|
|
0e5327a77a | ||
|
|
ecd4ae3bda | ||
|
|
7a8bd628e1 | ||
|
|
8e19aea39e | ||
|
|
6fcba83f3e | ||
|
|
d6d7d38eb8 | ||
|
|
c8094d3775 | ||
|
|
de478d2f2d | ||
|
|
991dcef18b | ||
|
|
f30e9270f1 | ||
|
|
1d7ba18b15 | ||
|
|
35a06d6cb8 | ||
|
|
4cf7feb275 | ||
|
|
30298a9ef8 | ||
|
|
cc5f1c57ca | ||
|
|
697380336c | ||
|
|
5fd8d71858 | ||
|
|
5bc88814e2 | ||
|
|
00efd6a463 | ||
|
|
81ca6e7766 | ||
|
|
cd288a8ee4 | ||
|
|
a8d84f3d55 | ||
|
|
600115afed | ||
|
|
e57273c839 | ||
|
|
65491d460e | ||
|
|
8dc4a1308f | ||
|
|
6841b4d259 | ||
|
|
a53423b6e0 | ||
|
|
02f3ba1840 | ||
|
|
e1216ea4ee | ||
|
|
a3227c2c27 | ||
|
|
9f1c950a1f | ||
|
|
c7a0d7b83d | ||
|
|
53c9b2b435 | ||
|
|
b4a77abd82 | ||
|
|
8a622823b0 | ||
|
|
3310d925b6 | ||
|
|
65201b322a | ||
|
|
b71bf19e37 | ||
|
|
1f43664a51 | ||
|
|
7cda13afcb | ||
|
|
e0d890240b | ||
|
|
abf7bee464 | ||
|
|
e73a4ecd0e | ||
|
|
70779c9986 | ||
|
|
1fc4c9fdc6 | ||
|
|
fdec52c89a | ||
|
|
6e40de47da | ||
|
|
28be72892e | ||
|
|
6df0e4591d | ||
|
|
879c63a25e | ||
|
|
ab2e640759 | ||
|
|
5e4e38b39a | ||
|
|
22d4865c52 | ||
|
|
dad3191238 | ||
|
|
35a13b3633 | ||
|
|
56fb48ea96 | ||
|
|
983ff20d3c | ||
|
|
2d51a5dba4 | ||
|
|
df98c86acd | ||
|
|
98118eb70b | ||
|
|
1ec84da277 | ||
|
|
3112e6deda | ||
|
|
04e1cc6d0a | ||
|
|
dd7b125869 | ||
|
|
426818120c | ||
|
|
50bd2cc3c8 | ||
|
|
e930ee1a8e | ||
|
|
5ddccaac83 | ||
|
|
51d7c8f905 | ||
|
|
ed71855612 | ||
|
|
742faebd8b | ||
|
|
6763b73d9c | ||
|
|
5c3744dfd6 | ||
|
|
cb5bc91fe3 | ||
|
|
9171ee602b | ||
|
|
4da0463768 | ||
|
|
8d0a2d9dc1 | ||
|
|
6a2cebea7d | ||
|
|
ae10395b3a | ||
|
|
510abc7cee | ||
|
|
e8a700e4e3 | ||
|
|
c13e384e18 | ||
|
|
4204078b19 | ||
|
|
17fc3d0640 | ||
|
|
7715254212 | ||
|
|
2f50aa460a | ||
|
|
6adec161fa | ||
|
|
c802ba3a1d | ||
|
|
06e80f3889 | ||
|
|
216d63f575 | ||
|
|
ff042a87a4 | ||
|
|
56f0f93bbb | ||
|
|
99a3a5b85b | ||
|
|
1868d1d190 | ||
|
|
705e234044 | ||
|
|
0dd78704f7 | ||
|
|
257425141d | ||
|
|
6482a60c6e | ||
|
|
1466b70f10 | ||
|
|
b87146056b | ||
|
|
b29696d684 | ||
|
|
514a8d54db | ||
|
|
abfe89d8ff | ||
|
|
22609dc297 | ||
|
|
93341be396 | ||
|
|
f2ae3b6223 | ||
|
|
e84204a274 | ||
|
|
7024c7cb37 | ||
|
|
91e0823b04 | ||
|
|
adaf4011bc | ||
|
|
4a031107ac |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
/Gemfile.lock
|
||||
.bundle/
|
||||
.idea
|
||||
benchmark/
|
||||
lib/linguist/samples.json
|
||||
/grammars
|
||||
|
||||
76
.gitmodules
vendored
76
.gitmodules
vendored
@@ -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
|
||||
@@ -283,9 +280,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 +412,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 +559,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 +602,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 +666,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 +746,48 @@ 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
|
||||
|
||||
@@ -28,11 +28,12 @@ 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 a grammar for your language. Please only add grammars that have [one of these licenses](https://github.com/github/linguist/blob/257425141d4e2a5232786bf0b13c901ada075f93/vendor/licenses/config.yml#L2-L11).
|
||||
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 samples for your language to the [samples directory][samples] in the correct subdirectory.
|
||||
0. Add a `language_id` for your language. See `script/set-language-ids` for more information. **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:
|
||||
@@ -84,7 +85,7 @@ Linguist is maintained with :heart: by:
|
||||
- @arfon (GitHub Staff)
|
||||
- @larsbrinkhoff
|
||||
- @pchaigno
|
||||
|
||||
|
||||
As Linguist is a production dependency for GitHub we have a couple of workflow restrictions:
|
||||
|
||||
- Anyone with commit rights can merge Pull Requests provided that there is a :+1: from a GitHub member of staff
|
||||
|
||||
@@ -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
|
||||
|
||||
176
grammars.yml
176
grammars.yml
@@ -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
|
||||
@@ -62,7 +50,7 @@ vendor/grammars/LiveScript.tmbundle:
|
||||
vendor/grammars/MagicPython:
|
||||
- source.python
|
||||
- source.regexp.python
|
||||
vendor/grammars/Modelica/:
|
||||
vendor/grammars/Modelica:
|
||||
- source.modelica
|
||||
vendor/grammars/NSIS:
|
||||
- source.nsis
|
||||
@@ -72,7 +60,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 +75,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 +88,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 +103,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
|
||||
@@ -163,36 +149,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 +190,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 +217,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 +241,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 +261,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 +284,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 +296,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 +326,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,10 +354,21 @@ 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:
|
||||
@@ -372,10 +377,10 @@ vendor/grammars/language-javascript:
|
||||
- source.js
|
||||
- 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 +395,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 +412,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 +421,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 +455,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 +489,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 +506,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 +543,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 +560,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 +570,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 +584,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 +616,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 +637,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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.
|
||||
#
|
||||
@@ -284,11 +300,15 @@ module Linguist
|
||||
end
|
||||
|
||||
@ace_mode = attributes[:ace_mode]
|
||||
@codemirror_mode = attributes[:codemirror_mode]
|
||||
@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 +371,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 +398,17 @@ module Linguist
|
||||
# Returns a String name or nil
|
||||
attr_reader :ace_mode
|
||||
|
||||
# Public: Get Codemirror mode
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# # => "nil"
|
||||
# # => "javascript"
|
||||
# # => "clike"
|
||||
#
|
||||
# Returns a String name or nil
|
||||
attr_reader :codemirror_mode
|
||||
|
||||
# Public: Should language lines be wrapped
|
||||
#
|
||||
# Returns true or false
|
||||
@@ -543,10 +585,12 @@ module Linguist
|
||||
:aliases => options['aliases'],
|
||||
:tm_scope => options['tm_scope'],
|
||||
:ace_mode => options['ace_mode'],
|
||||
:codemirror_mode => options['codemirror_mode'],
|
||||
: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
@@ -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
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module Linguist
|
||||
VERSION = "4.8.8"
|
||||
VERSION = "4.8.14"
|
||||
end
|
||||
|
||||
@@ -0,0 +1,265 @@
|
||||
&НаСервереБезКонтекста
|
||||
Функция ПолучитьКонтактноеЛицоПоЭлектроннойПочте(ЭлектроннаяПочта)
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ ЭлектроннаяПочта = &ЭлектроннаяПочта";
|
||||
Запрос.Параметры.Вставить("ЭлектроннаяПочта", СокрЛП(ЭлектроннаяПочта));
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
КонтактноеЛицо = "";
|
||||
Если Выборка.Следующий() Тогда
|
||||
КонтактноеЛицо = Выборка.КонтактноеЛицо;
|
||||
КонецЕсли;
|
||||
Возврат КонтактноеЛицо;
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ПолучитьКонтактноеЛицоПоПолучателю(Получатель)
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ Ссылка = &Получатель";
|
||||
Запрос.Параметры.Вставить("Получатель", Получатель);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
КонтактноеЛицо = "";
|
||||
Если Выборка.Следующий() Тогда
|
||||
КонтактноеЛицо = Выборка.КонтактноеЛицо;
|
||||
КонецЕсли;
|
||||
Возврат КонтактноеЛицо;
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Процедура ДобавитьПолучателей(Получатель, Получатели)
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "ВЫБРАТЬ ЭлектроннаяПочта ИЗ Справочник.Контрагенты ГДЕ Ссылка ";
|
||||
Если ТипЗнч(Получатели) = Тип("Массив") Тогда
|
||||
Запрос.Текст = Запрос.Текст + "В (&Получатели)";
|
||||
Иначе
|
||||
Запрос.Текст = Запрос.Текст + "= &Получатели";
|
||||
КонецЕсли;
|
||||
Запрос.Параметры.Вставить("Получатели", Получатели);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
Если Получатель <> "" Тогда
|
||||
Получатель = Получатель + "; ";
|
||||
КонецЕсли;
|
||||
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
Если Параметры.Ключ.Пустая() Тогда
|
||||
Заголовок = "Исходящее письмо (Создание)";
|
||||
Объект.Дата = ТекущаяДата();
|
||||
ПоШаблону = Параметры.Свойство("ПоШаблону");
|
||||
ВходящееПисьмо = Параметры.ВходящееПисьмо;
|
||||
Если ПоШаблону = Истина Тогда
|
||||
Элементы.ЗаполнитьПоШаблону.Видимость = Истина;
|
||||
РаботаСПочтой.ЗаполнитьПисьмоПоШаблону(Объект, Содержимое);
|
||||
ИначеЕсли Не ВходящееПисьмо.Пустая() Тогда
|
||||
РаботаСПочтой.ЗаполнитьОтветНаПисьмо(ВходящееПисьмо, Объект, Содержимое);
|
||||
КонецЕсли;
|
||||
Адресаты = Параметры.Адресаты;
|
||||
Если Адресаты <> Неопределено Тогда
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "ВЫБРАТЬ
|
||||
| Контрагенты.ЭлектроннаяПочта
|
||||
|ИЗ
|
||||
| Справочник.Контрагенты КАК Контрагенты
|
||||
|ГДЕ
|
||||
| Контрагенты.Ссылка В(&Адресаты)
|
||||
| И Контрагенты.ЭлектроннаяПочта <> """"";
|
||||
Запрос.УстановитьПараметр("Адресаты", Адресаты);
|
||||
Получатель = "";
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
Если Получатель <> "" Тогда
|
||||
Получатель = Получатель + "; ";
|
||||
КонецЕсли;
|
||||
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
|
||||
КонецЦикла;
|
||||
Объект.Получатель = Получатель;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
|
||||
Содержимое = ТекущийОбъект.Содержимое.Получить();
|
||||
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
|
||||
Если РаботаСПочтой.ПисьмоОтправлено(ТекущийОбъект.Ссылка) Тогда
|
||||
Заголовок = Заголовок + " - Отправлено";
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
|
||||
ТекущийОбъект.Содержимое = Новый ХранилищеЗначения(Содержимое, Новый СжатиеДанных());
|
||||
ТекущийОбъект.Текст = Содержимое.ПолучитьТекст();
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Функция ОтправитьПисьмо(Ошибка)
|
||||
Если Не Записать() Тогда
|
||||
Ошибка = "ОшибкаЗаписи";
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
Если Не РаботаСПочтой.ОтправитьПисьмо(Объект.Ссылка) Тогда
|
||||
Ошибка = "ОшибкаОтправки";
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
Заголовок = Заголовок + " - Отправлено";
|
||||
Возврат Истина;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ОтправитьПисьмоКлиент()
|
||||
Ошибка = "";
|
||||
Если Не ОтправитьПисьмо(Ошибка) Тогда
|
||||
Если Ошибка = "ОшибкаОтправки" Тогда
|
||||
Кнопки = Новый СписокЗначений;
|
||||
Кнопки.Добавить(1, "Настроить почту");
|
||||
Кнопки.Добавить(2, "Закрыть");
|
||||
|
||||
Оп = Новый ОписаниеОповещения(
|
||||
"ОтправитьПисьмоКлиентВопросЗавершение",
|
||||
ЭтотОбъект);
|
||||
ПоказатьВопрос(Оп,
|
||||
"Не указаны настройки интернет почты!",
|
||||
Кнопки, , 1);
|
||||
КонецЕсли;
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.Ссылка);
|
||||
ПоказатьОповещениеПользователя("Письмо отправлено", НавигационнаяСсылка, Объект.Наименование);
|
||||
ОповеститьОбИзменении(Объект.Ссылка);
|
||||
Возврат Истина;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОтправитьПисьмоКлиентВопросЗавершение(Результат, Параметры) Экспорт
|
||||
Если Результат = 1 Тогда
|
||||
ОткрытьФорму("ОбщаяФорма.НастройкаПочты");
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура Отправить(Команда)
|
||||
ОтправитьПисьмоКлиент();
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОтправитьИЗакрыть(Команда)
|
||||
Если Не ОтправитьПисьмоКлиент() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Закрыть();
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВставитьСтрокуВТекущуюПозицию(Поле, Документ, Строка)
|
||||
Перем Начало, Конец;
|
||||
Поле.ПолучитьГраницыВыделения(Начало, Конец);
|
||||
Позиция = Документ.ПолучитьПозициюПоЗакладке(Начало);
|
||||
Документ.Удалить(Начало, Конец);
|
||||
Начало = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
|
||||
Документ.Вставить(Начало, Строка);
|
||||
Позиция = Позиция + СтрДлина(Строка);
|
||||
Закладка = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
|
||||
Поле.УстановитьГраницыВыделения(Закладка, Закладка);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВставитьКонтактноеЛицо(Команда)
|
||||
Если Объект.Контрагент.Пустая() Тогда
|
||||
Сообщить("Выберите контрагента");
|
||||
Иначе
|
||||
КонтактноеЛицо = ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент);
|
||||
ВставитьСтрокуВТекущуюПозицию(Элементы.Содержимое, Содержимое, КонтактноеЛицо + " ");
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
|
||||
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура КонтрагентПриИзменении(Элемент)
|
||||
ДобавитьПолучателей(Объект.Получатель, Объект.Контрагент);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыделитьВажное(Команда)
|
||||
Перем Начало, Конец;
|
||||
ВсеВажное = Истина;
|
||||
Элементы.Содержимое.ПолучитьГраницыВыделения(Начало, Конец);
|
||||
Если Начало = Конец Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НаборТекстовыхЭлементов = Новый Массив();
|
||||
Для Каждого ТекстовыйЭлемент Из Содержимое.СформироватьЭлементы(Начало, Конец) Цикл
|
||||
Если Тип(ТекстовыйЭлемент) = Тип("ТекстФорматированногоДокумента") Тогда
|
||||
НаборТекстовыхЭлементов.Добавить(ТекстовыйЭлемент);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
|
||||
Если ТекстовыйЭлемент.Шрифт.Жирный <> Истина И
|
||||
ТекстовыйЭлемент.ЦветТекста <> Новый Цвет(255, 0, 0) Тогда
|
||||
ВсеВажное = Ложь;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
|
||||
ТекстовыйЭлемент.Шрифт = Новый Шрифт(ТекстовыйЭлемент.Шрифт, , , Не ВсеВажное);
|
||||
ТекстовыйЭлемент.ЦветТекста = Новый Цвет(?(ВсеВажное, 0, 255), 0, 0);
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗаполнитьПоШаблону(Команда)
|
||||
Если Объект.Контрагент.Пустая() Тогда
|
||||
Сообщить("Выберите контрагента");
|
||||
Иначе
|
||||
НайтиИЗаменить("[Контрагент]", Объект.Контрагент);
|
||||
НайтиИЗаменить("[КонтактноеЛицо]", ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент));
|
||||
КонецЕсли;
|
||||
НайтиИЗаменить("[ДатаПисьма]", Объект.Дата);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура НайтиИЗаменить(СтрокаДляПоиска, СтрокаДляЗамены)
|
||||
Перем ВставленныйТекст, ШрифтОформления, ЦветТекстаОформления, ЦветФонаОформления, НавигационнаяСсылкаОформления;
|
||||
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска);
|
||||
Пока ((РезультатПоиска <> Неопределено) И (РезультатПоиска.ЗакладкаНачала <> Неопределено) И (РезультатПоиска.ЗакладкаКонца <> Неопределено)) Цикл
|
||||
ПозицияНачалаСледующегоЦиклаПоиска = Содержимое.ПолучитьПозициюПоЗакладке(РезультатПоиска.ЗакладкаНачала) + СтрДлина(СтрокаДляЗамены);
|
||||
МассивЭлементовДляОформления = Содержимое.ПолучитьЭлементы(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
|
||||
Для Каждого ЭлементДляОформления Из МассивЭлементовДляОформления Цикл
|
||||
Если Тип(ЭлементДляОформления) = Тип("ТекстФорматированногоДокумента") Тогда
|
||||
ШрифтОформления = ЭлементДляОформления.Шрифт;
|
||||
ЦветТекстаОформления = ЭлементДляОформления.ЦветТекста;
|
||||
ЦветФонаОформления = ЭлементДляОформления.ЦветФона;
|
||||
НавигационнаяСсылкаОформления = ЭлементДляОформления.НавигационнаяССылка;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Содержимое.Удалить(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
|
||||
ВставленныйТекст = Содержимое.Вставить(РезультатПоиска.ЗакладкаНачала, СтрокаДляЗамены);
|
||||
Если ВставленныйТекст <> Неопределено И ШрифтОформления <> Неопределено Тогда
|
||||
ВставленныйТекст.Шрифт = ШрифтОформления;
|
||||
КонецЕсли;
|
||||
Если ВставленныйТекст <> Неопределено И ЦветТекстаОформления <> Неопределено Тогда
|
||||
ВставленныйТекст.ЦветТекста = ЦветТекстаОформления;
|
||||
КонецЕсли;
|
||||
Если ВставленныйТекст <> Неопределено И ЦветФонаОформления <> Неопределено Тогда
|
||||
ВставленныйТекст.ЦветФона = ЦветФонаОформления;
|
||||
КонецЕсли;
|
||||
Если ВставленныйТекст <> Неопределено И НавигационнаяСсылкаОформления <> Неопределено Тогда
|
||||
ВставленныйТекст.НавигационнаяССылка = НавигационнаяСсылкаОформления;
|
||||
КонецЕсли;
|
||||
|
||||
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска, Содержимое.ПолучитьЗакладкуПоПозиции(ПозицияНачалаСледующегоЦиклаПоиска));
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
&НаСервере
|
||||
Функция ПечатнаяФорма(ПараметрКоманды)
|
||||
ТабличныйДокумент = Новый ТабличныйДокумент;
|
||||
ТабличныйДокумент.ОтображатьСетку = Истина;
|
||||
ТабличныйДокумент.ОтображатьЗаголовки = Истина;
|
||||
|
||||
Сформирован = Ложь;
|
||||
ТабМакет = Справочники.Товары.ПолучитьМакет("МакетПрайсЛиста");
|
||||
|
||||
Шапка = ТабМакет.ПолучитьОбласть("Шапка");
|
||||
ТабличныйДокумент.Вывести(Шапка);
|
||||
|
||||
ОбластьНоменклатура = ТабМакет.ПолучитьОбласть("ОбластьНоменклатура");
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "ВЫБРАТЬ
|
||||
| Товары.Код КАК Код,
|
||||
| Товары.Наименование КАК Наименование,
|
||||
| Товары.Артикул КАК Артикул,
|
||||
| Товары.ФайлКартинки КАК Картинка,
|
||||
| Товары.Описание КАК Описание,
|
||||
| Товары.Вид КАК Вид,
|
||||
| ЦеныТоваров.Цена КАК Цена
|
||||
|ИЗ
|
||||
| РегистрСведений.ЦеныТоваров КАК ЦеныТоваров
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары
|
||||
| ПО ЦеныТоваров.Товар = Товары.Ссылка
|
||||
|ГДЕ
|
||||
| Товары.ЭтоГруппа = ЛОЖЬ
|
||||
| И ЦеныТоваров.ВидЦен = &ВидЦен
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| Вид,
|
||||
| Товары.Родитель.Код,
|
||||
| Код";
|
||||
|
||||
Запрос.УстановитьПараметр("ВидЦен", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"));
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
ОбластьНоменклатура.Параметры.Заполнить(Выборка);
|
||||
|
||||
Описание = "";
|
||||
|
||||
Чтение = Новый ЧтениеHTML();
|
||||
Чтение.УстановитьСтроку(Выборка.Описание);
|
||||
|
||||
ДокDOM = Новый ПостроительDOM();
|
||||
HTML = ДокDOM.Прочитать(Чтение);
|
||||
|
||||
Если Не HTML.ЭлементДокумента = Неопределено Тогда
|
||||
Для Каждого Узел из HTML.ЭлементДокумента.ДочерниеУзлы Цикл
|
||||
Если Узел.ИмяУзла = "body" Тогда
|
||||
Для Каждого ЭлементОписания из Узел.ДочерниеУзлы Цикл
|
||||
Описание = Описание + ЭлементОписания.ТекстовоеСодержимое;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
ОбластьНоменклатура.Параметры.Описание = Описание;
|
||||
|
||||
Если (Выборка.Картинка <> Null) Тогда
|
||||
ОбластьНоменклатура.Параметры.ПараметрКартинки = Новый Картинка(Выборка.Картинка.ДанныеФайла.Получить());
|
||||
КонецЕсли;
|
||||
|
||||
ТабличныйДокумент.Вывести(ОбластьНоменклатура, Выборка.Уровень());
|
||||
Сформирован = Истина;
|
||||
КонецЦикла;
|
||||
|
||||
Если Сформирован Тогда
|
||||
Возврат ТабличныйДокумент;
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
|
||||
ТабличныйДокумент = ПечатнаяФорма(ПараметрКоманды);
|
||||
|
||||
Если ТабличныйДокумент <> Неопределено Тогда
|
||||
ТабличныйДокумент.Показать();
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -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.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
302
samples/1C Enterprise/Document.РасходТовара.ObjectModule.bsl
Normal file
302
samples/1C Enterprise/Document.РасходТовара.ObjectModule.bsl
Normal 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 Тогда
|
||||
|
||||
// Создадим запрос, чтобы получать информацию об товарах
|
||||
Запрос = Новый Запрос("ВЫБРАТЬ
|
||||
| Количество(*) КАК Количество
|
||||
|ИЗ
|
||||
| Справочник.Товары КАК Товары
|
||||
|ГДЕ
|
||||
| Товары.Ссылка В (&ТоварыВДокументе)
|
||||
| И Товары.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)");
|
||||
|
||||
20
samples/1C Enterprise/ci_before_script.os
Normal file
20
samples/1C Enterprise/ci_before_script.os
Normal file
@@ -0,0 +1,20 @@
|
||||
Каталог = ОбъединитьПути(ТекущийКаталог(), "libs\oscript-library\src");
|
||||
Загрузчик_Оригинал_ИмяФайла = ОбъединитьПути(Каталог, "package-loader.os");
|
||||
|
||||
Файлы = НайтиФайлы(Каталог, , Ложь);
|
||||
Для Каждого ВыбФайл Из Файлы Цикл
|
||||
|
||||
Если ВыбФайл.ЭтоФайл() Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Загрузчик_ИмяФайла = ОбъединитьПути(ВыбФайл.ПолноеИмя, "package-loader.os");
|
||||
Загрузчик_Файл = Новый Файл(Загрузчик_ИмяФайла);
|
||||
|
||||
Если Загрузчик_Файл.Существует() Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КопироватьФайл(Загрузчик_Оригинал_ИмяФайла, Загрузчик_ИмяФайла);
|
||||
|
||||
КонецЦикла;
|
||||
42
samples/1C Enterprise/test_canCompile.os
Normal file
42
samples/1C Enterprise/test_canCompile.os
Normal 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
33
samples/ASN.1/example.asn
Normal 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
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
184
samples/DTrace/trace_futexes.d
Normal file
184
samples/DTrace/trace_futexes.d
Normal 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);
|
||||
}
|
||||
6
samples/Emacs Lisp/filenames/.abbrev_defs
Normal file
6
samples/Emacs Lisp/filenames/.abbrev_defs
Normal 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)))
|
||||
20
samples/Emacs Lisp/filenames/.gnus
Normal file
20
samples/Emacs Lisp/filenames/.gnus
Normal 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")
|
||||
197
samples/Emacs Lisp/filenames/.spacemacs
Normal file
197
samples/Emacs Lisp/filenames/.spacemacs
Normal 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.
|
||||
)
|
||||
10
samples/Emacs Lisp/filenames/.viper
Normal file
10
samples/Emacs Lisp/filenames/.viper
Normal 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))
|
||||
34
samples/Emacs Lisp/filenames/Project.ede
Normal file
34
samples/Emacs Lisp/filenames/Project.ede
Normal 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
|
||||
)
|
||||
70
samples/Emacs Lisp/filenames/_emacs
Normal file
70
samples/Emacs Lisp/filenames/_emacs
Normal 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.
|
||||
)
|
||||
8
samples/Emacs Lisp/filenames/abbrev_defs
Normal file
8
samples/Emacs Lisp/filenames/abbrev_defs
Normal 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")))
|
||||
6
samples/FORTRAN/bug-185631.f
Normal file
6
samples/FORTRAN/bug-185631.f
Normal 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
|
||||
51
samples/Filebench WML/copyfiles.f
Normal file
51
samples/Filebench WML/copyfiles.f
Normal 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
215
samples/Groff/an-ext.tmac
Normal 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
35
samples/Groff/refs.rno
Normal 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
|
||||
42
samples/PowerBuilder/TestPBT.pbt
Normal file
42
samples/PowerBuilder/TestPBT.pbt
Normal 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;
|
||||
174
samples/PowerBuilder/ginpix7.sra
Normal file
174
samples/PowerBuilder/ginpix7.sra
Normal 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
|
||||
|
||||
32
samples/PowerBuilder/myproject.pbt
Normal file
32
samples/PowerBuilder/myproject.pbt
Normal 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";
|
||||
765
samples/PowerBuilder/n_cst_buttonlistbar_gradient.sru
Normal file
765
samples/PowerBuilder/n_cst_buttonlistbar_gradient.sru
Normal 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
|
||||
|
||||
46
samples/PowerBuilder/part1.srw
Normal file
46
samples/PowerBuilder/part1.srw
Normal 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
|
||||
399
samples/PowerBuilder/w_export.srw
Normal file
399
samples/PowerBuilder/w_export.srw
Normal 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
|
||||
|
||||
22
samples/Python/spec.linux.spec
Normal file
22
samples/Python/spec.linux.spec
Normal 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')
|
||||
174
samples/REXX/BatchRemapBrushes.pprx
Normal file
174
samples/REXX/BatchRemapBrushes.pprx
Normal 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
|
||||
135
samples/REXX/ShapesInfo.rexx
Normal file
135
samples/REXX/ShapesInfo.rexx
Normal 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
|
||||
54
samples/REXX/SkrivShape.rexx
Normal file
54
samples/REXX/SkrivShape.rexx
Normal 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
106
samples/REXX/ag2xml.rexx
Normal 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'&'suffix
|
||||
och=index(inrad,';',och)
|
||||
end
|
||||
end
|
||||
do while index(inrad,'<')>0
|
||||
parse var inrad prefix '<' suffix
|
||||
inrad = prefix'<'suffix
|
||||
end
|
||||
do while index(inrad,'>')>0
|
||||
parse var inrad prefix '>' suffix
|
||||
inrad = prefix'>'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
|
||||
673
samples/RPM Spec/apache.spec
Normal file
673
samples/RPM Spec/apache.spec
Normal 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.
|
||||
62
samples/RPM Spec/erlang-erlydtl.spec
Normal file
62
samples/RPM Spec/erlang-erlydtl.spec
Normal 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
|
||||
46
samples/RPM Spec/manos.spec
Normal file
46
samples/RPM Spec/manos.spec
Normal 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
1467
samples/RUNOFF/VMS_ZIP.RNH
Normal file
File diff suppressed because it is too large
Load Diff
324
samples/RUNOFF/contributing.rnh
Normal file
324
samples/RUNOFF/contributing.rnh
Normal 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
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
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
44
samples/Ruby/any.spec
Normal 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
|
||||
207
samples/XML/HITSP_C32.sch
Normal file
207
samples/XML/HITSP_C32.sch
Normal 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>
|
||||
84
samples/XML/namespace-strict.sch
Normal file
84
samples/XML/namespace-strict.sch
Normal 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
151
samples/XML/oasis-table.sch
Normal 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())]) >
|
||||
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]) > 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 < $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] > (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(.) > 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()] > $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()] > $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 >= 0) and (@charoff <= 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>
|
||||
@@ -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
|
||||
|
||||
82
script/set-language-ids
Executable file
82
script/set-language-ids
Executable 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
3
test/fixtures/Data/Modelines/iamjs.pl
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# vim: noexpandtab: ft=javascript
|
||||
|
||||
"It's JavaScript, baby";
|
||||
4
test/fixtures/Data/Modelines/iamjs2.pl
vendored
Normal file
4
test/fixtures/Data/Modelines/iamjs2.pl
vendored
Normal 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
3
test/fixtures/Data/Modelines/ruby10
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
ex: noexpandtab: ft=ruby
|
||||
|
||||
# Still Ruby
|
||||
3
test/fixtures/Data/Modelines/ruby11
vendored
Normal file
3
test/fixtures/Data/Modelines/ruby11
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# vim600: ft=ruby
|
||||
|
||||
# Targets Vim 6.0 or later
|
||||
3
test/fixtures/Data/Modelines/ruby12
vendored
Normal file
3
test/fixtures/Data/Modelines/ruby12
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
vim<520: ft=ruby
|
||||
|
||||
# Targets Vim 5.20 and earlier
|
||||
3
test/fixtures/Data/Modelines/seeplusplusEmacs10
vendored
Normal file
3
test/fixtures/Data/Modelines/seeplusplusEmacs10
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// -*- foo-bar mode: c++ -*-
|
||||
|
||||
"Malformed modeline, but still understood by Emacs to be C++."
|
||||
1
test/fixtures/Data/Modelines/seeplusplusEmacs11
vendored
Normal file
1
test/fixtures/Data/Modelines/seeplusplusEmacs11
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/* -*- mode: c++ -------*- */
|
||||
1
test/fixtures/Data/Modelines/seeplusplusEmacs12
vendored
Normal file
1
test/fixtures/Data/Modelines/seeplusplusEmacs12
vendored
Normal file
@@ -0,0 +1 @@
|
||||
-*--------- foo:bar mode: c++ -*-
|
||||
@@ -5,8 +5,11 @@ class TestGrammars < Minitest::Test
|
||||
|
||||
# List of projects that are allowed without licenses
|
||||
PROJECT_WHITELIST = [
|
||||
# Dual MIT and GPL license
|
||||
"vendor/grammars/factor",
|
||||
"vendor/grammars/go-tmbundle",
|
||||
"vendor/grammars/jflex.tmbundle",
|
||||
"vendor/grammars/language-csharp",
|
||||
"vendor/grammars/language-viml",
|
||||
"vendor/grammars/sublimeassembly"
|
||||
].freeze
|
||||
|
||||
|
||||
@@ -122,9 +122,12 @@ class TestHeuristcs < Minitest::Test
|
||||
})
|
||||
end
|
||||
|
||||
# Candidate languages = ["Assembly", "C++", "HTML", "PAWN", "PHP",
|
||||
# "POV-Ray SDL", "Pascal", "SQL", "SourcePawn"]
|
||||
def test_inc_by_heuristics
|
||||
assert_heuristics({
|
||||
"PHP" => all_fixtures("PHP", "*.inc")
|
||||
"PHP" => all_fixtures("PHP", "*.inc"),
|
||||
"POV-Ray SDL" => all_fixtures("POV-Ray SDL", "*.inc")
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
@@ -67,6 +67,22 @@ class TestLanguage < Minitest::Test
|
||||
assert_nil Language.find_by_alias(nil)
|
||||
end
|
||||
|
||||
# Note these are set by script/set-language-ids. If these tests fail then someone
|
||||
# has changed the language_id fields set in languages.yml which is almost certainly
|
||||
# not what you want to happen (these fields are used in GitHub's search indexes)
|
||||
def test_language_ids
|
||||
assert_equal 4, Language['ANTLR'].language_id
|
||||
assert_equal 54, Language['Ceylon'].language_id
|
||||
assert_equal 326, Language['Ruby'].language_id
|
||||
assert_equal 421, Language['xBase'].language_id
|
||||
end
|
||||
|
||||
def test_find_by_id
|
||||
assert_equal Language['Elixir'], Language.find_by_id(100)
|
||||
assert_equal Language['Ruby'], Language.find_by_id(326)
|
||||
assert_equal Language['xBase'], Language.find_by_id(421)
|
||||
end
|
||||
|
||||
def test_groups
|
||||
# Test a couple identity cases
|
||||
assert_equal Language['Perl'], Language['Perl'].group
|
||||
@@ -333,6 +349,10 @@ class TestLanguage < Minitest::Test
|
||||
assert Language.ace_modes.include?(Language['FORTRAN'])
|
||||
end
|
||||
|
||||
def test_codemirror_mode
|
||||
assert_equal 'clike', Language['C++'].codemirror_mode
|
||||
end
|
||||
|
||||
def test_wrap
|
||||
assert_equal false, Language['C'].wrap
|
||||
assert_equal true, Language['Markdown'].wrap
|
||||
@@ -386,6 +406,22 @@ class TestLanguage < Minitest::Test
|
||||
assert missing.empty?, message
|
||||
end
|
||||
|
||||
def test_all_languages_have_a_language_id_set
|
||||
missing = Language.all.select { |language| language.language_id.nil? }
|
||||
|
||||
message = "The following languages do not have a language_id listed in languages.yml. Please add language_id fields for all new languages.\n"
|
||||
missing.each { |language| message << "#{language.name}\n" }
|
||||
assert missing.empty?, message
|
||||
end
|
||||
|
||||
def test_all_language_id_are_unique
|
||||
duplicates = Language.all.group_by{ |language| language.language_id }.select { |k, v| v.size > 1 }.map(&:first)
|
||||
|
||||
message = "The following language_id are used several times in languages.yml. Please use script/set-language-ids --update as per the contribution guidelines.\n"
|
||||
duplicates.each { |language_id| message << "#{language_id}\n" }
|
||||
assert duplicates.empty?, message
|
||||
end
|
||||
|
||||
def test_all_languages_have_a_valid_ace_mode
|
||||
ace_fixture_path = File.join('test', 'fixtures', 'ace_modes.json')
|
||||
skip("No ace_modes.json file") unless File.exist?(ace_fixture_path)
|
||||
|
||||
@@ -17,6 +17,9 @@ class TestModelines < Minitest::Test
|
||||
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby7")
|
||||
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby8")
|
||||
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby9")
|
||||
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby10")
|
||||
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby11")
|
||||
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby12")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplus")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs1")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs2")
|
||||
@@ -27,9 +30,14 @@ class TestModelines < Minitest::Test
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs7")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs8")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs9")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs10")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs11")
|
||||
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs12")
|
||||
assert_modeline Language["Text"], fixture_blob("Data/Modelines/fundamentalEmacs.c")
|
||||
assert_modeline Language["Prolog"], fixture_blob("Data/Modelines/not_perl.pl")
|
||||
assert_modeline Language["Smalltalk"], fixture_blob("Data/Modelines/example_smalltalk.md")
|
||||
assert_modeline Language["JavaScript"], fixture_blob("Data/Modelines/iamjs.pl")
|
||||
assert_modeline Language["JavaScript"], fixture_blob("Data/Modelines/iamjs2.pl")
|
||||
assert_modeline Language["PHP"], fixture_blob("Data/Modelines/iamphp.inc")
|
||||
assert_modeline nil, sample_blob("C/main.c")
|
||||
end
|
||||
@@ -48,9 +56,14 @@ class TestModelines < Minitest::Test
|
||||
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs7").language
|
||||
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs8").language
|
||||
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs9").language
|
||||
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs10").language
|
||||
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs11").language
|
||||
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs12").language
|
||||
assert_equal Language["Text"], fixture_blob("Data/Modelines/fundamentalEmacs.c").language
|
||||
assert_equal Language["Prolog"], fixture_blob("Data/Modelines/not_perl.pl").language
|
||||
assert_equal Language["Smalltalk"], fixture_blob("Data/Modelines/example_smalltalk.md").language
|
||||
assert_equal Language["JavaScript"], fixture_blob("Data/Modelines/iamjs.pl").language
|
||||
assert_equal Language["JavaScript"], fixture_blob("Data/Modelines/iamjs2.pl").language
|
||||
assert_equal Language["PHP"], fixture_blob("Data/Modelines/iamphp.inc").language
|
||||
end
|
||||
end
|
||||
|
||||
2
vendor/grammars/Docker.tmbundle
vendored
2
vendor/grammars/Docker.tmbundle
vendored
Submodule vendor/grammars/Docker.tmbundle updated: 08585643c0...c6230cb62c
2
vendor/grammars/Handlebars
vendored
2
vendor/grammars/Handlebars
vendored
Submodule vendor/grammars/Handlebars updated: 94ef9439d8...c07f986ae7
2
vendor/grammars/MagicPython
vendored
2
vendor/grammars/MagicPython
vendored
Submodule vendor/grammars/MagicPython updated: 820a9310f6...f4ff7de27f
2
vendor/grammars/NSIS
vendored
2
vendor/grammars/NSIS
vendored
Submodule vendor/grammars/NSIS updated: e052400204...696d06cb2b
2
vendor/grammars/NimLime
vendored
2
vendor/grammars/NimLime
vendored
Submodule vendor/grammars/NimLime updated: 5089ecab59...2f5ec25fe6
2
vendor/grammars/PHP-Twig.tmbundle
vendored
2
vendor/grammars/PHP-Twig.tmbundle
vendored
Submodule vendor/grammars/PHP-Twig.tmbundle updated: f4f7529ac2...9e802d525e
2
vendor/grammars/Sublime-Inform/.gitignore
vendored
2
vendor/grammars/Sublime-Inform/.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
|
||||
.DS_Store
|
||||
@@ -1,6 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[Book $1 - ${2:Title}
|
||||
]]></content>
|
||||
<tabTrigger>book</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,6 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[Chapter $1 - ${2:Title}
|
||||
]]></content>
|
||||
<tabTrigger>chapter</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,7 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[
|
||||
${1:DoorName} is a door. $1 is ${2:Direction} from ${3:Room}.
|
||||
]]></content>
|
||||
<tabTrigger>door</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,34 +0,0 @@
|
||||
{ "name": "Inform7",
|
||||
"scopeName": "source.Inform7",
|
||||
"fileTypes": ["i7x"],
|
||||
"patterns": [
|
||||
{ "name": "keyword.control.Inform7",
|
||||
"match": "\\b(Include|Release)\\b"
|
||||
},
|
||||
{ "name" : "comment.block.Inform7",
|
||||
"begin" : "\\[",
|
||||
"end" : "\\]",
|
||||
"comment" : "All comments in Inform7 are delimited this way."
|
||||
},
|
||||
{ "name" : "string.quoted.double.Inform7",
|
||||
"begin" : "\"",
|
||||
"end" : "\"",
|
||||
"patterns": [
|
||||
{ "name" : "keyword.operator.Inform7",
|
||||
"begin" : "\\[",
|
||||
"end" : "\\]",
|
||||
"comment" : "For logic inside of strings."
|
||||
}
|
||||
]
|
||||
},
|
||||
{ "name" : "storage.type.Inform7",
|
||||
"match" : "(Volume|Book|Chapter|Part|Section|Table)\\s+\\d?\\s+-?\\s+((?:\\w|\\s|-)*)",
|
||||
"comment": "Matches headings for major sections in Inform7"
|
||||
},
|
||||
{ "name": "constant.numeric.Inform7",
|
||||
"match": "([0-9])+",
|
||||
"comment":"Gotta call out the numbers!"
|
||||
}
|
||||
],
|
||||
"uuid": "0c4cbdee-beb7-4ea6-af56-27246d479373"
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>fileTypes</key>
|
||||
<array>
|
||||
<string>i7x</string>
|
||||
<string>inform</string>
|
||||
<string>ni</string>
|
||||
</array>
|
||||
<key>name</key>
|
||||
<string>Inform7</string>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\b(Include|Release)\b</string>
|
||||
<key>name</key>
|
||||
<string>keyword.control.Inform7</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>begin</key>
|
||||
<string>\[</string>
|
||||
<key>comment</key>
|
||||
<string>All comments in Inform7 are delimited this way.</string>
|
||||
<key>end</key>
|
||||
<string>\]</string>
|
||||
<key>name</key>
|
||||
<string>comment.block.Inform7</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>begin</key>
|
||||
<string>"</string>
|
||||
<key>end</key>
|
||||
<string>"</string>
|
||||
<key>name</key>
|
||||
<string>string.quoted.double.Inform7</string>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>begin</key>
|
||||
<string>\[</string>
|
||||
<key>comment</key>
|
||||
<string>For logic inside of strings.</string>
|
||||
<key>end</key>
|
||||
<string>\]</string>
|
||||
<key>name</key>
|
||||
<string>keyword.operator.Inform7</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>comment</key>
|
||||
<string>Matches headings for major sections in Inform7</string>
|
||||
<key>match</key>
|
||||
<string>(Volume|Book|Chapter|Part|Section|Table)\s+\d?\s+-?\s+((?:\w|\s|-)*)</string>
|
||||
<key>name</key>
|
||||
<string>storage.type.Inform7</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>comment</key>
|
||||
<string>Gotta call out the numbers!</string>
|
||||
<key>match</key>
|
||||
<string>([0-9])+</string>
|
||||
<key>name</key>
|
||||
<string>constant.numeric.Inform7</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>scopeName</key>
|
||||
<string>source.Inform7</string>
|
||||
<key>uuid</key>
|
||||
<string>0c4cbdee-beb7-4ea6-af56-27246d479373</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,8 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[
|
||||
$1 is a portable thing in ${2:Room} ${3:ShortDescription}
|
||||
The description of $1 is ${4:Description}
|
||||
]]></content>
|
||||
<tabTrigger>object</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,6 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[Part $1 - ${2:Title}
|
||||
]]></content>
|
||||
<tabTrigger>part</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,7 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[
|
||||
${1:RoomName} is a room in ${2:Region}. "${3:Description}"
|
||||
]]></content>
|
||||
<tabTrigger>room</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,11 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[
|
||||
${1:SceneName} is a Scene.
|
||||
$1 begins when $2 .
|
||||
$1 ends when $3 .
|
||||
When $1 begins: $4 .
|
||||
When $1 ends: $5 .
|
||||
]]></content>
|
||||
<tabTrigger>scene</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,6 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[Section $1 - ${2:Title}
|
||||
]]></content>
|
||||
<tabTrigger>section</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
@@ -1,6 +0,0 @@
|
||||
<snippet>
|
||||
<content><![CDATA[Volume $1 - ${2:Title}
|
||||
]]></content>
|
||||
<tabTrigger>volume</tabTrigger>
|
||||
<scope>source.Inform7</scope>
|
||||
</snippet>
|
||||
8
vendor/grammars/Sublime-Inform/README.md
vendored
8
vendor/grammars/Sublime-Inform/README.md
vendored
@@ -1,8 +0,0 @@
|
||||
#Inform7 Package for Sublime Text 2
|
||||
This package has a lot of little files that make Inform7 easier to edit in Sublime Text 2. that's why it's called what it is, you see.
|
||||
##Usage
|
||||
Grab the zip file, unzip it, and put it in your ```Packages``` Directory.
|
||||
That's pretty much it. Open an ```i7x``` file in Sublime Text 2 and it'll be all highlighted and there's a bunch of snippets you can use and all that.
|
||||
|
||||
##Want to submit a pull request for this readme file?
|
||||
Please, please do.
|
||||
2
vendor/grammars/Sublime-SQF-Language
vendored
2
vendor/grammars/Sublime-SQF-Language
vendored
Submodule vendor/grammars/Sublime-SQF-Language updated: 777931999d...984606e146
1
vendor/grammars/Sublime-VimL
vendored
1
vendor/grammars/Sublime-VimL
vendored
Submodule vendor/grammars/Sublime-VimL deleted from 4b23352ce5
2
vendor/grammars/SublimeGDB
vendored
2
vendor/grammars/SublimeGDB
vendored
Submodule vendor/grammars/SublimeGDB updated: 0afb64f273...d9a512da6e
2
vendor/grammars/TLA
vendored
2
vendor/grammars/TLA
vendored
Submodule vendor/grammars/TLA updated: 7e351a9cdf...5dc130cab3
2
vendor/grammars/applescript.tmbundle
vendored
2
vendor/grammars/applescript.tmbundle
vendored
Submodule vendor/grammars/applescript.tmbundle updated: bfb426974d...5067ef67a5
1
vendor/grammars/atom-language-1c-bsl
vendored
Submodule
1
vendor/grammars/atom-language-1c-bsl
vendored
Submodule
Submodule vendor/grammars/atom-language-1c-bsl added at 787ea4fd3a
2
vendor/grammars/atom-language-clean
vendored
2
vendor/grammars/atom-language-clean
vendored
Submodule vendor/grammars/atom-language-clean updated: a9b837801d...7dafe70ddd
2
vendor/grammars/atom-language-purescript
vendored
2
vendor/grammars/atom-language-purescript
vendored
Submodule vendor/grammars/atom-language-purescript updated: 83d188103f...fc8b0bf9da
2
vendor/grammars/atom-language-stan
vendored
2
vendor/grammars/atom-language-stan
vendored
Submodule vendor/grammars/atom-language-stan updated: 2fa2745da7...0a79d383b7
2
vendor/grammars/awk-sublime
vendored
2
vendor/grammars/awk-sublime
vendored
Submodule vendor/grammars/awk-sublime updated: 7ec7d15446...72b487a104
1
vendor/grammars/blitzmax
vendored
Submodule
1
vendor/grammars/blitzmax
vendored
Submodule
Submodule vendor/grammars/blitzmax added at 7ee210811a
2
vendor/grammars/c.tmbundle
vendored
2
vendor/grammars/c.tmbundle
vendored
Submodule vendor/grammars/c.tmbundle updated: d26c35164a...88cc9b71fa
2
vendor/grammars/css.tmbundle
vendored
2
vendor/grammars/css.tmbundle
vendored
Submodule vendor/grammars/css.tmbundle updated: 94f7111c29...d79e9c0137
1
vendor/grammars/cython
vendored
Submodule
1
vendor/grammars/cython
vendored
Submodule
Submodule vendor/grammars/cython added at a816e2c05d
2
vendor/grammars/d.tmbundle
vendored
2
vendor/grammars/d.tmbundle
vendored
Submodule vendor/grammars/d.tmbundle updated: e4beff2ce5...039c92d9f2
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user