Compare commits

...

85 Commits

Author SHA1 Message Date
Arfon Smith
d40b4a33de Sorted samples 2014-06-24 10:43:20 +01:00
Arfon Smith
87498679bd Merge pull request #1313 from pchaigno/samples-order
Set a sort order for the samples.json file's content
2014-06-24 10:42:25 +01:00
Paul Chaignon
f4e254202b Set a sort order for the samples.json file's content 2014-06-24 10:50:03 +02:00
Arfon Smith
e91d225e7d Merge pull request #1305 from neersighted/patch-1
Also ignore extern(al)
2014-06-23 23:12:34 +01:00
neersighted
b90d940aef Add tests for extern(al) being vendored 2014-06-23 14:50:31 -07:00
Vicent Marti
dbff196b08 Merge pull request #1309 from github/gameover-0x10c
Gameover 0x10c
2014-06-23 17:54:53 +02:00
Joshua Peek
5b7316fb2a Remove DCPU-16 ASM language 2014-06-23 10:48:09 -05:00
Arfon Smith
fa4dfe39ba Merge pull request #1306 from github/1100-local
1100 local
2014-06-23 10:33:01 +01:00
Arfon Smith
89999e60bf Merge branch 'master' into 1100-local
Conflicts:
	lib/linguist/languages.yml
2014-06-23 10:28:41 +01:00
neersighted
4819fb12a3 Also ignore extern(al)
...because some of us don't like 'vendor'
2014-06-22 17:18:10 -07:00
Arfon Smith
27a4eeb206 Samples update 2014-06-22 16:19:04 +01:00
Arfon Smith
bacf4d5780 Merge pull request #1303 from geekflyer/master
Add .xsjs and .xsjslib as JavaScript extension (SAP HANA XS)
2014-06-22 16:18:04 +01:00
Christian Theilemann
f92fed60f8 Add .xsjs and .xsjslib as JavaScript file extension
.xsjs and .xsjslib is used to denote server-side JavaScript files in SAP
HANA XS
2014-06-22 15:24:21 +02:00
Arfon Smith
5e797b548c Merge pull request #1273 from k2b6s9j/maven
Add Mavenfile and Jarfile as Ruby files.
2014-06-22 10:17:54 +01:00
Arfon Smith
700e2f1b2b Merge pull request #1299 from pchaigno/idl-lexer
Lexer for IDL
2014-06-21 17:45:16 +01:00
Paul Chaignon
861656978b Lexer for IDL 2014-06-21 17:31:49 +02:00
Arfon Smith
9c05bdac85 Samples 2014-06-21 13:19:38 +01:00
Arfon Smith
bd34c16c8f Merge pull request #1297 from github/map-pryrc-to-ruby
Add .pryrc support
2014-06-21 13:13:10 +01:00
Kevin Sawicki
13109bb9b8 Sort filenames 2014-06-20 11:28:35 -07:00
Kevin Sawicki
84f3b3720b Move .pryrc to filenames 2014-06-20 11:27:28 -07:00
Kevin Sawicki
858a66ccc8 Add .pryrc support 2014-06-20 11:18:08 -07:00
Arfon Smith
abb05eace6 Merge pull request #1295 from github/820-local
820 local
2014-06-20 12:42:21 +01:00
Arfon Smith
62bd96a778 Merge branch 'master' into 820-local
Conflicts:
	lib/linguist/samples.json
2014-06-20 12:37:20 +01:00
Arfon Smith
8cb736adfa Merge pull request #1294 from github/675-local
675 local
2014-06-20 12:29:20 +01:00
Arfon Smith
0758c05186 Merge branch 'master' into 675-local
Conflicts:
	.gitignore
	lib/linguist/languages.yml
	lib/linguist/samples.json
2014-06-20 12:22:58 +01:00
Arfon Smith
62bc6f0457 Merge pull request #1293 from github/1232-local
1232 local
2014-06-20 12:17:09 +01:00
Arfon Smith
ea7e894139 Explicit lexer 2014-06-20 12:13:04 +01:00
Arfon Smith
21f0ac99e6 Merge branch 'master' into 1232-local
Conflicts:
	lib/linguist/samples.json
2014-06-20 12:11:43 +01:00
Arfon Smith
b251866a29 Merge pull request #1292 from github/1261-local
1261 local
2014-06-20 11:02:17 +01:00
Arfon Smith
bf3db20a9d Samples 2014-06-20 10:58:44 +01:00
Arfon Smith
bd55147847 Merge branch 'master' into 1261-local 2014-06-20 10:58:21 +01:00
Arfon Smith
f4d64af39b Merge pull request #1291 from github/997-local
997 local
2014-06-20 10:49:46 +01:00
Arfon Smith
b7bda34645 Samples update 2014-06-20 10:46:38 +01:00
Arfon Smith
b13dea6df0 Merge branch 'master' into 997-local 2014-06-20 10:46:04 +01:00
Arfon Smith
28a64c9318 Samples 2014-06-20 10:27:47 +01:00
Arfon Smith
74be618fff Merge pull request #1290 from github/1258-local
1258 local
2014-06-20 10:26:59 +01:00
Arfon Smith
8bbe10bf50 Reordering 2014-06-20 10:22:14 +01:00
Arfon Smith
d275911624 Merge pull request #1289 from github/1132-local
1132 local
2014-06-20 10:17:44 +01:00
Arfon Smith
c26382301c Merge branch 'master' into 1132-local
Conflicts:
	lib/linguist/samples.json
2014-06-20 10:12:04 +01:00
Arfon Smith
e12bc07041 Samples 2014-06-19 16:03:05 +01:00
Arfon Smith
20416369ac Merge pull request #1282 from github/map-nuspec-to-xml
Add .nuspec extension to XML
2014-06-19 16:02:36 +01:00
Kevin Sawicki
2be91e9b2e Add .nuspec sample 2014-06-19 07:53:52 -07:00
Arfon Smith
dc1b8d9e80 Samples 2014-06-19 15:03:30 +01:00
Arfon Smith
bf0a814514 Merge pull request #1283 from LyricsMaster/add-xojo
Add Xojo language support
2014-06-19 15:03:04 +01:00
Kenichi Maehashi
b14267d40f add more samples for Xojo language 2014-06-19 22:59:12 +09:00
Arfon Smith
195a4115d8 Samples 2014-06-19 14:50:41 +01:00
Arfon Smith
e1da8eb841 Merge pull request #1280 from diekmann/patch-1
Added language Isabelle
2014-06-19 14:50:14 +01:00
Kenichi Maehashi
14738f037f remove non-source file extensions of Xojo language 2014-06-19 07:27:54 +09:00
Kenichi Maehashi
a437943516 Add Xojo language and example 2014-06-19 01:29:54 +09:00
Kevin Sawicki
900ee57de8 Add .nuspec extension to XML 2014-06-18 08:58:18 -07:00
diekmann
947f4e1c57 alphabetic sorting 2014-06-18 09:34:26 +02:00
diekmann
d9f17a65dd Isabelle language - fixed lexer and added sample
Also, Isabelle is very polular in academia.
See for example http://scholar.google.de/scholar?q=isabelle%2FHOL

In around 40 days, the seL4 microkernel [1] with its
Isabelle proofs is (probably) released on github [2].
[1] http://sel4.systems/
[2] https://lists.cam.ac.uk/mailman/htdig/cl-isabelle-users/2014-June/msg00011.html
2014-06-18 09:16:31 +02:00
Arfon Smith
f71def19ae Merge pull request #1279 from github/jdennes-vendored-octicon-styles
Vendor Octicon styles
2014-06-17 21:42:11 -05:00
Charles Strahan
e452e85cae add nix support 2014-06-17 19:32:22 -04:00
diekmann
5059fe90b0 Added language Isabelle
Isabelle is a generic proof assistant. It is comparables (to some degree) to Coq.

Used in
* diekmann/topoS
* 3of8/sturm
* formare/auctions
* larsrh/hol-falso
* dpthayer/MetaProof

Hello Wolrd example (file must be named HelloWorld.thy):
  theory HelloWorld
  imports Main
  begin
  (*put content here*)
  end
