mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
42
.gitmodules
vendored
42
.gitmodules
vendored
@@ -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
|
||||
@@ -755,3 +749,39 @@ 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
|
||||
|
||||
@@ -28,7 +28,7 @@ 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.
|
||||
|
||||
55
grammars.yml
55
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
|
||||
@@ -181,6 +167,9 @@ vendor/grammars/atom-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/:
|
||||
@@ -201,6 +190,8 @@ vendor/grammars/awk-sublime:
|
||||
- source.awk
|
||||
vendor/grammars/bison.tmbundle:
|
||||
- source.bison
|
||||
vendor/grammars/blitzmax:
|
||||
- source.blitzmax
|
||||
vendor/grammars/boo/:
|
||||
- source.boo
|
||||
vendor/grammars/bro-sublime:
|
||||
@@ -233,6 +224,8 @@ vendor/grammars/css.tmbundle:
|
||||
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:
|
||||
@@ -270,6 +263,8 @@ 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
|
||||
@@ -291,9 +286,6 @@ vendor/grammars/graphviz.tmbundle:
|
||||
- source.dot
|
||||
vendor/grammars/groovy.tmbundle:
|
||||
- source.groovy
|
||||
vendor/grammars/haskell.tmbundle:
|
||||
- source.haskell
|
||||
- text.tex.latex.haskell
|
||||
vendor/grammars/haxe-sublime-bundle:
|
||||
- source.erazor
|
||||
- source.haxe.2
|
||||
@@ -336,6 +328,8 @@ vendor/grammars/language-agc:
|
||||
- source.agc
|
||||
vendor/grammars/language-apl:
|
||||
- source.apl
|
||||
vendor/grammars/language-asn1:
|
||||
- source.asn
|
||||
vendor/grammars/language-babel/:
|
||||
- source.js.jsx
|
||||
- source.regexp.babel
|
||||
@@ -364,6 +358,15 @@ 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:
|
||||
@@ -390,6 +393,11 @@ 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-shellscript:
|
||||
- source.shell
|
||||
- text.shell-session
|
||||
@@ -474,6 +482,8 @@ 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/:
|
||||
@@ -526,6 +536,8 @@ vendor/grammars/scheme.tmbundle:
|
||||
- source.scheme
|
||||
vendor/grammars/scilab.tmbundle:
|
||||
- source.scilab
|
||||
vendor/grammars/secondlife-lsl:
|
||||
- source.lsl
|
||||
vendor/grammars/smali-sublime/smali.tmLanguage:
|
||||
- source.smali
|
||||
vendor/grammars/smalltalk-tmbundle:
|
||||
@@ -570,6 +582,8 @@ vendor/grammars/sublime-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:
|
||||
@@ -593,9 +607,6 @@ vendor/grammars/sublime_cobol:
|
||||
- source.cobol
|
||||
- source.jcl
|
||||
- source.opencobol
|
||||
vendor/grammars/sublime_man_page_support:
|
||||
- source.man
|
||||
- text.groff
|
||||
vendor/grammars/sublimeassembly/:
|
||||
- source.assembly
|
||||
vendor/grammars/sublimeprolog/:
|
||||
@@ -617,6 +628,8 @@ 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/:
|
||||
@@ -624,5 +637,7 @@ vendor/grammars/xc.tmbundle/:
|
||||
vendor/grammars/xml.tmbundle:
|
||||
- text.xml
|
||||
- text.xml.xsl
|
||||
vendor/grammars/xquery:
|
||||
- source.xquery
|
||||
vendor/grammars/zephir-sublime:
|
||||
- source.php.zephir
|
||||
|
||||
@@ -359,6 +359,14 @@ module Linguist
|
||||
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"]
|
||||
|
||||
@@ -27,6 +27,15 @@
|
||||
#
|
||||
# Please keep this list alphabetized. Capitalization comes before lower case.
|
||||
|
||||
1C Enterprise:
|
||||
type: programming
|
||||
color: "#814CCC"
|
||||
extensions:
|
||||
- .bsl
|
||||
- .os
|
||||
tm_scope: source.bsl
|
||||
ace_mode: text
|
||||
|
||||
ABAP:
|
||||
type: programming
|
||||
color: "#E8274B"
|
||||
@@ -82,6 +91,15 @@ APL:
|
||||
tm_scope: source.apl
|
||||
ace_mode: text
|
||||
|
||||
ASN.1:
|
||||
type: data
|
||||
color: "#aeead0"
|
||||
extensions:
|
||||
- .asn
|
||||
- .asn1
|
||||
tm_scope: source.asn
|
||||
ace_mode: text
|
||||
|
||||
ASP:
|
||||
type: programming
|
||||
color: "#6a40fd"
|
||||
@@ -1411,9 +1429,14 @@ Groff:
|
||||
- .n
|
||||
- .rno
|
||||
- .roff
|
||||
tm_scope: text.groff
|
||||
- .tmac
|
||||
filenames:
|
||||
- mmn
|
||||
- mmt
|
||||
tm_scope: text.roff
|
||||
aliases:
|
||||
- nroff
|
||||
- troff
|
||||
ace_mode: text
|
||||
|
||||
Groovy:
|
||||
@@ -2926,6 +2949,7 @@ Pony:
|
||||
|
||||
PostScript:
|
||||
type: markup
|
||||
color: "#da291c"
|
||||
extensions:
|
||||
- .ps
|
||||
- .eps
|
||||
@@ -2934,6 +2958,17 @@ PostScript:
|
||||
- postscr
|
||||
ace_mode: text
|
||||
|
||||
PowerBuilder:
|
||||
type: programming
|
||||
color: "#8f0f8d"
|
||||
extensions:
|
||||
- .pbt
|
||||
- .sra
|
||||
- .sru
|
||||
- .srw
|
||||
tm_scope: none
|
||||
ace_mode: text
|
||||
|
||||
PowerShell:
|
||||
type: programming
|
||||
ace_mode: powershell
|
||||
@@ -3131,6 +3166,17 @@ REALbasic:
|
||||
tm_scope: source.vbnet
|
||||
ace_mode: text
|
||||
|
||||
REXX:
|
||||
type: programming
|
||||
aliases:
|
||||
- arexx
|
||||
extensions:
|
||||
- .rexx
|
||||
- .pprx
|
||||
- .rex
|
||||
tm_scope: source.rexx
|
||||
ace_mode: text
|
||||
|
||||
RHTML:
|
||||
type: markup
|
||||
group: HTML
|
||||
@@ -3149,6 +3195,15 @@ RMarkdown:
|
||||
- .rmd
|
||||
tm_scope: source.gfm
|
||||
|
||||
RUNOFF:
|
||||
type: markup
|
||||
color: "#665a4e"
|
||||
extensions:
|
||||
- .rnh
|
||||
- .rno
|
||||
tm_scope: text.runoff
|
||||
ace_mode: text
|
||||
|
||||
Racket:
|
||||
type: programming
|
||||
color: "#22228f"
|
||||
@@ -3197,7 +3252,7 @@ Rebol:
|
||||
|
||||
Red:
|
||||
type: programming
|
||||
color: "#ee0000"
|
||||
color: "#f50000"
|
||||
extensions:
|
||||
- .red
|
||||
- .reds
|
||||
@@ -3442,7 +3497,7 @@ Sass:
|
||||
Scala:
|
||||
type: programming
|
||||
ace_mode: scala
|
||||
color: "#DC322F"
|
||||
color: "#c22d40"
|
||||
extensions:
|
||||
- .scala
|
||||
- .sbt
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module Linguist
|
||||
VERSION = "4.8.8"
|
||||
VERSION = "4.8.9"
|
||||
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);
|
||||
}
|
||||
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
|
||||
|
||||
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
|
||||
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
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/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-SQF-Language
vendored
2
vendor/grammars/Sublime-SQF-Language
vendored
Submodule vendor/grammars/Sublime-SQF-Language updated: 777931999d...984606e146
2
vendor/grammars/Sublime-VimL
vendored
2
vendor/grammars/Sublime-VimL
vendored
Submodule vendor/grammars/Sublime-VimL updated: 4b23352ce5...b453aff6f7
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-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
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...fa4b7e2114
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 e9f4d3a1e4
2
vendor/grammars/d.tmbundle
vendored
2
vendor/grammars/d.tmbundle
vendored
Submodule vendor/grammars/d.tmbundle updated: e4beff2ce5...8763c4c5f2
2
vendor/grammars/elixir-tmbundle
vendored
2
vendor/grammars/elixir-tmbundle
vendored
Submodule vendor/grammars/elixir-tmbundle updated: 6ee8051a75...6d0417e8eb
1
vendor/grammars/forth
vendored
Submodule
1
vendor/grammars/forth
vendored
Submodule
Submodule vendor/grammars/forth added at 0cf0ec91f6
1
vendor/grammars/haskell.tmbundle
vendored
1
vendor/grammars/haskell.tmbundle
vendored
Submodule vendor/grammars/haskell.tmbundle deleted from df3d54278a
2
vendor/grammars/java.tmbundle
vendored
2
vendor/grammars/java.tmbundle
vendored
Submodule vendor/grammars/java.tmbundle updated: 64294ae0b6...faffa518d0
2
vendor/grammars/json.tmbundle
vendored
2
vendor/grammars/json.tmbundle
vendored
Submodule vendor/grammars/json.tmbundle updated: 0762cbdcb3...563b6f629b
1
vendor/grammars/language-asn1
vendored
Submodule
1
vendor/grammars/language-asn1
vendored
Submodule
Submodule vendor/grammars/language-asn1 added at d45daeb849
2
vendor/grammars/language-babel
vendored
2
vendor/grammars/language-babel
vendored
Submodule vendor/grammars/language-babel updated: 0d093e8ffe...c9d6dbf463
2
vendor/grammars/language-blade
vendored
2
vendor/grammars/language-blade
vendored
Submodule vendor/grammars/language-blade updated: 50dcfb72af...fcbe2c2022
2
vendor/grammars/language-clojure
vendored
2
vendor/grammars/language-clojure
vendored
Submodule vendor/grammars/language-clojure updated: d41af28800...bc86668c40
2
vendor/grammars/language-coffee-script
vendored
2
vendor/grammars/language-coffee-script
vendored
Submodule vendor/grammars/language-coffee-script updated: 9ebf474016...8f001efe73
2
vendor/grammars/language-crystal
vendored
2
vendor/grammars/language-crystal
vendored
Submodule vendor/grammars/language-crystal updated: ec1e4991e6...0d7ac572e4
2
vendor/grammars/language-csharp
vendored
2
vendor/grammars/language-csharp
vendored
Submodule vendor/grammars/language-csharp updated: b3f1130b1a...c97c4bf74d
2
vendor/grammars/language-csound
vendored
2
vendor/grammars/language-csound
vendored
Submodule vendor/grammars/language-csound updated: f5c603ac11...29d8eca1a8
2
vendor/grammars/language-gfm
vendored
2
vendor/grammars/language-gfm
vendored
Submodule vendor/grammars/language-gfm updated: 5435923521...a55c18c3dc
2
vendor/grammars/language-graphql
vendored
2
vendor/grammars/language-graphql
vendored
Submodule vendor/grammars/language-graphql updated: 037e5d46ea...d88cbb73e2
1
vendor/grammars/language-haskell
vendored
Submodule
1
vendor/grammars/language-haskell
vendored
Submodule
Submodule vendor/grammars/language-haskell added at 296a7e94df
2
vendor/grammars/language-javascript
vendored
2
vendor/grammars/language-javascript
vendored
Submodule vendor/grammars/language-javascript updated: 83f9e51bc9...e7b00e4d15
2
vendor/grammars/language-less
vendored
2
vendor/grammars/language-less
vendored
Submodule vendor/grammars/language-less updated: 234fd8a37b...d4f5db5fba
2
vendor/grammars/language-python
vendored
2
vendor/grammars/language-python
vendored
Submodule vendor/grammars/language-python updated: d5ae69749b...bc20450849
2
vendor/grammars/language-renpy
vendored
2
vendor/grammars/language-renpy
vendored
Submodule vendor/grammars/language-renpy updated: 883f51f4ef...a3b9bbed66
2
vendor/grammars/language-restructuredtext
vendored
2
vendor/grammars/language-restructuredtext
vendored
Submodule vendor/grammars/language-restructuredtext updated: 7133612568...f4f931ab7f
1
vendor/grammars/language-roff
vendored
Submodule
1
vendor/grammars/language-roff
vendored
Submodule
Submodule vendor/grammars/language-roff added at bef4485150
2
vendor/grammars/language-shellscript
vendored
2
vendor/grammars/language-shellscript
vendored
Submodule vendor/grammars/language-shellscript updated: 8019ad833c...6b936daeca
2
vendor/grammars/language-toc-wow
vendored
2
vendor/grammars/language-toc-wow
vendored
Submodule vendor/grammars/language-toc-wow updated: f538862fdd...03e7c2a02f
2
vendor/grammars/language-yaml
vendored
2
vendor/grammars/language-yaml
vendored
Submodule vendor/grammars/language-yaml updated: 9f55beb635...784cecc64f
2
vendor/grammars/latex.tmbundle
vendored
2
vendor/grammars/latex.tmbundle
vendored
Submodule vendor/grammars/latex.tmbundle updated: a5c14e1ce9...cb0c75906c
2
vendor/grammars/objective-c.tmbundle
vendored
2
vendor/grammars/objective-c.tmbundle
vendored
Submodule vendor/grammars/objective-c.tmbundle updated: fdcedb95de...583d31f673
1
vendor/grammars/parrot
vendored
Submodule
1
vendor/grammars/parrot
vendored
Submodule
Submodule vendor/grammars/parrot added at b56e84139f
2
vendor/grammars/pawn-sublime-language
vendored
2
vendor/grammars/pawn-sublime-language
vendored
Submodule vendor/grammars/pawn-sublime-language updated: 879fae6157...1916b03ba0
2
vendor/grammars/ruby-slim.tmbundle
vendored
2
vendor/grammars/ruby-slim.tmbundle
vendored
Submodule vendor/grammars/ruby-slim.tmbundle updated: 7452b27ea4...2016357d9c
2
vendor/grammars/sas.tmbundle
vendored
2
vendor/grammars/sas.tmbundle
vendored
Submodule vendor/grammars/sas.tmbundle updated: 012368ab93...776b54772b
1
vendor/grammars/secondlife-lsl
vendored
Submodule
1
vendor/grammars/secondlife-lsl
vendored
Submodule
Submodule vendor/grammars/secondlife-lsl added at ee359d634c
2
vendor/grammars/smali-sublime
vendored
2
vendor/grammars/smali-sublime
vendored
Submodule vendor/grammars/smali-sublime updated: 60a1fdb344...5bcea806cf
2
vendor/grammars/sublime-autoit
vendored
2
vendor/grammars/sublime-autoit
vendored
Submodule vendor/grammars/sublime-autoit updated: d4e742a73a...eeca503056
1
vendor/grammars/sublime-rexx
vendored
Submodule
1
vendor/grammars/sublime-rexx
vendored
Submodule
Submodule vendor/grammars/sublime-rexx added at a649cf3aef
2
vendor/grammars/sublime-rust
vendored
2
vendor/grammars/sublime-rust
vendored
Submodule vendor/grammars/sublime-rust updated: 167018cc0f...d3c63dec57
2
vendor/grammars/sublime-typescript
vendored
2
vendor/grammars/sublime-typescript
vendored
Submodule vendor/grammars/sublime-typescript updated: 0d538fc748...27529a651f
1
vendor/grammars/sublime_man_page_support
vendored
1
vendor/grammars/sublime_man_page_support
vendored
Submodule vendor/grammars/sublime_man_page_support deleted from f3568e9e61
2
vendor/grammars/swift.tmbundle
vendored
2
vendor/grammars/swift.tmbundle
vendored
Submodule vendor/grammars/swift.tmbundle updated: 662fd22bf8...b3cb4372f2
1
vendor/grammars/vhdl
vendored
Submodule
1
vendor/grammars/vhdl
vendored
Submodule
Submodule vendor/grammars/vhdl added at e88be21845
2
vendor/grammars/vue-syntax-highlight
vendored
2
vendor/grammars/vue-syntax-highlight
vendored
Submodule vendor/grammars/vue-syntax-highlight updated: a29a875bf3...8e729750bc
1
vendor/grammars/xquery
vendored
Submodule
1
vendor/grammars/xquery
vendored
Submodule
Submodule vendor/grammars/xquery added at 1908094946
25
vendor/licenses/grammar/atom-language-1c-bsl.txt
vendored
Normal file
25
vendor/licenses/grammar/atom-language-1c-bsl.txt
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
type: grammar
|
||||
name: atom-language-1c-bsl
|
||||
license: mit
|
||||
---
|
||||
Copyright © 2015 xDrivenDevelopment
|
||||
|
||||
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.
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
type: grammar
|
||||
name: haskell.tmbundle
|
||||
name: blitzmax
|
||||
license: permissive
|
||||
curated: true
|
||||
---
|
||||
15
vendor/licenses/grammar/cython.txt
vendored
Normal file
15
vendor/licenses/grammar/cython.txt
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
type: grammar
|
||||
name: cython
|
||||
license: permissive
|
||||
curated: true
|
||||
---
|
||||
|
||||
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||
|
||||
Permission to copy, use, modify, sell and distribute this
|
||||
software is granted. This software is provided "as is" without
|
||||
express or implied warranty, and with no claim as to its
|
||||
suitability for any purpose.
|
||||
|
||||
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||
14
vendor/licenses/grammar/forth.txt
vendored
Normal file
14
vendor/licenses/grammar/forth.txt
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
type: grammar
|
||||
name: forth
|
||||
license: permissive
|
||||
curated: true
|
||||
---
|
||||
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||
|
||||
Permission to copy, use, modify, sell and distribute this
|
||||
software is granted. This software is provided "as is" without
|
||||
express or implied warranty, and with no claim as to its
|
||||
suitability for any purpose.
|
||||
|
||||
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||
26
vendor/licenses/grammar/language-asn1.txt
vendored
Normal file
26
vendor/licenses/grammar/language-asn1.txt
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
type: grammar
|
||||
name: language-asn1
|
||||
license: mit
|
||||
---
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Alexander Langley
|
||||
|
||||
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.
|
||||
26
vendor/licenses/grammar/language-haskell.txt
vendored
Normal file
26
vendor/licenses/grammar/language-haskell.txt
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
type: grammar
|
||||
name: language-haskell
|
||||
license: mit
|
||||
---
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Atom-Haskell
|
||||
|
||||
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.
|
||||
18
vendor/licenses/grammar/language-roff.txt
vendored
Normal file
18
vendor/licenses/grammar/language-roff.txt
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
type: grammar
|
||||
name: language-roff
|
||||
license: isc
|
||||
---
|
||||
Copyright (c) 2016, John Gardner
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
14
vendor/licenses/grammar/parrot.txt
vendored
Normal file
14
vendor/licenses/grammar/parrot.txt
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
type: grammar
|
||||
name: parrot
|
||||
license: permissive
|
||||
curated: true
|
||||
---
|
||||
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||
|
||||
Permission to copy, use, modify, sell and distribute this
|
||||
software is granted. This software is provided "as is" without
|
||||
express or implied warranty, and with no claim as to its
|
||||
suitability for any purpose.
|
||||
|
||||
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||
14
vendor/licenses/grammar/secondlife-lsl.txt
vendored
Normal file
14
vendor/licenses/grammar/secondlife-lsl.txt
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
type: grammar
|
||||
name: secondlife-lsl
|
||||
license: permissive
|
||||
curated: true
|
||||
---
|
||||
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||
|
||||
Permission to copy, use, modify, sell and distribute this
|
||||
software is granted. This software is provided "as is" without
|
||||
express or implied warranty, and with no claim as to its
|
||||
suitability for any purpose.
|
||||
|
||||
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||
26
vendor/licenses/grammar/sublime-rexx.txt
vendored
Normal file
26
vendor/licenses/grammar/sublime-rexx.txt
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
type: grammar
|
||||
name: sublime-rexx
|
||||
license: mit
|
||||
---
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Mike Blocker
|
||||
|
||||
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.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user