2014-06-17 21:27:03 +02:00
Arfon Smith
b90da731d6 Samples 2014-06-16 16:28:21 -05:00
Arfon Smith
d2012519ba Merge pull request #1268 from metopa/patch-1
Support of the .inc extension in Assembly group.
2014-06-16 16:27:35 -05:00
Gusakov Nikita
1b7f26091c Added generated rule for Zephir language 2014-06-16 19:20:43 +04:00
James Dennes
548e4f1845 Add Octicons entries to vendor.yml 2014-06-15 16:22:18 +02:00
James Dennes
625bed8fca Add failing test for vendored Octicons 2014-06-15 16:19:59 +02:00
Viacheslav Kroilov
db15367775 Rename X86_64.INC to X86_64.inc 2014-06-14 20:13:38 +04:00
Viacheslav Kroilov
309d14a955 Rename SYSTEM.INC to SYSTEM.inc 2014-06-14 20:13:19 +04:00
Viacheslav Kroilov
5ff16e1195 Rename FASM.ASM to FASM.asm 2014-06-14 20:12:50 +04:00
Viacheslav Kroilov
cf43aa9111 Rename ASSEMBLE.INC to ASSEMBLE.inc 2014-06-14 20:11:58 +04:00
metopa
138c1e6024 Added examples for Assembly
From FASM source under BSD
2014-06-14 19:21:02 +04:00
Kepler Sticka-Jones
382870a881 Add Mavenfile and Jarfile as Ruby files. 2014-06-12 13:11:56 -06:00
Andy Lindeman
31921838cd Merge pull request #1272 from github/cut-release-v2.12.0
Bumps to 2.12.0
2014-06-11 17:02:17 -04:00
Andy Lindeman
a707587182 Bumps to 2.12.0 2014-06-11 14:00:46 -04:00
Andy Lindeman
bc482af999 Merge pull request #1269 from github/pygments-bump
Bumps pygments.rb to 0.6.0
2014-06-11 13:58:37 -04:00
Andy Lindeman
6818744dae Merge remote-tracking branch 'origin/master' into pygments-bump 2014-06-11 13:56:53 -04:00
Andy Lindeman
607185ac61 Be explicit about lexer 2014-06-11 13:56:40 -04:00
Andy Lindeman
85479cc2de Swift has a lexer now 2014-06-10 15:54:56 -04:00
Andy Lindeman
3ad4eb2b59 Adds supports for Slim 2014-06-10 15:54:56 -04:00
Andy Lindeman
878fe95ec3 Upgrades to pygments.rb 0.6.0 2014-06-10 15:54:55 -04:00
Viacheslav Kroilov
3d23d1be69 Added .inc extension in Assembly group.
It`s include file for assembler source that helps to structure code. Usually contains normal assembly source.
2014-06-10 21:25:27 +04:00
William Woodruff
de4d48b0fe added two notebook samples 2014-06-08 23:11:19 -04:00
William Woodruff
b5c49f6d1c added a sample package 2014-06-08 22:57:25 -04:00
William Woodruff
03cb7d6ffb Merge remote-tracking branch 'upstream/master' 2014-06-08 22:54:13 -04:00
William Woodruff
33c42638e9 added two more common mathematica suffixes 2014-06-07 21:21:47 -04:00
Niklas Rosenstein
a7cba23526 added .pyp suffix and an example source file. closes issue #1 2014-06-07 01:29:30 +02:00
Daniël W. Crompton
6d5da4c9ec update 2014-05-14 01:38:55 +02:00
Ricky Elrod
9d569c8bd5 Idris is upstream in Pygments now: https://bitbucket.org/birkenfeld/pygments-main/pull-request/210 2014-04-22 02:54:27 -04:00
Michael Hendricks
ee3c9bcdbd Add misclassified Prolog samples
These two files are incorrectly classified as Perl.  They should be
classified as Prolog.  There are many distinctive tokens in each file
which clearly differentiate between Perl and Prolog.
2014-03-17 08:56:45 -06:00
waddlesplash
aa78060e41 Adding QMake (Make-like) language.
Mostly because the file extension conflicts with that of Prolog.
2013-12-10 10:23:13 -05:00
Daniël W. Crompton
7c1716aa1e This pull request solves issue #674, see it for details. 2013-09-06 01:47:14 +02:00
40 changed files with 25009 additions and 6472 deletions

View File

@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
s.add_dependency 'charlock_holmes', '~> 0.7.3'
s.add_dependency 'escape_utils', '~> 1.0.1'
s.add_dependency 'mime-types', '~> 1.19'
s.add_dependency 'pygments.rb', '~> 0.5.4'
s.add_dependency 'pygments.rb', '~> 0.6.0'
s.add_development_dependency 'json'
s.add_development_dependency 'mocha'

View File

@@ -63,7 +63,8 @@ module Linguist
generated_jni_header? ||
composer_lock? ||
node_modules? ||
vcr_cassette?
vcr_cassette? ||
generated_by_zephir?
end
# Internal: Is the blob an XCode project file?
@@ -237,6 +238,13 @@ module Linguist
!!name.match(/composer.lock/)
end
# Internal: Is the blob a generated by Zephir
#
# Returns true or false.
def generated_by_zephir?
!!name.match(/.\.zep\.(?:c|h|php)$/)
end
# Is the blob a VCR Cassette file?
#
# Returns true or false

View File

@@ -157,6 +157,7 @@ Assembly:
- nasm
extensions:
- .asm
- .inc
Augeas:
type: programming
@@ -528,15 +529,6 @@ Dart:
extensions:
- .dart
DCPU-16 ASM:
type: programming
lexer: dasm16
extensions:
- .dasm16
- .dasm
aliases:
- dasm16
Diff:
extensions:
- .diff
@@ -940,7 +932,7 @@ Hy:
IDL:
type: programming
lexer: Text only
lexer: IDL
color: "#e3592c"
extensions:
- .pro
@@ -959,7 +951,7 @@ Inno Setup:
Idris:
type: programming
lexer: Text only
lexer: Idris
extensions:
- .idr
- .lidr
@@ -998,6 +990,13 @@ Ioke:
extensions:
- .ik
Isabelle:
type: programming
lexer: Text only
color: "#fdcd00"
extensions:
- .thy
J:
type: programming
lexer: Text only
@@ -1087,6 +1086,8 @@ JavaScript:
- .pac
- .sjs
- .ssjs
- .xsjs
- .xsjslib
filenames:
- Jakefile
interpreters:
@@ -1285,6 +1286,8 @@ Mathematica:
type: programming
extensions:
- .mathematica
- .m
- .nb
lexer: Text only
Matlab:
@@ -1392,6 +1395,12 @@ Nimrod:
- .nim
- .nimrod
Nix:
type: programming
lexer: Nix
extensions:
- .nix
Nu:
type: programming
lexer: Scheme
@@ -1601,7 +1610,7 @@ Perl6:
Pike:
type: programming
color: "#066ab2"
lexer: C
lexer: Pike
extensions:
- .pike
- .pmod
@@ -1698,6 +1707,7 @@ Python:
- .gyp
- .lmi
- .pyde
- .pyp
- .pyt
- .pyw
- .wsgi
@@ -1723,6 +1733,12 @@ QML:
extensions:
- .qml
QMake:
lexer: Text only
extensions:
- .pro
- .pri
R:
type: programming
color: "#198ce7"
@@ -1862,12 +1878,15 @@ Ruby:
interpreters:
- ruby
filenames:
- .pryrc
- Appraisals
- Berksfile
- Buildfile
- Gemfile
- Gemfile.lock
- Guardfile
- Jarfile
- Mavenfile
- Podfile
- Thorfile
- Vagrantfile
@@ -2002,6 +2021,14 @@ Slash:
extensions:
- .sl
Slim:
group: HTML
type: markup
lexer: Slim
color: "#ff8877"
extensions:
- .slim
Smalltalk:
type: programming
color: "#596706"
@@ -2064,8 +2091,8 @@ SuperCollider:
Swift:
type: programming
lexer: Swift
color: "#ffac45"
lexer: Text only
extensions:
- .swift
@@ -2280,6 +2307,7 @@ XML:
- .launch
- .mxml
- .nproj
- .nuspec
- .osm
- .plist
- .pluginspec
@@ -2351,6 +2379,17 @@ XSLT:
- .xslt
- .xsl
Xojo:
type: programming
lexer: VB.net
extensions:
- .xojo_code
- .xojo_menu
- .xojo_report
- .xojo_script
- .xojo_toolbar
- .xojo_window
Xtend:
type: programming
extensions:

File diff suppressed because it is too large Load Diff

View File

@@ -28,7 +28,7 @@ module Linguist
#
# Returns nothing.
def self.each(&block)
Dir.entries(ROOT).each do |category|
Dir.entries(ROOT).sort!.each do |category|
next if category == '.' || category == '..'
# Skip text and binary for now

View File

@@ -43,6 +43,7 @@
# Vendored dependencies
- thirdparty/
- vendors?/
- extern(al)?/
# Debian packaging
- ^debian/
@@ -204,3 +205,7 @@
- ^vignettes/
- ^inst/extdata/
# Octicons
- octicons.css
- octicons.min.css
- sprockets-octicons.scss

View File

@@ -1,3 +1,3 @@
module Linguist
VERSION = "2.11.5"
VERSION = "2.12.0"
end

File diff suppressed because it is too large Load Diff

350
samples/Assembly/FASM.asm Normal file
View File

@@ -0,0 +1,350 @@
; flat assembler interface for Win32
; Copyright (c) 1999-2014, Tomasz Grysztar.
; All rights reserved.
format PE console
section '.text' code readable executable
start:
mov [con_handle],STD_OUTPUT_HANDLE
mov esi,_logo
call display_string
call get_params
jc information
call init_memory
mov esi,_memory_prefix
call display_string
mov eax,[memory_end]
sub eax,[memory_start]
add eax,[additional_memory_end]
sub eax,[additional_memory]
shr eax,10
call display_number
mov esi,_memory_suffix
call display_string
call [GetTickCount]
mov [start_time],eax
call preprocessor
call parser
call assembler
call formatter
call display_user_messages
movzx eax,[current_pass]
inc eax
call display_number
mov esi,_passes_suffix
call display_string
call [GetTickCount]
sub eax,[start_time]
xor edx,edx
mov ebx,100
div ebx
or eax,eax
jz display_bytes_count
xor edx,edx
mov ebx,10
div ebx
push edx
call display_number
mov dl,'.'
call display_character
pop eax
call display_number
mov esi,_seconds_suffix
call display_string
display_bytes_count:
mov eax,[written_size]
call display_number
mov esi,_bytes_suffix
call display_string
xor al,al
jmp exit_program
information:
mov esi,_usage
call display_string
mov al,1
jmp exit_program
get_params:
mov [input_file],0
mov [output_file],0
mov [symbols_file],0
mov [memory_setting],0
mov [passes_limit],100
call [GetCommandLine]
mov esi,eax
mov edi,params
find_command_start:
lodsb
cmp al,20h
je find_command_start
cmp al,22h
je skip_quoted_name
skip_name:
lodsb
cmp al,20h
je find_param
or al,al
jz all_params
jmp skip_name
skip_quoted_name:
lodsb
cmp al,22h
je find_param
or al,al
jz all_params
jmp skip_quoted_name
find_param:
lodsb
cmp al,20h
je find_param
cmp al,'-'
je option_param
cmp al,0Dh
je all_params
or al,al
jz all_params
cmp [input_file],0
jne get_output_file
mov [input_file],edi
jmp process_param
get_output_file:
cmp [output_file],0
jne bad_params
mov [output_file],edi
process_param:
cmp al,22h
je string_param
copy_param:
stosb
lodsb
cmp al,20h
je param_end
cmp al,0Dh
je param_end
or al,al
jz param_end
jmp copy_param
string_param:
lodsb
cmp al,22h
je string_param_end
cmp al,0Dh
je param_end
or al,al
jz param_end
stosb
jmp string_param
option_param:
lodsb
cmp al,'m'
je memory_option
cmp al,'M'
je memory_option
cmp al,'p'
je passes_option
cmp al,'P'
je passes_option
cmp al,'s'
je symbols_option
cmp al,'S'
je symbols_option
bad_params:
stc
ret
get_option_value:
xor eax,eax
mov edx,eax
get_option_digit:
lodsb
cmp al,20h
je option_value_ok
cmp al,0Dh
je option_value_ok
or al,al
jz option_value_ok
sub al,30h
jc invalid_option_value
cmp al,9
ja invalid_option_value
imul edx,10
jo invalid_option_value
add edx,eax
jc invalid_option_value
jmp get_option_digit
option_value_ok:
dec esi
clc
ret
invalid_option_value:
stc
ret
memory_option:
lodsb
cmp al,20h
je memory_option
cmp al,0Dh
je bad_params
or al,al
jz bad_params
dec esi
call get_option_value
or edx,edx
jz bad_params
cmp edx,1 shl (32-10)
jae bad_params
mov [memory_setting],edx
jmp find_param
passes_option:
lodsb
cmp al,20h
je passes_option
cmp al,0Dh
je bad_params
or al,al
jz bad_params
dec esi
call get_option_value
or edx,edx
jz bad_params
cmp edx,10000h
ja bad_params
mov [passes_limit],dx
jmp find_param
symbols_option:
mov [symbols_file],edi
find_symbols_file_name:
lodsb
cmp al,20h
jne process_param
jmp find_symbols_file_name
param_end:
dec esi
string_param_end:
xor al,al
stosb
jmp find_param
all_params:
cmp [input_file],0
je bad_params
clc
ret
include 'system.inc'
include '..\errors.inc'
include '..\symbdump.inc'
include '..\preproce.inc'
include '..\parser.inc'
include '..\exprpars.inc'
include '..\assemble.inc'
include '..\exprcalc.inc'
include '..\formats.inc'
include '..\x86_64.inc'
include '..\avx.inc'
include '..\tables.inc'
include '..\messages.inc'
section '.data' data readable writeable
include '..\version.inc'
_copyright db 'Copyright (c) 1999-2014, Tomasz Grysztar',0Dh,0Ah,0
_logo db 'flat assembler version ',VERSION_STRING,0
_usage db 0Dh,0Ah
db 'usage: fasm <source> [output]',0Dh,0Ah
db 'optional settings:',0Dh,0Ah
db ' -m <limit> set the limit in kilobytes for the available memory',0Dh,0Ah
db ' -p <limit> set the maximum allowed number of passes',0Dh,0Ah
db ' -s <file> dump symbolic information for debugging',0Dh,0Ah
db 0
_memory_prefix db ' (',0
_memory_suffix db ' kilobytes memory)',0Dh,0Ah,0
_passes_suffix db ' passes, ',0
_seconds_suffix db ' seconds, ',0
_bytes_suffix db ' bytes.',0Dh,0Ah,0
align 4
include '..\variable.inc'
con_handle dd ?
memory_setting dd ?
start_time dd ?
bytes_count dd ?
displayed_count dd ?
character db ?
last_displayed rb 2
params rb 1000h
options rb 1000h
buffer rb 4000h
stack 10000h
section '.idata' import data readable writeable
dd 0,0,0,rva kernel_name,rva kernel_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dd rva _ExitProcess
CreateFile dd rva _CreateFileA
ReadFile dd rva _ReadFile
WriteFile dd rva _WriteFile
CloseHandle dd rva _CloseHandle
SetFilePointer dd rva _SetFilePointer
GetCommandLine dd rva _GetCommandLineA
GetEnvironmentVariable dd rva _GetEnvironmentVariable
GetStdHandle dd rva _GetStdHandle
VirtualAlloc dd rva _VirtualAlloc
VirtualFree dd rva _VirtualFree
GetTickCount dd rva _GetTickCount
GetSystemTime dd rva _GetSystemTime
GlobalMemoryStatus dd rva _GlobalMemoryStatus
dd 0
kernel_name db 'KERNEL32.DLL',0
_ExitProcess dw 0
db 'ExitProcess',0
_CreateFileA dw 0
db 'CreateFileA',0
_ReadFile dw 0
db 'ReadFile',0
_WriteFile dw 0
db 'WriteFile',0
_CloseHandle dw 0
db 'CloseHandle',0
_SetFilePointer dw 0
db 'SetFilePointer',0
_GetCommandLineA dw 0
db 'GetCommandLineA',0
_GetEnvironmentVariable dw 0
db 'GetEnvironmentVariableA',0
_GetStdHandle dw 0
db 'GetStdHandle',0
_VirtualAlloc dw 0
db 'VirtualAlloc',0
_VirtualFree dw 0
db 'VirtualFree',0
_GetTickCount dw 0
db 'GetTickCount',0
_GetSystemTime dw 0
db 'GetSystemTime',0
_GlobalMemoryStatus dw 0
db 'GlobalMemoryStatus',0
section '.reloc' fixups data readable discardable

503
samples/Assembly/SYSTEM.inc Normal file
View File

@@ -0,0 +1,503 @@
; flat assembler interface for Win32
; Copyright (c) 1999-2014, Tomasz Grysztar.
; All rights reserved.
CREATE_NEW = 1
CREATE_ALWAYS = 2
OPEN_EXISTING = 3
OPEN_ALWAYS = 4
TRUNCATE_EXISTING = 5
FILE_SHARE_READ = 1
FILE_SHARE_WRITE = 2
FILE_SHARE_DELETE = 4
GENERIC_READ = 80000000h
GENERIC_WRITE = 40000000h
STD_INPUT_HANDLE = 0FFFFFFF6h
STD_OUTPUT_HANDLE = 0FFFFFFF5h
STD_ERROR_HANDLE = 0FFFFFFF4h
MEM_COMMIT = 1000h
MEM_RESERVE = 2000h
MEM_DECOMMIT = 4000h
MEM_RELEASE = 8000h
MEM_FREE = 10000h
MEM_PRIVATE = 20000h
MEM_MAPPED = 40000h
MEM_RESET = 80000h
MEM_TOP_DOWN = 100000h
PAGE_NOACCESS = 1
PAGE_READONLY = 2
PAGE_READWRITE = 4
PAGE_WRITECOPY = 8
PAGE_EXECUTE = 10h
PAGE_EXECUTE_READ = 20h
PAGE_EXECUTE_READWRITE = 40h
PAGE_EXECUTE_WRITECOPY = 80h
PAGE_GUARD = 100h
PAGE_NOCACHE = 200h
init_memory:
xor eax,eax
mov [memory_start],eax
mov eax,esp
and eax,not 0FFFh
add eax,1000h-10000h
mov [stack_limit],eax
mov eax,[memory_setting]
shl eax,10
jnz allocate_memory
push buffer
call [GlobalMemoryStatus]
mov eax,dword [buffer+20]
mov edx,dword [buffer+12]
cmp eax,0
jl large_memory
cmp edx,0
jl large_memory
shr eax,2
add eax,edx
jmp allocate_memory
large_memory:
mov eax,80000000h
allocate_memory:
mov edx,eax
shr edx,2
mov ecx,eax
sub ecx,edx
mov [memory_end],ecx
mov [additional_memory_end],edx
push PAGE_READWRITE
push MEM_COMMIT
push eax
push 0
call [VirtualAlloc]
or eax,eax
jz not_enough_memory
mov [memory_start],eax
add eax,[memory_end]
mov [memory_end],eax
mov [additional_memory],eax
add [additional_memory_end],eax
ret
not_enough_memory:
mov eax,[additional_memory_end]
shl eax,1
cmp eax,4000h
jb out_of_memory
jmp allocate_memory
exit_program:
movzx eax,al
push eax
mov eax,[memory_start]
test eax,eax
jz do_exit
push MEM_RELEASE
push 0
push eax
call [VirtualFree]
do_exit:
call [ExitProcess]
get_environment_variable:
mov ecx,[memory_end]
sub ecx,edi
cmp ecx,4000h
jbe buffer_for_variable_ok
mov ecx,4000h
buffer_for_variable_ok:
push ecx
push edi
push esi
call [GetEnvironmentVariable]
add edi,eax
cmp edi,[memory_end]
jae out_of_memory
ret
open:
push 0
push 0
push OPEN_EXISTING
push 0
push FILE_SHARE_READ
push GENERIC_READ
push edx
call [CreateFile]
cmp eax,-1
je file_error
mov ebx,eax
clc
ret
file_error:
stc
ret
create:
push 0
push 0
push CREATE_ALWAYS
push 0
push FILE_SHARE_READ
push GENERIC_WRITE
push edx
call [CreateFile]
cmp eax,-1
je file_error
mov ebx,eax
clc
ret
write:
push 0
push bytes_count
push ecx
push edx
push ebx
call [WriteFile]
or eax,eax
jz file_error
clc
ret
read:
mov ebp,ecx
push 0
push bytes_count
push ecx
push edx
push ebx
call [ReadFile]
or eax,eax
jz file_error
cmp ebp,[bytes_count]
jne file_error
clc
ret
close:
push ebx
call [CloseHandle]
ret
lseek:
movzx eax,al
push eax
push 0
push edx
push ebx
call [SetFilePointer]
ret
display_string:
push [con_handle]
call [GetStdHandle]
mov ebp,eax
mov edi,esi
or ecx,-1
xor al,al
repne scasb
neg ecx
sub ecx,2
push 0
push bytes_count
push ecx
push esi
push ebp
call [WriteFile]
ret
display_character:
push ebx
mov [character],dl
push [con_handle]
call [GetStdHandle]
mov ebx,eax
push 0
push bytes_count
push 1
push character
push ebx
call [WriteFile]
pop ebx
ret
display_number:
push ebx
mov ecx,1000000000
xor edx,edx
xor bl,bl
display_loop:
div ecx
push edx
cmp ecx,1
je display_digit
or bl,bl
jnz display_digit
or al,al
jz digit_ok
not bl
display_digit:
mov dl,al
add dl,30h
push ecx
call display_character
pop ecx
digit_ok:
mov eax,ecx
xor edx,edx
mov ecx,10
div ecx
mov ecx,eax
pop eax
or ecx,ecx
jnz display_loop
pop ebx
ret
display_user_messages:
mov [displayed_count],0
call show_display_buffer
cmp [displayed_count],1
jb line_break_ok
je make_line_break
mov ax,word [last_displayed]
cmp ax,0A0Dh
je line_break_ok
cmp ax,0D0Ah
je line_break_ok
make_line_break:
mov word [buffer],0A0Dh
push [con_handle]
call [GetStdHandle]
push 0
push bytes_count
push 2
push buffer
push eax
call [WriteFile]
line_break_ok:
ret
display_block:
add [displayed_count],ecx
cmp ecx,1
ja take_last_two_characters
jb block_displayed
mov al,[last_displayed+1]
mov ah,[esi]
mov word [last_displayed],ax
jmp block_ok
take_last_two_characters:
mov ax,[esi+ecx-2]
mov word [last_displayed],ax
block_ok:
push ecx
push [con_handle]
call [GetStdHandle]
pop ecx
push 0
push bytes_count
push ecx
push esi
push eax
call [WriteFile]
block_displayed:
ret
fatal_error:
mov [con_handle],STD_ERROR_HANDLE
mov esi,error_prefix
call display_string
pop esi
call display_string
mov esi,error_suffix
call display_string
mov al,0FFh
jmp exit_program
assembler_error:
mov [con_handle],STD_ERROR_HANDLE
call display_user_messages
push dword 0
mov ebx,[current_line]
get_error_lines:
mov eax,[ebx]
cmp byte [eax],0
je get_next_error_line
push ebx
test byte [ebx+7],80h
jz display_error_line
mov edx,ebx
find_definition_origin:
mov edx,[edx+12]
test byte [edx+7],80h
jnz find_definition_origin
push edx
get_next_error_line:
mov ebx,[ebx+8]
jmp get_error_lines
display_error_line:
mov esi,[ebx]
call display_string
mov esi,line_number_start
call display_string
mov eax,[ebx+4]
and eax,7FFFFFFFh
call display_number
mov dl,']'
call display_character
pop esi
cmp ebx,esi
je line_number_ok
mov dl,20h
call display_character
push esi
mov esi,[esi]
movzx ecx,byte [esi]
inc esi
call display_block
mov esi,line_number_start
call display_string
pop esi
mov eax,[esi+4]
and eax,7FFFFFFFh
call display_number
mov dl,']'
call display_character
line_number_ok:
mov esi,line_data_start
call display_string
mov esi,ebx
mov edx,[esi]
call open
mov al,2
xor edx,edx
call lseek
mov edx,[esi+8]
sub eax,edx
jz line_data_displayed
push eax
xor al,al
call lseek
mov ecx,[esp]
mov edx,[additional_memory]
lea eax,[edx+ecx]
cmp eax,[additional_memory_end]
ja out_of_memory
call read
call close
pop ecx
mov esi,[additional_memory]
get_line_data:
mov al,[esi]
cmp al,0Ah
je display_line_data
cmp al,0Dh
je display_line_data
cmp al,1Ah
je display_line_data
or al,al
jz display_line_data
inc esi
loop get_line_data
display_line_data:
mov ecx,esi
mov esi,[additional_memory]
sub ecx,esi
call display_block
line_data_displayed:
mov esi,cr_lf
call display_string
pop ebx
or ebx,ebx
jnz display_error_line
mov esi,error_prefix
call display_string
pop esi
call display_string
mov esi,error_suffix
call display_string
mov al,2
jmp exit_program
make_timestamp:
push buffer
call [GetSystemTime]
movzx ecx,word [buffer]
mov eax,ecx
sub eax,1970
mov ebx,365
mul ebx
mov ebp,eax
mov eax,ecx
sub eax,1969
shr eax,2
add ebp,eax
mov eax,ecx
sub eax,1901
mov ebx,100
div ebx
sub ebp,eax
mov eax,ecx
xor edx,edx
sub eax,1601
mov ebx,400
div ebx
add ebp,eax
movzx ecx,word [buffer+2]
mov eax,ecx
dec eax
mov ebx,30
mul ebx
add ebp,eax
cmp ecx,8
jbe months_correction
mov eax,ecx
sub eax,7
shr eax,1
add ebp,eax
mov ecx,8
months_correction:
mov eax,ecx
shr eax,1
add ebp,eax
cmp ecx,2
jbe day_correction_ok
sub ebp,2
movzx ecx,word [buffer]
test ecx,11b
jnz day_correction_ok
xor edx,edx
mov eax,ecx
mov ebx,100
div ebx
or edx,edx
jnz day_correction
mov eax,ecx
mov ebx,400
div ebx
or edx,edx
jnz day_correction_ok
day_correction:
inc ebp
day_correction_ok:
movzx eax,word [buffer+6]
dec eax
add eax,ebp
mov ebx,24
mul ebx
movzx ecx,word [buffer+8]
add eax,ecx
mov ebx,60
mul ebx
movzx ecx,word [buffer+10]
add eax,ecx
mov ebx,60
mul ebx
movzx ecx,word [buffer+12]
add eax,ecx
adc edx,0
ret
error_prefix db 'error: ',0
error_suffix db '.'
cr_lf db 0Dh,0Ah,0
line_number_start db ' [',0
line_data_start db ':',0Dh,0Ah,0

7060
samples/Assembly/X86_64.inc Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
theory HelloWorld
imports Main
begin
section{*Playing around with Isabelle*}
text{* creating a lemma with the name hello_world*}
lemma hello_world: "True" by simp
(*inspecting it*)
thm hello_world
text{* defining a string constant HelloWorld *}
definition HelloWorld :: "string" where
"HelloWorld \<equiv> ''Hello World!''"
(*reversing HelloWorld twice yilds HelloWorld again*)
theorem "rev (rev HelloWorld) = HelloWorld"
by (fact List.rev_rev_ident)
text{*now we delete the already proven List.rev_rev_ident lema and show it by hand*}
declare List.rev_rev_ident[simp del]
hide_fact List.rev_rev_ident
(*It's trivial since we can just 'execute' it*)
corollary "rev (rev HelloWorld) = HelloWorld"
apply(simp add: HelloWorld_def)
done
text{*does it hold in general?*}
theorem rev_rev_ident:"rev (rev l) = l"
proof(induction l)
case Nil thus ?case by simp
next
case (Cons l ls)
assume IH: "rev (rev ls) = ls"
have "rev (l#ls) = (rev ls) @ [l]" by simp
hence "rev (rev (l#ls)) = rev ((rev ls) @ [l])" by simp
also have "\<dots> = [l] @ rev (rev ls)" by simp
finally show "rev (rev (l#ls)) = l#ls" using IH by simp
qed
corollary "\<forall>(l::string). rev (rev l) = l" by(fastforce intro: rev_rev_ident)
end

View File

@@ -0,0 +1,24 @@
/*
invoke endpoint by calling in a browser:
http://<hanaserveradress>:<xsengineport(usually 8000)>/<path>/<to>/<endpoint>/helloHanaMath.xsjslib?x=4&y=2
e.g.:
http://192.168.178.20:8000/geekflyer/linguist/helloHanaEndpoint.xsjs?x=4&y=2
*/
var hanaMath = $.import("./helloHanaMath.xsjslib");
var x = parseFloat($.request.parameters.get("x"));
var y = parseFloat($.request.parameters.get("y"));
var result = hanaMath.multiply(x, y);
var output = {
title: "Hello HANA XS - do some simple math",
input: {x: x, y: y},
result: result
};
$.response.contentType = "application/json";
$.response.statusCode = $.net.http.OK;
$.response.setBody(JSON.stringify(output));

View File

@@ -0,0 +1,9 @@
/* simple hana xs demo library, which can be used by multiple endpoints */
function multiply(x, y) {
return x * y;
}
function add(x, y) {
return x + y;
}

View File

@@ -0,0 +1,232 @@
(* Content-type: application/vnd.wolfram.mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* CreatedBy='Mathematica 9.0' *)
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 157, 7]
NotebookDataLength[ 7164, 223]
NotebookOptionsPosition[ 6163, 182]
NotebookOutlinePosition[ 6508, 197]
CellTagsIndexPosition[ 6465, 194]
WindowFrame->Normal*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
RowBox[{"Solve", "[",
RowBox[{
RowBox[{"y", "'"}], "\[Equal]", " ", "xy"}], "]"}],
"\[IndentingNewLine]"}]], "Input",
CellChangeTimes->{{3.6112716342092056`*^9, 3.6112716549793935`*^9}}],
Cell[BoxData[
RowBox[{"{",
RowBox[{"{",
RowBox[{"xy", "\[Rule]",
SuperscriptBox["y", "\[Prime]",
MultilineFunction->None]}], "}"}], "}"}]], "Output",
CellChangeTimes->{3.6112716579295626`*^9}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"Log", "[",
RowBox[{"Sin", "[", "38", "]"}], "]"}]], "Input",
CellChangeTimes->{{3.611271663920905*^9, 3.6112716759275913`*^9}}],
Cell[BoxData[
RowBox[{"Log", "[",
RowBox[{"Sin", "[", "38", "]"}], "]"}]], "Output",
CellChangeTimes->{3.611271678256725*^9}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{"Log", "[",
RowBox[{"Sin", "[", "38", "]"}], "]"}], "]"}]], "Input",
NumberMarks->False],
Cell[BoxData[
RowBox[{"-", "1.2161514009320473`"}]], "Output",
CellChangeTimes->{3.611271682061942*^9}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"Abs", "[",
RowBox[{"-", "1.2161514009320473`"}], "]"}]], "Input",
NumberMarks->False],
Cell[BoxData["1.2161514009320473`"], "Output",
CellChangeTimes->{3.6112716842780695`*^9}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"RealDigits", "[", "1.2161514009320473`", "]"}]], "Input",
NumberMarks->False],
Cell[BoxData[
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{
"1", ",", "2", ",", "1", ",", "6", ",", "1", ",", "5", ",", "1", ",", "4",
",", "0", ",", "0", ",", "9", ",", "3", ",", "2", ",", "0", ",", "4",
",", "7"}], "}"}], ",", "1"}], "}"}]], "Output",
CellChangeTimes->{3.611271685319129*^9}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
RowBox[{"Graph", "[",
RowBox[{"Log", "[", "x", "]"}], "]"}], "\[IndentingNewLine]"}]], "Input",
CellChangeTimes->{{3.611271689258354*^9, 3.611271702038085*^9}}],
Cell[BoxData[
RowBox[{"Graph", "[",
RowBox[{"Log", "[", "x", "]"}], "]"}]], "Output",
CellChangeTimes->{3.611271704295214*^9}]
}, Open ]],
Cell[BoxData[""], "Input",
CellChangeTimes->{{3.611271712769699*^9, 3.6112717423153887`*^9}}],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
RowBox[{"Plot", "[",
RowBox[{
RowBox[{"Log", "[", "x", "]"}], ",", " ",
RowBox[{"{",
RowBox[{"x", ",", " ", "0", ",", " ", "10"}], "}"}]}], "]"}],
"\[IndentingNewLine]"}]], "Input",
CellChangeTimes->{{3.6112717573482485`*^9, 3.6112717747822456`*^9}}],
Cell[BoxData[
GraphicsBox[{{}, {},
{Hue[0.67, 0.6, 0.6], LineBox[CompressedData["
1:eJwVzXs81Pkex/GZH7XlsutSQprwqxTSZVfJGp9P6UYqlyxHUhTaLrq4JpVK
0SHRisGWjYiEbHSvb+Q27rllmYwaY6JpwxgZTI7zx/vxejz/eht4H3PyoRgM
Rsj0/t+1MEPjP1Zc8O6L0tCYkJERTokxP5YLLR+MQy2qZWSzX62gWcaFn9s7
5sVFyohY4ZvLs5Ya6AheLQxnyIgFe4fllag6yH4zayhMcYw0FU5SRl8bweS/
wyVFa0aJBsz2VDVrAl8V299DGKPk1yWJllEHmqD42vuI4RopiRvJlYS9bYLZ
a2c4j3pJyS8JbT7eeW/By6ht44vkEXKuxtRu1d4WOB5QmStjSUhO0eMleTda
4EZtHmU5PEyaORsUFte1QFHRg6WjFcNkkZ/bC+11rVC0s8n9nf8wqVGINGNo
tkFRzD3HsYohosXu0misbAdxXml1VdQgKSi80nXErBNo/oP47aliMqAxEGvn
1QlVgoRvezzExCjYznppYifkn+K6CVli8peV8m2BrBNM20LljlmfyXVurK97
RRfcVCpPCXg8QIIF14a2eLyHn6Y4909//UTSlWsvqm/qge1fVjduzhISa/Zp
jwjPHvCM6ZD7BQgJz9/E/GtIDyRsSj3Svl5ItJtj+uru9cBdE2PXZH4vSeDY
20arfYAT6Z3e8axecnFxw49TXR/gU5X5vDu5H4kfvE0RnxSAsqvDMcduPmFk
jD7rihGA7RmZ5qlYPuEo6vFq7gigR67QPetXPqnm+rJy2wUA0hVVHindZOmu
yQwfy17Y4OU185n7e/LpoNH9bqYQPPrPvwn+2kkOXT/zqim+DzJ72WEzdrcT
SprBJ7l9UD/Fag2c005SXasZhWV9kH51Z/aqhjZSo6dpc3WkD4L1tqolbGgj
JndzqmzdRPD67PLxVrNWIn7e0lS28BMs6Ba9FM1pJv7CZYLign6IeWFYmrqk
jvR4/jOrlNsPoqNsieZftcS5I9qsvrcf8tnmIzq6tcSiVnRKqDsALqbKTVU/
1RCFoiw1ragBULG3LYphVhNOuIF1yN7PkFMpYVXI35BSTZ2UdWpfgMls07e/
84QoGUQa8S0GgVn/55MIdixUWyWsOLtpEAIiTazYlglw2e3W2gVOg5BMOVFO
zolAxT/ZsvvwIJAvj7SczqbC+Hex37ubgxD8udJ0tkcmfOa55DRSQ8DwsFzc
6lkIdRyjZa/rhsAywLBSze45xKnVGt/eJwFLB1UN7sVq8O7aRRTqRsFbq7Mr
JqcdTlREeh8zGoeOsKZ1bgF8KDqu4qxtK4c/T0q26boJ4PbpwwMrXRn4N9vd
qamzDy6kTzqOiJmo6OOuteZtPzBaevBFmALy6nNqfwkTw5JA39BdxjPwSH3B
vlWGX6FXmvyb8suZeCtkhRV5NAh2wkNnrp+YhaOXrkQMdg/Bjt54ExZLCdti
v+y2+XcYBt54R1TnKyOH4R+txpOAmXr7Apu9quiaByGbG0dACaRePMmPmLmw
vX84Swpbvrh/M3RRQziRFnP5wih0lB1gupuqY0FCbZyewzcoiS731JeqY4Zj
3+qZP4yB74ygnoYGDcz5GOJ8uXwM9p88XaKSqonn9R26+EdlsMLPpMHeaw4K
rc1neaqOQ6OGqXLQurmYKexKyno4Ds8LLqSZKmhhhvxW6cjWCTjNNHaoe6+F
pidKHHi9E6DEC9vqXzwPGaH7eO6hkyDMNkhMD9fGsUD+Knv5JCQu1VF86qKD
h3vll15HyyE+1bfKS18XbTje/KqZ38E9cU+DikgXNYxUk++f/Q5jG7Nk6a/m
49yHih6fJ7+DQLghtCxKD9We/pFtf2wKMtir5td7LcDHFdUyrmgK8i8Fqfst
Z2H5rdC2ZGMGRrns36YgZWHfc/sj7Z4MNOfdzo2qX4jaWiITpSQGcpal5ddv
08c4nrYPVjPw3OurnG1P9ZGdfship5yB2+e7ZNUsMsAzD/MLtFcycb1/1W71
Kwb4qn7LsIcnE9P1vBfVSQ1QUbd5z75rTFz05m7Sjt2GeHJ9UIrOCybGLy8z
bn5liLETFcsURUz0lSi+5RrTGL/GlX1jDoXeRcP6V67R6DRvQNHcmsIjF5wn
7RJoPPVD0ph42kHOxe9U/qDR/97LrjtAYbQ0KC4+iUa6N+b4nPUUFqyTTSTf
pDFTFtw6bEOhrHSqPTuPRo1786Pv21IY36xytbyKxo0v5z7UdKEwNfPowctc
GuUeojTutDMDG2y21tIYpHQ98NxvFD7Sih+vbaBRfeZZ6YArhTx3zYMtbTRC
CmNNqTuFRgIdm48CGveGmxUf2kfhyuIw1h0hjasPiNIWelFoealL5iOiMZKf
HdA6bXujmw/6B2gk7zZK2PspPHlYnzU0RGN40raf1XwpDLc6L/tbMv0vikor
n/Yl1Y+tgVIayzZ/kIT6UcgpzIwZG6Px0d7RwA8HKcyIUPR7Nk7j8sLHN2/8
TmGeo8+G8Ekab1ncfmR7iMJiw8oF1t9pnF9RQuTTfiVZIpuaonFCb+xJ0WEK
/wc13qzo
"]]}},
AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948],
Axes->True,
AxesLabel->{None, None},
AxesOrigin->{0, 0},
Method->{},
PlotRange->{{0, 10}, {-1.623796532045525, 2.3025850725858823`}},
PlotRangeClipping->True,
PlotRangePadding->{
Scaled[0.02],
Scaled[0.02]}]], "Output",
CellChangeTimes->{3.6112717778594217`*^9}]
}, Open ]]
},
WindowSize->{716, 833},
WindowMargins->{{Automatic, 214}, {Automatic, 26}},
FrontEndVersion->"9.0 for Microsoft Windows (64-bit) (January 25, 2013)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)
(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[579, 22, 224, 6, 52, "Input"],
Cell[806, 30, 211, 6, 31, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[1054, 41, 155, 3, 31, "Input"],
Cell[1212, 46, 130, 3, 31, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[1379, 54, 137, 4, 31, "Input"],
Cell[1519, 60, 105, 2, 31, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[1661, 67, 113, 3, 31, "Input"],
Cell[1777, 72, 90, 1, 31, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[1904, 78, 102, 2, 31, "Input"],
Cell[2009, 82, 321, 8, 31, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[2367, 95, 191, 4, 52, "Input"],
Cell[2561, 101, 131, 3, 31, "Output"]
}, Open ]],
Cell[2707, 107, 94, 1, 31, "Input"],
Cell[CellGroupData[{
Cell[2826, 112, 299, 8, 52, "Input"],
Cell[3128, 122, 3019, 57, 265, "Output"]
}, Open ]]
}
]
*)
(* End of internal cache information *)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
(* ::Package:: *)
(* Problem12.m *)
(* Author: William Woodruff *)
(* Problem: What is the value of the first triangle number to have over five hundred divisors? *)
Do[If[Length[Divisors[Binomial[i + 1, 2]]] > 500,
Print[Binomial[i + 1, 2]]; Break[]], {i, 1000000}]

80
samples/Nix/nginx.nix Normal file
View File

@@ -0,0 +1,80 @@
{ stdenv, fetchurl, fetchgit, openssl, zlib, pcre, libxml2, libxslt, expat
, rtmp ? false
, fullWebDAV ? false
, syslog ? false
, moreheaders ? false, ...}:
let
version = "1.4.4";
mainSrc = fetchurl {
url = "http://nginx.org/download/nginx-${version}.tar.gz";
sha256 = "1f82845mpgmhvm151fhn2cnqjggw9w7cvsqbva9rb320wmc9m63w";
};
rtmp-ext = fetchgit {
url = git://github.com/arut/nginx-rtmp-module.git;
rev = "1cfb7aeb582789f3b15a03da5b662d1811e2a3f1";
sha256 = "03ikfd2l8mzsjwx896l07rdrw5jn7jjfdiyl572yb9jfrnk48fwi";
};
dav-ext = fetchgit {
url = git://github.com/arut/nginx-dav-ext-module.git;
rev = "54cebc1f21fc13391aae692c6cce672fa7986f9d";
sha256 = "1dvpq1fg5rslnl05z8jc39sgnvh3akam9qxfl033akpczq1bh8nq";
};
syslog-ext = fetchgit {
url = https://github.com/yaoweibin/nginx_syslog_patch.git;
rev = "165affd9741f0e30c4c8225da5e487d33832aca3";
sha256 = "14dkkafjnbapp6jnvrjg9ip46j00cr8pqc2g7374z9aj7hrvdvhs";
};
moreheaders-ext = fetchgit {
url = https://github.com/agentzh/headers-more-nginx-module.git;
rev = "refs/tags/v0.23";
sha256 = "12pbjgsxnvcf2ff2i2qdn39q4cm5czlgrng96j8ml4cgxvnbdh39";
};
in
stdenv.mkDerivation rec {
name = "nginx-${version}";
src = mainSrc;
buildInputs = [ openssl zlib pcre libxml2 libxslt
] ++ stdenv.lib.optional fullWebDAV expat;
patches = if syslog then [ "${syslog-ext}/syslog_1.4.0.patch" ] else [];
configureFlags = [
"--with-http_ssl_module"
"--with-http_spdy_module"
"--with-http_xslt_module"
"--with-http_sub_module"
"--with-http_dav_module"
"--with-http_gzip_static_module"
"--with-http_secure_link_module"
"--with-ipv6"
# Install destination problems
# "--with-http_perl_module"
] ++ stdenv.lib.optional rtmp "--add-module=${rtmp-ext}"
++ stdenv.lib.optional fullWebDAV "--add-module=${dav-ext}"
++ stdenv.lib.optional syslog "--add-module=${syslog-ext}"
++ stdenv.lib.optional moreheaders "--add-module=${moreheaders-ext}";
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${libxml2 }/include/libxml2"
'';
# escape example
postInstall = ''
mv $out/sbin $out/bin ''' ''${
${ if true then ${ "" } else false }
'';
meta = {
description = "A reverse proxy and lightweight webserver";
maintainers = [ stdenv.lib.maintainers.raskin];
platforms = stdenv.lib.platforms.all;
inherit version;
};
}

38
samples/Pike/Error.pmod Normal file
View File

@@ -0,0 +1,38 @@
#pike __REAL_VERSION__
constant Generic = __builtin.GenericError;
constant Index = __builtin.IndexError;
constant BadArgument = __builtin.BadArgumentError;
constant Math = __builtin.MathError;
constant Resource = __builtin.ResourceError;
constant Permission = __builtin.PermissionError;
constant Decode = __builtin.DecodeError;
constant Cpp = __builtin.CppError;
constant Compilation = __builtin.CompilationError;
constant MasterLoad = __builtin.MasterLoadError;
constant ModuleLoad = __builtin.ModuleLoadError;
//! Returns an Error object for any argument it receives. If the
//! argument already is an Error object or is empty, it does nothing.
object mkerror(mixed error)
{
if (error == UNDEFINED)
return error;
if (objectp(error) && error->is_generic_error)
return error;
if (arrayp(error))
return Error.Generic(@error);
if (stringp(error))
return Error.Generic(error);
return Error.Generic(sprintf("%O", error));
}

360
samples/Pike/FakeFile.pike Normal file
View File

@@ -0,0 +1,360 @@
#pike __REAL_VERSION__
//! A string wrapper that pretends to be a @[Stdio.File] object
//! in addition to some features of a @[Stdio.FILE] object.
//! This constant can be used to distinguish a FakeFile object
//! from a real @[Stdio.File] object.
constant is_fake_file = 1;
protected string data;
protected int ptr;
protected int(0..1) r;
protected int(0..1) w;
protected int mtime;
protected function read_cb;
protected function read_oob_cb;
protected function write_cb;
protected function write_oob_cb;
protected function close_cb;
//! @seealso
//! @[Stdio.File()->close()]
int close(void|string direction) {
direction = lower_case(direction||"rw");
int cr = has_value(direction, "r");
int cw = has_value(direction, "w");
if(cr) {
r = 0;
}
if(cw) {
w = 0;
}
// FIXME: Close callback
return 1;
}
//! @decl void create(string data, void|string type, void|int pointer)
//! @seealso
//! @[Stdio.File()->create()]
void create(string _data, void|string type, int|void _ptr) {
if(!_data) error("No data string given to FakeFile.\n");
data = _data;
ptr = _ptr;
mtime = time();
if(type) {
type = lower_case(type);
if(has_value(type, "r"))
r = 1;
if(has_value(type, "w"))
w = 1;
}
else
r = w = 1;
}
protected string make_type_str() {
string type = "";
if(r) type += "r";
if(w) type += "w";
return type;
}
//! @seealso
//! @[Stdio.File()->dup()]
this_program dup() {
return this_program(data, make_type_str(), ptr);
}
//! Always returns 0.
//! @seealso
//! @[Stdio.File()->errno()]
int errno() { return 0; }
//! Returns size and the creation time of the string.
Stdio.Stat stat() {
Stdio.Stat st = Stdio.Stat();
st->size = sizeof(data);
st->mtime=st->ctime=mtime;
st->atime=time();
return st;
}
//! @seealso
//! @[Stdio.File()->line_iterator()]
String.SplitIterator line_iterator(int|void trim) {
if(trim)
return String.SplitIterator( data-"\r", '\n' );
return String.SplitIterator( data, '\n' );
}
protected mixed id;
//! @seealso
//! @[Stdio.File()->query_id()]
mixed query_id() { return id; }
//! @seealso
//! @[Stdio.File()->set_id()]
void set_id(mixed _id) { id = _id; }
//! @seealso
//! @[Stdio.File()->read_function()]
function(:string) read_function(int nbytes) {
return lambda() { return read(nbytes); };
}
//! @seealso
//! @[Stdio.File()->peek()]
int(-1..1) peek(int|float|void timeout) {
if(!r) return -1;
if(ptr >= sizeof(data)) return 0;
return 1;
}
//! Always returns 0.
//! @seealso
//! @[Stdio.File()->query_address()]
string query_address(void|int(0..1) is_local) { return 0; }
//! @seealso
//! @[Stdio.File()->read()]
string read(void|int(0..) len, void|int(0..1) not_all) {
if(!r) return 0;
if (len < 0) error("Cannot read negative number of characters.\n");
int start=ptr;
ptr += len;
if(zero_type(len) || ptr>sizeof(data))
ptr = sizeof(data);
// FIXME: read callback
return data[start..ptr-1];
}
//! @seealso
//! @[Stdio.FILE()->gets()]
string gets() {
if(!r) return 0;
string ret;
sscanf(data,"%*"+(string)ptr+"s%[^\n]",ret);
if(ret)
{
ptr+=sizeof(ret)+1;
if(ptr>sizeof(data))
{
ptr=sizeof(data);
if(!sizeof(ret))
ret = 0;
}
}
// FIXME: read callback
return ret;
}
//! @seealso
//! @[Stdio.FILE()->getchar()]
int getchar() {
if(!r) return 0;
int c;
if(catch(c=data[ptr]))
c=-1;
else
ptr++;
// FIXME: read callback
return c;
}
//! @seealso
//! @[Stdio.FILE()->unread()]
void unread(string s) {
if(!r) return;
if(data[ptr-sizeof(s)..ptr-1]==s)
ptr-=sizeof(s);
else
{
data=s+data[ptr..];
ptr=0;
}
}
//! @seealso
//! @[Stdio.File()->seek()]
int seek(int pos, void|int mult, void|int add) {
if(mult)
pos = pos*mult+add;
if(pos<0)
{
pos = sizeof(data)+pos;
if( pos < 0 )
pos = 0;
}
ptr = pos;
if( ptr > strlen( data ) )
ptr = strlen(data);
return ptr;
}
//! Always returns 1.
//! @seealso
//! @[Stdio.File()->sync()]
int(1..1) sync() { return 1; }
//! @seealso
//! @[Stdio.File()->tell()]
int tell() { return ptr; }
//! @seealso
//! @[Stdio.File()->truncate()]
int(0..1) truncate(int length) {
data = data[..length-1];
return sizeof(data)==length;
}
//! @seealso
//! @[Stdio.File()->write()]
int(-1..) write(string|array(string) str, mixed ... extra) {
if(!w) return -1;
if(arrayp(str)) str=str*"";
if(sizeof(extra)) str=sprintf(str, @extra);
if(ptr==sizeof(data)) {
data += str;
ptr = sizeof(data);
}
else if(sizeof(str)==1)
data[ptr++] = str[0];
else {
data = data[..ptr-1] + str + data[ptr+sizeof(str)..];
ptr += sizeof(str);
}
// FIXME: write callback
return sizeof(str);
}
//! @seealso
//! @[Stdio.File()->set_blocking]
void set_blocking() {
close_cb = 0;
read_cb = 0;
read_oob_cb = 0;
write_cb = 0;
write_oob_cb = 0;
}
//! @seealso
//! @[Stdio.File()->set_blocking_keep_callbacks]
void set_blocking_keep_callbacks() { }
//! @seealso
//! @[Stdio.File()->set_blocking]
void set_nonblocking(function rcb, function wcb, function ccb,
function rocb, function wocb) {
read_cb = rcb;
write_cb = wcb;
close_cb = ccb;
read_oob_cb = rocb;
write_oob_cb = wocb;
}
//! @seealso
//! @[Stdio.File()->set_blocking_keep_callbacks]
void set_nonblocking_keep_callbacks() { }
//! @seealso
//! @[Stdio.File()->set_close_callback]
void set_close_callback(function cb) { close_cb = cb; }
//! @seealso
//! @[Stdio.File()->set_read_callback]
void set_read_callback(function cb) { read_cb = cb; }
//! @seealso
//! @[Stdio.File()->set_read_oob_callback]
void set_read_oob_callback(function cb) { read_oob_cb = cb; }
//! @seealso
//! @[Stdio.File()->set_write_callback]
void set_write_callback(function cb) { write_cb = cb; }
//! @seealso
//! @[Stdio.File()->set_write_oob_callback]
void set_write_oob_callback(function cb) { write_oob_cb = cb; }
//! @seealso
//! @[Stdio.File()->query_close_callback]
function query_close_callback() { return close_cb; }
//! @seealso
//! @[Stdio.File()->query_read_callback]
function query_read_callback() { return read_cb; }
//! @seealso
//! @[Stdio.File()->query_read_oob_callback]
function query_read_oob_callback() { return read_oob_cb; }
//! @seealso
//! @[Stdio.File()->query_write_callback]
function query_write_callback() { return write_cb; }
//! @seealso
//! @[Stdio.File()->query_write_oob_callback]
function query_write_oob_callback() { return write_oob_cb; }
string _sprintf(int t) {
return t=='O' && sprintf("%O(%d,%O)", this_program, sizeof(data),
make_type_str());
}
// FakeFile specials.
//! A FakeFile can be casted to a string.
mixed cast(string to) {
switch(to) {
case "string": return data;
case "object": return this;
}
error("Can not cast object to %O.\n", to);
}
//! Sizeof on a FakeFile returns the size of its contents.
int(0..) _sizeof() {
return sizeof(data);
}
//! @ignore
#define NOPE(X) mixed X (mixed ... args) { error("This is a FakeFile. %s is not available.\n", #X); }
NOPE(assign);
NOPE(async_connect);
NOPE(connect);
NOPE(connect_unix);
NOPE(open);
NOPE(open_socket);
NOPE(pipe);
NOPE(tcgetattr);
NOPE(tcsetattr);
// Stdio.Fd
NOPE(dup2);
NOPE(lock); // We could implement this
NOPE(mode); // We could implement this
NOPE(proxy); // We could implement this
NOPE(query_fd);
NOPE(read_oob);
NOPE(set_close_on_exec);
NOPE(set_keepalive);
NOPE(trylock); // We could implement this
NOPE(write_oob);
//! @endignore

View File

@@ -0,0 +1,260 @@
:- module(format_spec, [ format_error/2
, format_spec/2
, format_spec//1
, spec_arity/2
, spec_types/2
]).
:- use_module(library(dcg/basics), [eos//0, integer//1, string_without//2]).
:- use_module(library(error)).
:- use_module(library(when), [when/2]).
% TODO loading this module is optional
% TODO it's for my own convenience during development
%:- use_module(library(mavis)).
%% format_error(+Goal, -Error:string) is nondet.
%
% True if Goal exhibits an Error in its format string. The
% Error string describes what is wrong with Goal. Iterates each
% error on backtracking.
%
% Goal may be one of the following predicates:
%
% * format/2
% * format/3
% * debug/3
format_error(format(Format,Args), Error) :-
format_error_(Format, Args,Error).
format_error(format(_,Format,Args), Error) :-
format_error_(Format,Args,Error).
format_error(debug(_,Format,Args), Error) :-
format_error_(Format,Args,Error).
format_error_(Format,Args,Error) :-
format_spec(Format, Spec),
!,
is_list(Args),
spec_types(Spec, Types),
types_error(Args, Types, Error).
format_error_(Format,_,Error) :-
% \+ format_spec(Format, _),
format(string(Error), "Invalid format string: ~q", [Format]).
types_error(Args, Types, Error) :-
length(Types, TypesLen),
length(Args, ArgsLen),
TypesLen =\= ArgsLen,
!,
format( string(Error)
, "Wrong argument count. Expected ~d, got ~d"
, [TypesLen, ArgsLen]
).
types_error(Args, Types, Error) :-
types_error_(Args, Types, Error).
types_error_([Arg|_],[Type|_],Error) :-
ground(Arg),
\+ is_of_type(Type,Arg),
message_to_string(error(type_error(Type,Arg),_Location),Error).
types_error_([_|Args],[_|Types],Error) :-
types_error_(Args, Types, Error).
% check/0 augmentation
:- multifile check:checker/2.
:- dynamic check:checker/2.
check:checker(format_spec:checker, "format/2 strings and arguments").
:- dynamic format_fail/3.
checker :-
prolog_walk_code([ module_class([user])
, infer_meta_predicates(false)
, autoload(false) % format/{2,3} are always loaded
, undefined(ignore)
, trace_reference(_)
, on_trace(check_format)
]),
retract(format_fail(Goal,Location,Error)),
print_message(warning, format_error(Goal,Location,Error)),
fail. % iterate all errors
checker. % succeed even if no errors are found
check_format(Module:Goal, _Caller, Location) :-
predicate_property(Module:Goal, imported_from(Source)),
memberchk(Source, [system,prolog_debug]),
can_check(Goal),
format_error(Goal, Error),
assert(format_fail(Goal, Location, Error)),
fail.
check_format(_,_,_). % succeed to avoid printing goals
% true if format_error/2 can check this goal
can_check(Goal) :-
once(clause(format_error(Goal,_),_)).
prolog:message(format_error(Goal,Location,Error)) -->
prolog:message_location(Location),
['~n In goal: ~q~n ~s'-[Goal,Error]].
%% format_spec(-Spec)//
%
% DCG for parsing format strings. It doesn't yet generate format
% strings from a spec. See format_spec/2 for details.
format_spec([]) -->
eos.
format_spec([escape(Numeric,Modifier,Action)|Rest]) -->
"~",
numeric_argument(Numeric),
modifier_argument(Modifier),
action(Action),
format_spec(Rest).
format_spec([text(String)|Rest]) -->
{ when((ground(String);ground(Codes)),string_codes(String, Codes)) },
string_without("~", Codes),
{ Codes \= [] },
format_spec(Rest).
%% format_spec(+Format, -Spec:list) is semidet.
%
% Parse a format string. Each element of Spec is one of the following:
%
% * `text(Text)` - text sent to the output as is
% * `escape(Num,Colon,Action)` - a format escape
%
% `Num` represents the optional numeric portion of an esape. `Colon`
% represents the optional colon in an escape. `Action` is an atom
% representing the action to be take by this escape.
format_spec(Format, Spec) :-
when((ground(Format);ground(Codes)),text_codes(Format, Codes)),
once(phrase(format_spec(Spec), Codes, [])).
%% spec_arity(+FormatSpec, -Arity:positive_integer) is det.
%
% True if FormatSpec requires format/2 to have Arity arguments.
spec_arity(Spec, Arity) :-
spec_types(Spec, Types),
length(Types, Arity).
%% spec_types(+FormatSpec, -Types:list(type)) is det.
%
% True if FormatSpec requires format/2 to have arguments of Types. Each
% value of Types is a type as described by error:has_type/2. This
% notion of types is compatible with library(mavis).
spec_types(Spec, Types) :-
phrase(spec_types(Spec), Types).
spec_types([]) -->
[].
spec_types([Item|Items]) -->
item_types(Item),
spec_types(Items).
item_types(text(_)) -->
[].
item_types(escape(Numeric,_,Action)) -->
numeric_types(Numeric),
action_types(Action).
numeric_types(number(_)) -->
[].
numeric_types(character(_)) -->
[].
numeric_types(star) -->
[number].
numeric_types(nothing) -->
[].
action_types(Action) -->
{ atom_codes(Action, [Code]) },
{ action_types(Code, Types) },
phrase(Types).
%% text_codes(Text:text, Codes:codes).
text_codes(Var, Codes) :-
var(Var),
!,
string_codes(Var, Codes).
text_codes(Atom, Codes) :-
atom(Atom),
!,
atom_codes(Atom, Codes).
text_codes(String, Codes) :-
string(String),
!,
string_codes(String, Codes).
text_codes(Codes, Codes) :-
is_of_type(codes, Codes).
numeric_argument(number(N)) -->
integer(N).
numeric_argument(character(C)) -->
"`",
[C].
numeric_argument(star) -->
"*".
numeric_argument(nothing) -->
"".
modifier_argument(colon) -->
":".
modifier_argument(no_colon) -->
\+ ":".
action(Action) -->
[C],
{ is_action(C) },
{ atom_codes(Action, [C]) }.
%% is_action(+Action:integer) is semidet.
%% is_action(-Action:integer) is multi.
%
% True if Action is a valid format/2 action character. Iterates all
% acceptable action characters, if Action is unbound.
is_action(Action) :-
action_types(Action, _).
%% action_types(?Action:integer, ?Types:list(type))
%
% True if Action consumes arguments matching Types. An action (like
% `~`), which consumes no arguments, has `Types=[]`. For example,
%
% ?- action_types(0'~, Types).
% Types = [].
% ?- action_types(0'a, Types).
% Types = [atom].
action_types(0'~, []).
action_types(0'a, [atom]).
action_types(0'c, [integer]). % specifically, a code
action_types(0'd, [integer]).
action_types(0'D, [integer]).
action_types(0'e, [float]).
action_types(0'E, [float]).
action_types(0'f, [float]).
action_types(0'g, [float]).
action_types(0'G, [float]).
action_types(0'i, [any]).
action_types(0'I, [integer]).
action_types(0'k, [any]).
action_types(0'n, []).
action_types(0'N, []).
action_types(0'p, [any]).
action_types(0'q, [any]).
action_types(0'r, [integer]).
action_types(0'R, [integer]).
action_types(0's, [text]).
action_types(0'@, [callable]).
action_types(0't, []).
action_types(0'|, []).
action_types(0'+, []).
action_types(0'w, [any]).
action_types(0'W, [any, list]).

194
samples/Prolog/func.pl Normal file
View File

@@ -0,0 +1,194 @@
:- module(func, [ op(675, xfy, ($))
, op(650, xfy, (of))
, ($)/2
, (of)/2
]).
:- use_module(library(list_util), [xfy_list/3]).
:- use_module(library(function_expansion)).
:- use_module(library(arithmetic)).
:- use_module(library(error)).
% true if the module whose terms are being read has specifically
% imported library(func).
wants_func :-
prolog_load_context(module, Module),
Module \== func, % we don't want func sugar ourselves
predicate_property(Module:of(_,_),imported_from(func)).
%% compile_function(+Term, -In, -Out, -Goal) is semidet.
%
% True if Term represents a function from In to Out
% implemented by calling Goal. This multifile hook is
% called by $/2 and of/2 to convert a term into a goal.
% It's used at compile time for macro expansion.
% It's used at run time to handle functions which aren't
% known at compile time.
% When called as a hook, Term is guaranteed to be =nonvar=.
%
% For example, to treat library(assoc) terms as functions which
% map a key to a value, one might define:
%
% :- multifile compile_function/4.
% compile_function(Assoc, Key, Value, Goal) :-
% is_assoc(Assoc),
% Goal = get_assoc(Key, Assoc, Value).
%
% Then one could write:
%
% list_to_assoc([a-1, b-2, c-3], Assoc),
% Two = Assoc $ b,
:- multifile compile_function/4.
compile_function(Var, _, _, _) :-
% variables storing functions must be evaluated at run time
% and can't be compiled, a priori, into a goal
var(Var),
!,
fail.
compile_function(Expr, In, Out, Out is Expr) :-
% arithmetic expression of one variable are simply evaluated
\+ string(Expr), % evaluable/1 throws exception with strings
arithmetic:evaluable(Expr),
term_variables(Expr, [In]).
compile_function(F, In, Out, func:Goal) :-
% composed functions
function_composition_term(F),
user:function_expansion(F, func:Functor, true),
Goal =.. [Functor,In,Out].
compile_function(F, In, Out, Goal) :-
% string interpolation via format templates
format_template(F),
( atom(F) ->
Goal = format(atom(Out), F, In)
; string(F) ->
Goal = format(string(Out), F, In)
; error:has_type(codes, F) ->
Goal = format(codes(Out), F, In)
; fail % to be explicit
).
compile_function(Dict, In, Out, Goal) :-
is_dict(Dict),
Goal = get_dict(In, Dict, Out).
%% $(+Function, +Argument) is det.
%
% Apply Function to an Argument. A Function is any predicate
% whose final argument generates output and whose penultimate argument
% accepts input.
%
% This is realized by expanding function application to chained
% predicate calls at compile time. Function application itself can
% be chained.
%
% ==
% Reversed = reverse $ sort $ [c,d,b].
% ==
:- meta_predicate $(2,+).
$(_,_) :-
throw(error(permission_error(call, predicate, ($)/2),
context(_, '$/2 must be subject to goal expansion'))).
user:function_expansion($(F,X), Y, Goal) :-
wants_func,
( func:compile_function(F, X, Y, Goal) ->
true
; var(F) -> Goal = % defer until run time
( func:compile_function(F, X, Y, P) ->
call(P)
; call(F, X, Y)
)
; Goal = call(F, X, Y)
).
%% of(+F, +G) is det.
%
% Creates a new function by composing F and G. The functions are
% composed at compile time to create a new, compiled predicate which
% behaves like a function. Function composition can be chained.
% Composed functions can also be applied with $/2.
%
% ==
% Reversed = reverse of sort $ [c,d,b].
% ==
:- meta_predicate of(2,2).
of(_,_).
%% format_template(Format) is semidet.
%
% True if Format is a template string suitable for format/3.
% The current check is very naive and should be improved.
format_template(Format) :-
atom(Format), !,
atom_codes(Format, Codes),
format_template(Codes).
format_template(Format) :-
string(Format),
!,
string_codes(Format, Codes),
format_template(Codes).
format_template(Format) :-
error:has_type(codes, Format),
memberchk(0'~, Format). % ' fix syntax highlighting
% True if the argument is a function composition term
function_composition_term(of(_,_)).
% Converts a function composition term into a list of functions to compose
functions_to_compose(Term, Funcs) :-
functor(Term, Op, 2),
Op = (of),
xfy_list(Op, Term, Funcs).
% Thread a state variable through a list of functions. This is similar
% to a DCG expansion, but much simpler.
thread_state([], [], Out, Out).
thread_state([F|Funcs], [Goal|Goals], In, Out) :-
( compile_function(F, In, Tmp, Goal) ->
true
; var(F) ->
instantiation_error(F)
; F =.. [Functor|Args],
append(Args, [In, Tmp], NewArgs),
Goal =.. [Functor|NewArgs]
),
thread_state(Funcs, Goals, Tmp, Out).
user:function_expansion(Term, func:Functor, true) :-
wants_func,
functions_to_compose(Term, Funcs),
debug(func, 'building composed function for: ~w', [Term]),
variant_sha1(Funcs, Sha),
format(atom(Functor), 'composed_function_~w', [Sha]),
debug(func, ' name: ~s', [Functor]),
( func:current_predicate(Functor/2) ->
debug(func, ' composed predicate already exists', [])
; true ->
reverse(Funcs, RevFuncs),
thread_state(RevFuncs, Threaded, In, Out),
xfy_list(',', Body, Threaded),
Head =.. [Functor, In, Out],
func:assert(Head :- Body),
func:compile_predicates([Functor/2])
).
% support foo(x,~,y) evaluation
user:function_expansion(Term, Output, Goal) :-
wants_func,
compound(Term),
% has a single ~ argument
setof( X
, ( arg(X,Term,Arg), Arg == '~' )
, [N]
),
% replace ~ with a variable
Term =.. [Name|Args0],
nth1(N, Args0, ~, Rest),
nth1(N, Args, Output, Rest),
Goal =.. [Name|Args].

View File

@@ -0,0 +1,241 @@
#
# Cinema 4D Python Plugin Source file
# https://github.com/nr-plugins/nr-xpresso-alignment-tools
#
# coding: utf-8
#
# Copyright (C) 2012, Niklas Rosenstein
# Licensed under the GNU General Public License
#
# XPAT - XPresso Alignment Tools
# ==============================
#
# The XPAT plugin provides tools for aligning nodes in the Cinema 4D
# XPresso Editor, improving readability of complex XPresso set-ups
# immensively.
#
# Requirements:
# - MAXON Cinema 4D R13+
# - Python `c4dtools` library. Get it from
# http://github.com/NiklasRosenstein/c4dtools
#
# Author: Niklas Rosenstein <rosensteinniklas@gmail.com>
# Version: 1.1 (01/06/2012)
import os
import sys
import json
import c4d
import c4dtools
import itertools
from c4d.modules import graphview as gv
from c4dtools.misc import graphnode
res, importer = c4dtools.prepare(__file__, __res__)
settings = c4dtools.helpers.Attributor({
'options_filename': res.file('config.json'),
})
def align_nodes(nodes, mode, spacing):
r"""
Aligns the passed nodes horizontally and apply the minimum spacing
between them.
"""
modes = ['horizontal', 'vertical']
if not nodes:
return
if mode not in modes:
raise ValueError('invalid mode, choices are: ' + ', '.join(modes))
get_0 = lambda x: x.x
get_1 = lambda x: x.y
set_0 = lambda x, v: setattr(x, 'x', v)
set_1 = lambda x, v: setattr(x, 'y', v)
if mode == 'vertical':
get_0, get_1 = get_1, get_0
set_0, set_1 = set_1, set_0
nodes = [graphnode.GraphNode(n) for n in nodes]
nodes.sort(key=lambda n: get_0(n.position))
midpoint = graphnode.find_nodes_mid(nodes)
# Apply the spacing between the nodes relative to the coordinate-systems
# origin. We can offset them later because we now the nodes' midpoint
# already.
first_position = nodes[0].position
new_positions = []
prev_offset = 0
for node in nodes:
# Compute the relative position of the node.
position = node.position
set_0(position, get_0(position) - get_0(first_position))
# Obtain it's size and check if the node needs to be re-placed.
size = node.size
if get_0(position) < prev_offset:
set_0(position, prev_offset)
prev_offset += spacing + get_0(size)
else:
prev_offset = get_0(position) + get_0(size) + spacing
set_1(position, get_1(midpoint))
new_positions.append(position)
# Center the nodes again.
bbox_size = prev_offset - spacing
bbox_size_2 = bbox_size * 0.5
for node, position in itertools.izip(nodes, new_positions):
# TODO: Here is some issue with offsetting the nodes. Some value
# dependent on the spacing must be added here to not make the nodes
# move horizontally/vertically although they have already been
# aligned.
set_0(position, get_0(midpoint) + get_0(position) - bbox_size_2 + spacing)
node.position = position
def align_nodes_shortcut(mode, spacing):
master = gv.GetMaster(0)
if not master:
return
root = master.GetRoot()
if not root:
return
nodes = graphnode.find_selected_nodes(root)
if nodes:
master.AddUndo()
align_nodes(nodes, mode, spacing)
c4d.EventAdd()
return True
class XPAT_Options(c4dtools.helpers.Attributor):
r"""
This class organizes the options for the XPAT plugin, i.e.
validating, loading and saving.
"""
defaults = {
'hspace': 50,
'vspace': 20,
}
def __init__(self, filename=None):
super(XPAT_Options, self).__init__()
self.load(filename)
def load(self, filename=None):
r"""
Load the options from file pointed to by filename. If filename
is None, it defaults to the filename defined in options in the
global scope.
"""
if filename is None:
filename = settings.options_filename
if os.path.isfile(filename):
self.dict_ = self.defaults.copy()
with open(filename, 'rb') as fp:
self.dict_.update(json.load(fp))
else:
self.dict_ = self.defaults.copy()
self.save()
def save(self, filename=None):
r"""
Save the options defined in XPAT_Options instance to HD.
"""
if filename is None:
filename = settings.options_filename
values = dict((k, v) for k, v in self.dict_.iteritems()
if k in self.defaults)
with open(filename, 'wb') as fp:
json.dump(values, fp)
class XPAT_OptionsDialog(c4d.gui.GeDialog):
r"""
This class implements the behavior of the XPAT options dialog,
taking care of storing the options on the HD and loading them
again on startup.
"""
# c4d.gui.GeDialog
def CreateLayout(self):
return self.LoadDialogResource(res.DLG_OPTIONS)
def InitValues(self):
self.SetLong(res.EDT_HSPACE, options.hspace)
self.SetLong(res.EDT_VSPACE, options.vspace)
return True
def Command(self, id, msg):
if id == res.BTN_SAVE:
options.hspace = self.GetLong(res.EDT_HSPACE)
options.vspace = self.GetLong(res.EDT_VSPACE)
options.save()
self.Close()
return True
class XPAT_Command_OpenOptionsDialog(c4dtools.plugins.Command):
r"""
This Cinema 4D CommandData plugin opens the XPAT options dialog
when being executed.
"""
def __init__(self):
super(XPAT_Command_OpenOptionsDialog, self).__init__()
self._dialog = None
@property
def dialog(self):
if not self._dialog:
self._dialog = XPAT_OptionsDialog()
return self._dialog
# c4dtools.plugins.Command
PLUGIN_ID = 1029621
PLUGIN_NAME = res.string.XPAT_COMMAND_OPENOPTIONSDIALOG()
PLUGIN_HELP = res.string.XPAT_COMMAND_OPENOPTIONSDIALOG_HELP()
# c4d.gui.CommandData
def Execute(self, doc):
return self.dialog.Open(c4d.DLG_TYPE_MODAL)
class XPAT_Command_AlignHorizontal(c4dtools.plugins.Command):
PLUGIN_ID = 1029538
PLUGIN_NAME = res.string.XPAT_COMMAND_ALIGNHORIZONTAL()
PLUGIN_ICON = res.file('xpresso-align-h.png')
PLUGIN_HELP = res.string.XPAT_COMMAND_ALIGNHORIZONTAL_HELP()
def Execute(self, doc):
align_nodes_shortcut('horizontal', options.hspace)
return True
class XPAT_Command_AlignVertical(c4dtools.plugins.Command):
PLUGIN_ID = 1029539
PLUGIN_NAME = res.string.XPAT_COMMAND_ALIGNVERTICAL()
PLUGIN_ICON = res.file('xpresso-align-v.png')
PLUGIN_HELP = res.string.XPAT_COMMAND_ALIGNVERTICAL_HELP()
def Execute(self, doc):
align_nodes_shortcut('vertical', options.vspace)
return True
options = XPAT_Options()
if __name__ == '__main__':
c4dtools.plugins.main()

30
samples/QMake/complex.pro Normal file
View File

@@ -0,0 +1,30 @@
# This QMake file is complex, as it usese
# boolean operators and function calls
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# We could use some OpenGL right now
contains(QT_CONFIG, opengl) | contains(QT_CONFIG, opengles2) {
QT += opengl
} else {
DEFINES += QT_NO_OPENGL
}
TEMPLATE = app
win32 {
TARGET = BlahApp
RC_FILE = Resources/winres.rc
}
!win32 { TARGET = blahapp }
# Let's add a PRI file!
include(functions.pri)
SOURCES += file.cpp
HEADERS += file.h
FORMS += file.ui
RESOURCES += res.qrc

View File

@@ -0,0 +1,8 @@
# QMake include file that calls some functions
# and does nothing else...
exists(.git/HEAD) {
system(git rev-parse HEAD >rev.txt)
} else {
system(echo ThisIsNotAGitRepo >rev.txt)
}

View File

@@ -0,0 +1,2 @@
#!/usr/bin/qmake
message(This is QMake.)

17
samples/QMake/simple.pro Normal file
View File

@@ -0,0 +1,17 @@
# Simple QMake file
CONFIG += qt
QT += core gui
TEMPLATE = app
TARGET = simpleapp
SOURCES += file.cpp \
file2.c \
This/Is/Folder/file3.cpp
HEADERS += file.h \
file2.h \
This/Is/Folder/file3.h
FORMS += This/Is/Folder/file3.ui \
Test.ui

View File

@@ -0,0 +1,19 @@
Pry.config.commands.import Pry::ExtendedCommands::Experimental
Pry.config.pager = false
Pry.config.color = false
Pry.config.commands.alias_command "lM", "ls -M"
Pry.config.commands.command "add", "Add a list of numbers together" do |*args|
output.puts "Result is: #{args.map(&:to_i).inject(&:+)}"
end
Pry.config.history.should_save = false
Pry.config.prompt = [proc { "input> " },
proc { " | " }]
# Disable pry-buggy-plug:
Pry.plugins["buggy-plug"].disable!

31
samples/Slim/sample.slim Normal file
View File

@@ -0,0 +1,31 @@
doctype html
html
head
title Slim Examples
meta name="keywords" content="template language"
meta name="author" content=author
javascript:
alert('Slim supports embedded javascript!')
body
h1 Markup examples
#content
p This example shows you how a basic Slim file looks like.
== yield
- unless items.empty?
table
- for item in items do
tr
td.name = item.name
td.price = item.price
- else
p
| No items found. Please add some inventory.
Thank you!
div id="footer"
= render 'footer'
| Copyright © #{year} #{author}

21
samples/XML/sample.nuspec Normal file
View File

@@ -0,0 +1,21 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Sample</id>
<title>Sample</title>
<version>0.101.0</version>
<authors>Hugh Bot</authors>
<owners>Hugh Bot</owners>
<summary>A package of nuget</summary>
<description>
It just works
</description>
<projectUrl>http://hubot.github.com</projectUrl>
<copyright/>
<licenseUrl>https://github.com/github/hubot/LICENSEmd</licenseUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
</metadata>
<files>
<file src="tools\**" target="tools"/>
</files>
</package>

View File

@@ -0,0 +1,22 @@
#tag Class
Protected Class App
Inherits Application
#tag Constant, Name = kEditClear, Type = String, Dynamic = False, Default = \"&Delete", Scope = Public
#Tag Instance, Platform = Windows, Language = Default, Definition = \"&Delete"
#Tag Instance, Platform = Linux, Language = Default, Definition = \"&Delete"
#tag EndConstant
#tag Constant, Name = kFileQuit, Type = String, Dynamic = False, Default = \"&Quit", Scope = Public
#Tag Instance, Platform = Windows, Language = Default, Definition = \"E&xit"
#tag EndConstant
#tag Constant, Name = kFileQuitShortcut, Type = String, Dynamic = False, Default = \"", Scope = Public
#Tag Instance, Platform = Mac OS, Language = Default, Definition = \"Cmd+Q"
#Tag Instance, Platform = Linux, Language = Default, Definition = \"Ctrl+Q"
#tag EndConstant
#tag ViewBehavior
#tag EndViewBehavior
End Class
#tag EndClass

View File

@@ -0,0 +1,23 @@
#tag Report
Begin Report BillingReport
Compatibility = ""
Units = 0
Width = 8.5
Begin PageHeader
Type = 1
Height = 1.0
End
Begin Body
Type = 3
Height = 2.0
End
Begin PageFooter
Type = 5
Height = 1.0
End
End
#tag EndReport
#tag ReportCode
#tag EndReportCode

View File

@@ -0,0 +1,112 @@
#tag Menu
Begin Menu MainMenuBar
Begin MenuItem FileMenu
SpecialMenu = 0
Text = "&File"
Index = -2147483648
AutoEnable = True
Visible = True
Begin QuitMenuItem FileQuit
SpecialMenu = 0
Text = "#App.kFileQuit"
Index = -2147483648
ShortcutKey = "#App.kFileQuitShortcut"
Shortcut = "#App.kFileQuitShortcut"
AutoEnable = True
Visible = True
End
End
Begin MenuItem EditMenu
SpecialMenu = 0
Text = "&Edit"
Index = -2147483648
AutoEnable = True
Visible = True
Begin MenuItem EditUndo
SpecialMenu = 0
Text = "&Undo"
Index = -2147483648
ShortcutKey = "Z"
Shortcut = "Cmd+Z"
MenuModifier = True
AutoEnable = True
Visible = True
End
Begin MenuItem EditSeparator1
SpecialMenu = 0
Text = "-"
Index = -2147483648
AutoEnable = True
Visible = True
End
Begin MenuItem EditCut
SpecialMenu = 0
Text = "Cu&t"
Index = -2147483648
ShortcutKey = "X"
Shortcut = "Cmd+X"
MenuModifier = True
AutoEnable = True
Visible = True
End
Begin MenuItem EditCopy
SpecialMenu = 0
Text = "&Copy"
Index = -2147483648
ShortcutKey = "C"
Shortcut = "Cmd+C"
MenuModifier = True
AutoEnable = True
Visible = True
End
Begin MenuItem EditPaste
SpecialMenu = 0
Text = "&Paste"
Index = -2147483648
ShortcutKey = "V"
Shortcut = "Cmd+V"
MenuModifier = True
AutoEnable = True
Visible = True
End
Begin MenuItem EditClear
SpecialMenu = 0
Text = "#App.kEditClear"
Index = -2147483648
AutoEnable = True
Visible = True
End
Begin MenuItem EditSeparator2
SpecialMenu = 0
Text = "-"
Index = -2147483648
AutoEnable = True
Visible = True
End
Begin MenuItem EditSelectAll
SpecialMenu = 0
Text = "Select &All"
Index = -2147483648
ShortcutKey = "A"
Shortcut = "Cmd+A"
MenuModifier = True
AutoEnable = True
Visible = True
End
Begin MenuItem UntitledSeparator
SpecialMenu = 0
Text = "-"
Index = -2147483648
AutoEnable = True
Visible = True
End
Begin AppleMenuItem AboutItem
SpecialMenu = 0
Text = "About This App..."
Index = -2147483648
AutoEnable = True
Visible = True
End
End
End
#tag EndMenu

View File

@@ -0,0 +1,14 @@
#tag Toolbar
Begin Toolbar MyToolbar
Begin ToolButton FirstItem
Caption = "First Item"
HelpTag = ""
Style = 0
End
Begin ToolButton SecondItem
Caption = "Second Item"
HelpTag = ""
Style = 0
End
End
#tag EndToolbar

View File

@@ -0,0 +1,304 @@
#tag Window
Begin Window Window1
BackColor = &cFFFFFF00
Backdrop = 0
CloseButton = True
Compatibility = ""
Composite = False
Frame = 0
FullScreen = False
FullScreenButton= False
HasBackColor = False
Height = 400
ImplicitInstance= True
LiveResize = True
MacProcID = 0
MaxHeight = 32000
MaximizeButton = True
MaxWidth = 32000
MenuBar = 1153981589
MenuBarVisible = True
MinHeight = 64
MinimizeButton = True
MinWidth = 64
Placement = 0
Resizeable = True
Title = "Sample App"
Visible = True
Width = 600
Begin PushButton HelloWorldButton
AutoDeactivate = True
Bold = False
ButtonStyle = "0"
Cancel = False
Caption = "Push Me"
Default = True
Enabled = True
Height = 20
HelpTag = ""
Index = -2147483648
InitialParent = ""
Italic = False
Left = 260
LockBottom = False
LockedInPosition= False
LockLeft = True
LockRight = False
LockTop = True
Scope = 0
TabIndex = 0
TabPanelIndex = 0
TabStop = True
TextFont = "System"
TextSize = 0.0
TextUnit = 0
Top = 32
Underline = False
Visible = True
Width = 80
End
End
#tag EndWindow
#tag WindowCode
#tag EndWindowCode
#tag Events HelloWorldButton
#tag Event
Sub Action()
Dim total As Integer
For i As Integer = 0 To 10
total = total + i
Next
MsgBox "Hello World! " + Str(total)
End Sub
#tag EndEvent
#tag EndEvents
#tag ViewBehavior
#tag ViewProperty
Name="BackColor"
Visible=true
Group="Appearance"
InitialValue="&hFFFFFF"
Type="Color"
#tag EndViewProperty
#tag ViewProperty
Name="Backdrop"
Visible=true
Group="Appearance"
Type="Picture"
EditorType="Picture"
#tag EndViewProperty
#tag ViewProperty
Name="CloseButton"
Visible=true
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="Composite"
Visible=true
Group="Appearance"
InitialValue="False"
Type="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="Frame"
Visible=true
Group="Appearance"
InitialValue="0"
Type="Integer"
EditorType="Enum"
#tag EnumValues
"0 - Document"
"1 - Movable Modal"
"2 - Modal Dialog"
"3 - Floating Window"
"4 - Plain Box"
"5 - Shadowed Box"
"6 - Rounded Window"
"7 - Global Floating Window"
"8 - Sheet Window"
"9 - Metal Window"
"10 - Drawer Window"
"11 - Modeless Dialog"
#tag EndEnumValues
#tag EndViewProperty
#tag ViewProperty
Name="FullScreen"
Group="Appearance"
InitialValue="False"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="FullScreenButton"
Visible=true
Group="Appearance"
InitialValue="False"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="HasBackColor"
Visible=true
Group="Appearance"
InitialValue="False"
Type="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="Height"
Visible=true
Group="Position"
InitialValue="400"
Type="Integer"
#tag EndViewProperty
#tag ViewProperty
Name="ImplicitInstance"
Visible=true
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="Interfaces"
Visible=true
Group="ID"
Type="String"
#tag EndViewProperty
#tag ViewProperty
Name="LiveResize"
Visible=true
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="MacProcID"
Visible=true
Group="Appearance"
InitialValue="0"
Type="Integer"
#tag EndViewProperty
#tag ViewProperty
Name="MaxHeight"
Visible=true
Group="Position"
InitialValue="32000"
Type="Integer"
#tag EndViewProperty
#tag ViewProperty
Name="MaximizeButton"
Visible=true
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="MaxWidth"
Visible=true
Group="Position"
InitialValue="32000"
Type="Integer"
#tag EndViewProperty
#tag ViewProperty
Name="MenuBar"
Visible=true
Group="Appearance"
Type="MenuBar"
EditorType="MenuBar"
#tag EndViewProperty
#tag ViewProperty
Name="MenuBarVisible"
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="MinHeight"
Visible=true
Group="Position"
InitialValue="64"
Type="Integer"
#tag EndViewProperty
#tag ViewProperty
Name="MinimizeButton"
Visible=true
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="MinWidth"
Visible=true
Group="Position"
InitialValue="64"
Type="Integer"
#tag EndViewProperty
#tag ViewProperty
Name="Name"
Visible=true
Group="ID"
Type="String"
#tag EndViewProperty
#tag ViewProperty
Name="Placement"
Visible=true
Group="Position"
InitialValue="0"
Type="Integer"
EditorType="Enum"
#tag EnumValues
"0 - Default"
"1 - Parent Window"
"2 - Main Screen"
"3 - Parent Window Screen"
"4 - Stagger"
#tag EndEnumValues
#tag EndViewProperty
#tag ViewProperty
Name="Resizeable"
Visible=true
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="Super"
Visible=true
Group="ID"
Type="String"
#tag EndViewProperty
#tag ViewProperty
Name="Title"
Visible=true
Group="Appearance"
InitialValue="Untitled"
Type="String"
#tag EndViewProperty
#tag ViewProperty
Name="Visible"
Visible=true
Group="Appearance"
InitialValue="True"
Type="Boolean"
EditorType="Boolean"
#tag EndViewProperty
#tag ViewProperty
Name="Width"
Visible=true
Group="Position"
InitialValue="600"
Type="Integer"
#tag EndViewProperty
#tag EndViewBehavior

View File

@@ -0,0 +1,17 @@
Dim dbFile As FolderItem
Dim db As New SQLiteDatabase
dbFile = GetFolderItem("Employees.sqlite")
db.DatabaseFile = dbFile
If db.Connect Then
db.SQLExecute("BEGIN TRANSACTION")
db.SQLExecute ("INSERT INTO Employees (Name,Job,YearJoined) VALUES "_
+"('Dr.Strangelove','Advisor',1962)")
If db.Error then
MsgBox("Error: " + db.ErrorMessage)
db.Rollback
Else
db.Commit
End If
Else
MsgBox("The database couldn't be opened. Error: " + db.ErrorMessage)
End If

28
samples/Zephir/filenames/exception.zep.c generated Normal file
View File

@@ -0,0 +1,28 @@
#ifdef HAVE_CONFIG_H
#include "../../ext_config.h"
#endif
#include <php.h>
#include "../../php_ext.h"
#include "../../ext.h"
#include <Zend/zend_operators.h>
#include <Zend/zend_exceptions.h>
#include <Zend/zend_interfaces.h>
#include "kernel/main.h"
/**
* Test\Router\Exception
*
* Exceptions generated by the router
*/
ZEPHIR_INIT_CLASS(Test_Router_Exception) {
ZEPHIR_REGISTER_CLASS_EX(Test\\Router, Exception, test, router_exception, zend_exception_get_default(TSRMLS_C), NULL, 0);
return SUCCESS;
}

View File

@@ -0,0 +1,4 @@
extern zend_class_entry *test_router_exception_ce;
ZEPHIR_INIT_CLASS(Test_Router_Exception);

View File

@@ -0,0 +1,8 @@
<?php
namespace Test\Router;
class Exception extends \Exception
{
}

View File

@@ -247,6 +247,13 @@ class TestBlob < Test::Unit::TestCase
# Generated VCR
assert blob("YAML/vcr_cassette.yml").generated?
# Generated by Zephir
assert blob("Zephir/filenames/exception.zep.c").generated?
assert blob("Zephir/filenames/exception.zep.h").generated?
assert blob("Zephir/filenames/exception.zep.php").generated?
assert !blob("Zephir/Router.zep").generated?
assert Linguist::Generated.generated?("node_modules/grunt/lib/grunt.js", nil)
end
@@ -270,6 +277,10 @@ class TestBlob < Test::Unit::TestCase
# 'thirdparty' directory
assert blob("thirdparty/lib/main.c").vendored?
# 'extern(al)' directory
assert blob("extern/util/__init__.py").vendored?
assert blob("external/jquery.min.js").vendored?
# C deps
assert blob("deps/http_parser/http_parser.c").vendored?
@@ -374,7 +385,7 @@ class TestBlob < Test::Unit::TestCase
# NuGet Packages
assert blob("packages/Modernizr.2.0.6/Content/Scripts/modernizr-2.0.6-development-only.js").vendored?
# Html5shiv
assert blob("Scripts/html5shiv.js").vendored?
assert blob("Scripts/html5shiv.min.js").vendored?
@@ -399,6 +410,11 @@ class TestBlob < Test::Unit::TestCase
assert blob("subproject/gradlew").vendored?
assert blob("subproject/gradlew.bat").vendored?
assert blob("subproject/gradle/wrapper/gradle-wrapper.properties").vendored?
# Octicons
assert blob("octicons.css").vendored?
assert blob("public/octicons.min.css").vendored?
assert blob("public/octicons/sprockets-octicons.scss").vendored?
end
def test_language