This commit is contained in:
Chris 2013-08-02 10:57:33 -06:00
commit d242cd5b9c
673 changed files with 53741 additions and 3936 deletions

View File

@ -8,3 +8,5 @@
* Chris https://github.com/ch0wnag3 (favicon URL improvement)
* Gabriel Wanzek https://github.com/GabrielWanzek (gabdark & gabdark3 themes)
* Luc https://github.com/ltribolet (Bootstrap theme)
* Stephan Bergemann https://github.com/oberling (German translation, Bootstrap multilang support + making bootstrap theme HTML5 valid)
* linuxman https://github.com/linuxman (Spanish translation)

118
CC0 Normal file
View File

@ -0,0 +1,118 @@
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT
PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT
CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES
THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO
WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION
OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES
RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR
WORKS PROVIDED HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically
confer exclusive Copyright and Related Rights (defined below) upon the
creator and subsequent owner(s) (each and all, an "owner") of an
original work of authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work
for the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without
fear of later claims of infringement build upon, modify, incorporate
in other works, reuse and redistribute as freely as possible in any
form whatsoever and for any purposes, including without limitation
commercial purposes. These owners may contribute to the Commons to
promote the ideal of a free culture and the further production of
creative, cultural and scientific works, or to gain reputation or
greater distribution for their Work in part through the use and
efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or
she is an owner of Copyright and Related Rights in the Work,
voluntarily elects to apply CC0 to the Work and publicly distribute
the Work under its terms, with knowledge of his or her Copyright and
Related Rights in the Work and the meaning and intended legal effect
of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may
be protected by copyright and related or neighboring rights
("Copyright and Related Rights"). Copyright and Related Rights
include, but are not limited to, the following:
the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work; moral rights retained by the
original author(s) and/or performer(s); publicity and privacy
rights pertaining to a person's image or likeness depicted in a
Work; rights protecting against unfair competition in regards to a
Work, subject to the limitations in paragraph 4(a), below; rights
protecting the extraction, dissemination, use and reuse of data in
a Work; database rights (such as those arising under Directive
96/9/EC of the European Parliament and of the Council of 11 March
1996 on the legal protection of databases, and under any national
implementation thereof, including any amended or successor version
of such directive); and other similar, equivalent or corresponding
rights throughout the world based on applicable law or treaty, and
any national implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in
contravention of, applicable law, Affirmer hereby overtly, fully,
permanently, irrevocably and unconditionally waives, abandons, and
surrenders all of Affirmer's Copyright and Related Rights and
associated claims and causes of action, whether now known or unknown
(including existing as well as future claims and causes of action), in
the Work (i) in all territories worldwide, (ii) for the maximum
duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"Waiver"). Affirmer makes the Waiver for the benefit of each member of
the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal
or equitable action to disrupt the quiet enjoyment of the Work by the
public as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any
reason be judged legally invalid or ineffective under applicable law,
then the Waiver shall be preserved to the maximum extent permitted
taking into account Affirmer's express Statement of Purpose. In
addition, to the extent the Waiver is so judged Affirmer hereby grants
to each affected person a royalty-free, non transferable, non
sublicensable, non exclusive, irrevocable and unconditional license to
exercise Affirmer's Copyright and Related Rights in the Work (i) in
all territories worldwide, (ii) for the maximum duration provided by
applicable law or treaty (including future time extensions), (iii) in
any current or future medium and for any number of copies, and (iv)
for any purpose whatsoever, including without limitation commercial,
advertising or promotional purposes (the "License"). The License shall
be deemed effective as of the date CC0 was applied by Affirmer to the
Work. Should any part of the License for any reason be judged legally
invalid or ineffective under applicable law, such partial invalidity
or ineffectiveness shall not invalidate the remainder of the License,
and in such case Affirmer hereby affirms that he or she will not (i)
exercise any of his or her remaining Copyright and Related Rights in
the Work or (ii) assert any associated claims and causes of action
with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
No trademark or patent rights held by Affirmer are waived,
abandoned, surrendered, licensed or otherwise affected by this
document. Affirmer offers the Work as-is and makes no
representations or warranties of any kind concerning the Work,
express, implied, statutory or otherwise, including without
limitation warranties of title, merchantability, fitness for a
particular purpose, non infringement, or the absence of latent or
other defects, accuracy, or the present or absence of errors,
whether or not discoverable, all to the greatest extent
permissible under applicable law. Affirmer disclaims
responsibility for clearing rights of other persons that may apply
to the Work or any use thereof, including without limitation any
person's Copyright and Related Rights in the Work. Further,
Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work. Affirmer understands and acknowledges that Creative Commons
is not a party to this document and has no duty or obligation with
respect to this CC0 or use of the Work.

View File

@ -1,30 +1,34 @@
Stikked is an Open-Source PHP Pastebin, with the aim of keeping a simple and easy to use user interface.
Stikked allows you to easily share code with anyone you wish. Stikked was created for the following reasons:
Stikked allows you to easily share code with anyone you wish. Based on the [original Stikked](http://code.google.com/p/stikked/) with lots of bugfixes and improvements.
* IRC and Private Chats were spammed.
* Pastebins were ugly.
* Pastebins were confusing.
* Pastebins were messy and not thought through.
* Stikked rethought code collaboration, by making it easy to paste code.
Here are some features:
Based on the original Stikked (http://code.google.com/p/stikked/) with lots of bugfixes and improvements.
Thanks to Rebecca Chapnik for this great review: http://maketecheasier.com/run-your-own-pastebin-with-stikked/2013/01/11
* Easy setup
* Syntaxhighlighting for many languages, including live syntaxhighlighting with CodeMirror
* Paste replies
* Diff view between the original paste and the reply
* An API
* Trending pastes
* Anti-Spam features
* Themes support
* Multilanguage support
* And many more. View [this review](http://maketecheasier.com/run-your-own-pastebin-with-stikked/2013/01/11)
Try it out
----------
http://paste.scratchbook.ch/
Installation
------------
1. Download stikked from https://github.com/claudehohl/Stikked/tags
2. Create a user and database for Stikked
3. Edit configuration settings in application/config/stikked.php - everything is described there
4. You're done!
1. Download stikked from https://github.com/claudehohl/Stikked/tags
2. Create a user and database for Stikked
3. Edit configuration settings in application/config/stikked.php - everything is described there
4. You're done!
* The database structure will be created automatically if it doesn't exist.
* No special file permissions are needed by default. Optional: If you want to have the JavaScript- and CSS-files minified, the static/asset/ folder has to be writable.
@ -32,22 +36,64 @@ Installation
* */5 * * * * curl --silent http://yoursite.com/cron/[key]
Documentation
-------------
In the folder doc/, you will find:
* Webserver example configurations for Apache, Nginx, Lighttpd, Cherokee
* A troubleshooting guide
* How to create your own theme
* How to translate Stikked into your language
* How to contribute and improve Stikked
Changelog
---------
### Version 0.8.5:
* Themes! Configure a different theme in config/stikked.php - or create your own
* Multilanguage support. Configure a different language in config/stikked.php
* Diff view for paste replies! View differences between the original paste and its reply
* see it in action: http://paste.scratchbook.ch/view/de81a093/diff
* Possibility to set default expiration time
* Updated GeSHi to version 1.0.8.11
* Updated CodeMirror to version 3.11
* Lots of minor fixes and improvements
* Added guides for troubleshooting, development, translation and creating themes
* Added webserver example configurations
* Added reCaptcha integration for better antispam
#### Upgrade instructions
The following line must be present config/stikked.php
The following lines must be present config/stikked.php
```php
$config['theme'] = 'default';
```
You can choose between default, bootstrap, gabdark and gabdark3.
You can choose between default, bootstrap, gabdark, gabdark3 and a fancy geocities theme ;)
Create you own theme. See doc/CREATING_THEMES.md
```php
$config['language'] = 'english';
```
You can choose between english, german and swissgerman ;)
Help translating Stikked into your language! See doc/TRANSLATING_STIKKED.md
##### reCaptcha
```php
$config['recaptcha_publickey'] = '';
$config['recaptcha_privatekey'] = '';
```
If these lines are filled, reCaptcha will be used.
Get a key from https://www.google.com/recaptcha/admin/create
### Version 0.8.4:
@ -123,4 +169,3 @@ You can choose between default, bootstrap, gabdark and gabdark3.
* Fully standards compliant css and xhtml.
* Random generating names for anonymous users
* Paste downloading

9
doc/DEVELOPMENT.md Normal file
View File

@ -0,0 +1,9 @@
You want to improve Stikked? Always welcome! Send us your pull request and you will be honoured in AUTHORS.md.
Some guidelines:
* For PHP only files (not views/themes), please run the PHP Beautifier (http://pear.php.net/package/PHP_Beautifier) with the following parameters:
```
php_beautifier --indent_tabs -l "IndentStyles(style=bsd) ArrayNested() NewLines(before=function:T_CLASS:if,after=T_COMMENT) ListClassFunction()"
```
* Other people may modify your contribution. Don't take that personal; we all want to improve Stikked. Your input is always welcome!

View File

@ -0,0 +1,7 @@
How to translate Stikked into your own language
-----------------------------------------------
1. Make a copy of the folder htdocs/application/language/swissgerman, and name it as you like.
2. Start placing in your texts!
The date_lang.php and form_validation_lang.php are optional; they lay in the system folder for english fallback. stikked_lang.php is required. If you miss a translation, it will be shown as [tanslation_index] in Stikked.

View File

@ -0,0 +1,43 @@
Stikked troubleshooting guide
-----------------------------
### Apache
#### 404 Not Found after creating a Paste
Rewrite rules must be enabled in httpd.conf.
### Nginx
#### 502 Bad Gateway
PHP FastCGI must be running. Here's my /etc/init.d/php-fcgi config:
```bash
#!/bin/bash
FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
ADDRESS=127.0.0.1
PORT=9000
PIDFILE=/var/run/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -a $ADDRESS -p $PORT -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
```
You can adapt that to your system.
### Lighttpd
#### 503 - Service Not Available
PHP FastCGI must be running. See the php-fcgi section under Nginx.
### Cherokee
Still have a problem?
---------------------
Report an issue at GitHub, and we will add your problem to this guide.

View File

@ -0,0 +1,12 @@
<VirtualHost *:80>
ServerName stikked
DocumentRoot /var/www/stikked/htdocs
ErrorLog ${APACHE_LOG_DIR}/stikked-error_log
CustomLog ${APACHE_LOG_DIR}/stikked-access_log common
<Directory "/var/www/stikked/htdocs">
Options +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

View File

@ -0,0 +1,325 @@
config!version = 001002101
server!bind!1!port = 80
server!keepalive = 1
server!keepalive_max_requests = 500
server!panic_action = /opt/cherokee/bin/cherokee-panic
server!pid_file = /opt/cherokee/var/run/cherokee.pid
server!server_tokens = full
server!timeout = 15
vserver!1!directory_index = index.html
vserver!1!document_root = /opt/cherokee/var/www
vserver!1!error_writer!filename = /opt/cherokee/var/log/cherokee.error
vserver!1!error_writer!type = file
vserver!1!logger = combined
vserver!1!logger!access!buffsize = 16384
vserver!1!logger!access!filename = /opt/cherokee/var/log/cherokee.access
vserver!1!logger!access!type = file
vserver!1!nick = default
vserver!1!rule!5!encoder!gzip = allow
vserver!1!rule!5!handler = server_info
vserver!1!rule!5!handler!type = just_about
vserver!1!rule!5!match = directory
vserver!1!rule!5!match!directory = /about
vserver!1!rule!4!document_root = /opt/cherokee/lib/cgi-bin
vserver!1!rule!4!handler = cgi
vserver!1!rule!4!match = directory
vserver!1!rule!4!match!directory = /cgi-bin
vserver!1!rule!3!document_root = /opt/cherokee/share/cherokee/themes
vserver!1!rule!3!handler = file
vserver!1!rule!3!match = directory
vserver!1!rule!3!match!directory = /cherokee_themes
vserver!1!rule!2!document_root = /opt/cherokee/share/cherokee/icons
vserver!1!rule!2!handler = file
vserver!1!rule!2!match = directory
vserver!1!rule!2!match!directory = /icons
vserver!1!rule!1!handler = common
vserver!1!rule!1!handler!iocache = 1
vserver!1!rule!1!match = default
vserver!2!directory_index = index.php,index.html
vserver!2!document_root = /opt/cherokee/var/www/stikked
vserver!2!error_writer!filename = /opt/cherokee/var/log/cherokee.error
vserver!2!error_writer!type = file
vserver!2!logger = combined
vserver!2!logger!access!buffsize = 16384
vserver!2!logger!access!filename = /opt/cherokee/var/log/cherokee.access
vserver!2!logger!access!type = file
vserver!2!nick = stikked
vserver!2!rule!110!document_root = /opt/cherokee/var/www/stikked/static
vserver!2!rule!110!handler = file
vserver!2!rule!110!handler!iocache = 0
vserver!2!rule!110!match = directory
vserver!2!rule!110!match!directory = /static
vserver!2!rule!110!match!final = 1
vserver!2!rule!10!handler = fcgi
vserver!2!rule!10!handler!balancer = round_robin
vserver!2!rule!10!handler!balancer!source!10 = 1
vserver!2!rule!10!handler!check_file = 1
vserver!2!rule!10!handler!error_handler = 1
vserver!2!rule!10!handler!pass_req_headers = 1
vserver!2!rule!10!handler!script_alias = /opt/cherokee/var/www/stikked/index.php
vserver!2!rule!10!handler!x_real_ip_enabled = 0
vserver!2!rule!10!handler!xsendfile = 0
vserver!2!rule!10!match = default
source!1!env!PHP_FCGI_CHILDREN = 5
source!1!env!PHP_FCGI_MAX_REQUESTS = 490
source!1!env_inherited = 0
source!1!host = 127.0.0.1:47990
source!1!interpreter = /usr/bin/php-cgi -b 127.0.0.1:47990
source!1!nick = PHP Interpreter
source!1!type = interpreter
icons!default = page_white.png
icons!directory = folder.png
icons!file!bomb.png = core
icons!file!page_white_go.png = *README*
icons!parent_directory = arrow_turn_left.png
icons!suffix!camera.png = jpg,jpeg,jpe
icons!suffix!cd.png = iso,ngr,cue
icons!suffix!color_wheel.png = png,gif,xcf,bmp,pcx,tiff,tif,cdr,psd,xpm,xbm
icons!suffix!control_play.png = bin,exe,com,msi,out
icons!suffix!css.png = css
icons!suffix!cup.png = java,class,jar
icons!suffix!email.png = eml,mbox,box,email,mbx
icons!suffix!film.png = avi,mpeg,mpe,mpg,mpeg3,dl,fli,qt,mov,movie,flv,webm
icons!suffix!font.png = ttf
icons!suffix!html.png = html,htm
icons!suffix!music.png = au,snd,mid,midi,kar,mpga,mpega,mp2,mp3,sid,wav,aif,aiff,aifc,gsm,m3u,wma,wax,ra,rm,ram,pls,sd2,ogg
icons!suffix!package.png = tar,gz,bz2,zip,rar,ace,lha,7z,dmg,cpk
icons!suffix!page_white_acrobat.png = pdf
icons!suffix!page_white_c.png = c,h,cpp
icons!suffix!page_white_office.png = doc,ppt,xls
icons!suffix!page_white_php.png = php
icons!suffix!page_white_text.png = txt,text,rtf,sdw
icons!suffix!printer.png = ps,eps
icons!suffix!ruby.png = rb
icons!suffix!script.png = sh,csh,ksh,tcl,tk,py,pl
mime!application/bzip2!extensions = bz2
mime!application/gzip!extensions = gz
mime!application/hta!extensions = hta
mime!application/java-archive!extensions = jar
mime!application/java-serialized-object!extensions = ser
mime!application/java-vm!extensions = class
mime!application/json!extensions = json
mime!application/mac-binhex40!extensions = hqx
mime!application/msaccess!extensions = mdb
mime!application/msword!extensions = doc,dot
mime!application/octet-stream!extensions = bin
mime!application/octetstream!extensions = ace
mime!application/oda!extensions = oda
mime!application/ogg!extensions = ogx
mime!application/pdf!extensions = pdf
mime!application/pgp-keys!extensions = key
mime!application/pgp-signature!extensions = pgp
mime!application/pics-rules!extensions = prf
mime!application/postscript!extensions = ps,ai,eps
mime!application/rar!extensions = rar
mime!application/rdf+xml!extensions = rdf
mime!application/rss+xml!extensions = rss
mime!application/smil!extensions = smi,smil
mime!application/vnd.mozilla.xul+xml!extensions = xul
mime!application/vnd.ms-excel!extensions = xls,xlb,xlt
mime!application/vnd.ms-pki.seccat!extensions = cat
mime!application/vnd.ms-pki.stl!extensions = stl
mime!application/vnd.ms-powerpoint!extensions = ppt,pps
mime!application/vnd.oasis.opendocument.chart!extensions = odc
mime!application/vnd.oasis.opendocument.database!extensions = odb
mime!application/vnd.oasis.opendocument.formula!extensions = odf
mime!application/vnd.oasis.opendocument.graphics!extensions = odg
mime!application/vnd.oasis.opendocument.image!extensions = odi
mime!application/vnd.oasis.opendocument.presentation!extensions = odp
mime!application/vnd.oasis.opendocument.spreadsheet!extensions = ods
mime!application/vnd.oasis.opendocument.text!extensions = odt
mime!application/vnd.oasis.opendocument.text-master!extensions = odm
mime!application/vnd.oasis.opendocument.text-web!extensions = oth
mime!application/vnd.pkg5.info!extensions = p5i
mime!application/vnd.visio!extensions = vsd
mime!application/vnd.wap.wbxml!extensions = wbxml
mime!application/vnd.wap.wmlc!extensions = wmlc
mime!application/vnd.wap.wmlscriptc!extensions = wmlsc
mime!application/x-7z-compressed!extensions = 7z
mime!application/x-abiword!extensions = abw
mime!application/x-apple-diskimage!extensions = dmg
mime!application/x-bcpio!extensions = bcpio
mime!application/x-bittorrent!extensions = torrent
mime!application/x-cdf!extensions = cdf
mime!application/x-cpio!extensions = cpio
mime!application/x-csh!extensions = csh
mime!application/x-debian-package!extensions = deb,udeb
mime!application/x-director!extensions = dcr,dir,dxr
mime!application/x-dvi!extensions = dvi
mime!application/x-flac!extensions = flac
mime!application/x-font!extensions = pfa,pfb,gsf,pcf,pcf.Z
mime!application/x-freemind!extensions = mm
mime!application/x-gnumeric!extensions = gnumeric
mime!application/x-gtar!extensions = gtar,tgz,taz
mime!application/x-gzip!extensions = gz,tgz
mime!application/x-httpd-php!extensions = phtml,pht,php
mime!application/x-httpd-php-source!extensions = phps
mime!application/x-httpd-php3!extensions = php3
mime!application/x-httpd-php3-preprocessed!extensions = php3p
mime!application/x-httpd-php4!extensions = php4
mime!application/x-internet-signup!extensions = ins,isp
mime!application/x-iphone!extensions = iii
mime!application/x-iso9660-image!extensions = iso
mime!application/x-java-jnlp-file!extensions = jnlp
mime!application/x-javascript!extensions = js
mime!application/x-kchart!extensions = chrt
mime!application/x-killustrator!extensions = kil
mime!application/x-koan!extensions = skp,skd,skt,skm
mime!application/x-kpresenter!extensions = kpr,kpt
mime!application/x-kspread!extensions = ksp
mime!application/x-kword!extensions = kwd,kwt
mime!application/x-latex!extensions = latex
mime!application/x-lha!extensions = lha
mime!application/x-lzh!extensions = lzh
mime!application/x-lzx!extensions = lzx
mime!application/x-ms-wmd!extensions = wmd
mime!application/x-ms-wmz!extensions = wmz
mime!application/x-msdos-program!extensions = com,exe,bat,dll
mime!application/x-msi!extensions = msi
mime!application/x-netcdf!extensions = nc
mime!application/x-ns-proxy-autoconfig!extensions = pac
mime!application/x-nwc!extensions = nwc
mime!application/x-object!extensions = o
mime!application/x-oz-application!extensions = oza
mime!application/x-pkcs7-certreqresp!extensions = p7r
mime!application/x-pkcs7-crl!extensions = crl
mime!application/x-python-code!extensions = pyc,pyo
mime!application/x-quicktimeplayer!extensions = qtl
mime!application/x-redhat-package-manager!extensions = rpm
mime!application/x-sh!extensions = sh
mime!application/x-shar!extensions = shar
mime!application/x-shockwave-flash!extensions = swf,swfl
mime!application/x-stuffit!extensions = sit,sea
mime!application/x-sv4cpio!extensions = sv4cpio
mime!application/x-sv4crc!extensions = sv4crc
mime!application/x-tar!extensions = tar
mime!application/x-tcl!extensions = tcl
mime!application/x-tex-pk!extensions = pk
mime!application/x-texinfo!extensions = texinfo,texi
mime!application/x-trash!extensions = ~,bak,old,sik
mime!application/x-troff!extensions = t,tr,roff
mime!application/x-troff-man!extensions = man
mime!application/x-troff-me!extensions = me
mime!application/x-troff-ms!extensions = ms
mime!application/x-ustar!extensions = ustar
mime!application/x-x509-ca-cert!extensions = crt
mime!application/x-xcf!extensions = xcf
mime!application/x-xfig!extensions = fig
mime!application/x-xpinstall!extensions = xpi
mime!application/xhtml+xml!extensions = xhtml,xht
mime!application/xml!extensions = xml,xsl
mime!application/zip!extensions = zip
mime!audio/basic!extensions = au,snd
mime!audio/midi!extensions = mid,midi,kar
mime!audio/mpeg!extensions = mpga,mpega,mp2,mp3,m4a
mime!audio/ogg!extensions = ogg,oga
mime!audio/prs.sid!extensions = sid
mime!audio/x-aiff!extensions = aif,aiff,aifc
mime!audio/x-gsm!extensions = gsm
mime!audio/x-mpegurl!extensions = m3u
mime!audio/x-ms-wax!extensions = wax
mime!audio/x-ms-wma!extensions = wma
mime!audio/x-pn-realaudio!extensions = ra,rm,ram
mime!audio/x-realaudio!extensions = ra
mime!audio/x-scpls!extensions = pls
mime!audio/x-sd2!extensions = sd2
mime!audio/x-wav!extensions = wav
mime!chemical/x-cache!extensions = cac,cache
mime!chemical/x-cache-csf!extensions = csf
mime!chemical/x-cdx!extensions = cdx
mime!chemical/x-cif!extensions = cif
mime!chemical/x-cmdf!extensions = cmdf
mime!chemical/x-cml!extensions = cml
mime!chemical/x-compass!extensions = cpa
mime!chemical/x-crossfire!extensions = bsd
mime!chemical/x-csml!extensions = csml,csm
mime!chemical/x-ctx!extensions = ctx
mime!chemical/x-cxf!extensions = cxf,cef
mime!chemical/x-isostar!extensions = istr,ist
mime!chemical/x-jcamp-dx!extensions = jdx,dx
mime!chemical/x-kinemage!extensions = kin
mime!chemical/x-pdb!extensions = pdb,ent
mime!chemical/x-swissprot!extensions = sw
mime!chemical/x-vamas-iso14976!extensions = vms
mime!chemical/x-vmd!extensions = vmd
mime!chemical/x-xtel!extensions = xtel
mime!chemical/x-xyz!extensions = xyz
mime!image/gif!extensions = gif
mime!image/jpeg!extensions = jpeg,jpg,jpe
mime!image/pcx!extensions = pcx
mime!image/png!extensions = png
mime!image/svg+xml!extensions = svg,svgz
mime!image/tiff!extensions = tiff,tif
mime!image/vnd.djvu!extensions = djvu,djv
mime!image/vnd.wap.wbmp!extensions = wbmp
mime!image/x-icon!extensions = ico
mime!image/x-ms-bmp!extensions = bmp
mime!image/x-photoshop!extensions = psd
mime!image/x-portable-anymap!extensions = pnm
mime!image/x-portable-bitmap!extensions = pbm
mime!image/x-portable-graymap!extensions = pgm
mime!image/x-portable-pixmap!extensions = ppm
mime!image/x-xbitmap!extensions = xbm
mime!image/x-xpixmap!extensions = xpm
mime!image/x-xwindowdump!extensions = xwd
mime!model/iges!extensions = igs,iges
mime!model/mesh!extensions = msh,mesh,silo
mime!model/vrml!extensions = wrl,vrml
mime!text/calendar!extensions = ics,icz
mime!text/comma-separated-values!extensions = csv
mime!text/css!extensions = css
mime!text/h323!extensions = 323
mime!text/html!extensions = html,htm,shtml
mime!text/iuls!extensions = uls
mime!text/mathml!extensions = mml
mime!text/plain!extensions = asc,txt,text,diff,pot
mime!text/richtext!extensions = rtx
mime!text/rtf!extensions = rtf
mime!text/scriptlet!extensions = sct,wsc
mime!text/tab-separated-values!extensions = tsv
mime!text/vnd.sun.j2me.app-descriptor!extensions = jad
mime!text/vnd.wap.wml!extensions = wml
mime!text/vnd.wap.wmlscript!extensions = wmls
mime!text/x-boo!extensions = boo
mime!text/x-c++hdr!extensions = h++,hpp,hxx,hh
mime!text/x-c++src!extensions = c++,cpp,cxx,cc
mime!text/x-chdr!extensions = h
mime!text/x-csh!extensions = csh
mime!text/x-csrc!extensions = c
mime!text/x-dsrc!extensions = d
mime!text/x-haskell!extensions = hs
mime!text/x-java!extensions = java
mime!text/x-literate-haskell!extensions = lhs
mime!text/x-moc!extensions = moc
mime!text/x-pascal!extensions = p,pas
mime!text/x-pcs-gcd!extensions = gcd
mime!text/x-perl!extensions = pl,pm
mime!text/x-python!extensions = py
mime!text/x-setext!extensions = etx
mime!text/x-sh!extensions = sh
mime!text/x-tcl!extensions = tcl,tk
mime!text/x-tex!extensions = tex,ltx,sty,cls
mime!text/x-vcalendar!extensions = vcs
mime!text/x-vcard!extensions = vcf
mime!video/dl!extensions = dl
mime!video/dv!extensions = dif,dv
mime!video/fli!extensions = fli
mime!video/gl!extensions = gl
mime!video/mp4!extensions = mp4
mime!video/mpeg!extensions = mpeg,mpg,mpe
mime!video/ogg!extensions = ogv
mime!video/quicktime!extensions = qt,mov
mime!video/vnd.mpegurl!extensions = mxu
mime!video/webm!extensions = webm
mime!video/x-flv!extensions = flv
mime!video/x-la-asf!extensions = lsf,lsx
mime!video/x-mng!extensions = mng
mime!video/x-ms-asf!extensions = asf,asx
mime!video/x-ms-wm!extensions = wm
mime!video/x-ms-wmv!extensions = wmv
mime!video/x-ms-wmx!extensions = wmx
mime!video/x-ms-wvx!extensions = wvx
mime!video/x-msvideo!extensions = avi
mime!video/x-sgi-movie!extensions = movie
mime!x-conference/x-cooltalk!extensions = ice
mime!x-world/x-vrml!extensions = vrm,vrml,wrl

View File

@ -0,0 +1,23 @@
server.modules += ( "mod_fastcgi" )
server.modules += ( "mod_rewrite" )
fastcgi.server += ( ".php" =>
((
"host" => "127.0.0.1",
"port" => "9000",
"broken-scriptfilename" => "enable"
))
)
$HTTP["host"] == "stikked" {
url.rewrite-once = (
"^/static/(.*)$" => "/static/$1",
"^/favicon\.ico$" => "/favicon.ico",
"^/robots\.txt$" => "/robots.txt",
"^/(.*)$" => "/index.php$2",
)
server.document-root = "/var/www/stikked/htdocs"
#accesslog.filename = "/var/log/lighttpd/stikked.access.log"
}

View File

@ -0,0 +1,23 @@
server {
listen 80;
server_name stikked;
root /var/www/stikked/htdocs;
index index.php;
# access_log /var/log/nginx/localhost.access_log combined;
# error_log /var/log/nginx/localhost.error_log info;
if ($request_uri !~* ^/(static|favicon\.ico|robots\.txt))
{
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

View File

@ -64,7 +64,7 @@ $autoload['libraries'] = array('database', 'db_session', 'carabiner');
| $autoload['helper'] = array('url', 'file');
*/
$autoload['helper'] = array('url', 'date');
$autoload['helper'] = array('url', 'date', 'language');
/*
@ -96,7 +96,7 @@ $autoload['config'] = array('stikked');
|
*/
$autoload['language'] = array();
$autoload['language'] = array('stikked');
/*

View File

@ -135,10 +135,10 @@ $config['codemirror_languages'] = array(
) ,
) ,
'sql' => array(
'mode' => 'mysql',
'mode' => 'sql',
'js' => array(
array(
'codemirror/mode/mysql/mysql.js'
'codemirror/mode/sql/sql.js'
) ,
) ,
) ,
@ -157,6 +157,22 @@ $config['codemirror_languages'] = array(
'6502tasm' => 'MOS 6502 TASM/64TASS',
'68000devpac' => 'Motorola 68000 Devpac Assembler',
'abap' => 'ABAP',
'apl' => array(
'mode' => 'apl',
'js' => array(
array(
'codemirror/mode/apl/apl.js'
) ,
) ,
) ,
'asterisk' => array(
'mode' => 'asterisk',
'js' => array(
array(
'codemirror/mode/asterisk/asterisk.js'
) ,
) ,
) ,
'actionscript' => 'Actionscript',
'actionscript3' => 'ActionScript3',
'ada' => 'Ada',
@ -221,7 +237,14 @@ $config['codemirror_languages'] = array(
) ,
) ,
'cuesheet' => 'Cuesheet',
'd' => 'D',
'd' => array(
'mode' => 'd',
'js' => array(
array(
'codemirror/mode/d/d.js'
) ,
) ,
) ,
'dcs' => 'DCS',
'delphi' => 'Delphi (Object Pascal)',
'div' => 'DIV',
@ -239,6 +262,14 @@ $config['codemirror_languages'] = array(
'eiffel' => 'Eiffel',
'email' => 'Email (mbox/eml/RFC format)',
'epc' => 'Enerscript',
'erlang' => array(
'mode' => 'erlang',
'js' => array(
array(
'codemirror/mode/erlang/erlang.js'
) ,
) ,
) ,
'euphoria' => 'Euphoria',
'f1' => 'Formula One',
'falcon' => 'Falcon',
@ -254,6 +285,14 @@ $config['codemirror_languages'] = array(
'glsl' => 'glSlang',
'gml' => 'GML',
'gnuplot' => 'Gnuplot script',
'go' => array(
'mode' => 'go',
'js' => array(
array(
'codemirror/mode/go/go.js'
) ,
) ,
) ,
'groovy' => array(
'mode' => 'text/x-groovy',
'js' => array(
@ -271,6 +310,14 @@ $config['codemirror_languages'] = array(
) ,
) ,
) ,
'haxe' => array(
'mode' => 'text/x-haxe',
'js' => array(
array(
'codemirror/mode/haxe/haxe.js'
) ,
) ,
) ,
'hicest' => 'HicEst',
'hq9plus' => 'HQ9+',
'html4strict' => array(
@ -340,17 +387,24 @@ $config['codemirror_languages'] = array(
'make' => 'Make',
'mapbasic' => 'MapBasic',
'matlab' => 'Matlab M-file',
'mirc' => 'mIRC Scripting',
'mirc' => array(
'mode' => 'mirc',
'js' => array(
array(
'codemirror/mode/mirc/mirc.js'
) ,
) ,
) ,
'mmix' => 'MMIX Assembler',
'modula2' => 'Modula-2',
'modula3' => 'Modula-3',
'mpasm' => 'Microchip Assembler',
'mxml' => 'MXML',
'mysql' => array(
'mode' => 'mysql',
'mode' => 'sql',
'js' => array(
array(
'codemirror/mode/mysql/mysql.js'
'codemirror/mode/sql/sql.js'
) ,
) ,
) ,
@ -360,6 +414,14 @@ $config['codemirror_languages'] = array(
'objc' => 'Objective-C',
'objeck' => 'Objeck Programming Language',
'ocaml' => 'OCaml (Objective Caml)',
'ocaml' => array(
'mode' => 'text/x-ocaml',
'js' => array(
array(
'codemirror/mode/ocaml/ocaml.js'
) ,
) ,
) ,
'oobas' => 'OpenOffice.org Basic',
'oracle11' => 'Oracle 11i',
'oracle8' => 'Oracle 8',
@ -397,10 +459,10 @@ $config['codemirror_languages'] = array(
'pixelbender' => 'Pixel Bender 1.0',
'pli' => 'PL/I',
'plsql' => array(
'mode' => 'plsql',
'mode' => 'sql',
'js' => array(
array(
'codemirror/mode/plsql/plsql.js'
'codemirror/mode/sql/sql.js'
) ,
) ,
) ,
@ -421,7 +483,14 @@ $config['codemirror_languages'] = array(
) ,
'providex' => 'ProvideX',
'purebasic' => 'PureBasic',
'q' => 'q/kdb+',
'q' => array(
'mode' => 'text/x-q',
'js' => array(
array(
'codemirror/mode/q/q.js'
) ,
) ,
) ,
'qbasic' => 'QBasic/QuickBASIC',
'rails' => 'Ruby (with Ruby on Rails Framework)',
'rebol' => 'Rebol',
@ -430,7 +499,14 @@ $config['codemirror_languages'] = array(
'rpmspec' => 'RPM Spec',
'rsplus' => 'R',
'sas' => 'SAS',
'scala' => 'Scala',
'scala' => array(
'mode' => 'scala',
'js' => array(
array(
'codemirror/mode/clike/clike.js'
) ,
) ,
) ,
'scheme' => array(
'mode' => 'text/x-scheme',
'js' => array(
@ -444,7 +520,14 @@ $config['codemirror_languages'] = array(
'smalltalk' => 'Smalltalk',
'smarty' => 'Smarty template',
'systemverilog' => 'SystemVerilog IEEE 1800-2009(draft8)',
'tcl' => 'TCL/iTCL',
'tcl' => array(
'mode' => 'text/x-tcl',
'js' => array(
array(
'codemirror/mode/tcl/tcl.js'
) ,
) ,
) ,
'teraterm' => 'Tera Term Macro',
'thinbasic' => 'thinBasic',
'tsql' => 'T-SQL',
@ -453,18 +536,10 @@ $config['codemirror_languages'] = array(
'uscript' => 'UnrealScript',
'vala' => 'Vala',
'vb' => array(
'mode' => 'text/vbscript',
'mode' => 'text/x-vb',
'js' => array(
array(
'codemirror/mode/vbscript/vbscript.js'
) ,
) ,
) ,
'vbnet' => array(
'mode' => 'text/vbscript',
'js' => array(
array(
'codemirror/mode/vbscript/vbscript.js'
'codemirror/mode/vb/vb.js'
) ,
) ,
) ,
@ -494,6 +569,13 @@ $config['codemirror_languages'] = array(
) ,
) ,
) ,
'z80' => 'ZiLOG Z80 Assembler',
'z80' => array(
'mode' => 'text/x-z80',
'js' => array(
array(
'codemirror/mode/z80/z80.js'
) ,
) ,
) ,
'zxbasic' => 'ZXBasic',
);

View File

@ -16,6 +16,16 @@
*/
$config['base_url'] = '';
/*
|--------------------------------------------------------------------------
| Stikked version
|--------------------------------------------------------------------------
|
| So that we can track your version.
|
*/
$config['stikked_version'] = '0.8.5';
/*
|--------------------------------------------------------------------------
| Index File
@ -69,7 +79,7 @@ $config['url_suffix'] = '';
| than english.
|
*/
$config['language'] = 'english';
#$config['language'] = 'english'; #this is configured in config/stikked.php
/*
|--------------------------------------------------------------------------

View File

@ -39,7 +39,9 @@ $config['geshi_languages'] = array(
'apache' => 'Apache',
'applescript' => 'AppleScript',
'apt_sources' => 'Apt sources.list',
'arm' => 'ARM Assembler',
'asm' => 'x86 Assembler',
'asymptote' => 'asymptote',
'asp' => 'ASP',
'autoconf' => 'autoconf',
'autohotkey' => 'Autohotkey',
@ -69,6 +71,8 @@ $config['geshi_languages'] = array(
'cuesheet' => 'Cuesheet',
'd' => 'D',
'dcs' => 'DCS',
'dcl' => 'DCL',
'dcpu16' => 'DCPU/16 Assembly',
'delphi' => 'Delphi (Object Pascal)',
'div' => 'DIV',
'dos' => 'DOS',
@ -84,6 +88,7 @@ $config['geshi_languages'] = array(
'fo' => 'fo',
'fortran' => 'Fortran',
'freebasic' => 'FreeBasic',
'freeswitch' => 'FreeSWITCH',
'fsharp' => 'F#',
'gambas' => 'GAMBAS',
'gdb' => 'GDB',
@ -96,6 +101,7 @@ $config['geshi_languages'] = array(
'groovy' => 'Groovy',
'gwbasic' => 'GwBasic',
'haskell' => 'Haskell',
'haxe' => 'Haxe',
'hicest' => 'HicEst',
'hq9plus' => 'HQ9+',
'html4strict' => 'HTML 4.01 strict',
@ -114,6 +120,7 @@ $config['geshi_languages'] = array(
'klonec' => 'KLone with C',
'klonecpp' => 'KLone with C++',
'lb' => 'Liberty BASIC',
'ldif' => 'LDIF',
'lisp' => 'Generic Lisp',
'llvm' => 'LLVM',
'locobasic' => 'Locomotive Basic (Amstrad CPC series)',
@ -135,17 +142,23 @@ $config['geshi_languages'] = array(
'mpasm' => 'Microchip Assembler',
'mxml' => 'MXML',
'mysql' => 'MySQL',
'nagios' => 'Nagios',
'netrexx' => 'NetRexx',
'newlisp' => 'newLISP',
'nsis' => 'Nullsoft Scriptable Install System',
'oberon2' => 'Oberon-2',
'objc' => 'Objective-C',
'objeck' => 'Objeck Programming Language',
'ocaml' => 'OCaml (Objective Caml)',
'octave' => 'GNU Octave M-file',
'oobas' => 'OpenOffice.org Basic',
'oorexx' => 'ooRexx',
'oracle11' => 'Oracle 11i',
'oracle8' => 'Oracle 8',
'oxygene' => 'Delphi Prism (Oxygene)',
'oz' => 'Oz',
'parasail' => 'ParaSail',
'parigp' => 'PARI/GP',
'pascal' => 'Pascal',
'pcre' => 'PCRE',
'per' => 'Per (forms)',
@ -167,11 +180,13 @@ $config['geshi_languages'] = array(
'properties' => 'Property',
'providex' => 'ProvideX',
'purebasic' => 'PureBasic',
'pys60' => 'Python for S60',
'q' => 'q/kdb+',
'qbasic' => 'QBasic/QuickBASIC',
'rails' => 'Ruby (with Ruby on Rails Framework)',
'rebol' => 'Rebol',
'reg' => 'Microsoft Registry Editor',
'rexx' => 'Rexx',
'robots' => 'robots.txt',
'rpmspec' => 'RPM Spec',
'rsplus' => 'R',
@ -182,6 +197,9 @@ $config['geshi_languages'] = array(
'sdlbasic' => 'sdlBasic',
'smalltalk' => 'Smalltalk',
'smarty' => 'Smarty template',
'spark' => 'SPARK',
'sparql' => 'SPARQL',
'stonescript' => 'StoneScript',
'systemverilog' => 'SystemVerilog IEEE 1800-2009(draft8)',
'tcl' => 'TCL/iTCL',
'teraterm' => 'Tera Term Macro',
@ -190,9 +208,12 @@ $config['geshi_languages'] = array(
'typoscript' => 'TypoScript',
'unicon' => 'Unicon',
'uscript' => 'UnrealScript',
'upc' => 'UPC',
'urbi' => 'Urbi',
'vala' => 'Vala',
'vb' => 'Visual Basic',
'vbnet' => 'VB.NET',
'vedit' => 'Vedit macro language',
'verilog' => 'Verilog',
'vhdl' => 'VHDL',
'vim' => 'Vim scripting',

View File

@ -55,6 +55,8 @@ $route['lists/:num'] = 'main/lists/$1';
$route['trends'] = 'main/trends';
$route['trends/:any'] = 'main/trends/$1';
$route['spamadmin/:num'] = 'spamadmin/index';
$route['spamadmin/blacklist'] = 'spamadmin/blacklist';
$route['spamadmin/blacklist/(:num)'] = 'spamadmin/blacklist';
$route['spamadmin/blacklist/unblock/(:any)'] = 'spamadmin/unblock_ip';
$route['spamadmin/:any'] = 'spamadmin/spam_detail';
$route['about'] = 'main/about';
@ -66,6 +68,7 @@ $route['404_override'] = 'main/error_404';
$route['themes/:any/css/:any'] = 'theme_assets/css';
$route['themes/:any/images/:any'] = 'theme_assets/images';
$route['themes/:any/img/:any'] = 'theme_assets/images';
$route['themes/:any/js/:any'] = 'theme_assets/js';
/* End of file routes.php */

View File

@ -25,10 +25,21 @@ $config['db_password'] = 'stikked';
*
* Which theme to use
* Folder name in htdocs/themes/
* Currently: default, bootstrap, gabdark, gabdark3, geocities
*
*/
$config['theme'] = 'default';
/**
* Language
*
* Which language to use
* Translate Stikked to your own language, see htdocs/application/language files
* Currently: english, german, swissgerman, spanish
*
*/
$config['language'] = 'english';
/**
* Combine JS & CSS files (recommended)
*
@ -77,11 +88,16 @@ $config['per_page'] = 15;
*
* private_only: No recent pastes will be displayed.
* enable_captcha: Users must enter a captcha to post.
* recaptcha_publickey & recaptcha_privatekey: If filled, reCaptcha will be used (get a key from https://www.google.com/recaptcha/admin/create)
* blocked_words: Comma separated list, e.g. '.es.tl, mycraft.com, yourbadword'
* disable_api: Don't allow pasting via API (because we can't use a captcha there...)
*
**/
$config['private_only'] = false;
$config['enable_captcha'] = false;
$config['recaptcha_publickey'] = '';
$config['recaptcha_privatekey'] = '';
$config['disable_api'] = false;
$config['blocked_words'] = '';
//spamadmin: accessible via /spamadmin (only active when user + pass is set)

View File

@ -18,6 +18,11 @@ class Api extends Main
function __construct()
{
parent::__construct();
if (config_item('disable_api'))
{
die("The API has been disabled\n");
}
}
function index()
@ -32,6 +37,8 @@ class Api extends Main
function create()
{
$this->load->model('pastes');
$this->load->library('form_validation'); //needed by parent class
if (!$this->input->post('text'))
{
@ -51,6 +58,20 @@ class Api extends Main
{
$_POST['private'] = 1;
}
//validations
if (!$this->_valid_ip())
{
die("You are not allowed to paste\n");
}
if (!$this->_blockwords_check())
{
die("Your paste contains blocked words\n");
}
//create paste
$paste_url = $this->pastes->createPaste();
$data['msg'] = base_url() . $paste_url;
$this->load->view('view/api', $data);

View File

@ -17,6 +17,7 @@
* - captcha()
* - _valid_lang()
* - _valid_captcha()
* - _valid_recaptcha()
* - _valid_ip()
* - _blockwords_check()
* - _autofill_check()
@ -35,10 +36,20 @@ class Main extends CI_Controller
parent::__construct();
$this->load->model('languages');
if ($this->config->item('require_auth'))
if (config_item('require_auth'))
{
$this->load->library('auth_ldap');
}
//recaptcha
$this->recaptcha_publickey = config_item('recaptcha_publickey');
$this->recaptcha_privatekey = config_item('recaptcha_privatekey');
if ($this->recaptcha_publickey != '' && $this->recaptcha_privatekey != '')
{
$this->load->helper('recaptcha');
$this->use_recaptcha = true;
}
if (!$this->db->table_exists('ci_sessions'))
{
@ -249,7 +260,7 @@ class Main extends CI_Controller
//codemirror languages
$this->load->config('codemirror_languages');
$codemirror_languages = $this->config->item('codemirror_languages');
$codemirror_languages = config_item('codemirror_languages');
$data['codemirror_languages'] = $codemirror_languages;
//codemirror modes
@ -263,13 +274,17 @@ class Main extends CI_Controller
}
}
$data['codemirror_modes'] = $cmm;
//recaptcha
$data['use_recaptcha'] = $this->use_recaptcha;
$data['recaptcha_publickey'] = $this->recaptcha_publickey;
if (!$this->input->post('submit'))
{
if (!$this->db_session->userdata('expire'))
{
$default_expiration = $this->config->item('default_expiration');
$default_expiration = config_item('default_expiration');
$this->db_session->set_userdata('expire', $default_expiration);
}
@ -287,7 +302,7 @@ class Main extends CI_Controller
if (!$lang)
{
$lang = $this->config->item('default_language');
$lang = config_item('default_language');
}
$data['lang_set'] = $lang;
}
@ -356,7 +371,7 @@ class Main extends CI_Controller
//form validation
$this->form_validation->set_rules($rules);
$this->form_validation->set_message('min_length', 'The %s field can not be empty');
$this->form_validation->set_message('min_length', lang('empty'));
$this->form_validation->set_error_delimiters('<div class="message error"><div class="container">', '</div></div>');
if ($this->form_validation->run() == FALSE)
@ -367,7 +382,7 @@ class Main extends CI_Controller
else
{
if ($this->config->item('private_only'))
if (config_item('private_only'))
{
$_POST['private'] = 1;
}
@ -416,7 +431,7 @@ class Main extends CI_Controller
$this->load->helper('text');
$paste = $this->pastes->getPaste(3);
$data = $this->pastes->getReplies(3);
$data['page_title'] = $paste['title'] . ' - ' . $this->config->item('site_name');
$data['page_title'] = $paste['title'] . ' - ' . config_item('site_name');
$data['feed_url'] = site_url('view/rss/' . $this->uri->segment(3));
$this->load->view('view/rss', $data);
}
@ -434,7 +449,7 @@ class Main extends CI_Controller
if ($check)
{
$data = $this->pastes->getPaste(3);
$data = $this->pastes->getPaste(3, true, $this->uri->segment(4) == 'diff');
$this->load->view('view/embed', $data);
}
else
@ -464,7 +479,7 @@ class Main extends CI_Controller
{
$this->_valid_authentication();
if ($this->config->item('private_only'))
if (config_item('private_only'))
{
show_404();
}
@ -476,7 +491,7 @@ class Main extends CI_Controller
if ($this->uri->segment(2) == 'rss')
{
$this->load->helper('text');
$data['page_title'] = $this->config->item('site_name');
$data['page_title'] = config_item('site_name');
$data['feed_url'] = site_url('lists/rss');
$data['replies'] = $data['pastes'];
unset($data['pastes']);
@ -493,7 +508,7 @@ class Main extends CI_Controller
{
$this->_valid_authentication();
if ($this->config->item('private_only'))
if (config_item('private_only'))
{
show_404();
}
@ -519,7 +534,7 @@ class Main extends CI_Controller
{
redirect('view/raw/' . $this->uri->segment(2));
}
$data = $this->pastes->getPaste(2, true);
$data = $this->pastes->getPaste(2, true, $this->uri->segment(3) == 'diff');
$data['reply_form'] = $this->_form_prep($data['lang_code'], 'Re: ' . $data['title'], $data['raw'], $data['pid']);
$this->load->view('view/view', $data);
}
@ -534,7 +549,7 @@ class Main extends CI_Controller
$this->load->model('pastes');
$key = $this->uri->segment(2);
if ($key != $this->config->item('cron_key'))
if ($key != config_item('cron_key'))
{
show_404();
}
@ -577,17 +592,25 @@ class Main extends CI_Controller
function _valid_lang($lang)
{
$this->load->model('languages');
$this->form_validation->set_message('_valid_lang', 'Please select your language');
$this->form_validation->set_message('_valid_lang', lang('valid_lang'));
return $this->languages->valid_language($lang);
}
function _valid_captcha($text)
{
if ($this->config->item('enable_captcha'))
if (config_item('enable_captcha'))
{
$this->form_validation->set_message('_valid_captcha', 'The Captcha is incorrect.');
return strtolower($text) == strtolower($this->db_session->userdata('captcha'));
$this->form_validation->set_message('_valid_captcha', lang('captcha'));
if ($this->use_recaptcha)
{
return $this->_valid_recaptcha();
}
else
{
return strtolower($text) == strtolower($this->db_session->userdata('captcha'));
}
}
else
{
@ -595,6 +618,26 @@ class Main extends CI_Controller
}
}
function _valid_recaptcha()
{
if ($this->input->post('recaptcha_response_field'))
{
$pk = $this->recaptcha_privatekey;
$ra = $_SERVER['REMOTE_ADDR'];
$cf = $this->input->post('recaptcha_challenge_field');
$rf = $this->input->post('recaptcha_response_field');
//check
$resp = recaptcha_check_answer($pk, $ra, $cf, $rf);
return $resp->is_valid;
}
else
{
return false;
}
}
function _valid_ip()
{
@ -604,7 +647,7 @@ class Main extends CI_Controller
$ip_firstpart = $ip[0] . '.' . $ip[1] . '.';
//setup message
$this->form_validation->set_message('_valid_ip', 'You are not allowed to paste.');
$this->form_validation->set_message('_valid_ip', lang('not_allowed'));
//lookup
$this->db->select('ip_address, spam_attempts');
@ -637,12 +680,19 @@ class Main extends CI_Controller
{
//setup message
$this->form_validation->set_message('_blockwords_check', 'Your paste contains blocked words.');
$this->form_validation->set_message('_blockwords_check', lang('blocked_words'));
//check
$blocked_words = $this->config->item('blocked_words');
$blocked_words = config_item('blocked_words');
$post = $this->input->post();
$raw = $post['code'];
if (!$blocked_words)
{
return true;
}
//we have blocked words
foreach (explode(',', $blocked_words) as $word)
{
$word = trim($word);
@ -659,16 +709,16 @@ class Main extends CI_Controller
{
//setup message
$this->form_validation->set_message('_autofill_check', 'Go away, robot!');
$this->form_validation->set_message('_autofill_check', lang('robot'));
//check
return !$this->input->post('email');
return (!$this->input->post('email') && !$this->input->post('url'));
}
function _valid_authentication()
{
if ($this->config->item('require_auth'))
if (config_item('require_auth'))
{
if (!$this->auth_ldap->is_authenticated())
@ -683,14 +733,23 @@ class Main extends CI_Controller
{
$lang = $this->uri->segment(3);
$this->load->config('codemirror_languages');
$cml = $this->config->item('codemirror_languages');
$cml = config_item('codemirror_languages');
//file path
$file_path = 'themes/' . config_item('theme') . '/js/';
if (!file_exists($file_path))
{
$file_path = 'themes/default/js/';
}
if (isset($cml[$lang]) && gettype($cml[$lang]) == 'array')
{
header('Content-Type: application/x-javascript; charset=utf-8');
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 60 * 60 * 24 * 30));
foreach ($cml[$lang]['js'] as $js)
{
echo file_get_contents('./static/js/' . $js[0]);
echo file_get_contents($file_path . $js[0]);
}
}
exit;

View File

@ -55,7 +55,8 @@ class Theme_assets extends CI_Controller
}
//send
header('Content-type: ' . mime_content_type($file_path));
$size = getimagesize($file_path);
header('Content-type: ' . $size['mime']);
$this->_expires_header(30);
readfile($file_path);
}
@ -74,8 +75,15 @@ class Theme_assets extends CI_Controller
//file path
$file_path = 'themes/' . $this->theme . '/js/' . $js_file;
//fallback to default js if js in theme not found
if (!file_exists($file_path))
{
$file_path = 'themes/default/js/' . $js_file;
}
//send
header('Content-type: application/x-javascript');
header('Content-Type: application/x-javascript; charset=utf-8');
$this->_expires_header(30);
readfile($file_path);
}

View File

@ -9,9 +9,9 @@ header("HTTP/1.1 404 Not Found");
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Stikked</title>
<link rel="stylesheet" href="<?php echo base_url(); ?>static/styles/reset.css" type="text/css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>static/styles/fonts.css" type="text/css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>static/styles/main.css" type="text/css" media="screen" title="main" charset="utf-8" />
<link rel="stylesheet" href="<?php echo base_url(); ?>themes/default/css/reset.css" type="text/css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>themes/default/css/fonts.css" type="text/css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>themes/default/css/main.css" type="text/css" media="screen" title="main" charset="utf-8" />
</head>
<body>
@ -19,14 +19,6 @@ header("HTTP/1.1 404 Not Found");
<div class="container">
<div class="header">
<h1><a href="<?php echo base_url(); ?>" class="title"><?php echo $CI->config->item('site_name'); ?></a></h1>
<div class="tabs">
<ul>
<li><a href="<?php echo site_url(''); ?>">Paste</a></li>
<li><a href="<?php echo site_url('lists'); ?>">Recent</a></li>
<li><a href="<?php echo site_url('api'); ?>">API</a></li>
<li><a href="<?php echo site_url('about'); ?>">About</a></li>
</ul>
</div>
</div>
<div class="page">
@ -41,10 +33,6 @@ header("HTTP/1.1 404 Not Found");
</div>
</div>
<div class="footer">
<?php $CI->load->view('defaults/footer_message'); ?>
<?php $CI->load->view('defaults/stats'); ?>
</div>
</div>
</div>
</body>

View File

@ -0,0 +1,58 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* CodeIgniter
*
* An open source application development framework for PHP 5.1.6 or newer
*
* @package CodeIgniter
* @author ExpressionEngine Dev Team
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
* @license http://codeigniter.com/user_guide/license.html
* @link http://codeigniter.com
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
/**
* CodeIgniter Language Helpers
*
* @package CodeIgniter
* @subpackage Helpers
* @category Helpers
* @author ExpressionEngine Dev Team
* @link http://codeigniter.com/user_guide/helpers/language_helper.html
*/
// ------------------------------------------------------------------------
/**
* Lang
*
* Fetches a language variable and optionally outputs a form label
*
* @access public
* @param string the language line
* @param string the id of the form element
* @return string
*/
if ( ! function_exists('lang'))
{
function lang($index, $id = '')
{
$CI =& get_instance();
$line = $CI->lang->line($index);
if ($id != '')
{
$line = '<label for="'.$id.'">'.$line."</label>";
}
return ($line != '' ? $line : '[' . $index . ']');
}
}
// ------------------------------------------------------------------------
/* End of file language_helper.php */
/* Location: ./system/helpers/language_helper.php */

View File

@ -0,0 +1,277 @@
<?php
/*
* This is a PHP library that handles calling reCAPTCHA.
* - Documentation and latest version
* http://recaptcha.net/plugins/php/
* - Get a reCAPTCHA API Key
* https://www.google.com/recaptcha/admin/create
* - Discussion group
* http://groups.google.com/group/recaptcha
*
* Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
* AUTHORS:
* Mike Crawford
* Ben Maurer
*
* 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.
*/
/**
* The reCAPTCHA server URL's
*/
define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
define("RECAPTCHA_VERIFY_SERVER", "www.google.com");
/**
* Encodes the given data into a query string format
* @param $data - array of string elements to be encoded
* @return string - encoded request
*/
function _recaptcha_qsencode ($data) {
$req = "";
foreach ( $data as $key => $value )
$req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
// Cut the last '&'
$req=substr($req,0,strlen($req)-1);
return $req;
}
/**
* Submits an HTTP POST to a reCAPTCHA server
* @param string $host
* @param string $path
* @param array $data
* @param int port
* @return array response
*/
function _recaptcha_http_post($host, $path, $data, $port = 80) {
$req = _recaptcha_qsencode ($data);
$http_request = "POST $path HTTP/1.0\r\n";
$http_request .= "Host: $host\r\n";
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
$http_request .= "Content-Length: " . strlen($req) . "\r\n";
$http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
$http_request .= "\r\n";
$http_request .= $req;
$response = '';
if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
die ('Could not open socket');
}
fwrite($fs, $http_request);
while ( !feof($fs) )
$response .= fgets($fs, 1160); // One TCP-IP packet
fclose($fs);
$response = explode("\r\n\r\n", $response, 2);
return $response;
}
/**
* Gets the challenge HTML (javascript and non-javascript version).
* This is called from the browser, and the resulting reCAPTCHA HTML widget
* is embedded within the HTML form it was called from.
* @param string $pubkey A public key for reCAPTCHA
* @param string $error The error given by reCAPTCHA (optional, default is null)
* @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
* @return string - The HTML to be embedded in the user's form.
*/
function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
{
if ($pubkey == null || $pubkey == '') {
die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
}
if ($use_ssl) {
$server = RECAPTCHA_API_SECURE_SERVER;
} else {
$server = RECAPTCHA_API_SERVER;
}
$errorpart = "";
if ($error) {
$errorpart = "&amp;error=" . $error;
}
return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
<noscript>
<iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
</noscript>';
}
/**
* A ReCaptchaResponse is returned from recaptcha_check_answer()
*/
class ReCaptchaResponse {
var $is_valid;
var $error;
}
/**
* Calls an HTTP POST function to verify if the user's guess was correct
* @param string $privkey
* @param string $remoteip
* @param string $challenge
* @param string $response
* @param array $extra_params an array of extra variables to post to the server
* @return ReCaptchaResponse
*/
function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
{
if ($privkey == null || $privkey == '') {
die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
}
if ($remoteip == null || $remoteip == '') {
die ("For security reasons, you must pass the remote ip to reCAPTCHA");
}
//discard spam submissions
if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
$recaptcha_response = new ReCaptchaResponse();
$recaptcha_response->is_valid = false;
$recaptcha_response->error = 'incorrect-captcha-sol';
return $recaptcha_response;
}
$response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
array (
'privatekey' => $privkey,
'remoteip' => $remoteip,
'challenge' => $challenge,
'response' => $response
) + $extra_params
);
$answers = explode ("\n", $response [1]);
$recaptcha_response = new ReCaptchaResponse();
if (trim ($answers [0]) == 'true') {
$recaptcha_response->is_valid = true;
}
else {
$recaptcha_response->is_valid = false;
$recaptcha_response->error = $answers [1];
}
return $recaptcha_response;
}
/**
* gets a URL where the user can sign up for reCAPTCHA. If your application
* has a configuration page where you enter a key, you should provide a link
* using this function.
* @param string $domain The domain where the page is hosted
* @param string $appname The name of your application
*/
function recaptcha_get_signup_url ($domain = null, $appname = null) {
return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
}
function _recaptcha_aes_pad($val) {
$block_size = 16;
$numpad = $block_size - (strlen ($val) % $block_size);
return str_pad($val, strlen ($val) + $numpad, chr($numpad));
}
/* Mailhide related code */
function _recaptcha_aes_encrypt($val,$ky) {
if (! function_exists ("mcrypt_encrypt")) {
die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
}
$mode=MCRYPT_MODE_CBC;
$enc=MCRYPT_RIJNDAEL_128;
$val=_recaptcha_aes_pad($val);
return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
}
function _recaptcha_mailhide_urlbase64 ($x) {
return strtr(base64_encode ($x), '+/', '-_');
}
/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
function recaptcha_mailhide_url($pubkey, $privkey, $email) {
if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
"you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
}
$ky = pack('H*', $privkey);
$cryptmail = _recaptcha_aes_encrypt ($email, $ky);
return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
}
/**
* gets the parts of the email to expose to the user.
* eg, given johndoe@example,com return ["john", "example.com"].
* the email is then displayed as john...@example.com
*/
function _recaptcha_mailhide_email_parts ($email) {
$arr = preg_split("/@/", $email );
if (strlen ($arr[0]) <= 4) {
$arr[0] = substr ($arr[0], 0, 1);
} else if (strlen ($arr[0]) <= 6) {
$arr[0] = substr ($arr[0], 0, 3);
} else {
$arr[0] = substr ($arr[0], 0, 4);
}
return $arr;
}
/**
* Gets html to display an email address given a public an private key.
* to get a key, go to:
*
* http://www.google.com/recaptcha/mailhide/apikey
*/
function recaptcha_mailhide_html($pubkey, $privkey, $email) {
$emailparts = _recaptcha_mailhide_email_parts ($email);
$url = recaptcha_mailhide_url ($pubkey, $privkey, $email);
return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) .
"' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
}
?>

View File

@ -0,0 +1,61 @@
<?php
$lang['date_year'] = "Year";
$lang['date_years'] = "Years";
$lang['date_month'] = "Month";
$lang['date_months'] = "Months";
$lang['date_week'] = "Week";
$lang['date_weeks'] = "Weeks";
$lang['date_day'] = "Day";
$lang['date_days'] = "Days";
$lang['date_hour'] = "Hour";
$lang['date_hours'] = "Hours";
$lang['date_minute'] = "Minute";
$lang['date_minutes'] = "Minutes";
$lang['date_second'] = "Second";
$lang['date_seconds'] = "Seconds";
$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';
$lang['UM11'] = '(UTC -11:00) Samoa Time Zone, Niue';
$lang['UM10'] = '(UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti';
$lang['UM95'] = '(UTC -9:30) Marquesas Islands';
$lang['UM9'] = '(UTC -9:00) Alaska Standard Time, Gambier Islands';
$lang['UM8'] = '(UTC -8:00) Pacific Standard Time, Clipperton Island';
$lang['UM7'] = '(UTC -7:00) Mountain Standard Time';
$lang['UM6'] = '(UTC -6:00) Central Standard Time';
$lang['UM5'] = '(UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time';
$lang['UM45'] = '(UTC -4:30) Venezuelan Standard Time';
$lang['UM4'] = '(UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time';
$lang['UM35'] = '(UTC -3:30) Newfoundland Standard Time';
$lang['UM3'] = '(UTC -3:00) Argentina, Brazil, French Guiana, Uruguay';
$lang['UM2'] = '(UTC -2:00) South Georgia/South Sandwich Islands';
$lang['UM1'] = '(UTC -1:00) Azores, Cape Verde Islands';
$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';
$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';
$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';
$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time';
$lang['UP35'] = '(UTC +3:30) Iran Standard Time';
$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';
$lang['UP45'] = '(UTC +4:30) Afghanistan';
$lang['UP5'] = '(UTC +5:00) Pakistan Standard Time, Yekaterinburg Time';
$lang['UP55'] = '(UTC +5:30) Indian Standard Time, Sri Lanka Time';
$lang['UP575'] = '(UTC +5:45) Nepal Time';
$lang['UP6'] = '(UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time';
$lang['UP65'] = '(UTC +6:30) Cocos Islands, Myanmar';
$lang['UP7'] = '(UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam';
$lang['UP8'] = '(UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time';
$lang['UP875'] = '(UTC +8:45) Australian Central Western Standard Time';
$lang['UP9'] = '(UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time';
$lang['UP95'] = '(UTC +9:30) Australian Central Standard Time';
$lang['UP10'] = '(UTC +10:00) Australian Eastern Standard Time, Vladivostok Time';
$lang['UP105'] = '(UTC +10:30) Lord Howe Island';
$lang['UP11'] = '(UTC +11:00) Magadan Time, Solomon Islands, Vanuatu';
$lang['UP115'] = '(UTC +11:30) Norfolk Island';
$lang['UP12'] = '(UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time';
$lang['UP1275'] = '(UTC +12:45) Chatham Islands Standard Time';
$lang['UP13'] = '(UTC +13:00) Phoenix Islands Time, Tonga';
$lang['UP14'] = '(UTC +14:00) Line Islands';
/* End of file date_lang.php */
/* Location: ./system/language/english/date_lang.php */

View File

@ -0,0 +1,35 @@
<?php
$lang['required'] = "The %s field is required.";
$lang['not_allowed'] = "You are not allowed to paste.";
$lang['captcha'] = "The captcha is incorrect.";
$lang['blocked_words'] = "Your Paste contains blocked words.";
$lang['robot'] = "Go away, robot!";
$lang['empty'] = "The %s field can not be empty.";
$lang['valid_lang'] = "Please select your language.";
$lang['isset'] = "The %s field must have a value.";
$lang['valid_email'] = "The %s field must contain a valid email address.";
$lang['valid_emails'] = "The %s field must contain all valid email addresses.";
$lang['valid_url'] = "The %s field must contain a valid URL.";
$lang['valid_ip'] = "The %s field must contain a valid IP.";
$lang['min_length'] = "The %s field must be at least %s characters in length.";
$lang['max_length'] = "The %s field can not exceed %s characters in length.";
$lang['exact_length'] = "The %s field must be exactly %s characters in length.";
$lang['alpha'] = "The %s field may only contain alphabetical characters.";
$lang['alpha_numeric'] = "The %s field may only contain alpha-numeric characters.";
$lang['alpha_dash'] = "The %s field may only contain alpha-numeric characters, underscores, and dashes.";
$lang['numeric'] = "The %s field must contain only numbers.";
$lang['is_numeric'] = "The %s field must contain only numeric characters.";
$lang['integer'] = "The %s field must contain an integer.";
$lang['regex_match'] = "The %s field is not in the correct format.";
$lang['matches'] = "The %s field does not match the %s field.";
$lang['is_unique'] = "The %s field must contain a unique value.";
$lang['is_natural'] = "The %s field must contain only positive numbers.";
$lang['is_natural_no_zero'] = "The %s field must contain a number greater than zero.";
$lang['decimal'] = "The %s field must contain a decimal number.";
$lang['less_than'] = "The %s field must contain a number less than %s.";
$lang['greater_than'] = "The %s field must contain a number greater than %s.";
/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */

View File

@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>

View File

@ -0,0 +1,71 @@
<?php
$lang['paste_create_new'] = 'Create a new paste';
$lang['paste_create_new_desc'] = 'Here you can create a new paste';
$lang['paste_author'] = 'Author';
$lang['paste_author_desc'] = 'What\'s your name?';
$lang['paste_title'] = 'Title';
$lang['paste_title_desc'] = 'Give your paste a title.';
$lang['paste_lang'] = 'Language';
$lang['paste_lang_desc'] = 'What language is your paste written in?';
$lang['paste_yourpaste'] = 'Your paste';
$lang['paste_yourpaste_desc'] = 'Paste your paste here';
$lang['paste_enablesynhl'] = 'Enable realtime syntax highlighting';
$lang['paste_disablesynhl'] = 'Disable realtime syntax highlighting';
$lang['paste_shorturl'] = 'Create Shorturl';
$lang['paste_shorturl_desc'] = 'Create a shorter url that redirects to your paste?';
$lang['paste_private'] = 'Private';
$lang['paste_private_desc'] = 'Private paste aren\'t shown in recent listings.';
$lang['paste_delete'] = 'Delete After';
$lang['paste_delete_desc'] = 'When should we delete your paste?';
$lang['paste_recent'] = 'Recent Pastes';
$lang['paste_trending'] = 'Trending Pastes';
$lang['paste_from'] = 'From';
$lang['paste_ago'] = 'ago';
$lang['paste_writtenin'] = 'written in';
$lang['paste_viewed'] = 'viewed';
$lang['paste_times'] = 'times';
$lang['paste_isareply'] = 'This paste is a reply to';
$lang['paste_viewdiff'] = 'view diff';
$lang['paste_viewdiffs'] = 'Viewing differences between';
$lang['paste_goback'] = 'go back';
$lang['paste_url'] = 'URL';
$lang['paste_shorturl'] = 'Shorturl';
$lang['paste_embed'] = 'Embed';
$lang['paste_showcode'] = 'Show code';
$lang['paste_download'] = 'Download Paste';
$lang['paste_or'] = 'or';
$lang['paste_and'] = 'and';
$lang['paste_viewraw'] = 'View Raw';
$lang['paste_expand'] = 'Expand Paste';
$lang['paste_fullwidth'] = 'to full width of browser';
$lang['paste_replies'] = 'Replies to';
$lang['paste_replyto'] = 'Reply to';
$lang['paste_replyto_desc'] = 'Here you can reply to the paste above';
$lang['paste_missing'] = 'There have been no Pastes';
$lang['paste_spam'] = 'Spam protection';
$lang['paste_spam_desc'] = 'Type in the letters';
$lang['exp_forever'] = 'Keep Forever';
$lang['exp_30min'] = '30 Minutes';
$lang['exp_1h'] = '1 Hour';
$lang['exp_6h'] = '5 Hours';
$lang['exp_12h'] = '12 Hours';
$lang['exp_1d'] = '1 Day';
$lang['exp_1w'] = '1 Week';
$lang['exp_4w'] = '4 Weeks';
$lang['paste_create'] = 'Create';
$lang['menu_create'] = 'Create';
$lang['menu_create_title'] = 'Create A New Paste';
$lang['menu_recent'] = 'Recent';
$lang['menu_recent_title'] = 'Recent Pastes';
$lang['menu_trending'] = 'Trending';
$lang['menu_trending_title'] = 'Trending Pastes';
$lang['menu_api'] = 'API';
$lang['menu_about'] = 'About';
$lang['table_title'] = 'Title';
$lang['table_name'] = 'Name';
$lang['table_lang'] = 'Language';
$lang['table_hits'] = 'Hits';
$lang['table_time'] = 'When';
$lang['powered_by'] = 'Powered by';

View File

@ -0,0 +1,61 @@
<?php
$lang['date_year'] = "an";
$lang['date_years'] = "ans";
$lang['date_month'] = "mois";
$lang['date_months'] = "mois";
$lang['date_week'] = "semaine";
$lang['date_weeks'] = "semaines";
$lang['date_day'] = "jour";
$lang['date_days'] = "jours";
$lang['date_hour'] = "heure";
$lang['date_hours'] = "heures";
$lang['date_minute'] = "minute";
$lang['date_minutes'] = "minutes";
$lang['date_second'] = "seconde";
$lang['date_seconds'] = "secondes";
$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';
$lang['UM11'] = '(UTC -11:00) Samoa Time Zone, Niue';
$lang['UM10'] = '(UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti';
$lang['UM95'] = '(UTC -9:30) Marquesas Islands';
$lang['UM9'] = '(UTC -9:00) Alaska Standard Time, Gambier Islands';
$lang['UM8'] = '(UTC -8:00) Pacific Standard Time, Clipperton Island';
$lang['UM7'] = '(UTC -7:00) Mountain Standard Time';
$lang['UM6'] = '(UTC -6:00) Central Standard Time';
$lang['UM5'] = '(UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time';
$lang['UM45'] = '(UTC -4:30) Venezuelan Standard Time';
$lang['UM4'] = '(UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time';
$lang['UM35'] = '(UTC -3:30) Newfoundland Standard Time';
$lang['UM3'] = '(UTC -3:00) Argentina, Brazil, French Guiana, Uruguay';
$lang['UM2'] = '(UTC -2:00) South Georgia/South Sandwich Islands';
$lang['UM1'] = '(UTC -1:00) Azores, Cape Verde Islands';
$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';
$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';
$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';
$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time';
$lang['UP35'] = '(UTC +3:30) Iran Standard Time';
$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';
$lang['UP45'] = '(UTC +4:30) Afghanistan';
$lang['UP5'] = '(UTC +5:00) Pakistan Standard Time, Yekaterinburg Time';
$lang['UP55'] = '(UTC +5:30) Indian Standard Time, Sri Lanka Time';
$lang['UP575'] = '(UTC +5:45) Nepal Time';
$lang['UP6'] = '(UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time';
$lang['UP65'] = '(UTC +6:30) Cocos Islands, Myanmar';
$lang['UP7'] = '(UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam';
$lang['UP8'] = '(UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time';
$lang['UP875'] = '(UTC +8:45) Australian Central Western Standard Time';
$lang['UP9'] = '(UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time';
$lang['UP95'] = '(UTC +9:30) Australian Central Standard Time';
$lang['UP10'] = '(UTC +10:00) Australian Eastern Standard Time, Vladivostok Time';
$lang['UP105'] = '(UTC +10:30) Lord Howe Island';
$lang['UP11'] = '(UTC +11:00) Magadan Time, Solomon Islands, Vanuatu';
$lang['UP115'] = '(UTC +11:30) Norfolk Island';
$lang['UP12'] = '(UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time';
$lang['UP1275'] = '(UTC +12:45) Chatham Islands Standard Time';
$lang['UP13'] = '(UTC +13:00) Phoenix Islands Time, Tonga';
$lang['UP14'] = '(UTC +14:00) Line Islands';
/* End of file date_lang.php */
/* Location: ./system/language/english/date_lang.php */

View File

@ -0,0 +1,35 @@
<?php
$lang['required'] = "Le champ %s est requis.";
$lang['not_allowed'] = "Vous n'avez pas le droit de poster.";
$lang['captcha'] = "La captcha n'est pas correcte.";
$lang['blocked_words'] = "Ce paste contient des mots interdits.";
$lang['robot'] = "Tu n'es pas le droid que je recherche ! Vas t'en robot !";
$lang['empty'] = "Le champ %s ne peut pas être vide.";
$lang['valid_lang'] = "Veuillez spécifier votre langue.";
$lang['isset'] = "Le champ %s doit avoir une valeur.";
$lang['valid_email'] = "Le champ %s doit contenir une addresse email valide.";
$lang['valid_emails'] = "The %s field must contain all valid email addresses.";
$lang['valid_url'] = "Le champ %s doit contenit une addresse mail valide.";
$lang['valid_ip'] = "Le champ %s doit contenir une IP valide.";
$lang['min_length'] = "Le champ %s doit au moins contenit %s caractères.";
$lang['max_length'] = "Le champ %s ne doit pas dépasser %s caractères.";
$lang['exact_length'] = "Le champ %s doit comporter exactement %s caractères.";
$lang['alpha'] = "Le champ %s ne doit contenir que des caractères alphabétiques.";
$lang['alpha_numeric'] = "Le champ %s ne doit contenit que des caractères alphanimériques.";
$lang['alpha_dash'] = "The %s field may only contain alpha-numeric characters, underscores, and dashes.";
$lang['numeric'] = "Le champ %s ne doit contenir que des nombres.";
$lang['is_numeric'] = "Le champ %s ne doit contenir que des caractères numériques.";
$lang['integer'] = "Le champ %s doit être un entier.";
$lang['regex_match'] = "Le champ %s n'est pas dans le bon format.";
$lang['matches'] = "Le champ %s ne correspond pas au champ %s.";
$lang['is_unique'] = "Le champ %s doit contenir une valeur unique.";
$lang['is_natural'] = "Le champ %s ne peut contenir que des nombres positifs.";
$lang['is_natural_no_zero'] = "Le champ %s doit contenir un nombre strictement positif.";
$lang['decimal'] = "Le champ %s doit contenir un nombre décimal.";
$lang['less_than'] = "Le champ %s doit contenir un nombre inférieur à %s.";
$lang['greater_than'] = "Le champ %s doit contenir un nombre supérieur à %s.";
/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */

View File

@ -0,0 +1,71 @@
<?php
$lang['paste_create_new'] = 'Créer un nouveau paste';
$lang['paste_create_new_desc'] = 'Copiez votre paste ici';
$lang['paste_author'] = 'Auteur';
$lang['paste_author_desc'] = 'Qui êtes vous ?';
$lang['paste_title'] = 'Titre';
$lang['paste_title_desc'] = 'Donnez un titre a votre paste !';
$lang['paste_lang'] = 'Language';
$lang['paste_lang_desc'] = 'En quel langage est écrit votre paste ?';
$lang['paste_yourpaste'] = 'Votre paste';
$lang['paste_yourpaste_desc'] = 'Copiez votre paste ici';
$lang['paste_enablesynhl'] = 'Activer la coloration syntaxique en temps réel';
$lang['paste_disablesynhl'] = 'Désactiver la coloration syntaxique en temps réel';
$lang['paste_shorturl'] = 'Créer une URL courte';
$lang['paste_shorturl_desc'] = 'Créer une URL courte qui redirige sur votre code ?';
$lang['paste_private'] = 'Privé';
$lang['paste_private_desc'] = 'Les pastes privés n\'apparaissent pas dans les liste de pastes récents';
$lang['paste_delete'] = 'Effacer après combien de temps ?';
$lang['paste_delete_desc'] = 'Au bout de combien de temps voulez vous effacer votre paste ?';
$lang['paste_recent'] = 'Pastes récents';
$lang['paste_trending'] = 'Les plus consultés';
$lang['paste_from'] = 'De';
$lang['paste_ago'] = 'Il y a %s';
$lang['paste_writtenin'] = 'Écrit en';
$lang['paste_viewed'] = 'vu';
$lang['paste_times'] = 'fois';
$lang['paste_isareply'] = 'Ce paste est une réponse à';
$lang['paste_viewdiff'] = 'voir les différences';
$lang['paste_viewdiffs'] = 'voir les différences entre';
$lang['paste_goback'] = 'retour';
$lang['paste_url'] = 'URL';
$lang['paste_shorturl'] = 'URL courte';
$lang['paste_embed'] = 'Code HTML';
$lang['paste_showcode'] = 'Montrer le code';
$lang['paste_download'] = 'Télécharger le code';
$lang['paste_or'] = 'ou';
$lang['paste_and'] = 'et';
$lang['paste_viewraw'] = 'Voir le code brut';
$lang['paste_expand'] = 'Étendre le paste';
$lang['paste_fullwidth'] = 'à la largeur du navigateur';
$lang['paste_replies'] = 'Réponses à';
$lang['paste_replyto'] = 'Réponse à';
$lang['paste_replyto_desc'] = 'Répondez ici au paste du dessus';
$lang['paste_missing'] = 'Il n\'y a aucun pastes récents !';
$lang['paste_spam'] = 'Protection anti spam';
$lang['paste_spam_desc'] = 'Entrez les lettres pour nous assurer que vous êtes humain';
$lang['exp_forever'] = 'Garder pour toujours';
$lang['exp_30min'] = '30 Minutes';
$lang['exp_1h'] = '1 Heure';
$lang['exp_6h'] = '5 Heures';
$lang['exp_12h'] = '12 Heures';
$lang['exp_1d'] = '1 Jour';
$lang['exp_1w'] = '1 Semaine';
$lang['exp_4w'] = '4 Semaines';
$lang['paste_create'] = 'Créer';
$lang['menu_create'] = 'Créer';
$lang['menu_create_title'] = 'Créer un nouveau paste';
$lang['menu_recent'] = 'Récent';
$lang['menu_recent_title'] = 'Pastes récentes';
$lang['menu_trending'] = 'Plus vus';
$lang['menu_trending_title'] = 'Les pastes les plus consultés';
$lang['menu_api'] = 'API';
$lang['menu_about'] = 'À propos';
$lang['table_title'] = 'Titre';
$lang['table_name'] = 'Nom';
$lang['table_lang'] = 'Langages';
$lang['table_hits'] = 'Vues';
$lang['table_time'] = 'Quand';
$lang['powered_by'] = 'Propulsé par';

View File

@ -0,0 +1,61 @@
<?php
$lang['date_year'] = "Jahr";
$lang['date_years'] = "Jahre";
$lang['date_month'] = "Monat";
$lang['date_months'] = "Monate";
$lang['date_week'] = "Woche";
$lang['date_weeks'] = "Wochen";
$lang['date_day'] = "Tag";
$lang['date_days'] = "Tage";
$lang['date_hour'] = "Stunde";
$lang['date_hours'] = "Stunden";
$lang['date_minute'] = "Minute";
$lang['date_minutes'] = "Minuten";
$lang['date_second'] = "Sekunde";
$lang['date_seconds'] = "Sekunden";
$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';
$lang['UM11'] = '(UTC -11:00) Samoa Time Zone, Niue';
$lang['UM10'] = '(UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti';
$lang['UM95'] = '(UTC -9:30) Marquesas Islands';
$lang['UM9'] = '(UTC -9:00) Alaska Standard Time, Gambier Islands';
$lang['UM8'] = '(UTC -8:00) Pacific Standard Time, Clipperton Island';
$lang['UM7'] = '(UTC -7:00) Mountain Standard Time';
$lang['UM6'] = '(UTC -6:00) Central Standard Time';
$lang['UM5'] = '(UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time';
$lang['UM45'] = '(UTC -4:30) Venezuelan Standard Time';
$lang['UM4'] = '(UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time';
$lang['UM35'] = '(UTC -3:30) Newfoundland Standard Time';
$lang['UM3'] = '(UTC -3:00) Argentina, Brazil, French Guiana, Uruguay';
$lang['UM2'] = '(UTC -2:00) South Georgia/South Sandwich Islands';
$lang['UM1'] = '(UTC -1:00) Azores, Cape Verde Islands';
$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';
$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';
$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';
$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time';
$lang['UP35'] = '(UTC +3:30) Iran Standard Time';
$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';
$lang['UP45'] = '(UTC +4:30) Afghanistan';
$lang['UP5'] = '(UTC +5:00) Pakistan Standard Time, Yekaterinburg Time';
$lang['UP55'] = '(UTC +5:30) Indian Standard Time, Sri Lanka Time';
$lang['UP575'] = '(UTC +5:45) Nepal Time';
$lang['UP6'] = '(UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time';
$lang['UP65'] = '(UTC +6:30) Cocos Islands, Myanmar';
$lang['UP7'] = '(UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam';
$lang['UP8'] = '(UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time';
$lang['UP875'] = '(UTC +8:45) Australian Central Western Standard Time';
$lang['UP9'] = '(UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time';
$lang['UP95'] = '(UTC +9:30) Australian Central Standard Time';
$lang['UP10'] = '(UTC +10:00) Australian Eastern Standard Time, Vladivostok Time';
$lang['UP105'] = '(UTC +10:30) Lord Howe Island';
$lang['UP11'] = '(UTC +11:00) Magadan Time, Solomon Islands, Vanuatu';
$lang['UP115'] = '(UTC +11:30) Norfolk Island';
$lang['UP12'] = '(UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time';
$lang['UP1275'] = '(UTC +12:45) Chatham Islands Standard Time';
$lang['UP13'] = '(UTC +13:00) Phoenix Islands Time, Tonga';
$lang['UP14'] = '(UTC +14:00) Line Islands';
/* End of file date_lang.php */
/* Location: ./system/language/english/date_lang.php */

View File

@ -0,0 +1,35 @@
<?php
$lang['required'] = "Das Feld %s ist ein Pflichtfeld";
$lang['not_allowed'] = "Sie dürfen nichts pasten.";
$lang['captcha'] = "Das eingegebene Captcha ist nicht korrekt";
$lang['blocked_words'] = "Ihr Paste enthält Wörter, die blockiert werden.";
$lang['robot'] = "Verschwinde, Robot!";
$lang['empty'] = "Das Feld %s darf nicht leer sein.";
$lang['valid_lang'] = "Bitte wählen Sie ihre Sprache aus.";
$lang['isset'] = "Das Feld %s muss einen Wert enthalten.";
$lang['valid_email'] = "Das Feld %s muss eine valide e-Mail-Adresse beinhalten.";
$lang['valid_emails'] = "Das Feld %s darf nur valide e-Mail-Adresse beinhalten.";
$lang['valid_url'] = "Das Feld %s muss eine valide URL enthalten..";
$lang['valid_ip'] = "Das Feld %s muss eine valide IP enthalten.";
$lang['min_length'] = "Das Feld %s muss mindestens %s Zeichen enthalten.";
$lang['max_length'] = "Das Feld %s darf nicht mehr als %s Zeichen enthalten.";
$lang['exact_length'] = "Das Feld %s muss genau %s Zeichen enthalten.";
$lang['alpha'] = "Das Feld %s darf nur alphabetische Zeichen enthalten.";
$lang['alpha_numeric'] = "Das Feld %s darf nur alphanumerische Zeichen enthalten.";
$lang['alpha_dash'] = "Das Feld %s darf nur alphanumerische Zeichen, Unter- und Schrägstriche enthalten.";
$lang['numeric'] = "Das Feld %s darf nur Zahlen enthalten.";
$lang['is_numeric'] = "Das Feld %s darf nur Zahlen enthalten.";
$lang['integer'] = "Das Feld %s muss eine Zahl (Integer) enthalten.";
$lang['regex_match'] = "Das Feld %s ist nicht im korrekten Format.";
$lang['matches'] = "Das Feld %s stimmt nicht mit dem Feld %s überein.";
$lang['is_unique'] = "Das Feld %s muss einen eindeutigen Wert enthalten.";
$lang['is_natural'] = "Das Feld %s darf nur positive Zahlen enthalten.";
$lang['is_natural_no_zero'] = "Das Feld %s muss eine Zahl größer Null enthalten.";
$lang['decimal'] = "Das Feld %s muss eine Dezimalzahl enthalten.";
$lang['less_than'] = "Die Zahl in Feld %s muss kleiner sein, als %s.";
$lang['greater_than'] = "Die Zahl in Feld %s muss größer sein, als %s.";
/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */

View File

@ -0,0 +1,71 @@
<?php
$lang['paste_create_new'] = 'Neuen Paste anlegen';
$lang['paste_create_new_desc'] = 'Hier kannst Du einen neuen Paste anlegen';
$lang['paste_author'] = 'Autor';
$lang['paste_author_desc'] = 'Wie heisst Du?';
$lang['paste_title'] = 'Titel';
$lang['paste_title_desc'] = 'Paste Titel';
$lang['paste_lang'] = 'Sprache';
$lang['paste_lang_desc'] = 'In welcher Sprache ist Dein Paste geschrieben?';
$lang['paste_yourpaste'] = 'Dein Paste';
$lang['paste_yourpaste_desc'] = 'Füge hier Deinen Paste ein';
$lang['paste_enablesynhl'] = 'Echtzeit Syntaxhervorhebung aktivieren';
$lang['paste_disablesynhl'] = 'Echtzeit Syntaxhervorhebung deaktivieren';
$lang['paste_shorturl'] = 'Kurzurl generieren';
$lang['paste_shorturl_desc'] = 'Soll eine Kurzurl zu Deinem Paste generiert werden?';
$lang['paste_private'] = 'Privat';
$lang['paste_private_desc'] = 'Private Pastes tauchen nicht unter den aktuellen Pastes auf.';
$lang['paste_delete'] = 'Löschen nach';
$lang['paste_delete_desc'] = 'Wann soll Dein Paste verfallen?';
$lang['paste_recent'] = 'Aktuelle Pastes';
$lang['paste_trending'] = 'Oft aufgerufene Pastes';
$lang['paste_from'] = 'Von';
$lang['paste_ago'] = 'vorher';
$lang['paste_writtenin'] = 'geschrieben in';
$lang['paste_viewed'] = 'aufgerufen';
$lang['paste_times'] = 'mal';
$lang['paste_isareply'] = 'Dieser Paste ist eine Antwort auf';
$lang['paste_viewdiff'] = 'Unterschiede zeigen';
$lang['paste_viewdiffs'] = 'Unterschiede zwischen';
$lang['paste_goback'] = 'zurück';
$lang['paste_url'] = 'URL';
$lang['paste_shorturl'] = 'Kurzurl';
$lang['paste_embed'] = 'Einbetten';
$lang['paste_showcode'] = 'Code anzeigen';
$lang['paste_download'] = 'Paste herunterladen';
$lang['paste_or'] = 'oder';
$lang['paste_and'] = 'und';
$lang['paste_viewraw'] = 'Rohtext anzeigen';
$lang['paste_expand'] = 'Ansicht erweitern';
$lang['paste_fullwidth'] = 'zur vollen Breite des Browsers';
$lang['paste_replies'] = 'Antworten auf';
$lang['paste_replyto'] = 'Antwort auf';
$lang['paste_replyto_desc'] = 'Hier kannst Du auf den Paste von oben antworten';
$lang['paste_missing'] = 'Keine Pastes vorhanden';
$lang['paste_spam'] = 'Spamschutz';
$lang['paste_spam_desc'] = 'Schreibe die Buchstaben ab';
$lang['exp_forever'] = 'Nie';
$lang['exp_30min'] = '30 Minuten';
$lang['exp_1h'] = '1 Stunde';
$lang['exp_6h'] = '5 Stunden';
$lang['exp_12h'] = '12 Stunden';
$lang['exp_1d'] = '1 Tag';
$lang['exp_1w'] = '1 Woche';
$lang['exp_4w'] = '4 Wochen';
$lang['paste_create'] = 'Erstellen';
$lang['menu_create'] = 'Erstellen';
$lang['menu_create_title'] = 'Neuen Paste erstellen';
$lang['menu_recent'] = 'Aktuell';
$lang['menu_recent_title'] = 'Kürzlich erstellte Pastes';
$lang['menu_trending'] = 'Beliebt';
$lang['menu_trending_title'] = 'Pastes mit hoher Besucherzahl';
$lang['menu_api'] = 'API';
$lang['menu_about'] = 'Über';
$lang['table_title'] = 'Titel';
$lang['table_name'] = 'Name';
$lang['table_lang'] = 'Sprache';
$lang['table_hits'] = 'Aufrufe';
$lang['table_time'] = 'Wann';
$lang['powered_by'] = 'Bereitgestellt durch';

View File

@ -0,0 +1,61 @@
<?php
$lang['date_year'] = "año";
$lang['date_years'] = "años";
$lang['date_month'] = "mes";
$lang['date_months'] = "meses";
$lang['date_week'] = "semana";
$lang['date_weeks'] = "semanas";
$lang['date_day'] = "día";
$lang['date_days'] = "dias";
$lang['date_hour'] = "hora";
$lang['date_hours'] = "horas";
$lang['date_minute'] = "minuto";
$lang['date_minutes'] = "minutos";
$lang['date_second'] = "segundo";
$lang['date_seconds'] = "segundos";
$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';
$lang['UM11'] = '(UTC -11:00) Samoa Time Zone, Niue';
$lang['UM10'] = '(UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti';
$lang['UM95'] = '(UTC -9:30) Marquesas Islands';
$lang['UM9'] = '(UTC -9:00) Alaska Standard Time, Gambier Islands';
$lang['UM8'] = '(UTC -8:00) Pacific Standard Time, Clipperton Island';
$lang['UM7'] = '(UTC -7:00) Mountain Standard Time';
$lang['UM6'] = '(UTC -6:00) Central Standard Time';
$lang['UM5'] = '(UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time';
$lang['UM45'] = '(UTC -4:30) Venezuelan Standard Time';
$lang['UM4'] = '(UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time';
$lang['UM35'] = '(UTC -3:30) Newfoundland Standard Time';
$lang['UM3'] = '(UTC -3:00) Argentina, Brazil, French Guiana, Uruguay';
$lang['UM2'] = '(UTC -2:00) South Georgia/South Sandwich Islands';
$lang['UM1'] = '(UTC -1:00) Azores, Cape Verde Islands';
$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';
$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';
$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';
$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time';
$lang['UP35'] = '(UTC +3:30) Iran Standard Time';
$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';
$lang['UP45'] = '(UTC +4:30) Afghanistan';
$lang['UP5'] = '(UTC +5:00) Pakistan Standard Time, Yekaterinburg Time';
$lang['UP55'] = '(UTC +5:30) Indian Standard Time, Sri Lanka Time';
$lang['UP575'] = '(UTC +5:45) Nepal Time';
$lang['UP6'] = '(UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time';
$lang['UP65'] = '(UTC +6:30) Cocos Islands, Myanmar';
$lang['UP7'] = '(UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam';
$lang['UP8'] = '(UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time';
$lang['UP875'] = '(UTC +8:45) Australian Central Western Standard Time';
$lang['UP9'] = '(UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time';
$lang['UP95'] = '(UTC +9:30) Australian Central Standard Time';
$lang['UP10'] = '(UTC +10:00) Australian Eastern Standard Time, Vladivostok Time';
$lang['UP105'] = '(UTC +10:30) Lord Howe Island';
$lang['UP11'] = '(UTC +11:00) Magadan Time, Solomon Islands, Vanuatu';
$lang['UP115'] = '(UTC +11:30) Norfolk Island';
$lang['UP12'] = '(UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time';
$lang['UP1275'] = '(UTC +12:45) Chatham Islands Standard Time';
$lang['UP13'] = '(UTC +13:00) Phoenix Islands Time, Tonga';
$lang['UP14'] = '(UTC +14:00) Line Islands';
/* End of file date_lang.php */
/* Location: ./system/language/english/date_lang.php */

View File

@ -0,0 +1,35 @@
<?php
$lang['required'] = "El campo %s es obligatorio.";
$lang['not_allowed'] = "No tiene los permisos para publicar códigos.";
$lang['captcha'] = "El captcha es incorrecto.";
$lang['blocked_words'] = "Tu código contiene palabras no permitidas.";
$lang['robot'] = "No es discriminación, simplemente no se permiten robots.";
$lang['empty'] = "El campo %s no puede estar vacío.";
$lang['valid_lang'] = "Por favor, elija su lenguaje.";
$lang['isset'] = "El campo %s debe tener un valor.";
$lang['valid_email'] = "El campo %s debe tener una dirección de correo válida.";
$lang['valid_emails'] = "El campo %s debe tener direcciones válidas de correo electrónico.";
$lang['valid_url'] = "El campo %s debe tener un URL válido.";
$lang['valid_ip'] = "El campo %s debe tener una dirección IP válida.";
$lang['min_length'] = "El campo %s debe tener cuando menos %s caracteres de longitud.";
$lang['max_length'] = "El campo %s no puede rebasar de %s caracteres de longitud.";
$lang['exact_length'] = "El campo %s debe de ser exactamente de %s caracteres de longitud.";
$lang['alpha'] = "El campo %s solo puede contener caracteres alfabéticos.";
$lang['alpha_numeric'] = "El campo %s solo puede contener números y/o letras.";
$lang['alpha_dash'] = "El campo %s solo puede contener letras, números, guiones y/o el símbolo de subrayado _ .";
$lang['numeric'] = "El campo %s solo puede contener números.";
$lang['is_numeric'] = "El campo %s debe de contener solamente caracteres númericos.";
$lang['integer'] = "El campo %s debe de contener un número entero.";
$lang['regex_match'] = "El campo %s no esta en el formato correcto.";
$lang['matches'] = "El campo %s no coincide con el campo %s .";
$lang['is_unique'] = "El campo %s debe de tener un valor único.";
$lang['is_natural'] = "El campo %s debe de contener sólamente valores positivos.";
$lang['is_natural_no_zero'] = "El campo %s debe de tener un número mayor que cero.";
$lang['decimal'] = "El campo %s debe de contener un número con fracción decimal.";
$lang['less_than'] = "El campo %s debe de ser menor que %s.";
$lang['greater_than'] = "El campo %s debe de ser mayor que %s.";
/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */

View File

@ -0,0 +1,70 @@
<?php
$lang['paste_create_new'] = 'Pegar un nuevo código';
$lang['paste_create_new_desc'] = 'Aquí puedes pegar tu nuevo código';
$lang['paste_author'] = 'Autor';
$lang['paste_author_desc'] = '¿Cuál es tu nombre?';
$lang['paste_title'] = 'Título';
$lang['paste_title_desc'] = 'Dale un título al código que quieres compartir';
$lang['paste_lang'] = 'Lenguaje';
$lang['paste_lang_desc'] = '¿En que lenguaje esta escrito tu código?';
$lang['paste_yourpaste'] = 'Tu código';
$lang['paste_yourpaste_desc'] = 'Pega tu código aquí';
$lang['paste_enablesynhl'] = 'Habilitar resaltado de sintaxis en tiempo real';
$lang['paste_disablesynhl'] = 'Deshabilitar resaltado de sintaxis en tiempo real';
$lang['paste_shorturl'] = 'Acortar el enlace';
$lang['paste_shorturl_desc'] = '¿Quieres crear un enlace corto que dirija a tu código?';
$lang['paste_private'] = 'Privado';
$lang['paste_private_desc'] = 'Los códigos privados no se muestran en la lista de códigos recientes.';
$lang['paste_delete'] = 'Borrar después de';
$lang['paste_delete_desc'] = '¿Cúando debería de borrar tu código?';
$lang['paste_recent'] = 'Códigos recientes';
$lang['paste_trending'] = 'Códigos populares';
$lang['paste_from'] = 'de';
$lang['paste_ago'] = 'han pasado desde su publicación';
$lang['paste_writtenin'] = 'escrito en';
$lang['paste_viewed'] = 'visto';
$lang['paste_times'] = 'veces';
$lang['paste_isareply'] = 'Este código es una respuesta a';
$lang['paste_viewdiff'] = 'ver diferencias';
$lang['paste_viewdiffs'] = 'viendo diferencias entre';
$lang['paste_goback'] = 'regresar';
$lang['paste_url'] = 'URL';
$lang['paste_shorturl'] = 'Enlace corto';
$lang['paste_embed'] = 'Insertar vínculo';
$lang['paste_showcode'] = 'Mostrar código';
$lang['paste_download'] = 'Descargar código';
$lang['paste_or'] = 'o';
$lang['paste_and'] = 'y';
$lang['paste_viewraw'] = 'Ver sin formato';
$lang['paste_expand'] = 'Extender el código';
$lang['paste_fullwidth'] = 'a todo lo ancho del navegador';
$lang['paste_replies'] = 'Respuestas a';
$lang['paste_replyto'] = 'Respuesta a';
$lang['paste_replyto_desc'] = 'Aquí puedes dejar una respuesta al código anterior';
$lang['paste_missing'] = 'No hay código que mostrar';
$lang['paste_spam'] = 'Protección contra Spam';
$lang['paste_spam_desc'] = 'Teclea las letras que aparecen en la imagen';
$lang['exp_forever'] = 'Mantener por siempre';
$lang['exp_30min'] = '30 minutos';
$lang['exp_1h'] = '1 hora';
$lang['exp_6h'] = '5 horas';
$lang['exp_12h'] = '12 horas';
$lang['exp_1d'] = '1 día';
$lang['exp_1w'] = '1 semana';
$lang['exp_4w'] = '4 semana';
$lang['paste_create'] = 'Nuevo código';
$lang['menu_create'] = 'Nuevo código';
$lang['menu_create_title'] = 'Pegar un código nuevo';
$lang['menu_recent'] = 'Recientes';
$lang['menu_recent_title'] = 'Códigos recientes';
$lang['menu_trending'] = 'Populares';
$lang['menu_trending_title'] = 'Códigos populares';
$lang['menu_api'] = 'API';
$lang['menu_about'] = 'Acerca de';
$lang['table_title'] = 'Título';
$lang['table_name'] = 'Nombre';
$lang['table_lang'] = 'Lenguaje';
$lang['table_hits'] = 'Visto';
$lang['table_time'] = 'cuando';
$lang['powered_by'] = 'Gracias a la tecnología de';

View File

@ -0,0 +1,61 @@
<?php
$lang['date_year'] = "Johr";
$lang['date_years'] = "Johr";
$lang['date_month'] = "Monet";
$lang['date_months'] = "Mönet";
$lang['date_week'] = "Wuchä";
$lang['date_weeks'] = "Wuchä";
$lang['date_day'] = "Daag";
$lang['date_days'] = "Dääg";
$lang['date_hour'] = "Stündli";
$lang['date_hours'] = "Stundä";
$lang['date_minute'] = "Minuttä";
$lang['date_minutes'] = "Minuttä";
$lang['date_second'] = "Sekundä";
$lang['date_seconds'] = "Sekundä";
$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';
$lang['UM11'] = '(UTC -11:00) Samoa Time Zone, Niue';
$lang['UM10'] = '(UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti';
$lang['UM95'] = '(UTC -9:30) Marquesas Islands';
$lang['UM9'] = '(UTC -9:00) Alaska Standard Time, Gambier Islands';
$lang['UM8'] = '(UTC -8:00) Pacific Standard Time, Clipperton Island';
$lang['UM7'] = '(UTC -7:00) Mountain Standard Time';
$lang['UM6'] = '(UTC -6:00) Central Standard Time';
$lang['UM5'] = '(UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time';
$lang['UM45'] = '(UTC -4:30) Venezuelan Standard Time';
$lang['UM4'] = '(UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time';
$lang['UM35'] = '(UTC -3:30) Newfoundland Standard Time';
$lang['UM3'] = '(UTC -3:00) Argentina, Brazil, French Guiana, Uruguay';
$lang['UM2'] = '(UTC -2:00) South Georgia/South Sandwich Islands';
$lang['UM1'] = '(UTC -1:00) Azores, Cape Verde Islands';
$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';
$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';
$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';
$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time';
$lang['UP35'] = '(UTC +3:30) Iran Standard Time';
$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';
$lang['UP45'] = '(UTC +4:30) Afghanistan';
$lang['UP5'] = '(UTC +5:00) Pakistan Standard Time, Yekaterinburg Time';
$lang['UP55'] = '(UTC +5:30) Indian Standard Time, Sri Lanka Time';
$lang['UP575'] = '(UTC +5:45) Nepal Time';
$lang['UP6'] = '(UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time';
$lang['UP65'] = '(UTC +6:30) Cocos Islands, Myanmar';
$lang['UP7'] = '(UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam';
$lang['UP8'] = '(UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time';
$lang['UP875'] = '(UTC +8:45) Australian Central Western Standard Time';
$lang['UP9'] = '(UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time';
$lang['UP95'] = '(UTC +9:30) Australian Central Standard Time';
$lang['UP10'] = '(UTC +10:00) Australian Eastern Standard Time, Vladivostok Time';
$lang['UP105'] = '(UTC +10:30) Lord Howe Island';
$lang['UP11'] = '(UTC +11:00) Magadan Time, Solomon Islands, Vanuatu';
$lang['UP115'] = '(UTC +11:30) Norfolk Island';
$lang['UP12'] = '(UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time';
$lang['UP1275'] = '(UTC +12:45) Chatham Islands Standard Time';
$lang['UP13'] = '(UTC +13:00) Phoenix Islands Time, Tonga';
$lang['UP14'] = '(UTC +14:00) Line Islands';
/* End of file date_lang.php */
/* Location: ./system/language/english/date_lang.php */

View File

@ -0,0 +1,35 @@
<?php
$lang['required'] = "S %s Fäld isch Pflicht.";
$lang['not_allowed'] = "Du dörfsch nümme paste. Ganz eifach.";
$lang['captcha'] = "S Käptscha isch nid korräkt.";
$lang['blocked_words'] = "Di Paste beinhaltet gsperrti Wörter.";
$lang['robot'] = "Figg di, du Scheissbot!";
$lang['empty'] = "S %s Fäld dörf nid leer syy.";
$lang['valid_lang'] = "Bitte wähl dini Sprooch us.";
$lang['isset'] = "The %s field must have a value.";
$lang['valid_email'] = "The %s field must contain a valid email address.";
$lang['valid_emails'] = "The %s field must contain all valid email addresses.";
$lang['valid_url'] = "The %s field must contain a valid URL.";
$lang['valid_ip'] = "The %s field must contain a valid IP.";
$lang['min_length'] = "The %s field must be at least %s characters in length.";
$lang['max_length'] = "The %s field can not exceed %s characters in length.";
$lang['exact_length'] = "The %s field must be exactly %s characters in length.";
$lang['alpha'] = "The %s field may only contain alphabetical characters.";
$lang['alpha_numeric'] = "The %s field may only contain alpha-numeric characters.";
$lang['alpha_dash'] = "The %s field may only contain alpha-numeric characters, underscores, and dashes.";
$lang['numeric'] = "The %s field must contain only numbers.";
$lang['is_numeric'] = "The %s field must contain only numeric characters.";
$lang['integer'] = "The %s field must contain an integer.";
$lang['regex_match'] = "The %s field is not in the correct format.";
$lang['matches'] = "The %s field does not match the %s field.";
$lang['is_unique'] = "The %s field must contain a unique value.";
$lang['is_natural'] = "The %s field must contain only positive numbers.";
$lang['is_natural_no_zero'] = "The %s field must contain a number greater than zero.";
$lang['decimal'] = "The %s field must contain a decimal number.";
$lang['less_than'] = "The %s field must contain a number less than %s.";
$lang['greater_than'] = "The %s field must contain a number greater than %s.";
/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */

View File

@ -0,0 +1,71 @@
<?php
$lang['paste_create_new'] = 'Nöiä Paste erstellä';
$lang['paste_create_new_desc'] = 'Do chasch di saich veröffentliche';
$lang['paste_author'] = 'Autor';
$lang['paste_author_desc'] = 'Wie heissisch?';
$lang['paste_title'] = 'Diddel';
$lang['paste_title_desc'] = 'Muesch em e Diddel gäh.';
$lang['paste_lang'] = 'Sprooch';
$lang['paste_lang_desc'] = 'In welärä Sprooch isch das gschriibä?';
$lang['paste_yourpaste'] = 'Din Paste';
$lang['paste_yourpaste_desc'] = 'Gisch di Sänf derzue';
$lang['paste_enablesynhl'] = 'Ächtzyt syntax highlighting aaschalte (isch imfall geil!)';
$lang['paste_disablesynhl'] = 'Ächtzyt syntax highlighting widr abschalte';
$lang['paste_shorturl'] = 'Churz-URL erstellä';
$lang['paste_shorturl_desc'] = 'Chürzeri URL erstelle, damits noone bitzeli schööner usgseht';
$lang['paste_private'] = 'Privat';
$lang['paste_private_desc'] = 'Privati Pastes wärde nid im "Chürzlich" azeigt.';
$lang['paste_delete'] = 'Lösche nach';
$lang['paste_delete_desc'] = 'Wenn sölls explodiere?';
$lang['paste_recent'] = 'Die nöischtä Pastes';
$lang['paste_trending'] = 'Die beliäbtischtä Pastes';
$lang['paste_from'] = 'Vom';
$lang['paste_ago'] = 'vorhär';
$lang['paste_writtenin'] = 'gschriibä in';
$lang['paste_viewed'] = 'aagluegt';
$lang['paste_times'] = 'mol';
$lang['paste_isareply'] = 'Dä Paste isch e Antwort uf';
$lang['paste_viewdiff'] = 'Unterschied aazeigä';
$lang['paste_viewdiffs'] = 'Das sin d Unterschied zwüschä';
$lang['paste_goback'] = 'gang zrugg';
$lang['paste_url'] = 'URL';
$lang['paste_shorturl'] = 'Churzurl';
$lang['paste_embed'] = 'Ibettä';
$lang['paste_showcode'] = 'Code aazeige';
$lang['paste_download'] = 'Paste abelade';
$lang['paste_or'] = 'odr';
$lang['paste_and'] = 'und';
$lang['paste_viewraw'] = 'Rohfassig aluegä';
$lang['paste_expand'] = 'Rahme spränge';
$lang['paste_fullwidth'] = 'bis zur volle Breiti vom Brauser';
$lang['paste_replies'] = 'Antworte uf';
$lang['paste_replyto'] = 'Antwort uf';
$lang['paste_replyto_desc'] = 'Weis es besser';
$lang['paste_missing'] = 'Git leider no nüt';
$lang['paste_spam'] = 'Spämschutz';
$lang['paste_spam_desc'] = 'Schrib die Zeiche ab';
$lang['exp_forever'] = 'Gar nid';
$lang['exp_30min'] = '30 Minuttä';
$lang['exp_1h'] = '1 Stündli';
$lang['exp_6h'] = '5 Stund';
$lang['exp_12h'] = '12 Stund';
$lang['exp_1d'] = '1 Daag';
$lang['exp_1w'] = '1 Wuchä';
$lang['exp_4w'] = '4 Wuchä';
$lang['paste_create'] = 'Erstellä';
$lang['menu_create'] = 'Erstellä';
$lang['menu_create_title'] = 'Neue Paste erstellä';
$lang['menu_recent'] = 'Chürzlich';
$lang['menu_recent_title'] = 'Chürzlich erstellti Pastes';
$lang['menu_trending'] = 'Beliäbt';
$lang['menu_trending_title'] = 'Pastes mitere hoche Bsuecheranzahl';
$lang['menu_api'] = 'API';
$lang['menu_about'] = 'Übr';
$lang['table_title'] = 'Diddel';
$lang['table_name'] = 'Vom';
$lang['table_lang'] = 'Sprooch';
$lang['table_hits'] = 'Träffer';
$lang['table_time'] = 'Wenn';
$lang['powered_by'] = 'Dampfbetriebe mit ';

View File

@ -292,6 +292,15 @@ class DB_Session {
$this->userdata['last_activity'] = $this->now;
// format query array to update database
$ud = $this->userdata;
//fix for https://github.com/claudehohl/Stikked/issues/52
if(!isset($ud['user_agent'])
|| !isset($ud['ip_address'])
|| !isset($ud['session_id']))
{
return false;
}
$query_array = array( 'last_activity' => $ud['last_activity'],
'user_agent' => $ud['user_agent'],
'ip_address' => $ud['ip_address'] );

View File

@ -0,0 +1,688 @@
<?php
/**
* FINE granularity DIFF
*
* Computes a set of instructions to convert the content of
* one string into another.
*
* Copyright (c) 2011 Raymond Hill (http://raymondhill.net/blog/?p=441)
*
* Licensed under The MIT License
*
* 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.
*
* @copyright Copyright 2011 (c) Raymond Hill (http://raymondhill.net/blog/?p=441)
* @link http://www.raymondhill.net/finediff/
* @version 0.6
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
/**
* Usage (simplest):
*
* include 'finediff.php';
*
* // for the stock stack, granularity values are:
* // FineDiff::$paragraphGranularity = paragraph/line level
* // FineDiff::$sentenceGranularity = sentence level
* // FineDiff::$wordGranularity = word level
* // FineDiff::$characterGranularity = character level [default]
*
* $opcodes = FineDiff::getDiffOpcodes($from_text, $to_text [, $granularityStack = null] );
* // store opcodes for later use...
*
* ...
*
* // restore $to_text from $from_text + $opcodes
* include 'finediff.php';
* $to_text = FineDiff::renderToTextFromOpcodes($from_text, $opcodes);
*
* ...
*/
/**
* Persisted opcodes (string) are a sequence of atomic opcode.
* A single opcode can be one of the following:
* c | c{n} | d | d{n} | i:{c} | i{length}:{s}
* 'c' = copy one character from source
* 'c{n}' = copy n characters from source
* 'd' = skip one character from source
* 'd{n}' = skip n characters from source
* 'i:{c} = insert character 'c'
* 'i{n}:{s}' = insert string s, which is of length n
*
* Do not exist as of now, under consideration:
* 'm{n}:{o} = move n characters from source o characters ahead.
* It would be essentially a shortcut for a delete->copy->insert
* command (swap) for when the inserted segment is exactly the same
* as the deleted one, and with only a copy operation in between.
* TODO: How often this case occurs? Is it worth it? Can only
* be done as a postprocessing method (->optimize()?)
*/
abstract class FineDiffOp {
abstract public function getFromLen();
abstract public function getToLen();
abstract public function getOpcode();
}
class FineDiffDeleteOp extends FineDiffOp {
public function __construct($len) {
$this->fromLen = $len;
}
public function getFromLen() {
return $this->fromLen;
}
public function getToLen() {
return 0;
}
public function getOpcode() {
if ( $this->fromLen === 1 ) {
return 'd';
}
return "d{$this->fromLen}";
}
}
class FineDiffInsertOp extends FineDiffOp {
public function __construct($text) {
$this->text = $text;
}
public function getFromLen() {
return 0;
}
public function getToLen() {
return strlen($this->text);
}
public function getText() {
return $this->text;
}
public function getOpcode() {
$to_len = strlen($this->text);
if ( $to_len === 1 ) {
return "i:{$this->text}";
}
return "i{$to_len}:{$this->text}";
}
}
class FineDiffReplaceOp extends FineDiffOp {
public function __construct($fromLen, $text) {
$this->fromLen = $fromLen;
$this->text = $text;
}
public function getFromLen() {
return $this->fromLen;
}
public function getToLen() {
return strlen($this->text);
}
public function getText() {
return $this->text;
}
public function getOpcode() {
if ( $this->fromLen === 1 ) {
$del_opcode = 'd';
}
else {
$del_opcode = "d{$this->fromLen}";
}
$to_len = strlen($this->text);
if ( $to_len === 1 ) {
return "{$del_opcode}i:{$this->text}";
}
return "{$del_opcode}i{$to_len}:{$this->text}";
}
}
class FineDiffCopyOp extends FineDiffOp {
public function __construct($len) {
$this->len = $len;
}
public function getFromLen() {
return $this->len;
}
public function getToLen() {
return $this->len;
}
public function getOpcode() {
if ( $this->len === 1 ) {
return 'c';
}
return "c{$this->len}";
}
public function increase($size) {
return $this->len += $size;
}
}
/**
* FineDiff ops
*
* Collection of ops
*/
class FineDiffOps {
public function appendOpcode($opcode, $from, $from_offset, $from_len) {
if ( $opcode === 'c' ) {
$edits[] = new FineDiffCopyOp($from_len);
}
else if ( $opcode === 'd' ) {
$edits[] = new FineDiffDeleteOp($from_len);
}
else /* if ( $opcode === 'i' ) */ {
$edits[] = new FineDiffInsertOp(substr($from, $from_offset, $from_len));
}
}
public $edits = array();
}
/**
* FineDiff class
*
* TODO: Document
*
*/
class FineDiff {
/**------------------------------------------------------------------------
*
* Public section
*
*/
/**
* Constructor
* ...
* The $granularityStack allows FineDiff to be configurable so that
* a particular stack tailored to the specific content of a document can
* be passed.
*/
public function __construct($from_text = '', $to_text = '', $granularityStack = null) {
// setup stack for generic text documents by default
$this->granularityStack = $granularityStack ? $granularityStack : FineDiff::$characterGranularity;
$this->edits = array();
$this->from_text = $from_text;
$this->doDiff($from_text, $to_text);
}
public function getOps() {
return $this->edits;
}
public function getOpcodes() {
$opcodes = array();
foreach ( $this->edits as $edit ) {
$opcodes[] = $edit->getOpcode();
}
return implode('', $opcodes);
}
public function renderDiffToHTML() {
$in_offset = 0;
ob_start();
foreach ( $this->edits as $edit ) {
$n = $edit->getFromLen();
if ( $edit instanceof FineDiffCopyOp ) {
FineDiff::renderDiffToHTMLFromOpcode('c', $this->from_text, $in_offset, $n);
}
else if ( $edit instanceof FineDiffDeleteOp ) {
FineDiff::renderDiffToHTMLFromOpcode('d', $this->from_text, $in_offset, $n);
}
else if ( $edit instanceof FineDiffInsertOp ) {
FineDiff::renderDiffToHTMLFromOpcode('i', $edit->getText(), 0, $edit->getToLen());
}
else /* if ( $edit instanceof FineDiffReplaceOp ) */ {
FineDiff::renderDiffToHTMLFromOpcode('d', $this->from_text, $in_offset, $n);
FineDiff::renderDiffToHTMLFromOpcode('i', $edit->getText(), 0, $edit->getToLen());
}
$in_offset += $n;
}
return ob_get_clean();
}
/**------------------------------------------------------------------------
* Return an opcodes string describing the diff between a "From" and a
* "To" string
*/
public static function getDiffOpcodes($from, $to, $granularities = null) {
$diff = new FineDiff($from, $to, $granularities);
return $diff->getOpcodes();
}
/**------------------------------------------------------------------------
* Return an iterable collection of diff ops from an opcodes string
*/
public static function getDiffOpsFromOpcodes($opcodes) {
$diffops = new FineDiffOps();
FineDiff::renderFromOpcodes(null, $opcodes, array($diffops,'appendOpcode'));
return $diffops->edits;
}
/**------------------------------------------------------------------------
* Re-create the "To" string from the "From" string and an "Opcodes" string
*/
public static function renderToTextFromOpcodes($from, $opcodes) {
ob_start();
FineDiff::renderFromOpcodes($from, $opcodes, array('FineDiff','renderToTextFromOpcode'));
return ob_get_clean();
}
/**------------------------------------------------------------------------
* Render the diff to an HTML string
*/
public static function renderDiffToHTMLFromOpcodes($from, $opcodes) {
ob_start();
FineDiff::renderFromOpcodes($from, $opcodes, array('FineDiff','renderDiffToHTMLFromOpcode'));
return ob_get_clean();
}
/**------------------------------------------------------------------------
* Generic opcodes parser, user must supply callback for handling
* single opcode
*/
public static function renderFromOpcodes($from, $opcodes, $callback) {
if ( !is_callable($callback) ) {
return;
}
$opcodes_len = strlen($opcodes);
$from_offset = $opcodes_offset = 0;
while ( $opcodes_offset < $opcodes_len ) {
$opcode = substr($opcodes, $opcodes_offset, 1);
$opcodes_offset++;
$n = intval(substr($opcodes, $opcodes_offset));
if ( $n ) {
$opcodes_offset += strlen(strval($n));
}
else {
$n = 1;
}
if ( $opcode === 'c' ) { // copy n characters from source
call_user_func($callback, 'c', $from, $from_offset, $n, '');
$from_offset += $n;
}
else if ( $opcode === 'd' ) { // delete n characters from source
call_user_func($callback, 'd', $from, $from_offset, $n, '');
$from_offset += $n;
}
else /* if ( $opcode === 'i' ) */ { // insert n characters from opcodes
call_user_func($callback, 'i', $opcodes, $opcodes_offset + 1, $n);
$opcodes_offset += 1 + $n;
}
}
}
/**
* Stock granularity stacks and delimiters
*/
const paragraphDelimiters = "\n\r";
public static $paragraphGranularity = array(
FineDiff::paragraphDelimiters
);
const sentenceDelimiters = ".\n\r";
public static $sentenceGranularity = array(
FineDiff::paragraphDelimiters,
FineDiff::sentenceDelimiters
);
const wordDelimiters = " \t.\n\r";
public static $wordGranularity = array(
FineDiff::paragraphDelimiters,
FineDiff::sentenceDelimiters,
FineDiff::wordDelimiters
);
const characterDelimiters = "";
public static $characterGranularity = array(
FineDiff::paragraphDelimiters,
FineDiff::sentenceDelimiters,
FineDiff::wordDelimiters,
FineDiff::characterDelimiters
);
public static $textStack = array(
".",
" \t.\n\r",
""
);
/**------------------------------------------------------------------------
*
* Private section
*
*/
/**
* Entry point to compute the diff.
*/
private function doDiff($from_text, $to_text) {
$this->last_edit = false;
$this->stackpointer = 0;
$this->from_text = $from_text;
$this->from_offset = 0;
// can't diff without at least one granularity specifier
if ( empty($this->granularityStack) ) {
return;
}
$this->_processGranularity($from_text, $to_text);
}
/**
* This is the recursive function which is responsible for
* handling/increasing granularity.
*
* Incrementally increasing the granularity is key to compute the
* overall diff in a very efficient way.
*/
private function _processGranularity($from_segment, $to_segment) {
$delimiters = $this->granularityStack[$this->stackpointer++];
$has_next_stage = $this->stackpointer < count($this->granularityStack);
foreach ( FineDiff::doFragmentDiff($from_segment, $to_segment, $delimiters) as $fragment_edit ) {
// increase granularity
if ( $fragment_edit instanceof FineDiffReplaceOp && $has_next_stage ) {
$this->_processGranularity(
substr($this->from_text, $this->from_offset, $fragment_edit->getFromLen()),
$fragment_edit->getText()
);
}
// fuse copy ops whenever possible
else if ( $fragment_edit instanceof FineDiffCopyOp && $this->last_edit instanceof FineDiffCopyOp ) {
$this->edits[count($this->edits)-1]->increase($fragment_edit->getFromLen());
$this->from_offset += $fragment_edit->getFromLen();
}
else {
/* $fragment_edit instanceof FineDiffCopyOp */
/* $fragment_edit instanceof FineDiffDeleteOp */
/* $fragment_edit instanceof FineDiffInsertOp */
$this->edits[] = $this->last_edit = $fragment_edit;
$this->from_offset += $fragment_edit->getFromLen();
}
}
$this->stackpointer--;
}
/**
* This is the core algorithm which actually perform the diff itself,
* fragmenting the strings as per specified delimiters.
*
* This function is naturally recursive, however for performance purpose
* a local job queue is used instead of outright recursivity.
*/
private static function doFragmentDiff($from_text, $to_text, $delimiters) {
// Empty delimiter means character-level diffing.
// In such case, use code path optimized for character-level
// diffing.
if ( empty($delimiters) ) {
return FineDiff::doCharDiff($from_text, $to_text);
}
$result = array();
// fragment-level diffing
$from_text_len = strlen($from_text);
$to_text_len = strlen($to_text);
$from_fragments = FineDiff::extractFragments($from_text, $delimiters);
$to_fragments = FineDiff::extractFragments($to_text, $delimiters);
$jobs = array(array(0, $from_text_len, 0, $to_text_len));
$cached_array_keys = array();
while ( $job = array_pop($jobs) ) {
// get the segments which must be diff'ed
list($from_segment_start, $from_segment_end, $to_segment_start, $to_segment_end) = $job;
// catch easy cases first
$from_segment_length = $from_segment_end - $from_segment_start;
$to_segment_length = $to_segment_end - $to_segment_start;
if ( !$from_segment_length || !$to_segment_length ) {
if ( $from_segment_length ) {
$result[$from_segment_start * 4] = new FineDiffDeleteOp($from_segment_length);
}
else if ( $to_segment_length ) {
$result[$from_segment_start * 4 + 1] = new FineDiffInsertOp(substr($to_text, $to_segment_start, $to_segment_length));
}
continue;
}
// find longest copy operation for the current segments
$best_copy_length = 0;
$from_base_fragment_index = $from_segment_start;
$cached_array_keys_for_current_segment = array();
while ( $from_base_fragment_index < $from_segment_end ) {
$from_base_fragment = $from_fragments[$from_base_fragment_index];
$from_base_fragment_length = strlen($from_base_fragment);
// performance boost: cache array keys
if ( !isset($cached_array_keys_for_current_segment[$from_base_fragment]) ) {
if ( !isset($cached_array_keys[$from_base_fragment]) ) {
$to_all_fragment_indices = $cached_array_keys[$from_base_fragment] = array_keys($to_fragments, $from_base_fragment, true);
}
else {
$to_all_fragment_indices = $cached_array_keys[$from_base_fragment];
}
// get only indices which falls within current segment
if ( $to_segment_start > 0 || $to_segment_end < $to_text_len ) {
$to_fragment_indices = array();
foreach ( $to_all_fragment_indices as $to_fragment_index ) {
if ( $to_fragment_index < $to_segment_start ) { continue; }
if ( $to_fragment_index >= $to_segment_end ) { break; }
$to_fragment_indices[] = $to_fragment_index;
}
$cached_array_keys_for_current_segment[$from_base_fragment] = $to_fragment_indices;
}
else {
$to_fragment_indices = $to_all_fragment_indices;
}
}
else {
$to_fragment_indices = $cached_array_keys_for_current_segment[$from_base_fragment];
}
// iterate through collected indices
foreach ( $to_fragment_indices as $to_base_fragment_index ) {
$fragment_index_offset = $from_base_fragment_length;
// iterate until no more match
for (;;) {
$fragment_from_index = $from_base_fragment_index + $fragment_index_offset;
if ( $fragment_from_index >= $from_segment_end ) {
break;
}
$fragment_to_index = $to_base_fragment_index + $fragment_index_offset;
if ( $fragment_to_index >= $to_segment_end ) {
break;
}
if ( $from_fragments[$fragment_from_index] !== $to_fragments[$fragment_to_index] ) {
break;
}
$fragment_length = strlen($from_fragments[$fragment_from_index]);
$fragment_index_offset += $fragment_length;
}
if ( $fragment_index_offset > $best_copy_length ) {
$best_copy_length = $fragment_index_offset;
$best_from_start = $from_base_fragment_index;
$best_to_start = $to_base_fragment_index;
}
}
$from_base_fragment_index += strlen($from_base_fragment);
// If match is larger than half segment size, no point trying to find better
// TODO: Really?
if ( $best_copy_length >= $from_segment_length / 2) {
break;
}
// no point to keep looking if what is left is less than
// current best match
if ( $from_base_fragment_index + $best_copy_length >= $from_segment_end ) {
break;
}
}
if ( $best_copy_length ) {
$jobs[] = array($from_segment_start, $best_from_start, $to_segment_start, $best_to_start);
$result[$best_from_start * 4 + 2] = new FineDiffCopyOp($best_copy_length);
$jobs[] = array($best_from_start + $best_copy_length, $from_segment_end, $best_to_start + $best_copy_length, $to_segment_end);
}
else {
$result[$from_segment_start * 4 ] = new FineDiffReplaceOp($from_segment_length, substr($to_text, $to_segment_start, $to_segment_length));
}
}
ksort($result, SORT_NUMERIC);
return array_values($result);
}
/**
* Perform a character-level diff.
*
* The algorithm is quite similar to doFragmentDiff(), except that
* the code path is optimized for character-level diff -- strpos() is
* used to find out the longest common subequence of characters.
*
* We try to find a match using the longest possible subsequence, which
* is at most the length of the shortest of the two strings, then incrementally
* reduce the size until a match is found.
*
* I still need to study more the performance of this function. It
* appears that for long strings, the generic doFragmentDiff() is more
* performant. For word-sized strings, doCharDiff() is somewhat more
* performant.
*/
private static function doCharDiff($from_text, $to_text) {
$result = array();
$jobs = array(array(0, strlen($from_text), 0, strlen($to_text)));
while ( $job = array_pop($jobs) ) {
// get the segments which must be diff'ed
list($from_segment_start, $from_segment_end, $to_segment_start, $to_segment_end) = $job;
$from_segment_len = $from_segment_end - $from_segment_start;
$to_segment_len = $to_segment_end - $to_segment_start;
// catch easy cases first
if ( !$from_segment_len || !$to_segment_len ) {
if ( $from_segment_len ) {
$result[$from_segment_start * 4 + 0] = new FineDiffDeleteOp($from_segment_len);
}
else if ( $to_segment_len ) {
$result[$from_segment_start * 4 + 1] = new FineDiffInsertOp(substr($to_text, $to_segment_start, $to_segment_len));
}
continue;
}
if ( $from_segment_len >= $to_segment_len ) {
$copy_len = $to_segment_len;
while ( $copy_len ) {
$to_copy_start = $to_segment_start;
$to_copy_start_max = $to_segment_end - $copy_len;
while ( $to_copy_start <= $to_copy_start_max ) {
$from_copy_start = strpos(substr($from_text, $from_segment_start, $from_segment_len), substr($to_text, $to_copy_start, $copy_len));
if ( $from_copy_start !== false ) {
$from_copy_start += $from_segment_start;
break 2;
}
$to_copy_start++;
}
$copy_len--;
}
}
else {
$copy_len = $from_segment_len;
while ( $copy_len ) {
$from_copy_start = $from_segment_start;
$from_copy_start_max = $from_segment_end - $copy_len;
while ( $from_copy_start <= $from_copy_start_max ) {
$to_copy_start = strpos(substr($to_text, $to_segment_start, $to_segment_len), substr($from_text, $from_copy_start, $copy_len));
if ( $to_copy_start !== false ) {
$to_copy_start += $to_segment_start;
break 2;
}
$from_copy_start++;
}
$copy_len--;
}
}
// match found
if ( $copy_len ) {
$jobs[] = array($from_segment_start, $from_copy_start, $to_segment_start, $to_copy_start);
$result[$from_copy_start * 4 + 2] = new FineDiffCopyOp($copy_len);
$jobs[] = array($from_copy_start + $copy_len, $from_segment_end, $to_copy_start + $copy_len, $to_segment_end);
}
// no match, so delete all, insert all
else {
$result[$from_segment_start * 4] = new FineDiffReplaceOp($from_segment_len, substr($to_text, $to_segment_start, $to_segment_len));
}
}
ksort($result, SORT_NUMERIC);
return array_values($result);
}
/**
* Efficiently fragment the text into an array according to
* specified delimiters.
* No delimiters means fragment into single character.
* The array indices are the offset of the fragments into
* the input string.
* A sentinel empty fragment is always added at the end.
* Careful: No check is performed as to the validity of the
* delimiters.
*/
private static function extractFragments($text, $delimiters) {
// special case: split into characters
if ( empty($delimiters) ) {
$chars = str_split($text, 1);
$chars[strlen($text)] = '';
return $chars;
}
$fragments = array();
$start = $end = 0;
for (;;) {
$end += strcspn($text, $delimiters, $end);
$end += strspn($text, $delimiters, $end);
if ( $end === $start ) {
break;
}
$fragments[$start] = substr($text, $start, $end - $start);
$start = $end;
}
$fragments[$start] = '';
return $fragments;
}
/**
* Stock opcode renderers
*/
private static function renderToTextFromOpcode($opcode, $from, $from_offset, $from_len) {
if ( $opcode === 'c' || $opcode === 'i' ) {
echo substr($from, $from_offset, $from_len);
}
}
private static function renderDiffToHTMLFromOpcode($opcode, $from, $from_offset, $from_len) {
if ( $opcode === 'c' ) {
echo htmlentities(htmlentities(substr($from, $from_offset, $from_len)));
}
else if ( $opcode === 'd' ) {
$deletion = substr($from, $from_offset, $from_len);
if ( strcspn($deletion, " \n\r") === 0 ) {
$deletion = str_replace(array("\n","\r"), array('\n','\r'), $deletion);
}
echo '<del>', htmlentities(htmlentities($deletion)), '</del>';
}
else /* if ( $opcode === 'i' ) */ {
echo '<ins>', htmlentities(htmlentities(substr($from, $from_offset, $from_len))), '</ins>';
}
}
}

View File

@ -13,7 +13,7 @@
* aliased.php/file.name.ext.
*
* @author Ross Golder <ross@golder.org>
* @version $Id: aliased.php 881 2007-01-10 11:14:38Z oracleshinoda $
* @version $Id: aliased.php 2533 2012-08-15 18:49:04Z benbe $
*/
// Your config here
@ -29,19 +29,18 @@ $path = SOURCE_ROOT.$_SERVER['PATH_INFO'];
$base_path_len = strlen(SOURCE_ROOT);
$real_path = realpath($path);
if(strncmp($real_path, SOURCE_ROOT, $base_path_len)) {
exit("Stop that.");
exit("Access outside acceptable path.");
}
// Check file exists
if(!file_exists($path)) {
exit("File not found ($path).");
exit("File not found ($path).");
}
// Gather contents
$contents = file_get_contents($path);
// Prepare GeSHi instance
$geshi =& new GeSHi($contents, "PHP");
$geshi = new GeSHi();
$geshi->set_language('text');
$geshi->load_from_file($path);
$geshi->set_header_type(GESHI_HEADER_PRE);
$geshi->enable_classes();
$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 10);
@ -50,7 +49,7 @@ $geshi->set_line_style('font: normal normal 95% \'Courier New\', Courier, monosp
$geshi->set_code_style('color: #000020;', 'color: #000020;');
$geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
$geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
$geshi->set_header_content('Source code viewer');
$geshi->set_header_content('Source code viewer - ' . $path . ' - ' . $geshi->get_language_name());
$geshi->set_header_content_style('font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;');
$geshi->set_footer_content('Parsed in <TIME> seconds, using GeSHi <VERSION>');
$geshi->set_footer_content_style('font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;');
@ -60,59 +59,59 @@ $geshi->set_footer_content_style('font-family: Verdana, Arial, sans-serif; color
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Source code viewer - <?php echo $path; ?></title>
<style type="text/css">
<!--
<?php
<title>Source code viewer - <?php echo $path; ?> - <?php $geshi->get_language_name(); ?></title>
<style type="text/css">
<!--
<?php
// Output the stylesheet. Note it doesn't output the <style> tag
echo $geshi->get_stylesheet();
?>
html {
background-color: #f0f0f0;
}
body {
font-family: Verdana, Arial, sans-serif;
margin: 10px;
border: 2px solid #e0e0e0;
background-color: #fcfcfc;
padding: 5px;
}
h2 {
margin: .1em 0 .2em .5em;
border-bottom: 1px solid #b0b0b0;
color: #b0b0b0;
font-weight: normal;
font-size: 150%;
}
h3 {
margin: .1em 0 .2em .5em;
color: #b0b0b0;
font-weight: normal;
font-size: 120%;
}
#footer {
text-align: center;
font-size: 80%;
color: #a9a9a9;
}
#footer a {
color: #9999ff;
}
textarea {
border: 1px solid #b0b0b0;
font-size: 90%;
color: #333;
margin-left: 20px;
}
select, input {
margin-left: 20px;
}
p {
font-size: 90%;
margin-left: .5em;
}
-->
</style>
echo $geshi->get_stylesheet();
?>
html {
background-color: #f0f0f0;
}
body {
font-family: Verdana, Arial, sans-serif;
margin: 10px;
border: 2px solid #e0e0e0;
background-color: #fcfcfc;
padding: 5px;
}
h2 {
margin: .1em 0 .2em .5em;
border-bottom: 1px solid #b0b0b0;
color: #b0b0b0;
font-weight: normal;
font-size: 150%;
}
h3 {
margin: .1em 0 .2em .5em;
color: #b0b0b0;
font-weight: normal;
font-size: 120%;
}
#footer {
text-align: center;
font-size: 80%;
color: #a9a9a9;
}
#footer a {
color: #9999ff;
}
textarea {
border: 1px solid #b0b0b0;
font-size: 90%;
color: #333;
margin-left: 20px;
}
select, input {
margin-left: 20px;
}
p {
font-size: 90%;
margin-left: .5em;
}
-->
</style>
</head>
<body>
<?php

View File

@ -91,9 +91,9 @@ function make_header ( $title )
if (cboxes[i].type == "checkbox") {
if (state == "true") {
cboxes[i].checked = true;
} else if (state == "false") {
} elseif (state == "false") {
cboxes[i].checked = false;
} else if (state == "invert") {
} elseif (state == "invert") {
cboxes[i].checked = !cboxes[i].checked;
}
}
@ -164,6 +164,13 @@ if ( !$step || $step == 1 )
$geshi_path = get_var('geshi-path');
$geshi_lang_path = get_var('geshi-lang-path');
if(strstr($geshi_path, '..')) {
unset($geshi_path);
}
if(strstr($geshi_lang_path, '..')) {
unset($geshi_lang_path);
}
if ( !$geshi_path )
{
$geshi_path = '../geshi.php';
@ -173,7 +180,6 @@ if ( !$step || $step == 1 )
$geshi_lang_path = '../geshi/';
}
if ( is_file($geshi_path) && is_readable($geshi_path) )
{
// Get file contents and see if GeSHi is in here
@ -275,6 +281,10 @@ elseif ( $step == 2 )
$file = readdir($dh);
continue;
}
if(!strstr(file_get_contents($dh . DIRECTORY_SEPARATOR . $file), '$language_data')) {
$file = readdir($dh);
continue;
}
$lang_files[] = $file;
$file = readdir($dh);
}

View File

@ -6,7 +6,7 @@
* and the language files in subdirectory "../geshi/")
*
* @author Nigel McNie
* @version $Id: example.php 1422 2008-07-11 20:30:55Z milianw $
* @version $Id: example.php 2510 2012-06-27 15:57:55Z reedy_boy $
*/
header('Content-Type: text/html; charset=utf-8');

View File

@ -8,7 +8,7 @@
* CLI mode is supported
*
* @author Benny Baumann
* @version $Id: langcheck.php 2345 2010-08-29 11:12:44Z benbe $
* @version $Id: langcheck.php 2510 2012-06-27 15:57:55Z reedy_boy $
*/
header('Content-Type: text/html; charset=utf-8');
@ -222,9 +222,9 @@ if(!$error_abort) {
if(!$error_abort) {
if(!defined('GESHI_LANG_ROOT')) {
report_error(TYPE_ERROR, 'There\'s no information present on where to find the language files!');
} else if(!is_dir(GESHI_LANG_ROOT)) {
} elseif(!is_dir(GESHI_LANG_ROOT)) {
report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" given, does not ressemble a directory!');
} else if(!is_readable(GESHI_LANG_ROOT)) {
} elseif(!is_readable(GESHI_LANG_ROOT)) {
report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" is not readable to this script!');
}
}
@ -293,7 +293,7 @@ if(!$error_abort) {
if(!is_file($langfile)) {
report_error(TYPE_ERROR, 'The path "' .$langfile. '" does not ressemble a regular file!');
} else if(!is_readable($langfile)) {
} elseif(!is_readable($langfile)) {
report_error(TYPE_ERROR, 'Cannot read file "' .$langfile. '"!');
} else {
$langfile_content = file_get_contents($langfile);
@ -338,7 +338,7 @@ if(!$error_abort) {
if(!isset($language_data)) {
report_error(TYPE_ERROR, 'Language file does not contain a $language_data structure to check!');
} else if (!is_array($language_data)) {
} elseif (!is_array($language_data)) {
report_error(TYPE_ERROR, 'Language file contains a $language_data structure which is not an array!');
}
}
@ -346,19 +346,19 @@ if(!$error_abort) {
if(!$error_abort) {
if(!isset($language_data['LANG_NAME'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'LANG_NAME\'] specification!');
} else if (!is_string($language_data['LANG_NAME'])) {
} elseif (!is_string($language_data['LANG_NAME'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'LANG_NAME\'] specification which is not a string!');
}
if(!isset($language_data['COMMENT_SINGLE'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'COMMENT_SIGNLE\'] structure to check!');
} else if (!is_array($language_data['COMMENT_SINGLE'])) {
} elseif (!is_array($language_data['COMMENT_SINGLE'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_SINGLE\'] structure which is not an array!');
}
if(!isset($language_data['COMMENT_MULTI'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'COMMENT_MULTI\'] structure to check!');
} else if (!is_array($language_data['COMMENT_MULTI'])) {
} elseif (!is_array($language_data['COMMENT_MULTI'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_MULTI\'] structure which is not an array!');
}
@ -370,7 +370,7 @@ if(!$error_abort) {
if(!isset($language_data['QUOTEMARKS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'QUOTEMARKS\'] structure to check!');
} else if (!is_array($language_data['QUOTEMARKS'])) {
} elseif (!is_array($language_data['QUOTEMARKS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'QUOTEMARKS\'] structure which is not an array!');
}
@ -382,17 +382,17 @@ if(!$error_abort) {
if(!isset($language_data['ESCAPE_CHAR'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'ESCAPE_CHAR\'] specification to check!');
} else if (!is_string($language_data['ESCAPE_CHAR'])) {
} elseif (!is_string($language_data['ESCAPE_CHAR'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'ESCAPE_CHAR\'] specification which is not a string!');
} else if (1 < strlen($language_data['ESCAPE_CHAR'])) {
} elseif (1 < strlen($language_data['ESCAPE_CHAR'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'ESCAPE_CHAR\'] specification is not empty or exactly one char!');
}
if(!isset($language_data['CASE_KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'CASE_KEYWORDS\'] specification!');
} else if (!is_int($language_data['CASE_KEYWORDS'])) {
} elseif (!is_int($language_data['CASE_KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_KEYWORDS\'] specification which is not an integer!');
} else if (GESHI_CAPS_NO_CHANGE != $language_data['CASE_KEYWORDS'] &&
} elseif (GESHI_CAPS_NO_CHANGE != $language_data['CASE_KEYWORDS'] &&
GESHI_CAPS_LOWER != $language_data['CASE_KEYWORDS'] &&
GESHI_CAPS_UPPER != $language_data['CASE_KEYWORDS']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_KEYWORDS\'] specification which is neither of GESHI_CAPS_NO_CHANGE, GESHI_CAPS_LOWER nor GESHI_CAPS_UPPER!');
@ -400,33 +400,33 @@ if(!$error_abort) {
if(!isset($language_data['KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'KEYWORDS\'] structure to check!');
} else if (!is_array($language_data['KEYWORDS'])) {
} elseif (!is_array($language_data['KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'KEYWORDS\'] structure which is not an array!');
} else {
foreach($language_data['KEYWORDS'] as $kw_key => $kw_value) {
if(!is_integer($kw_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$kw_key' in \$language_data['KEYWORDS'] that is not integer!");
} else if (!is_array($kw_value)) {
report_error(TYPE_ERROR, "Language file contains a \$language_data['CASE_SENSITIVE']['$kw_value'] structure which is not an array!");
} elseif (!is_array($kw_value)) {
report_error(TYPE_ERROR, "Language file contains a \$language_data['KEYWORDS']['$kw_value'] structure which is not an array!");
}
}
}
if(!isset($language_data['SYMBOLS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'SYMBOLS\'] structure to check!');
} else if (!is_array($language_data['SYMBOLS'])) {
} elseif (!is_array($language_data['SYMBOLS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'SYMBOLS\'] structure which is not an array!');
}
if(!isset($language_data['CASE_SENSITIVE'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'CASE_SENSITIVE\'] structure to check!');
} else if (!is_array($language_data['CASE_SENSITIVE'])) {
} elseif (!is_array($language_data['CASE_SENSITIVE'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_SENSITIVE\'] structure which is not an array!');
} else {
foreach($language_data['CASE_SENSITIVE'] as $cs_key => $cs_value) {
if(!is_integer($cs_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$cs_key' in \$language_data['CASE_SENSITIVE'] that is not integer!");
} else if (!is_bool($cs_value)) {
} elseif (!is_bool($cs_value)) {
report_error(TYPE_ERROR, "Language file contains a Case Sensitivity specification for \$language_data['CASE_SENSITIVE']['$cs_value'] which is not a boolean!");
}
}
@ -434,15 +434,15 @@ if(!$error_abort) {
if(!isset($language_data['URLS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'URLS\'] structure to check!');
} else if (!is_array($language_data['URLS'])) {
} elseif (!is_array($language_data['URLS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'URLS\'] structure which is not an array!');
} else {
foreach($language_data['URLS'] as $url_key => $url_value) {
if(!is_integer($url_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$url_key' in \$language_data['URLS'] that is not integer!");
} else if (!is_string($url_value)) {
} elseif (!is_string($url_value)) {
report_error(TYPE_ERROR, "Language file contains a Documentation URL specification for \$language_data['URLS']['$url_value'] which is not a string!");
} else if (preg_match('#&([^;]*(=|$))#U', $url_value)) {
} elseif (preg_match('#&([^;]*(=|$))#U', $url_value)) {
report_error(TYPE_ERROR, "Language file contains unescaped ampersands (&amp;) in \$language_data['URLS']!");
}
}
@ -450,9 +450,9 @@ if(!$error_abort) {
if(!isset($language_data['OOLANG'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'OOLANG\'] specification!');
} else if (!is_int($language_data['OOLANG']) && !is_bool($language_data['OOLANG'])) {
} elseif (!is_int($language_data['OOLANG']) && !is_bool($language_data['OOLANG'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OOLANG\'] specification which is neither boolean nor integer!');
} else if (false !== $language_data['OOLANG'] &&
} elseif (false !== $language_data['OOLANG'] &&
true !== $language_data['OOLANG'] &&
2 !== $language_data['OOLANG']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OOLANG\'] specification which is neither of false, true or 2!');
@ -460,21 +460,21 @@ if(!$error_abort) {
if(!isset($language_data['OBJECT_SPLITTERS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'OBJECT_SPLITTERS\'] structure to check!');
} else if (!is_array($language_data['OBJECT_SPLITTERS'])) {
} elseif (!is_array($language_data['OBJECT_SPLITTERS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OBJECT_SPLITTERS\'] structure which is not an array!');
}
if(!isset($language_data['REGEXPS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'REGEXPS\'] structure to check!');
} else if (!is_array($language_data['REGEXPS'])) {
} elseif (!is_array($language_data['REGEXPS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'REGEXPS\'] structure which is not an array!');
}
if(!isset($language_data['STRICT_MODE_APPLIES'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'STRICT_MODE_APPLIES\'] specification!');
} else if (!is_int($language_data['STRICT_MODE_APPLIES'])) {
} elseif (!is_int($language_data['STRICT_MODE_APPLIES'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STRICT_MODE_APPLIES\'] specification which is not an integer!');
} else if (GESHI_MAYBE != $language_data['STRICT_MODE_APPLIES'] &&
} elseif (GESHI_MAYBE != $language_data['STRICT_MODE_APPLIES'] &&
GESHI_ALWAYS != $language_data['STRICT_MODE_APPLIES'] &&
GESHI_NEVER != $language_data['STRICT_MODE_APPLIES']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STRICT_MODE_APPLIES\'] specification which is neither of GESHI_MAYBE, GESHI_ALWAYS nor GESHI_NEVER!');
@ -482,20 +482,20 @@ if(!$error_abort) {
if(!isset($language_data['SCRIPT_DELIMITERS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'SCRIPT_DELIMITERS\'] structure to check!');
} else if (!is_array($language_data['SCRIPT_DELIMITERS'])) {
} elseif (!is_array($language_data['SCRIPT_DELIMITERS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'SCRIPT_DELIMITERS\'] structure which is not an array!');
}
if(!isset($language_data['HIGHLIGHT_STRICT_BLOCK'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'HIGHLIGHT_STRICT_BLOCK\'] structure to check!');
} else if (!is_array($language_data['HIGHLIGHT_STRICT_BLOCK'])) {
} elseif (!is_array($language_data['HIGHLIGHT_STRICT_BLOCK'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'HIGHLIGHT_STRICT_BLOCK\'] structure which is not an array!');
}
if(isset($language_data['TAB_WIDTH'])) {
if (!is_int($language_data['TAB_WIDTH'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'TAB_WIDTH\'] specification which is not an integer!');
} else if (1 > $language_data['TAB_WIDTH']) {
} elseif (1 > $language_data['TAB_WIDTH']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'TAB_WIDTH\'] specification which is less than 1!');
}
}
@ -508,7 +508,7 @@ if(!$error_abort) {
if(!isset($language_data['STYLES'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'STYLES\'] structure to check!');
} else if (!is_array($language_data['STYLES'])) {
} elseif (!is_array($language_data['STYLES'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STYLES\'] structure which is not an array!');
} else {
$style_arrays = array('KEYWORDS', 'COMMENTS', 'ESCAPE_CHAR',
@ -517,14 +517,14 @@ if(!$error_abort) {
foreach($style_arrays as $style_kind) {
if(!isset($language_data['STYLES'][$style_kind])) {
report_error(TYPE_ERROR, "Language file contains no \$language_data['STYLES']['$style_kind'] structure to check!");
} else if (!is_array($language_data['STYLES'][$style_kind])) {
} elseif (!is_array($language_data['STYLES'][$style_kind])) {
report_error(TYPE_ERROR, "Language file contains a \$language_data['STYLES\']['$style_kind'] structure which is not an array!");
} else {
foreach($language_data['STYLES'][$style_kind] as $sk_key => $sk_value) {
if(!is_int($sk_key) && ('COMMENTS' != $style_kind && 'MULTI' != $sk_key)
&& !(('STRINGS' == $style_kind || 'ESCAPE_CHAR' == $style_kind) && 'HARD' == $sk_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$sk_key' in \$language_data['STYLES']['$style_kind'] that is not integer!");
} else if (!is_string($sk_value)) {
} elseif (!is_string($sk_value)) {
report_error(TYPE_WARNING, "Language file contains a CSS specification for \$language_data['STYLES']['$style_kind'][$key] which is not a string!");
}
}
@ -550,9 +550,9 @@ if(!$error_abort) {
foreach($keywords as $id => $kw) {
if(!is_string($kw)) {
report_error(TYPE_WARNING, "Language file contains an non-string entry at \$language_data['KEYWORDS'][$key][$id]!");
} else if (!strlen($kw)) {
} elseif (!strlen($kw)) {
report_error(TYPE_ERROR, "Language file contains an empty string entry at \$language_data['KEYWORDS'][$key][$id]!");
} else if (preg_match('/^([\(\)\{\}\[\]\^=.,:;\-+\*\/%\$\"\'\?]|&[\w#]\w*;)+$/i', $kw)) {
} elseif (preg_match('/^([\(\)\{\}\[\]\^=.,:;\-+\*\/%\$\"\'\?]|&[\w#]\w*;)+$/i', $kw)) {
report_error(TYPE_NOTICE, "Language file contains an keyword ('$kw') at \$language_data['KEYWORDS'][$key][$id] which seems to be better suited for the symbols section!");
}
}
@ -764,6 +764,6 @@ if ( PHP_SAPI != 'cli' ) {
Validation process completed in <? printf("%.2f", $time_diff); ?> seconds.
GeSHi &copy; 2004-2007 Nigel McNie, 2007-2008 Benny Baumann, released under the GNU GPL
GeSHi &copy; 2004-2007 Nigel McNie, 2007-2012 Benny Baumann, released under the GNU GPL
<?php } ?>

View File

@ -8,7 +8,7 @@
*This script
*
* @author Nigel McNie, Benny Baumann (BenBE@geshi.org), Andreas 'Segaja' Schleifer (webmaster at segaja dot de)
* @version $Id: langwiz.php 2285 2010-04-10 18:55:11Z segaja $
* @version $Id: langwiz.php 2510 2012-06-27 15:57:55Z reedy_boy $
*/
header('Content-Type: text/html; charset=utf-8');
@ -81,16 +81,6 @@ function report_error($type, $message) {
}
}
function extvar($name, $default){
if(isset($_POST[$name])) {
return $_POST[$name];
}
if(isset($_GET[$name])) {
return $_GET[$name];
}
return $default;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
@ -146,15 +136,15 @@ function extvar($name, $default){
margin-left: .5em;
}
fieldset {
border: 1px dotted gray;
background-color: #f0f0f0;
margin-bottom: .5em;
border: 1px dotted gray;
background-color: #f0f0f0;
margin-bottom: .5em;
}
legend {
font-weight: bold;
background-color: #f9f9f9;
border: 1px solid #a0a0a0;
border-width: 1px 2px 2px 1px;
font-weight: bold;
background-color: #f9f9f9;
border: 1px solid #a0a0a0;
border-width: 1px 2px 2px 1px;
}
fieldset table > tbody > tr > td {
width: 20%;
@ -202,9 +192,9 @@ if(!$error_abort) {
if(!$error_abort) {
if(!defined('GESHI_LANG_ROOT')) {
report_error(TYPE_ERROR, 'There\'s no information present on where to find the language files!');
} else if(!is_dir(GESHI_LANG_ROOT)) {
} elseif(!is_dir(GESHI_LANG_ROOT)) {
report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" given, does not ressemble a directory!');
} else if(!is_readable(GESHI_LANG_ROOT)) {
} elseif(!is_readable(GESHI_LANG_ROOT)) {
report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" is not readable to this script!');
}
}
@ -341,8 +331,6 @@ $kw_cases_sel = array(
echo "<pre>";
//var_dump($languages);
var_dump($_GET);
var_dump($_POST);
foreach($post_var_names as $varName) { // export wanted variables of $_POST array...
if(array_key_exists($varName, $_POST)) {
@ -709,7 +697,7 @@ echo "</pre>";
</fieldset>
</fieldset>
</fieldset>
<fieldset>
<legend>Keywords</legend>
@ -901,7 +889,7 @@ function validate_lang(){
'str' => array(
'qm' => array(),
'ec' => array(
'char' => ''
'char' => ''
),
'erx' => array()
),

View File

@ -41,7 +41,7 @@
//
/** The version of this GeSHi file */
define('GESHI_VERSION', '1.0.8.10');
define('GESHI_VERSION', '1.0.8.11');
// Define the root directory for the GeSHi code tree
if (!defined('GESHI_ROOT')) {
@ -604,6 +604,17 @@ class GeSHi {
$this->set_language_path($path);
}
/**
* Returns the version of GeSHi
*
* @return string
* @since 1 0.8.11
*/
function get_version()
{
return GESHI_VERSION;
}
/**
* Returns an error message associated with the last GeSHi operation,
* or false if no error has occured
@ -808,7 +819,7 @@ class GeSHi {
}
// match the langname
if (!preg_match('/\'LANG_NAME\'\s*=>\s*\'((?:[^\']|\\\')+)\'/', $data, $matches)) {
if (!preg_match('/\'LANG_NAME\'\s*=>\s*\'((?:[^\']|\\\')+?)\'/', $data, $matches)) {
$this->error = sprintf('Geshi::get_lang_fullname(%s): Regex can not detect language', $language);
return false;
}
@ -1437,6 +1448,8 @@ class GeSHi {
* @todo static?
*/
function get_language_name_from_extension( $extension, $lookup = array() ) {
$extension = strtolower($extension);
if ( !is_array($lookup) || empty($lookup)) {
$lookup = array(
'6502acme' => array( 'a', 's', 'asm', 'inc' ),
@ -1470,6 +1483,7 @@ class GeSHi {
'gnuplot' => array('plt'),
'groovy' => array('groovy'),
'haskell' => array('hs'),
'haxe' => array('hx'),
'html4strict' => array('html', 'htm'),
'ini' => array('ini', 'desktop'),
'java' => array('java'),
@ -1504,6 +1518,7 @@ class GeSHi {
'smalltalk' => array('st'),
'smarty' => array(),
'tcl' => array('tcl'),
'text' => array('txt'),
'vb' => array('bas'),
'vbnet' => array(),
'visualfoxpro' => array(),
@ -1518,7 +1533,8 @@ class GeSHi {
return $lang;
}
}
return '';
return 'text';
}
/**
@ -1555,6 +1571,9 @@ class GeSHi {
* @since 1.0.0
*/
function add_keyword($key, $word) {
if (!is_array($this->language_data['KEYWORDS'][$key])) {
$this->language_data['KEYWORDS'][$key] = array();
}
if (!in_array($word, $this->language_data['KEYWORDS'][$key])) {
$this->language_data['KEYWORDS'][$key][] = $word;
@ -1816,7 +1835,7 @@ class GeSHi {
//Decide on which style to use
if ($style === null) { //Check if we should use default style
unset($this->highlight_extra_lines_styles[$lines]);
} else if ($style === false) { //Check if to remove this line
} elseif ($style === false) { //Check if to remove this line
unset($this->highlight_extra_lines[$lines]);
unset($this->highlight_extra_lines_styles[$lines]);
} else {
@ -1988,7 +2007,7 @@ class GeSHi {
$this->language_data['SYMBOL_DATA'][$symbols] = 0;
if (isset($symbols[1])) { // multiple chars
$symbol_preg_multi[] = preg_quote($symbols, '/');
} else if ($symbols == '-') {
} elseif ($symbols == '-') {
// don't trigger range out of order error
$symbol_preg_single[] = '\-';
} else { // single char
@ -2392,7 +2411,7 @@ class GeSHi {
foreach ($this->language_data['QUOTEMARKS'] as $quotemark) {
if (!isset($is_string_starter[$quotemark[0]])) {
$is_string_starter[$quotemark[0]] = (string)$quotemark;
} else if (is_string($is_string_starter[$quotemark[0]])) {
} elseif (is_string($is_string_starter[$quotemark[0]])) {
$is_string_starter[$quotemark[0]] = array(
$is_string_starter[$quotemark[0]],
$quotemark);
@ -2478,7 +2497,7 @@ class GeSHi {
continue;
}
$match_i = $comment_regexp_cache_per_key[$comment_key]['pos'];
} else if (
} elseif (
//This is to allow use of the offset parameter in preg_match and stay as compatible with older PHP versions as possible
(GESHI_PHP_PRE_433 && preg_match($regexp, substr($part, $i), $match, PREG_OFFSET_CAPTURE)) ||
(!GESHI_PHP_PRE_433 && preg_match($regexp, $part, $match, PREG_OFFSET_CAPTURE, $i))
@ -2586,7 +2605,7 @@ class GeSHi {
continue;
}
$match_i = $escape_regexp_cache_per_key[$escape_key]['pos'];
} else if (
} elseif (
//This is to allow use of the offset parameter in preg_match and stay as compatible with older PHP versions as possible
(GESHI_PHP_PRE_433 && preg_match($regexp, substr($part, $start), $match, PREG_OFFSET_CAPTURE)) ||
(!GESHI_PHP_PRE_433 && preg_match($regexp, $part, $match, PREG_OFFSET_CAPTURE, $start))
@ -2656,13 +2675,13 @@ class GeSHi {
// don't put a newline around newlines
$string .= "</span>\n";
$start = $es_pos + 2;
} else if (ord($es_char) >= 128) {
} elseif (ord($es_char) >= 128) {
//This is an non-ASCII char (UTF8 or single byte)
//This code tries to work around SF#2037598 ...
if(function_exists('mb_substr')) {
$es_char_m = mb_substr(substr($part, $es_pos+1, 16), 0, 1, $this->encoding);
$string .= $es_char_m . '</span>';
} else if (!GESHI_PHP_PRE_433 && 'utf-8' == $this->encoding) {
} elseif (!GESHI_PHP_PRE_433 && 'utf-8' == $this->encoding) {
if(preg_match("/[\xC2-\xDF][\x80-\xBF]".
"|\xE0[\xA0-\xBF][\x80-\xBF]".
"|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}".
@ -2684,7 +2703,7 @@ class GeSHi {
$string .= $this->hsc($es_char) . '</span>';
$start = $es_pos + 2;
}
} else if ($next_escape_regexp_pos < $length &&
} elseif ($next_escape_regexp_pos < $length &&
$next_escape_regexp_pos < $close_pos) {
$es_pos = $next_escape_regexp_pos;
//Add the stuff not in the string yet ...
@ -2728,7 +2747,7 @@ class GeSHi {
$string = '';
$i = $start - 1;
continue;
} else if ($this->lexic_permissions['STRINGS'] && $hq && $hq[0] == $char &&
} elseif ($this->lexic_permissions['STRINGS'] && $hq && $hq[0] == $char &&
substr($part, $i, $hq_strlen) == $hq && ($i != $next_comment_regexp_pos)) {
// The start of a hard quoted string
if (!$this->use_classes) {
@ -2886,7 +2905,7 @@ class GeSHi {
continue;
}
$match_i = $comment_multi_cache_per_key[$open];
} else if (($match_i = stripos($part, $open, $i)) !== false) {
} elseif (($match_i = stripos($part, $open, $i)) !== false) {
$comment_multi_cache_per_key[$open] = $match_i;
} else {
$comment_multi_cache_per_key[$open] = false;
@ -2983,7 +3002,7 @@ class GeSHi {
continue;
}
$match_i = $comment_single_cache_per_key[$comment_key];
} else if (
} elseif (
// case sensitive comments
($this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS] &&
($match_i = stripos($part, $comment_mark, $i)) !== false) ||
@ -3140,10 +3159,10 @@ class GeSHi {
$IN_TAG = false;
}
$lines[$key] .= $char;
} else if ('<' == $char) {
} elseif ('<' == $char) {
$IN_TAG = true;
$lines[$key] .= '<';
} else if ('&' == $char) {
} elseif ('&' == $char) {
$substr = substr($line, $i + 3, 5);
$posi = strpos($substr, ';');
if (false === $posi) {
@ -3152,7 +3171,7 @@ class GeSHi {
$pos -= $posi+2;
}
$lines[$key] .= $char;
} else if ("\t" == $char) {
} elseif ("\t" == $char) {
$str = '';
// OPTIMISE - move $strs out. Make an array:
// $tabs = array(
@ -3173,7 +3192,7 @@ class GeSHi {
$lines[$key] .= substr($line, $i + 1);
break;
}
} else if (0 == $pos && ' ' == $char) {
} elseif (0 == $pos && ' ' == $char) {
$lines[$key] .= '&nbsp;';
++$pos;
} else {
@ -3231,6 +3250,7 @@ class GeSHi {
function handle_keyword_replace($match) {
$k = $this->_kw_replace_group;
$keyword = $match[0];
$keyword_match = $match[1];
$before = '';
$after = '';
@ -3248,12 +3268,12 @@ class GeSHi {
if (!$this->language_data['CASE_SENSITIVE'][$k] &&
strpos($this->language_data['URLS'][$k], '{FNAME}') !== false) {
foreach ($this->language_data['KEYWORDS'][$k] as $word) {
if (strcasecmp($word, $keyword) == 0) {
if (strcasecmp($word, $keyword_match) == 0) {
break;
}
}
} else {
$word = $keyword;
$word = $keyword_match;
}
$before = '<|UR1|"' .
@ -3367,7 +3387,7 @@ class GeSHi {
foreach (array_keys($this->language_data['KEYWORDS']) as $k) {
if (!isset($this->lexic_permissions['KEYWORDS'][$k]) ||
$this->lexic_permissions['KEYWORDS'][$k]) {
$this->lexic_permissions['KEYWORDS'][$k]) {
$case_sensitive = $this->language_data['CASE_SENSITIVE'][$k];
$modifiers = $case_sensitive ? '' : 'i';
@ -3991,7 +4011,7 @@ class GeSHi {
$parsed_code .= $this->line_numbers_start + $i;
if ($close) {
$parsed_code .= str_repeat('</span>', $close);
} else if ($i != $n) {
} elseif ($i != $n) {
$parsed_code .= "\n";
}
}
@ -4123,10 +4143,10 @@ class GeSHi {
if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
if ($this->header_type == GESHI_HEADER_PRE) {
return "<pre$attributes>$header<ol$ol_attributes>";
} else if ($this->header_type == GESHI_HEADER_DIV ||
} elseif ($this->header_type == GESHI_HEADER_DIV ||
$this->header_type == GESHI_HEADER_PRE_VALID) {
return "<div$attributes>$header<ol$ol_attributes>";
} else if ($this->header_type == GESHI_HEADER_PRE_TABLE) {
} elseif ($this->header_type == GESHI_HEADER_PRE_TABLE) {
return "<table$attributes>$header<tbody><tr class=\"li1\">";
}
} else {

View File

@ -4,7 +4,7 @@
* ------
* Author: Jason Curl (jason.curl@continental-corporation.com)
* Copyright: (c) 2009 Jason Curl
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/09/05
*
* 4CS language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010/05/26
*
* MOS 6502 (more specifically 6510) ACME Cross Assembler 0.93 by Marco Baye language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010/06/07
*
* MOS 6502 (6510) Kick Assembler 3.13 language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010/06/02
*
* MOS 6502 (6510) TASM/64TASS (64TASS being the super set of TASM) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010/06/09
*
* Motorola 68000 - HiSoft Devpac ST 2 Assembler language file for GeSHi.

View File

@ -7,7 +7,7 @@
* - Sandra Rossi (sandra.rossi@gmail.com)
* - Jacob Laursen (jlu@kmd.dk)
* Copyright: (c) 2007 Andres Picazo
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/06/04
*
* ABAP language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------------
* Author: Steffen Krause (Steffen.krause@muse.de)
* Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/06/20
*
* Actionscript language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------------
* Author: Jordi Boggiano (j.boggiano@seld.be)
* Copyright: (c) 2007 Jordi Boggiano (http://www.seld.be/), Benny Baumann (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2007/11/26
*
* ActionScript3 language file for GeSHi.
@ -72,7 +72,7 @@ $language_data = array (
'private', 'null', 'new', 'is', 'internal', 'instanceof', 'in',
'import', 'if', 'get', 'for', 'false', 'else', 'each', 'do',
'delete', 'default', 'continue', 'catch', 'case', 'break', 'as',
'extends'
'extends', 'override'
),
2 => array(
'var'

View File

@ -4,7 +4,7 @@
* -------
* Author: Tux (tux@inmail.cz)
* Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/07/29
*
* Ada language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Neville Dempsey (NevilleD.sourceforge@sgr-a.net)
* Copyright: (c) 2010 Neville Dempsey (https://sourceforge.net/projects/algol68/files/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010/04/24
*
* ALGOL 68 language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Tux (tux@inmail.cz)
* Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/29/07
*
* Apache language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Stephan Klimek (http://www.initware.org)
* Copyright: Stephan Klimek (http://www.initware.org)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2005/07/20
*
* AppleScript language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Milian Wolff (mail@milianw.de)
* Copyright: (c) 2008 Milian Wolff (http://milianw.de)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2008/06/17
*
* Apt sources.list language file for GeSHi.

File diff suppressed because it is too large Load Diff

View File

@ -3,15 +3,56 @@
* asm.php
* -------
* Author: Tux (tux@inmail.cz)
* Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Copyright: (c) 2004 Tux (http://tux.a4.cz/),
* 2004-2009 Nigel McNie (http://qbnz.com/highlighter),
* 2009-2011 Benny Baumann (http://qbnz.com/highlighter),
* 2011 Dennis Yurichev (dennis@conus.info),
* 2011 Marat Dukhan (mdukhan3.at.gatech.dot.edu)
* Release Version: 1.0.8.11
* Date Started: 2004/07/27
*
* x86 Assembler language file for GeSHi.
* Words are from SciTe configuration file (based on NASM syntax)
* Based on the following documents:
* - "Intel64 and IA-32 Architectures Programmer's Reference Manual
* Volume 2 (2A & 2B): Instructions Set Reference, A-Z",
* Order Number 25383-039US, May 2011
* - "Intel Advanced Vector Extensions Programming Reference",
* Order Number 319433-011, June 2011
* - "AMD64 Architecture Programmer's Manual Volume 3:
* General-Purpose and System Instructions", Publication No. 24594,
* Revision 3.15, November 2009
* - "AMD64 Architecture Programmer's Manual Volume 4:
* 128-Bit and 256-Bit Media Instructions", Publication No. 26568,
* Revision 3.12, May 2011
* - "AMD64 Architecture Programmer's Manual Volume 5:
* 64-Bit Media and x87 Floating-Point Instructions",
* Publication No. 26569, Revision 3.11, December 2009
* - "AMD64 Technology Lightweight Profiling Specification",
* Publication No. 43724, Revision 3.08, August 2010
* - "Application Note 108: Cyrix Extended MMX Instruction Set"
* - "VIA Padlock Programming Guide", 3rd May 2005
* - http://en.wikipedia.org/wiki/X86_instruction_listings
* - NASM 2.10rc8 Online Documenation at
* http://www.nasm.us/xdoc/2.10rc8/html/nasmdoc0.html
* Color scheme is taken from SciTE. Previous versions of this file
* also used words from SciTE configuration file (based on NASM syntax)
*
* CHANGES
* -------
* 2011/10/07
* - Rearranged instructions and registers into groups
* - Updated to support the following extensions
* - CMOV, BMI1, BMI2, TBM, FSGSBASE
* - LZCNT, TZCNT, POPCNT, MOVBE, CRC32
* - MMX, MMX+, EMMX
* - 3dnow!, 3dnow!+, 3dnow! Geode, 3dnow! Prefetch
* - SSE, SSE2, SSE3, SSSE3, SSE4A, SSE4.1, SSE4.2
* - AVX, AVX2, XOP, FMA3, FMA4, CVT16
* - VMX, SVM
* - AES, PCLMULQDQ, Padlock, RDRAND
* - Updated NASM macros and directives
* 2010/07/01 (1.0.8.11)
* - Added MMX/SSE/new x86-64 registers, MMX/SSE (up to 4.2) instructions
* 2008/05/23 (1.0.7.22)
* - Added description of extra language features (SF#1970248)
* 2004/11/27 (1.0.2)
@ -55,26 +96,71 @@ $language_data = array (
'QUOTEMARKS' => array("'", '"'),
'ESCAPE_CHAR' => '',
'KEYWORDS' => array(
/*CPU*/
/* General-Purpose */
1 => array(
'aaa','aad','aam','aas','adc','add','and','call','cbw','clc','cld','cli','cmc','cmp',
'cmps','cmpsb','cmpsw','cwd','daa','das','dec','div','esc','hlt','idiv','imul','in','inc',
'int','into','iret','ja','jae','jb','jbe','jc','jcxz','je','jg','jge','jl','jle','jmp',
'jna','jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
'jo','jp','jpe','jpo','js','jz','lahf','lds','lea','les','lods','lodsb','lodsw','loop',
'loope','loopew','loopne','loopnew','loopnz','loopnzw','loopw','loopz','loopzw','mov',
'movs','movsb','movsw','mul','neg','nop','not','or','out','pop','popf','push','pushf',
'rcl','rcr','ret','retf','retn','rol','ror','sahf','sal','sar','sbb','scas','scasb','scasw',
'shl','shr','stc','std','sti','stos','stosb','stosw','sub','test','wait','xchg','xlat',
'xlatb','xor','bound','enter','ins','insb','insw','leave','outs','outsb','outsw','popa','pusha','pushw',
'arpl','lar','lsl','sgdt','sidt','sldt','smsw','str','verr','verw','clts','lgdt','lidt','lldt','lmsw','ltr',
'bsf','bsr','bt','btc','btr','bts','cdq','cmpsd','cwde','insd','iretd','iretdf','iretf',
'jecxz','lfs','lgs','lodsd','loopd','looped','loopned','loopnzd','loopzd','lss','movsd',
'movsx','movzx','outsd','popad','popfd','pushad','pushd','pushfd','scasd','seta','setae',
'setb','setbe','setc','sete','setg','setge','setl','setle','setna','setnae','setnb','setnbe',
'setnc','setne','setng','setnge','setnl','setnle','setno','setnp','setns','setnz','seto','setp',
'setpe','setpo','sets','setz','shld','shrd','stosd','bswap','cmpxchg','invd','invlpg','wbinvd','xadd','lock',
'rep','repe','repne','repnz','repz'
/* BCD instructions */
'aaa','aad','aam','aas','daa','das',
/* Control flow instructions */
'ja','jae','jb','jbe','jc','je','jg','jge','jl','jle','jmp','jna',
'jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
'jo','jp','jpe','jpo','js','jz','jcxz','jecxz','jrcxz','loop','loope','loopne',
'call','ret','enter','leave','syscall','sysenter','int','into',
/* Predicate instructions */
'seta','setae','setb','setbe','setc','sete','setg','setge','setl','setle','setna',
'setnae','setnb','setnbe','setnc','setne','setng','setnge','setnl','setnle','setno',
'setnp','setns','setnz','seto','setp','setpe','setpo','sets','setz','salc',
/* Conditional move instructions */
'cmovo','cmovno','cmovb','cmovc','cmovnae','cmovae','cmovnb','cmovnc','cmove','cmovz',
'cmovne','cmovnz','cmovbe','cmovna','cmova','cmovnbe','cmovs','cmovns','cmovp','cmovpe',
'cmovnp','cmovpo','cmovl','cmovnge','cmovge','cmovnl','cmovle','cmovng','cmovg','cmovnle',
/* ALU instructions */
'add','sub','adc','sbb','neg','cmp','inc','dec','and','or','xor','not','test',
'shl','shr','sal','sar','shld','shrd','rol','ror','rcl','rcr',
'cbw','cwd','cwde','cdq','cdqe','cqo','bsf','bsr','bt','btc','btr','bts',
'idiv','imul','div','mul','bswap','nop',
/* Memory instructions */
'lea','mov','movsx','movsxd','movzx','xlatb','bound','xchg','xadd','cmpxchg','cmpxchg8b','cmpxchg16b',
/* Stack instructions */
'push','pop','pusha','popa','pushad','popad','pushf','popf','pushfd','popfd','pushfq','popfq',
/* EFLAGS manipulations instructions */
'clc','cld','stc','std','cmc','lahf','sahf',
/* Prefix instructions */
'lock','rep','repe','repz','repne','repnz',
/* String instructions */
'cmps','cmpsb','cmpsw',/*'cmpsd',*/ 'cmpsq', /*CMPSD conflicts with the SSE2 instructions of the same name*/
'movs','movsb','movsw',/*'movsd',*/ 'movsq', /*MOVSD conflicts with the SSE2 instructions of the same name*/
'scas','scasb','scasw','scasd','scasq',
'stos','stosb','stosw','stosd','stosq',
'lods','lodsb','lodsw','lodsd','lodsq',
/* Information instructions */
'cpuid','rdtsc','rdtscp','rdpmc','xgetbv',
'sgdt','sidt','sldt','smsw','str','lar',
/* LWP instructions */
'llwpcb','slwpcb','lwpval','lwpins',
/* Instructions from miscellaneous extensions */
'crc32','popcnt','lzcnt','tzcnt','movbe','pclmulqdq','rdrand',
/* FSGSBASE instructions */
'rdfsbase','rdgsbase','wrfsbase','wrgsbase',
/* BMI1 instructions */
'andn','bextr','blsi','blsmk','blsr',
/* BMI2 instructions */
'bzhi','mulx','pdep','pext','rorx','sarx','shlx','shrx',
/* TBM instructions */
'blcfill','blci','blcic','blcmsk','blcs','blsfill','blsic','t1mskc','tzmsk',
/* Legacy instructions */
'arpl','ud2','lds','les','lfs','lgs','lss','lsl','verr','verw',
/* Privileged instructions */
'cli','sti','clts','hlt','rsm','in','insb','insw','insd',
'out','outsb','outsw','outsd','clflush','invd','invlpg','invpcid','wbinvd',
'iret','iretd','iretq','sysexit','sysret','lidt','lgdt','lldt','lmsw','ltr',
'monitor','mwait','rdmsr','wrmsr','swapgs',
'fxsave','fxsave64','fxrstor','fxrstor64',
'xsave','xsaveopt','xrstor','xsetbv','getsec',
/* VMX instructions */
'invept','invvpid','vmcall','vmclear','vmlaunch','vmresume',
'vmptrld','vmptrst','vmread','vmwrite','vmxoff','vmxon',
/* SVM (AMD-V) instructions */
'invlpga','skinit','clgi','stgi','vmload','vmsave','vmmcall','vmrun'
),
/*FPU*/
2 => array(
@ -87,56 +173,350 @@ $language_data = array (
'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',
'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',
'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',
'fstenvd','fucom','fucomp','fucompp'
'fstenvd','fucom','fucomp','fucompp','ffreep',
/* FCMOV instructions */
'fcomi','fcomip','fucomi','fucomip',
'fcmovb','fcmove','fcmovbe','fcmovu','fcmovnb','fcmovne','fcmovnbe','fcmovnu',
/* SSE3 instructions */
'fisttp'
),
/*SIMD*/
3 => array(
/* MMX instructions */
'movd','movq',
'paddb','paddw','paddd','paddsb','paddsw','paddusb','paddusw',
'psubb','psubw','psubd','psubsb','psubsw','psubusb','psubusw',
'pand','pandn','por','pxor',
'pcmpeqb','pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw',
'pmaddwd','pmulhw','pmullw',
'psllw','pslld','psllq','psrlw','psrld','psrlq','psraw','psrad',
'packuswb','packsswb','packssdw',
'punpcklbw','punpcklwd','punpckldq','punpckhbw','punpckhwd','punpckhdq',
'emms',
/* MMX+ instructions */
'pavgb','pavgw',
'pextrw','pinsrw','pmovmskb',
'pmaxsw','pmaxub','pminsw','pminub',
'pmulhuw','psadbw','pshufw',
'prefetchnta','prefetcht0','prefetcht1','prefetcht2',
'maskmovq','movntq','sfence',
/* EMMX instructions (only available on Cyrix MediaGXm) */
'paddsiw','psubsiw',
/*'pmulhrw',*/'pmachriw','pmulhriw', /* PMULHRW conflicts with the 3dnow! instruction of the same name */
'pmagw','pdistib','paveb',
'pmvzb','pmvnzb','pmvlzb','pmvgezb',
/* 3dnow! instructions! */
'pfacc','pfadd','pfsub','pfsubr','pfmul',
'pfcmpeq','pfcmpge','pfcmpgt',
'pfmax','pfmin',
'pfrcp','pfrcpit1','pfrcpit2','pfrsqit1','pfrsqrt',
'pi2fd','pf2id',
'pavgusb','pmulhrw',
'femms',
/* 3dnow!+ instructions */
'pfnacc','pfpnacc','pi2fw','pf2iw','pswapd',
/* 3dnow! Geode instructions */
'pfrsqrtv','pfrcpv',
/* 3dnow! Prefetch instructions */
'prefetch','prefetchw',
/* SSE instructions */
'addss','addps','subss','subps',
'mulss','mulps','divss','divps','sqrtss','sqrtps',
'rcpss','rcpps','rsqrtss','rsqrtps',
'maxss','maxps','minss','minps',
'cmpss','comiss','ucomiss','cmpps',
'cmpeqss','cmpltss','cmpless','cmpunordss','cmpneqss','cmpnltss','cmpnless','cmpordss',
'cmpeqps','cmpltps','cmpleps','cmpunordps','cmpneqps','cmpnltps','cmpnleps','cmpordps',
'andnps','andps','orps','xorps',
'cvtsi2ss','cvtss2si','cvttss2si',
'cvtpi2ps','cvtps2pi','cvttps2pi',
'movss','movlps','movhps','movlhps','movhlps','movaps','movups','movntps','movmskps',
'shufps','unpckhps','unpcklps',
'ldmxcsr','stmxcsr',
/* SSE2 instructions */
'addpd','addsd','subpd','subsd',
'mulsd','mulpd','divsd','divpd','sqrtsd','sqrtpd',
'maxsd','maxpd','minsd','minpd',
'cmpsd','comisd','ucomisd','cmppd',
'cmpeqsd','cmpltsd','cmplesd','cmpunordsd','cmpneqsd','cmpnltsd','cmpnlesd','cmpordsd',
'cmpeqpd','cmpltpd','cmplepd','cmpunordpd','cmpneqpd','cmpnltpd','cmpnlepd','cmpordpd',
'andnpd','andpd','orpd','xorpd',
'cvtsd2ss','cvtpd2ps','cvtss2sd','cvtps2pd',
'cvtdq2ps','cvtps2dq','cvttps2dq',
'cvtdq2pd','cvtpd2dq','cvttpd2dq',
'cvtsi2sd','cvtsd2si','cvttsd2si',
'cvtpi2pd','cvtpd2pi','cvttpd2pi',
'movsd','movlpd','movhpd','movapd','movupd','movntpd','movmskpd',
'shufpd','unpckhpd','unpcklpd',
'movnti','movdqa','movdqu','movntdq','maskmovdqu',
'movdq2q','movq2dq',
'paddq','psubq','pmuludq',
'pslldq','psrldq',
'punpcklqdq','punpckhqdq',
'pshufhw','pshuflw','pshufd',
'lfence','mfence',
/* SSE3 instructions */
'addsubps','addsubpd',
'haddps','haddpd','hsubps','hsubpd',
'movsldup','movshdup','movddup',
'lddqu',
/* SSSE3 instructions */
'psignb','psignw','psignd',
'pabsb','pabsw','pabsd',
'palignr','pshufb',
'pmulhrsw','pmaddubsw',
'phaddw','phaddd','phaddsw',
'phsubw','phsubd','phsubsw',
/* SSE4A instructions */
'extrq','insertq','movntsd','movntss',
/* SSE4.1 instructions */
'mpsadbw','phminposuw',
'pmuldq','pmulld',
'dpps','dppd',
'blendps','blendpd','blendvps','blendvpd','pblendvb','pblendw',
'pmaxsb','pmaxuw','pmaxsd','pmaxud','pminsb','pminuw','pminsd','pminud',
'roundps','roundss','roundpd','roundsd',
'insertps','pinsrb','pinsrd','pinsrq',
'extractps','pextrb','pextrd','pextrq',
'pmovsxbw','pmovsxbd','pmovsxbq','pmovsxwd','pmovsxwq','pmovsxdq',
'pmovzxbw','pmovzxbd','pmovzxbq','pmovzxwd','pmovzxwq','pmovzxdq',
'ptest',
'pcmpeqq',
'packusdw',
'movntdqa',
/* SSE4.2 instructions */
'pcmpgtq',
'pcmpestri','pcmpestrm','pcmpistri','pcmpistrm',
/* AES instructions */
'aesenc','aesenclast','aesdec','aesdeclast','aeskeygenassist','aesimc',
/* VIA Padlock instructions */
'xcryptcbc','xcryptcfb','xcryptctr','xcryptecb','xcryptofb',
'xsha1','xsha256','montmul','xstore',
/* AVX instructions */
'vaddss','vaddps','vaddsd','vaddpd','vsubss','vsubps','vsubsd','vsubpd',
'vaddsubps','vaddsubpd',
'vhaddps','vhaddpd','vhsubps','vhsubpd',
'vmulss','vmulps','vmulsd','vmulpd',
'vmaxss','vmaxps','vmaxsd','vmaxpd','vminss','vminps','vminsd','vminpd',
'vandps','vandpd','vandnps','vandnpd','vorps','vorpd','vxorps','vxorpd',
'vblendps','vblendpd','vblendvps','vblendvpd',
'vcmpss','vcomiss','vucomiss','vcmpsd','vcomisd','vucomisd','vcmpps','vcmppd',
'vcmpeqss','vcmpltss','vcmpless','vcmpunordss','vcmpneqss','vcmpnltss','vcmpnless','vcmpordss',
'vcmpeq_uqss','vcmpngess','vcmpngtss','vcmpfalsess','vcmpneq_oqss','vcmpgess','vcmpgtss','vcmptruess',
'vcmpeq_osss','vcmplt_oqss','vcmple_oqss','vcmpunord_sss','vcmpneq_usss','vcmpnlt_uqss','vcmpnle_uqss','vcmpord_sss',
'vcmpeq_usss','vcmpnge_uqss','vcmpngt_uqss','vcmpfalse_osss','vcmpneq_osss','vcmpge_oqss','vcmpgt_oqss','vcmptrue_usss',
'vcmpeqps','vcmpltps','vcmpleps','vcmpunordps','vcmpneqps','vcmpnltps','vcmpnleps','vcmpordps',
'vcmpeq_uqps','vcmpngeps','vcmpngtps','vcmpfalseps','vcmpneq_oqps','vcmpgeps','vcmpgtps','vcmptrueps',
'vcmpeq_osps','vcmplt_oqps','vcmple_oqps','vcmpunord_sps','vcmpneq_usps','vcmpnlt_uqps','vcmpnle_uqps','vcmpord_sps',
'vcmpeq_usps','vcmpnge_uqps','vcmpngt_uqps','vcmpfalse_osps','vcmpneq_osps','vcmpge_oqps','vcmpgt_oqps','vcmptrue_usps',
'vcmpeqsd','vcmpltsd','vcmplesd','vcmpunordsd','vcmpneqsd','vcmpnltsd','vcmpnlesd','vcmpordsd',
'vcmpeq_uqsd','vcmpngesd','vcmpngtsd','vcmpfalsesd','vcmpneq_oqsd','vcmpgesd','vcmpgtsd','vcmptruesd',
'vcmpeq_ossd','vcmplt_oqsd','vcmple_oqsd','vcmpunord_ssd','vcmpneq_ussd','vcmpnlt_uqsd','vcmpnle_uqsd','vcmpord_ssd',
'vcmpeq_ussd','vcmpnge_uqsd','vcmpngt_uqsd','vcmpfalse_ossd','vcmpneq_ossd','vcmpge_oqsd','vcmpgt_oqsd','vcmptrue_ussd',
'vcmpeqpd','vcmpltpd','vcmplepd','vcmpunordpd','vcmpneqpd','vcmpnltpd','vcmpnlepd','vcmpordpd',
'vcmpeq_uqpd','vcmpngepd','vcmpngtpd','vcmpfalsepd','vcmpneq_oqpd','vcmpgepd','vcmpgtpd','vcmptruepd',
'vcmpeq_ospd','vcmplt_oqpd','vcmple_oqpd','vcmpunord_spd','vcmpneq_uspd','vcmpnlt_uqpd','vcmpnle_uqpd','vcmpord_spd',
'vcmpeq_uspd','vcmpnge_uqpd','vcmpngt_uqpd','vcmpfalse_ospd','vcmpneq_ospd','vcmpge_oqpd','vcmpgt_oqpd','vcmptrue_uspd',
'vcvtsd2ss','vcvtpd2ps','vcvtss2sd','vcvtps2pd',
'vcvtsi2ss','vcvtss2si','vcvttss2si',
'vcvtpi2ps','vcvtps2pi','vcvttps2pi',
'vcvtdq2ps','vcvtps2dq','vcvttps2dq',
'vcvtdq2pd','vcvtpd2dq','vcvttpd2dq',
'vcvtsi2sd','vcvtsd2si','vcvttsd2si',
'vcvtpi2pd','vcvtpd2pi','vcvttpd2pi',
'vdivss','vdivps','vdivsd','vdivpd','vsqrtss','vsqrtps','vsqrtsd','vsqrtpd',
'vdpps','vdppd',
'vmaskmovps','vmaskmovpd',
'vmovss','vmovsd','vmovaps','vmovapd','vmovups','vmovupd','vmovntps','vmovntpd',
'vmovhlps','vmovlhps','vmovlps','vmovlpd','vmovhps','vmovhpd',
'vmovsldup','vmovshdup','vmovddup',
'vmovmskps','vmovmskpd',
'vroundss','vroundps','vroundsd','vroundpd',
'vrcpss','vrcpps','vrsqrtss','vrsqrtps',
'vunpcklps','vunpckhps','vunpcklpd','vunpckhpd',
'vbroadcastss','vbroadcastsd','vbroadcastf128',
'vextractps','vinsertps','vextractf128','vinsertf128',
'vshufps','vshufpd','vpermilps','vpermilpd','vperm2f128',
'vtestps','vtestpd',
'vpaddb','vpaddusb','vpaddsb','vpaddw','vpaddusw','vpaddsw','vpaddd','vpaddq',
'vpsubb','vpsubusb','vpsubsb','vpsubw','vpsubusw','vpsubsw','vpsubd','vpsubq',
'vphaddw','vphaddsw','vphaddd','vphsubw','vphsubsw','vphsubd',
'vpsllw','vpslld','vpsllq','vpsrlw','vpsrld','vpsrlq','vpsraw','vpsrad',
'vpand','vpandn','vpor','vpxor',
'vpblendwb','vpblendw',
'vpsignb','vpsignw','vpsignd',
'vpavgb','vpavgw',
'vpabsb','vpabsw','vpabsd',
'vmovd','vmovq','vmovdqa','vmovdqu','vlddqu','vmovntdq','vmovntdqa','vmaskmovdqu',
'vpmovsxbw','vpmovsxbd','vpmovsxbq','vpmovsxwd','vpmovsxwq','vpmovsxdq',
'vpmovzxbw','vpmovzxbd','vpmovzxbq','vpmovzxwd','vpmovzxwq','vpmovzxdq',
'vpackuswb','vpacksswb','vpackusdw','vpackssdw',
'vpcmpeqb','vpcmpeqw','vpcmpeqd','vpcmpeqq','vpcmpgtb','vpcmpgtw','vpcmpgtd','vpcmpgtq',
'vpmaddubsw','vpmaddwd',
'vpmullw','vpmulhuw','vpmulhw','vpmulhrsw','vpmulld','vpmuludq','vpmuldq',
'vpmaxub','vpmaxsb','vpmaxuw','vpmaxsw','vpmaxud','vpmaxsd',
'vpminub','vpminsb','vpminuw','vpminsw','vpminud','vpminsd',
'vpmovmskb','vptest',
'vpunpcklbw','vpunpcklwd','vpunpckldq','vpunpcklqdq',
'vpunpckhbw','vpunpckhwd','vpunpckhdq','vpunpckhqdq',
'vpslldq','vpsrldq','vpalignr',
'vpshufb','vpshuflw','vpshufhw','vpshufd',
'vpextrb','vpextrw','vpextrd','vpextrq','vpinsrb','vpinsrw','vpinsrd','vpinsrq',
'vpsadbw','vmpsadbw','vphminposuw',
'vpcmpestri','vpcmpestrm','vpcmpistri','vpcmpistrm',
'vpclmulqdq','vaesenc','vaesenclast','vaesdec','vaesdeclast','vaeskeygenassist','vaesimc',
'vldmxcsr','vstmxcsr','vzeroall','vzeroupper',
/* AVX2 instructions */
'vbroadcasti128','vpbroadcastb','vpbroadcastw','vpbroadcastd','vpbroadcastq',
'vpblendd',
'vpermd','vpermq','vperm2i128',
'vextracti128','vinserti128',
'vpmaskmovd','vpmaskmovq',
'vpsllvd','vpsllvq','vpsravd','vpsrlvd',
'vpgatherdd','vpgatherqd','vgatherdq','vgatherqq',
'vpermps','vpermpd',
'vgatherdpd','vgatherqpd','vgatherdps','vgatherqps',
/* XOP instructions */
'vfrczss','vfrczps','vfrczsd','vfrczpd',
'vpermil2ps','vperlil2pd',
'vpcomub','vpcomb','vpcomuw','vpcomw','vpcomud','vpcomd','vpcomuq','vpcomq',
'vphaddubw','vphaddbw','vphaddubd','vphaddbd','vphaddubq','vphaddbq',
'vphadduwd','vphaddwd','vphadduwq','vphaddwq','vphaddudq','vphadddq',
'vphsubbw','vphsubwd','vphsubdq',
'vpmacsdd','vpmacssdd','vpmacsdql','vpmacssdql','vpmacsdqh','vpmacssdqh',
'vpmacsww','vpmacssww','vpmacswd','vpmacsswd',
'vpmadcswd','vpmadcsswd',
'vpcmov','vpperm',
'vprotb','vprotw','vprotd','vprotq',
'vpshab','vpshaw','vpshad','vpshaq',
'vpshlb','vpshlw','vpshld','vpshlq',
/* CVT16 instructions */
'vcvtph2ps','vcvtps2ph',
/* FMA4 instructions */
'vfmaddss','vfmaddps','vfmaddsd','vfmaddpd',
'vfmsubss','vfmsubps','vfmsubsd','vfmsubpd',
'vnfmaddss','vnfmaddps','vnfmaddsd','vnfmaddpd',
'vnfmsubss','vnfmsubps','vnfmsubsd','vnfmsubpd',
'vfmaddsubps','vfmaddsubpd','vfmsubaddps','vfmsubaddpd',
/* FMA3 instructions */
'vfmadd132ss','vfmadd213ss','vfmadd231ss',
'vfmadd132ps','vfmadd213ps','vfmadd231ps',
'vfmadd132sd','vfmadd213sd','vfmadd231sd',
'vfmadd132pd','vfmadd213pd','vfmadd231pd',
'vfmaddsub132ps','vfmaddsub213ps','vfmaddsub231ps',
'vfmaddsub132pd','vfmaddsub213pd','vfmaddsub231pd',
'vfmsubadd132ps','vfmsubadd213ps','vfmsubadd231ps',
'vfmsubadd132pd','vfmsubadd213pd','vfmsubadd231pd',
'vfmsub132ss','vfmsub213ss','vfmsub231ss',
'vfmsub132ps','vfmsub213ps','vfmsub231ps',
'vfmsub132sd','vfmsub213sd','vfmsub231sd',
'vfmsub132pd','vfmsub213pd','vfmsub231pd',
'vfnmadd132ss','vfnmadd213ss','vfnmadd231ss',
'vfnmadd132ps','vfnmadd213ps','vfnmadd231ps',
'vfnmadd132sd','vfnmadd213sd','vfnmadd231sd',
'vfnmadd132pd','vfnmadd213pd','vfnmadd231pd',
'vfnmsub132ss','vfnmsub213ss','vfnmsub231ss',
'vfnmsub132ps','vfnmsub213ps','vfnmsub231ps',
'vfnmsub132sd','vfnmsub213sd','vfnmsub231sd',
'vfnmsub132pd','vfnmsub213pd','vfnmsub231pd'
),
/*registers*/
3 => array(
'ah','al','ax','bh','bl','bp','bx','ch','cl','cr0','cr2','cr3','cs','cx','dh','di','dl',
'dr0','dr1','dr2','dr3','dr6','dr7','ds','dx','eax','ebp','ebx','ecx','edi','edx',
'es','esi','esp','fs','gs','si','sp','ss','st','tr3','tr4','tr5','tr6','tr7'
4 => array(
/* General-Purpose Registers */
'al','ah','bl','bh','cl','ch','dl','dh','sil','dil','bpl','spl',
'r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b',
'ax','bx','cx','dx','si','di','bp','sp',
'r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w',
'eax','ebx','ecx','edx','esi','edi','ebp','esp',
'r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d',
'rax','rcx','rdx','rbx','rsp','rbp','rsi','rdi',
'r8','r9','r10','r11','r12','r13','r14','r15',
/* Debug Registers */
'dr0','dr1','dr2','dr3','dr6','dr7',
/* Control Registers */
'cr0','cr2','cr3','cr4','cr8',
/* Test Registers (Supported on Intel 486 only) */
'tr3','tr4','tr5','tr6','tr7',
/* Segment Registers */
'cs','ds','es','fs','gs','ss',
/* FPU Registers */
'st','st0','st1','st2','st3','st4','st5','st6','st7',
/* MMX Registers */
'mm0','mm1','mm2','mm3','mm4','mm5','mm6','mm7',
/* SSE Registers */
'xmm0','xmm1','xmm2','xmm3','xmm4','xmm5','xmm6','xmm7',
'xmm8','xmm9','xmm10','xmm11','xmm12','xmm13','xmm14','xmm15',
/* AVX Registers */
'ymm0','ymm1','ymm2','ymm3','ymm4','ymm5','ymm6','ymm7',
'ymm8','ymm9','ymm10','ymm11','ymm12','ymm13','ymm14','ymm15'
),
/*Directive*/
4 => array(
'186','286','286c','286p','287','386','386c','386p','387','486','486p',
'8086','8087','alpha','break','code','const','continue','cref','data','data?',
'dosseg','else','elseif','endif','endw','equ','err','err1','err2','errb',
'errdef','errdif','errdifi','erre','erridn','erridni','errnb','errndef',
'errnz','exit','fardata','fardata?','global','if','lall','lfcond','list','listall',
'listif','listmacro','listmacroall',' model','no87','nocref','nolist',
'nolistif','nolistmacro','radix','repeat','sall','seq','sfcond','stack',
'startup','tfcond','type','until','untilcxz','while','xall','xcref',
'xlist','alias','align','assume','catstr','comm','comment','db','dd','df','dq',
'dt','dup','dw','echo','elseif1','elseif2','elseifb','elseifdef','elseifdif',
'elseifdifi','elseife','elseifidn','elseifidni','elseifnb','elseifndef','end',
'endm','endp','ends','eq',' equ','even','exitm','extern','externdef','extrn','for',
'forc','ge','goto','group','high','highword','if1','if2','ifb','ifdef','ifdif',
'ifdifi','ife',' ifidn','ifidni','ifnb','ifndef','include','includelib','instr','invoke',
'irp','irpc','label','le','length','lengthof','local','low','lowword','lroffset',
'macro','mask','mod','msfloat','name','ne','offset','opattr','option','org','%out',
'page','popcontext','private','proc','proto','ptr','public','purge','pushcontext','record',
'resb','resd','resw','rept','section','seg','segment','short','size','sizeof','sizestr','struc','struct',
'substr','subtitle','subttl','textequ','this','title','typedef','union','width',
'.model', '.stack', '.code', '.data'
5 => array(
'db','dw','dd','dq','dt','do','dy',
'resb','resw','resd','resq','rest','reso','resy','incbin','equ','times','safeseh',
'__utf16__','__utf32__',
'default','cpu','float','start','imagebase','osabi',
'..start','..imagebase','..gotpc','..gotoff','..gottpoff','..got','..plt','..sym','..tlsie',
'section','segment','__sect__','group','absolute',
'.bss','.comment','.data','.lbss','.ldata','.lrodata','.rdata','.rodata','.tbss','.tdata','.text',
'alloc','bss','code','exec','data','noalloc','nobits','noexec','nowrite','progbits','rdata','tls','write',
'private','public','common','stack','overlay','class',
'extern','global','import','export',
'%define','%idefine','%xdefine','%ixdefine','%assign','%undef',
'%defstr','%idefstr','%deftok','%ideftok',
'%strcat','%strlen','%substr',
'%macro','%imacro','%rmacro','%exitmacro','%endmacro','%unmacro',
'%if','%ifn','%elif','%elifn','%else','%endif',
'%ifdef','%ifndef','%elifdef','%elifndef',
'%ifmacro','%ifnmacro','%elifmacro','%elifnmacro',
'%ifctx','%ifnctx','%elifctx','%elifnctx',
'%ifidn','%ifnidn','%elifidn','%elifnidn',
'%ifidni','%ifnidni','%elifidni','%elifnidni',
'%ifid','%ifnid','%elifid','%elifnid',
'%ifnum','%ifnnum','%elifnum','%elifnnum',
'%ifstr','%ifnstr','%elifstr','%elifnstr',
'%iftoken','%ifntoken','%eliftoken','%elifntoken',
'%ifempty','%ifnempty','%elifempty','%elifnempty',
'%ifenv','%ifnenv','%elifenv','%elifnenv',
'%rep','%exitrep','%endrep',
'%while','%exitwhile','%endwhile',
'%include','%pathsearch','%depend','%use',
'%push','%pop','%repl','%arg','%local','%stacksize','flat','flat64','large','small',
'%error','%warning','%fatal',
'%00','.nolist','%rotate','%line','%!','%final','%clear',
'struc','endstruc','istruc','at','iend',
'align','alignb','sectalign',
'bits','use16','use32','use64',
'__nasm_major__','__nasm_minor__','__nasm_subminor__','___nasm_patchlevel__',
'__nasm_version_id__','__nasm_ver__',
'__file__','__line__','__pass__','__bits__','__output_format__',
'__date__','__time__','__date_num__','__time_num__','__posix_time__',
'__utc_date__','__utc_time__','__utc_date_num__','__utc_time_num__',
'__float_daz__','__float_round__','__float__',
/* Keywords from standard packages */
'__use_altreg__',
'__use_smartalign__','smartalign','__alignmode__',
'__use_fp__','__infinity__','__nan__','__qnan__','__snan__',
'__float8__','__float16__','__float32__','__float64__','__float80m__','__float80e__','__float128l__','__float128h__'
),
/*Operands*/
5 => array(
'@b','@f','addr','basic','byte','c','carry?','dword',
'far','far16','fortran','fword','near','near16','overflow?','parity?','pascal','qword',
'real4',' real8','real10','sbyte','sdword','sign?','stdcall','sword','syscall','tbyte',
'vararg','word','zero?','flat','near32','far32',
'abs','all','assumes','at','casemap','common','compact',
'cpu','dotname','emulator','epilogue','error','export','expr16','expr32','farstack',
'forceframe','huge','language','large','listing','ljmp','loadds','m510','medium','memory',
'nearstack','nodotname','noemulator','nokeyword','noljmp','nom510','none','nonunique',
'nooldmacros','nooldstructs','noreadonly','noscoped','nosignextend','nothing',
'notpublic','oldmacros','oldstructs','os_dos','para','prologue',
'readonly','req','scoped','setif2','smallstack','tiny','use16','use32','uses'
6 => array(
'a16','a32','a64','o16','o32','o64','strict',
'byte','word','dword','qword','tword','oword','yword','nosplit',
'%0','%1','%2','%3','%4','%5','%6','%7','%8','%9',
'abs','rel',
'seg','wrt'
)
),
'SYMBOLS' => array(
'[', ']', '(', ')',
'+', '-', '*', '/', '%',
'.', ',', ';', ':'
1 => array(
'[', ']', '(', ')',
'+', '-', '*', '/', '%',
'.', ',', ';', ':'
),
2 => array(
'$','$$','%+','%?','%??'
)
),
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
@ -144,19 +524,21 @@ $language_data = array (
2 => false,
3 => false,
4 => false,
5 => false
5 => false,
6 => false
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #00007f; font-weight: bold;',
2 => 'color: #0000ff; font-weight: bold;',
3 => 'color: #00007f;',
4 => 'color: #000000; font-weight: bold;',
5 => 'color: #000000; font-weight: bold;'
2 => 'color: #0000ff;',
3 => 'color: #b00040;',
4 => 'color: #46aa03; font-weight: bold;',
5 => 'color: #0000ff; font-weight: bold;',
6 => 'color: #0000ff; font-weight: bold;'
),
'COMMENTS' => array(
1 => 'color: #666666; font-style: italic;',
2 => 'color: #adadad; font-style: italic;',
2 => 'color: #adadad; font-style: italic;'
),
'ESCAPE_CHAR' => array(
0 => 'color: #000099; font-weight: bold;'
@ -168,16 +550,15 @@ $language_data = array (
0 => 'color: #7f007f;'
),
'NUMBERS' => array(
0 => 'color: #0000ff;'
0 => 'color: #ff0000;'
),
'METHODS' => array(
),
'SYMBOLS' => array(
0 => 'color: #339933;'
1 => 'color: #339933;',
2 => 'color: #0000ff; font-weight: bold;'
),
'REGEXPS' => array(
// 0 => 'color: #0000ff;',
// 1 => 'color: #0000ff;'
),
'SCRIPT' => array(
)
@ -187,7 +568,8 @@ $language_data = array (
2 => '',
3 => '',
4 => '',
5 => ''
5 => '',
6 => ''
),
'NUMBERS' =>
GESHI_NUMBER_BIN_PREFIX_PERCENT |
@ -203,10 +585,6 @@ $language_data = array (
'OBJECT_SPLITTERS' => array(
),
'REGEXPS' => array(
//Hex numbers
// 0 => /* */ "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))(?:[0-9][0-9a-fA-F]{0,31}[hH]|0x[0-9a-fA-F]{1,32})(?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))",
//Binary numbers
// 1 => "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))[01]{1,64}[bB](?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))"
),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(

View File

@ -4,7 +4,7 @@
* --------
* Author: Amit Gupta (http://blog.igeek.info/)
* Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/08/13
*
* ASP language file for GeSHi.

View File

@ -0,0 +1,194 @@
<?php
/*************************************************************************************
* asymptote.php
* -------------
* Author: Manuel Yguel (manuel.yguel.robotics@gmail.com)
* Copyright: (c) 2012 Manuel Yguel (http://manuelyguel.eu)
* Release Version: 1.0.8.11
* Date Started: 2012/05/24
*
* asymptote language file for GeSHi.
*
* CHANGES
* -------
* 2012/05/24 (1.0.0.0)
* - First Release
*
* TODO (updated 2012/05/24)
* -------------------------
* * Split to several files - php4, php5 etc
*
*************************************************************************************
*
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* ************************************************************************************/
$language_data = array(
'LANG_NAME' => 'asymptote',
'COMMENT_SINGLE' => array(1 => '//'),
'COMMENT_MULTI' => array('/*' => '*/'),
'COMMENT_REGEXP' => array(
//Multiline-continued single-line comments
1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
//Multiline-continued preprocessor define
2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array("'", '"'),
'ESCAPE_CHAR' => '',
'ESCAPE_REGEXP' => array(
//Simple Single Char Escapes
1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
//Hexadecimal Char Specs
2 => "#\\\\x[\da-fA-F]{2}#",
//Hexadecimal Char Specs
3 => "#\\\\u[\da-fA-F]{4}#",
//Hexadecimal Char Specs
4 => "#\\\\U[\da-fA-F]{8}#",
//Octal Char Specs
5 => "#\\\\[0-7]{1,3}#"
),
'NUMBERS' =>
GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
'KEYWORDS' => array(
1 => array(
'and','controls','tension','atleast','curl','if','else','while','for','do','return','break','continue','struct','typedef','new','access','import','unravel','from','include','quote','static','public','private','restricted','this','explicit','true','false','null','cycle','newframe','operator'
),
2 => array(
'Braid','FitResult','Label','Legend','Segment','Solution','TreeNode','abscissa','arc','arrowhead','binarytree','binarytreeNode','block','bool','bool3','bounds','bqe','circle','conic','coord','coordsys','cputime','ellipse','file','filltype','frame','grid3','guide','horner','hsv','hyperbola','indexedTransform','int','inversion','key','light','line','linefit','marginT','marker','mass','object','pair','parabola','path','path3','pen','picture','point','position','projection','real','revolution','scaleT','scientific','segment','side','slice','solution','splitface','string','surface','tensionSpecifier','ticklocate','ticksgridT','tickvalues','transform','transformation','tree','triangle','trilinear','triple','vector','vertex','void'),
3 => array(
'AND','Arc','ArcArrow','ArcArrows','Arrow','Arrows','Automatic','AvantGarde','BBox','BWRainbow','BWRainbow2','Bar','Bars','BeginArcArrow','BeginArrow','BeginBar','BeginDotMargin','BeginMargin','BeginPenMargin','Blank','Bookman','Bottom','BottomTop','Bounds','Break','Broken','BrokenLog','CLZ','CTZ','Ceil','Circle','CircleBarIntervalMarker','Cos','Courier','CrossIntervalMarker','DOSendl','DOSnewl','DefaultFormat','DefaultLogFormat','Degrees','Dir','DotMargin','DotMargins','Dotted','Draw','Drawline','Embed','EndArcArrow','EndArrow','EndBar','EndDotMargin','EndMargin','EndPenMargin','Fill','FillDraw','Floor','Format','Full','Gaussian','Gaussrand','Gaussrandpair',
'Gradient','Grayscale','Helvetica','Hermite','HookHead','InOutTicks','InTicks','Jn','Label','Landscape','Left','LeftRight','LeftTicks','Legend','Linear','Link','Log','LogFormat','Margin','Margins','Mark','MidArcArrow','MidArrow','NOT','NewCenturySchoolBook','NoBox','NoMargin','NoModifier','NoTicks','NoTicks3','NoZero','NoZeroFormat','None','OR','OmitFormat','OmitTick','OmitTickInterval','OmitTickIntervals','OutTicks','Ox','Oy','Palatino','PaletteTicks','Pen','PenMargin','PenMargins','Pentype','Portrait','RadialShade','RadialShadeDraw','Rainbow','Range','Relative','Right','RightTicks','Rotate','Round','SQR','Scale','ScaleX','ScaleY','ScaleZ','Seascape','Segment','Shift','Sin','Slant','Spline','StickIntervalMarker','Straight','Symbol','Tan','TeXify','Ticks','Ticks3','TildeIntervalMarker','TimesRoman','Top','TrueMargin','UnFill','UpsideDown','Wheel','X','XEquals','XOR','XY','XYEquals','XYZero','XYgrid','XZEquals','XZZero','XZero','XZgrid','Y','YEquals','YXgrid','YZ','YZEquals','YZZero','YZero','YZgrid','Yn','Z','ZX','ZXgrid','ZYgrid','ZapfChancery','ZapfDingbats','_begingroup3','_cputime','_draw','_eval','_image','_labelpath','_projection','_strokepath','_texpath','aCos','aSin','aTan','abort','abs','accel','acos','acosh','acot','acsc','activatequote','add',
'addArrow','addMargins','addSaveFunction','addpenarc','addpenline','adjust','alias','align','all','altitude','angabscissa','angle','angpoint','animate','annotate','anticomplementary','antipedal','apply','approximate','arc','arcarrowsize','arccircle','arcdir','arcfromcenter','arcfromfocus','arclength','arcnodesnumber','arcpoint','arcsubtended','arcsubtendedcenter','arctime','arctopath','array','arrow','arrow2','arrowbase','arrowbasepoints','arrowsize','asec','asin','asinh','ask','assert','asy','asycode','asydir','asyfigure','asyfilecode','asyinclude','asywrite','atan','atan2','atanh','atbreakpoint','atexit','attach','attract','atupdate','autoformat','autoscale','autoscale3','axes','axes3','axialshade','axis','axiscoverage','azimuth','babel','background','bangles','bar','barmarksize','barsize','basealign','baseline','bbox','beep','begin','beginclip','begingroup','beginpoint','between','bevel','bezier','bezierP','bezierPP','bezierPPP','bezulate','bibliography','bibliographystyle','binarytree','binarytreeNode','binomial','binput','bins','bisector','bisectorpoint','bispline','blend','blockconnector','boutput','box','bqe','breakpoint','breakpoints','brick','buildRestoreDefaults','buildRestoreThunk','buildcycle','bulletcolor','byte','calculateScaling','canonical','canonicalcartesiansystem','cartesiansystem','case1','case2','case3','case4','cbrt','cd','ceil','center','centerToFocus',
'centroid','cevian','change2','changecoordsys','checkSegment','checkconditionlength','checker','checkincreasing','checklengths','checkposition','checktriangle','choose','circle','circlebarframe','circlemarkradius','circlenodesnumber','circumcenter','circumcircle','clamped','clear','clip','clipdraw','close','cmyk','code','colatitude','collect','collinear','color','colorless','colors','colorspace','comma','compassmark','complement','complementary','concat','concurrent','cone','conic','conicnodesnumber','conictype','conj','connect','connected','connectedindex','containmentTree','contains','contour','contour3','contouredges','controlSpecifier','convert','coordinates','coordsys','copy','copyPairOrTriple','cos','cosh','cot','countIntersections','cputime','crop','cropcode','cross',
'crossframe','crosshatch','crossmarksize','csc','cubicroots','curabscissa','curlSpecifier','curpoint','currentarrow','currentexitfunction','currentmomarrow','currentpolarconicroutine','curve','cut','cutafter','cutbefore','cyclic','cylinder','deactivatequote','debugger','deconstruct','defaultdir','defaultformat','defaultpen','defined','degenerate','degrees','delete','deletepreamble','determinant','diagonal','diamond','diffdiv','dir','dirSpecifier','dirtime','display','distance',
'divisors','do_overpaint','dot','dotframe','dotsize','downcase','draw','drawAll','drawDoubleLine','drawFermion','drawGhost','drawGluon','drawMomArrow','drawPRCcylinder','drawPRCdisk','drawPRCsphere','drawPRCtube','drawPhoton','drawScalar','drawVertex','drawVertexBox','drawVertexBoxO','drawVertexBoxX','drawVertexO','drawVertexOX','drawVertexTriangle','drawVertexTriangleO','drawVertexX','drawarrow','drawarrow2','drawline','drawpixel','drawtick','duplicate','elle','ellipse','ellipsenodesnumber','embed','embed3','empty','enclose','end','endScript','endclip','endgroup','endgroup3','endl','endpoint','endpoints','eof','eol','equation','equations','erase','erasestep','erf','erfc','error','errorbar','errorbars','eval','excenter','excircle','exit','exitXasyMode','exitfunction','exp','expfactors','expi','expm1','exradius','extend','extension','extouch','fabs','factorial','fermat','fft','fhorner','figure','file','filecode','fill','filldraw','filloutside','fillrule','filltype','find','finite','finiteDifferenceJacobian','firstcut','firstframe','fit','fit2','fixedscaling','floor','flush','fmdefaults','fmod','focusToCenter','font','fontcommand','fontsize','foot','format','frac','frequency','fromCenter','fromFocus','fspline','functionshade','gamma','generate_random_backtrace','generateticks','gergonne','getc','getint','getpair','getreal','getstring','gettriple','gluon','gouraudshade','graph','graphic','gray','grestore','grid','grid3','gsave','halfbox','hatch','hdiffdiv','hermite','hex','histogram','history','hline','hprojection',
'hsv','hyperbola','hyperbolanodesnumber','hyperlink','hypot','identity','image','incenter','incentral','incircle','increasing','incrementposition','indexedTransform','indexedfigure','initXasyMode','initdefaults','input','inradius','insert','inside','integrate','interactive','interior','interp','interpolate','intersect','intersection','intersectionpoint','intersectionpoints','intersections','intouch','inverse','inversion','invisible','is3D','isCCW','isDuplicate','isogonal','isogonalconjugate','isotomic','isotomicconjugate','isparabola','italic','item','jobname','key','kurtosis','kurtosisexcess','label','labelaxis','labelmargin','labelpath','labels','labeltick','labelx','labelx3','labely','labely3','labelz','labelz3','lastcut','latex','latitude','latticeshade','layer','layout','ldexp','leastsquares','legend','legenditem','length','lexorder','lift','light','limits','line','linear','linecap','lineinversion','linejoin','linemargin','lineskip','linetype','linewidth','link','list','lm_enorm','lm_evaluate_default','lm_lmdif','lm_lmpar','lm_minimize','lm_print_default','lm_print_quiet','lm_qrfac','lm_qrsolv','locale','locate',
'locatefile','location','log','log10','log1p','logaxiscoverage','longitude','lookup','makeNode','makedraw','makepen','map','margin','markangle','markangleradius','markanglespace','markarc','marker','markinterval','marknodes','markrightangle','markuniform','mass','masscenter','massformat','math','max','max3','maxAfterTransform','maxbezier','maxbound','maxcoords','maxlength','maxratio','maxtimes','mean','medial','median','midpoint','min','min3','minAfterTransform','minbezier','minbound','minipage','minratio','mintimes','miterlimit','mktemp','momArrowPath','momarrowsize','monotonic','multifigure','nativeformat','natural','needshipout','newl','newpage','newslide','newton','newtree','nextframe','nextnormal','nextpage','nib','nodabscissa','none','norm','normalvideo','notaknot','nowarn','numberpage','nurb','object','offset','onpath','opacity','opposite','orientation','origin','orthic','orthocentercenter','outformat','outline','outname','outprefix','output','overloadedMessage','overwrite','pack','pad','pairs','palette','parabola','parabolanodesnumber','parallel','parallelogram','partialsum','path','path3','pattern','pause','pdf','pedal','periodic','perp','perpendicular','perpendicularmark','phantom','phi1','phi2','phi3','photon','piecewisestraight','point','polar','polarconicroutine','polargraph','polygon','postcontrol','postscript','pow10','ppoint','prc','prc0','precision','precontrol','prepend','printBytecode','print_random_addresses','project','projection','purge','pwhermite','quadrant','quadraticroots','quantize','quarticroots','quotient','radialshade','radians','radicalcenter','radicalline','radius','rand','randompath','rd','readline','realmult','realquarticroots','rectangle','rectangular','rectify','reflect','relabscissa','relative','relativedistance','reldir','relpoint','reltime','remainder','remark','removeDuplicates','rename','replace','report','resetdefaultpen','restore','restoredefaults','reverse','reversevideo','rf','rfind','rgb','rgba','rgbint','rms',
'rotate','rotateO','rotation','round','roundbox','roundedpath','roundrectangle','same','samecoordsys','sameside','sample','save','savedefaults','saveline','scale','scale3','scaleO','scaleT','scaleless','scientific','search','searchindex','searchtree','sec','secondaryX','secondaryY','seconds','section','sector','seek','seekeof','segment','sequence','setcontour','setpens','sgn','sgnd','sharpangle','sharpdegrees','shift','shiftless','shipout','shipout3','show','side','simeq','simpson','sin','sinh','size','size3','skewness','skip','slant','sleep','slope','slopefield','solve','solveBVP','sort','sourceline','sphere','split','sqrt','square','srand','standardizecoordsys','startScript','stdev','step','stickframe','stickmarksize','stickmarkspace','stop','straight','straightness','string','stripdirectory','stripextension','stripfile','stripsuffix','strokepath','subdivide','subitem','subpath','substr','sum','surface','symmedial','symmedian','system',
'tab','tableau','tan','tangent','tangential','tangents','tanh','tell','tensionSpecifier','tensorshade','tex','texcolor','texify','texpath','texpreamble','texreset','texshipout','texsize','textpath','thick','thin','tick','tickMax','tickMax3','tickMin','tickMin3','ticklabelshift','ticklocate','tildeframe','tildemarksize','tile','tiling','time','times','title','titlepage','topbox','transform','transformation','transpose','trembleFuzz','triangle','triangleAbc','triangleabc','triangulate','tricoef','tridiagonal','trilinear','trim','truepoint','tube','uncycle','unfill','uniform','unique','unit','unitrand','unitsize','unityroot','unstraighten','upcase','updatefunction','uperiodic','upscale','uptodate','usepackage','usersetting','usetypescript','usleep','value','variance','variancebiased','vbox','vector','vectorfield','verbatim','view','vline','vperiodic','vprojection','warn','warning','windingnumber','write','xaxis','xaxis3','xaxis3At','xaxisAt','xequals','xinput','xlimits','xoutput','xpart','xscale','xscaleO','xtick','xtick3','xtrans','yaxis','yaxis3','yaxis3At','yaxisAt','yequals','ylimits','ypart','yscale','yscaleO','ytick','ytick3','ytrans','zaxis3','zaxis3At','zero','zero3','zlimits','zpart','ztick','ztick3','ztrans'
),
4 => array(
'AliceBlue','Align','Allow','AntiqueWhite','Apricot','Aqua','Aquamarine','Aspect','Azure','BeginPoint','Beige','Bisque','Bittersweet','Black','BlanchedAlmond','Blue','BlueGreen','BlueViolet','Both','Break','BrickRed','Brown','BurlyWood','BurntOrange','CCW','CW','CadetBlue','CarnationPink','Center','Centered','Cerulean','Chartreuse','Chocolate','Coeff','Coral','CornflowerBlue','Cornsilk','Crimson','Crop','Cyan','Dandelion','DarkBlue','DarkCyan','DarkGoldenrod','DarkGray','DarkGreen','DarkKhaki','DarkMagenta','DarkOliveGreen','DarkOrange','DarkOrchid','DarkRed','DarkSalmon','DarkSeaGreen','DarkSlateBlue','DarkSlateGray','DarkTurquoise','DarkViolet','DeepPink','DeepSkyBlue','DefaultHead','DimGray','DodgerBlue','Dotted','Down','Draw','E','ENE','EPS','ESE','E_Euler','E_PC','E_RK2','E_RK3BS','Emerald','EndPoint','Euler','Fill','FillDraw','FireBrick','FloralWhite','ForestGreen','Fuchsia','Gainsboro','GhostWhite','Gold','Goldenrod','Gray','Green','GreenYellow','Honeydew','HookHead','Horizontal','HotPink','I','IgnoreAspect','IndianRed','Indigo','Ivory','JOIN_IN','JOIN_OUT','JungleGreen','Khaki','LM_DWARF','LM_MACHEP','LM_SQRT_DWARF','LM_SQRT_GIANT','LM_USERTOL','Label','Lavender','LavenderBlush','LawnGreen','Left','LeftJustified','LeftSide','LemonChiffon','LightBlue','LightCoral','LightCyan','LightGoldenrodYellow',
'LightGreen','LightGrey','LightPink','LightSalmon','LightSeaGreen','LightSkyBlue','LightSlateGray','LightSteelBlue','LightYellow','Lime','LimeGreen','Linear','Linen','Log','Logarithmic','Magenta','Mahogany','Mark','MarkFill','Maroon','Max','MediumAquamarine','MediumBlue','MediumOrchid','MediumPurple','MediumSeaGreen','MediumSlateBlue','MediumSpringGreen','MediumTurquoise','MediumVioletRed','Melon','MidPoint','MidnightBlue','Min','MintCream','MistyRose','Moccasin','Move','MoveQuiet','Mulberry','N','NE','NNE','NNW','NW','NavajoWhite','Navy','NavyBlue','NoAlign','NoCrop','NoFill','NoSide','OldLace','Olive','OliveDrab','OliveGreen','Orange','OrangeRed','Orchid','Ox','Oy','PC','PaleGoldenrod','PaleGreen','PaleTurquoise','PaleVioletRed','PapayaWhip','Peach','PeachPuff','Periwinkle','Peru','PineGreen','Pink','Plum','PowderBlue','ProcessBlue','Purple','RK2','RK3','RK3BS','RK4','RK5','RK5DP','RK5F','RawSienna','Red','RedOrange','RedViolet','Rhodamine','Right','RightJustified','RightSide','RosyBrown','RoyalBlue','RoyalPurple','RubineRed','S','SE','SSE','SSW','SW','SaddleBrown','Salmon','SandyBrown','SeaGreen','Seashell','Sepia','Sienna','Silver','SimpleHead','SkyBlue','SlateBlue','SlateGray','Snow','SpringGreen','SteelBlue','Suppress','SuppressQuiet','Tan','TeXHead','Teal','TealBlue','Thistle','Ticksize','Tomato',
'Turquoise','UnFill','Up','VERSION','Value','Vertical','Violet','VioletRed','W','WNW','WSW','Wheat','White','WhiteSmoke','WildStrawberry','XYAlign','YAlign','Yellow','YellowGreen','YellowOrange','addpenarc','addpenline','align','allowstepping','angularsystem','animationdelay','appendsuffix','arcarrowangle','arcarrowfactor','arrow2sizelimit','arrowangle','arrowbarb','arrowdir','arrowfactor','arrowhookfactor','arrowlength','arrowsizelimit','arrowtexfactor','authorpen','axis','axiscoverage','axislabelfactor','background','backgroundcolor','backgroundpen','barfactor','barmarksizefactor','basealign','baselinetemplate','beveljoin','bigvertexpen','bigvertexsize','black','blue','bm','bottom','bp','brown','bullet','byfoci','byvertices','camerafactor','chartreuse','circlemarkradiusfactor','circlenodesnumberfactor','circleprecision','circlescale','cm','codefile','codepen','codeskip','colorPen','coloredNodes','coloredSegments',
'conditionlength','conicnodesfactor','count','cputimeformat','crossmarksizefactor','currentcoordsys','currentlight','currentpatterns','currentpen','currentpicture','currentposition','currentprojection','curvilinearsystem','cuttings','cyan','darkblue','darkbrown','darkcyan','darkgray','darkgreen','darkgrey','darkmagenta','darkolive','darkred','dashdotted','dashed','datepen','dateskip','debuggerlines','debugging','deepblue','deepcyan','deepgray','deepgreen','deepgrey','deepmagenta','deepred','default','defaultControl','defaultS','defaultbackpen','defaultcoordsys','defaultexcursion','defaultfilename','defaultformat','defaultmassformat','defaultpen','diagnostics','differentlengths','dot','dotfactor','dotframe','dotted','doublelinepen','doublelinespacing','down','duplicateFuzz','edge','ellipsenodesnumberfactor','eps','epsgeo','epsilon','evenodd','expansionfactor','extendcap','exterior','fermionpen','figureborder','figuremattpen','file3','firstnode','firststep','foregroundcolor','fuchsia','fuzz','gapfactor','ghostpen','gluonamplitude','gluonpen','gluonratio','gray','green','grey','hatchepsilon','havepagenumber','heavyblue','heavycyan','heavygray','heavygreen','heavygrey','heavymagenta','heavyred','hline','hwratio','hyperbola','hyperbolanodesnumberfactor','identity4','ignore','inXasyMode','inch','inches','includegraphicscommand','inf','infinity','institutionpen','intMax','intMin','interior','invert','invisible','itempen','itemskip','itemstep','labelmargin','landscape','lastnode','left','legendhskip','legendlinelength',
'legendmargin','legendmarkersize','legendmaxrelativewidth','legendvskip','lightblue','lightcyan','lightgray','lightgreen','lightgrey','lightmagenta','lightolive','lightred','lightyellow','line','linemargin','lm_infmsg','lm_shortmsg','longdashdotted','longdashed','magenta','magneticRadius','mantissaBits','markangleradius','markangleradiusfactor','markanglespace','markanglespacefactor','mediumblue','mediumcyan','mediumgray','mediumgreen','mediumgrey','mediummagenta','mediumred','mediumyellow','middle','minDistDefault','minblockheight','minblockwidth','mincirclediameter','minipagemargin','minipagewidth','minvertexangle','miterjoin','mm','momarrowfactor','momarrowlength','momarrowmargin','momarrowoffset','momarrowpen','monoPen','morepoints','nCircle','newbulletcolor','ngraph','nil','nmesh','nobasealign','nodeMarginDefault','nodesystem','nomarker','nopoint','noprimary','nullpath','nullpen','numarray','ocgindex','oldbulletcolor','olive','orange','origin','overpaint','page','pageheight','pagemargin','pagenumberalign','pagenumberpen','pagenumberposition','pagewidth','paleblue','palecyan','palegray','palegreen','palegrey',
'palemagenta','palered','paleyellow','parabolanodesnumberfactor','perpfactor','phi','photonamplitude','photonpen','photonratio','pi','pink','plain','plain_bounds','plain_scaling','plus','preamblenodes','pt','purple','r3','r4a','r4b','randMax','realDigits','realEpsilon','realMax','realMin','red','relativesystem','reverse','right','roundcap','roundjoin','royalblue','salmon','saveFunctions','scalarpen','sequencereal','settings','shipped','signedtrailingzero','solid','springgreen','sqrtEpsilon','squarecap','squarepen','startposition','stdin','stdout','stepfactor','stepfraction','steppagenumberpen','stepping','stickframe','stickmarksizefactor','stickmarkspacefactor','swap','textpen','ticksize','tildeframe','tildemarksizefactor','tinv','titlealign','titlepagepen','titlepageposition','titlepen','titleskip','top','trailingzero','treeLevelStep','treeMinNodeWidth','treeNodeStep','trembleAngle','trembleFrequency','trembleRandom','undefined','unitcircle','unitsquare','up','urlpen','urlskip','version','vertexpen','vertexsize','viewportmargin','viewportsize','vline','white','wye','xformStack','yellow','ylabelwidth','zerotickfuzz','zerowinding'
)
),
'SYMBOLS' => array(
0 => array(
'(', ')', '{', '}', '[', ']'
),
1 => array('<', '>','='),
2 => array('+', '-', '*', '/', '%'),
3 => array('!', '^', '&', '|'),
4 => array('?', ':', ';'),
5 => array('..')
),
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
1 => true,
2 => true,
3 => true,
4 => true
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #b1b100;',
2 => 'color: #000000; font-weight: bold;',
3 => 'color: #990000;',
4 => 'color: #009900; font-weight: bold;'
),
'COMMENTS' => array(
1 => 'color: #666666;',
2 => 'color: #339900;',
'MULTI' => 'color: #ff0000; font-style: italic;'
),
'ESCAPE_CHAR' => array(
0 => 'color: #000099; font-weight: bold;',
1 => 'color: #000099; font-weight: bold;',
2 => 'color: #660099; font-weight: bold;',
3 => 'color: #660099; font-weight: bold;',
4 => 'color: #660099; font-weight: bold;',
5 => 'color: #006699; font-weight: bold;',
'HARD' => '',
),
'BRACKETS' => array(
0 => 'color: #008000;'
),
'STRINGS' => array(
0 => 'color: #FF0000;'
),
'NUMBERS' => array(
0 => 'color: #0000dd;',
GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
),
'METHODS' => array(
1 => 'color: #007788;',
2 => 'color: #007788;'
),
'SYMBOLS' => array(
0 => 'color: #008000;',
1 => 'color: #000080;',
2 => 'color: #000040;',
3 => 'color: #000040;',
4 => 'color: #008080;',
5 => 'color: #009080;'
),
'REGEXPS' => array(
),
'SCRIPT' => array(
)
),
'URLS' => array(
1 => '',
2 => '',
3 => '',
4 => ''
),
'OOLANG' => true,
'OBJECT_SPLITTERS' => array(
1 => '.',
2 => '::'
),
'REGEXPS' => array(
),
'STRICT_MODE_APPLIES' => GESHI_MAYBE,
'SCRIPT_DELIMITERS' => array(
),
'HIGHLIGHT_STRICT_BLOCK' => array(
),
'TAB_WIDTH' => 4,
'PARSER_CONTROL' => array(
'KEYWORDS' => array(
'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#])",
'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-])"
)
)
);
?>

View File

@ -4,7 +4,7 @@
* -----
* Author: Mihai Vasilian (grayasm@gmail.com)
* Copyright: (c) 2010 Mihai Vasilian
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010/01/25
*
* autoconf language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Naveen Garg (naveen.garg@gmail.com)
* Copyright: (c) 2009 Naveen Garg and GeSHi
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/06/11
*
* Autohotkey language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: big_daddy (robert.i.anthony@gmail.com)
* Copyright: (c) 2006 and to GESHi ;)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2006/01/26
*
* AutoIT language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Ryan Jones (sciguyryan@gmail.com)
* Copyright: (c) 2008 Ryan Jones
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2008/10/08
*
* AviSynth language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: George Pollard (porges@porg.es)
* Copyright: (c) 2009 George Pollard
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/01/28
*
* Awk language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: aquaticus.info
* Copyright: (c) 2008 aquaticus.info
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2008/01/09
*
* BASCOM AVR language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Andreas Gohr (andi@splitbrain.org)
* Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/08/20
*
* BASH language file for GeSHi.
@ -157,8 +157,8 @@ $language_data = array (
'ed', 'egrep', 'env', 'expr',
'false', 'fbset', 'ffmpeg', 'fgconsole','fgrep', 'file', 'find',
'flex', 'flex++', 'fmt', 'free', 'ftp', 'funzip', 'fuser',
'false', 'fbset', 'fdisk', 'ffmpeg', 'fgconsole','fgrep', 'file',
'find', 'flex', 'flex++', 'fmt', 'free', 'ftp', 'funzip', 'fuser',
'g++', 'gawk', 'gc','gcc', 'gdb', 'getent', 'getkeycodes',
'getopt', 'gettext', 'gettextize', 'gimp', 'gimp-remote',

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Matthew Webb (bmatthew1@blueyonder.co.uk)
* Copyright: (c) 2004 Matthew Webb (http://matthew-4gl.wikispaces.com)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2007/09/15
*
* Basic4GL language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Benny Baumann (BenBE@geshi.org)
* Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/10/31
*
* Brainfuck language file for GeSHi.
@ -63,7 +63,7 @@ $language_data = array (
1 => 'color: #666666; font-style: italic;'
),
'BRACKETS' => array(
0 => 'color: #66cc66;'
0 => 'color: #660000;'
),
'STRINGS' => array(
0 => 'color: #ff0000;'
@ -76,8 +76,8 @@ $language_data = array (
0 => 'color: #006600;',
1 => 'color: #660000;',
2 => 'color: #000066;',
3 => 'color: #660066;',
4 => 'color: #666600;'
3 => 'color: #666600;',
4 => 'color: #660066;'
),
'ESCAPE_CHAR' => array(
),
@ -102,8 +102,9 @@ $language_data = array (
'PARSER_CONTROL' => array(
'ENABLE_FLAGS' => array(
'STRINGS' => GESHI_NEVER,
'NUMBERS' => GESHI_NEVER
),
'NUMBERS' => GESHI_NEVER,
'BRACKETS' => GESHI_NEVER
),
'KEYWORDS' => array(
'DISALLOW_BEFORE' => '',
'DISALLOW_AFTER' => ''
@ -111,4 +112,4 @@ $language_data = array (
)
);
?>
?>

View File

@ -4,7 +4,7 @@
* -----
* Author: Quinn Taylor (quinntaylor@mac.com)
* Copyright: (c) 2009 Quinn Taylor (quinntaylor@mac.com), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/04/29
*
* BibTeX language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------------
* Author: P<EFBFBD>draig O`Connel (info@moonsword.info)
* Copyright: (c) 2005 P<EFBFBD>draig O`Connel (http://moonsword.info)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 16.10.2005
*
* BlitzBasic language file for GeSHi.
@ -56,7 +56,7 @@ $language_data = array (
'ESCAPE_CHAR' => '',
'KEYWORDS' => array(
1 => array(
'If','EndIf','ElseIf','Else If','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select',
'If','EndIf','ElseIf','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select',
'Type','Forever','For','Or','And','AppTitle','Case','Goto','Gosub','Step','Stop','Int','Last','False','Then','To','True','Until','Float',
'String','Before','Not'
),

View File

@ -4,7 +4,7 @@
* --------
* Author: Rowan Rodrik van der Molen (rowan@bigsmoke.us)
* Copyright: (c) 2006 Rowan Rodrik van der Molen (http://www.bigsmoke.us/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2006/09/28
*
* BNF (Backus-Naur form) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Marcus Griep (neoeinstein+GeSHi@gmail.com)
* Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2007/09/10
*
* Boo language file for GeSHi.

View File

@ -7,7 +7,7 @@
* - Jack Lloyd (lloyd@randombit.net)
* - Michael Mol (mikemol@gmail.com)
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/06/04
*
* C language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Stuart Moncrieff (stuart at myloadtest dot com)
* Copyright: (c) 2010 Stuart Moncrieff (http://www.myloadtest.com/loadrunner-syntax-highlighter/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010-07-25
*
* C (for LoadRunner) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------
* Author: M. Uli Kusterer (witness.of.teachtext@gmx.net)
* Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/06/04
*
* C for Macs language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Roberto Rossi (rsoftware@altervista.org)
* Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/08/30
*
* CAD DCL (Dialog Control Language) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -----------
* Author: Roberto Rossi (rsoftware@altervista.org)
* Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/08/30
*
* AutoCAD/IntelliCAD Lisp language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: John Horigan <john@glyphic.com>
* Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2006/03/11
*
* CFDG language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Diego
* Copyright: (c) 2006 Diego
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2006/02/25
*
* ColdFusion language file for GeSHi.

View File

@ -6,7 +6,7 @@
* Copyright: (c) 2010 Jason Turner (lefticus@gmail.com),
* (c) 2009 Jonathan Turner,
* (c) 2004 Ben Keen (ben.keen@gmail.com), Benny Baumann (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/07/03
*
* ChaiScript language file for GeSHi.
@ -52,7 +52,7 @@ $language_data = array (
'ESCAPE_CHAR' => '\\',
'KEYWORDS' => array(
1 => array(
'break', 'else', 'else if', 'eval', 'for', 'if', 'return', 'while', 'try', 'catch', 'finally',
'break', 'else', 'elseif', 'eval', 'for', 'if', 'return', 'while', 'try', 'catch', 'finally',
),
2 => array(
'def', 'false', 'fun', 'true', 'var', 'attr',

View File

@ -4,7 +4,7 @@
* --------
* Author: Marcus Griep (neoeinstein+GeSHi@gmail.com)
* Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2007/10/24
*
* CIL (Common Intermediate Language) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Jess Johnson (jess@grok-code.com)
* Copyright: (c) 2009 Jess Johnson (http://grok-code.com)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/09/20
*
* Clojure language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Daniel Nelson (danieln@eng.utah.edu)
* Copyright: (c) 2009 Daniel Nelson
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/04/06
*
* CMake language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: BenBE (BenBE@omorphia.org)
* Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2007/07/02
*
* COBOL language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Trevor Burnham (trevorburnham@gmail.com)
* Copyright: (c) 2010 Trevor Burnham (http://iterative.ly)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2010/06/08
*
* CoffeeScript language file for GeSHi.

View File

@ -4,10 +4,10 @@
* -------
* Author: Iulian M
* Copyright: (c) 2006 Iulian M
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/09/27
*
* C++ (with QT extensions) language file for GeSHi.
* C++ (with Qt extensions) language file for GeSHi.
*
* CHANGES
* -------
@ -41,7 +41,7 @@
************************************************************************************/
$language_data = array (
'LANG_NAME' => 'C++ (QT)',
'LANG_NAME' => 'C++ (Qt)',
'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
'COMMENT_MULTI' => array('/*' => '*/'),
'COMMENT_REGEXP' => array(

View File

@ -7,7 +7,7 @@
* - M. Uli Kusterer (witness.of.teachtext@gmx.net)
* - Jack Lloyd (lloyd@randombit.net)
* Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/09/27
*
* C++ language file for GeSHi.

View File

@ -5,13 +5,15 @@
* Author: Alan Juden (alan@judenware.org)
* Revised by: Michael Mol (mikemol@gmail.com)
* Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/06/04
*
* C# language file for GeSHi.
*
* CHANGES
* -------
* 2012/06/18 (1.0.8.11)
* - Added missing keywords (Christian Stelzmann)
* 2009/04/03 (1.0.8.6)
* - Added missing keywords identified by Rosetta Code users.
* 2008/05/25 (1.0.7.22)
@ -60,14 +62,15 @@ $language_data = array (
'ESCAPE_CHAR' => '\\',
'KEYWORDS' => array(
1 => array(
'as', 'auto', 'base', 'break', 'case', 'catch', 'const', 'continue',
'abstract', 'add', 'as', 'base', 'break', 'by', 'case', 'catch', 'const', 'continue',
'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',
'finally', 'fixed', 'for', 'foreach', 'from', 'goto', 'if',
'implicit', 'in', 'internal', 'lock', 'namespace', 'null',
'finally', 'fixed', 'for', 'foreach', 'from', 'get', 'goto', 'group', 'if',
'implicit', 'in', 'into', 'internal', 'join', 'lock', 'namespace', 'null',
'operator', 'out', 'override', 'params', 'partial', 'private',
'protected', 'public', 'readonly', 'ref', 'return', 'sealed',
'select', 'stackalloc', 'static', 'switch', 'this', 'throw', 'true',
'try', 'unsafe', 'using', 'virtual', 'where', 'while', 'yield'
'protected', 'public', 'readonly', 'remove', 'ref', 'return', 'sealed',
'select', 'set', 'stackalloc', 'static', 'switch', 'this', 'throw', 'true',
'try', 'unsafe', 'using', 'var', 'value', 'virtual', 'volatile', 'where',
'while', 'yield'
),
2 => array(
'#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',
@ -78,7 +81,7 @@ $language_data = array (
),
4 => array(
'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',
'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte',
'dynamic', 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte',
'short', 'string', 'struct', 'uint', 'ulong', 'ushort', 'void'
),
5 => array(

View File

@ -4,7 +4,7 @@
* -------
* Author: Nigel McNie (nigel@geshi.org)
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/06/18
*
* CSS language file for GeSHi.
@ -72,6 +72,8 @@ $language_data = array (
'aqua', 'azimuth', 'background-attachment', 'background-color',
'background-image', 'background-position', 'background-repeat',
'background', 'black', 'blue', 'border-bottom-color',
'border-radius', 'border-top-left-radius', 'border-top-right-radius',
'border-bottom-right-radius', 'border-bottom-left-radius',
'border-bottom-style', 'border-bottom-width', 'border-left-color',
'border-left-style', 'border-left-width', 'border-right',
'border-right-color', 'border-right-style', 'border-right-width',
@ -215,7 +217,8 @@ $language_data = array (
'TAB_WIDTH' => 4,
'PARSER_CONTROL' => array(
'KEYWORDS' => array(
'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\.])'
'DISALLOWED_AFTER' => '(?![\-a-zA-Z0-9_\|%\\-&\.])',
'DISALLOWED_BEFORE' => '(?<![\-a-zA-Z0-9_\|%\\~&\.])'
)
)
);

View File

@ -4,7 +4,7 @@
* ----------
* Author: Benny Baumann (benbe@geshi.org)
* Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/12/21
*
* Cuesheet language file for GeSHi.

View File

@ -3,14 +3,18 @@
* d.php
* -----
* Author: Thomas Kuehne (thomas@kuehne.cn)
* Contributors:
* - Jimmy Cao
* Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2005/04/22
*
* D language file for GeSHi.
*
* CHANGES
* -------
* 2011/06/28 (0.0.3) (Jimmy Cao)
* - added D2 features
* 2005/04/22 (0.0.2)
* - added _d_* and sizeof/ptrdiff_t
* 2005/04/20 (0.0.1)
@ -45,7 +49,7 @@
$language_data = array (
'LANG_NAME' => 'D',
'COMMENT_SINGLE' => array(2 => '///', 1 => '//'),
'COMMENT_MULTI' => array('/*' => '*/'),
'COMMENT_MULTI' => array('/*' => '*/', '/+' => '+/'),
'COMMENT_REGEXP' => array(
// doxygen comments
3 => '#/\*\*(?![\*\/]).*\*/#sU',
@ -126,63 +130,39 @@ $language_data = array (
1 => array(
'break', 'case', 'continue', 'do', 'else',
'for', 'foreach', 'goto', 'if', 'return',
'switch', 'while'
'switch', 'while', 'foreach_reverse'
),
2 => array(
'alias', 'asm', 'assert', 'body', 'cast',
'catch', 'default', 'delegate', 'delete',
'extern', 'false', 'finally', 'function',
'import', 'in', 'inout', 'interface',
'invariant', 'is', 'mixin', 'module', 'new',
'import', 'in', 'inout',
'invariant', 'is', 'lazy', 'mixin', 'module', 'new',
'null', 'out', 'pragma', 'ref', 'super', 'this',
'throw', 'true', 'try', 'typedef', 'typeid',
'typeof', 'union', 'with'
'throw', 'true', 'try', 'typeid',
'typeof', 'union', 'with', 'scope'
),
3 => array(
'ArrayBoundsError', 'AssertError',
'ClassInfo', 'Error', 'Exception',
'Interface', 'ModuleInfo', 'Object',
'OutOfMemoryException', 'SwitchError',
'TypeInfo', '_d_arrayappend',
'_d_arrayappendb', '_d_arrayappendc',
'_d_arrayappendcb', '_d_arraycast',
'_d_arraycast_frombit', '_d_arraycat',
'_d_arraycatb', '_d_arraycatn',
'_d_arraycopy', '_d_arraycopybit',
'_d_arraysetbit', '_d_arraysetbit2',
'_d_arraysetlength', '_d_arraysetlengthb',
'_d_callfinalizer',
'_d_create_exception_object',
'_d_criticalenter', '_d_criticalexit',
'_d_delarray', '_d_delclass',
'_d_delinterface', '_d_delmemory',
'_d_dynamic_cast', '_d_exception',
'_d_exception_filter', '_d_framehandler',
'_d_interface_cast', '_d_interface_vtbl',
'_d_invariant', '_d_isbaseof',
'_d_isbaseof2', '_d_local_unwind',
'_d_monitorenter', '_d_monitorexit',
'_d_monitorrelease', '_d_monitor_epilog',
'_d_monitor_handler', '_d_monitor_prolog',
'_d_new', '_d_newarrayi', '_d_newbitarray',
'_d_newclass', '_d_obj_cmp', '_d_obj_eq',
'_d_OutOfMemory', '_d_switch_dstring',
'_d_switch_string', '_d_switch_ustring',
'_d_throw',
'Interface', 'Object', 'IMonitor',
'OffsetTypeInfo', 'Throwable',
'TypeInfo_Class', 'TypeInfo', '__traits',
'__EOF__', '__FILE__', '__LINE__',
),
4 => array(
'abstract', 'align', 'auto', 'bit', 'bool',
'byte', 'cdouble', 'cent', 'cfloat', 'char',
'class', 'const', 'creal', 'dchar', 'debug',
'byte', 'cdouble', 'cfloat', 'char',
'class', 'const', 'creal', 'dchar', 'dstring', 'debug',
'deprecated', 'double', 'enum', 'export',
'final', 'float', 'idouble', 'ifloat', 'int',
'ireal', 'long', 'override', 'package',
'private', 'protected', 'ptrdiff_t',
'public', 'real', 'short', 'size_t',
'static', 'struct', 'synchronized',
'final', 'float', 'idouble', 'ifloat', 'immutable', 'int',
'interface', 'ireal', 'long', 'nothrow', 'override',
'package', 'private', 'protected', 'ptrdiff_t',
'public', 'real', 'short', 'shared', 'size_t',
'static', 'string', 'struct', 'synchronized',
'template', 'ubyte', 'ucent', 'uint',
'ulong', 'unittest', 'ushort', 'version',
'void', 'volatile', 'wchar'
'void', 'volatile', 'wchar', 'wstring',
'__gshared', '@disable', '@property', 'pure', 'safe'
)
),
'SYMBOLS' => array(

View File

@ -0,0 +1,192 @@
<?php
/*************************************************************************************
* dcl.php
* --------
* Author: Petr Hendl (petr@hendl.cz)
* Copyright: (c) 2011 Petr Hendl http://hendl.cz/geshi/
* Release Version: 1.0.8.11
* Date Started: 2011/02/17
*
* DCL language file for GeSHi.
*
* CHANGES
* -------
* 2011-02-17 (1.0.8.11)
* - First Release
*
* TODO
* -------------------------
*
*************************************************************************************
*
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
************************************************************************************/
$language_data = array (
'LANG_NAME' => 'DCL',
'COMMENT_SINGLE' => array('$!', '!'),
'COMMENT_MULTI' => array(),
'COMMENT_REGEXP' => array(
2 => '/(?<=\$)\s*sql\s+.*?(?:quit|exit);?\s*?$/sim' // do not highlight inline sql
),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array('"'),
'HARDESCAPE' => array(),
'ESCAPE_CHAR' => '',
'ESCAPE_REGEXP' => array(
1 => "/''[a-zA-Z\\-_]+'/"
),
'KEYWORDS' => array(
1 => array( // commands
'ACCOUNTING', 'ALLOCATE', 'ANALYZE', 'APPEND', 'ASSIGN', 'ATTACH', 'BACKUP',
'CALL', 'CANCEL', 'CHECKSUM', 'CLOSE', 'CONNECT', 'CONTINUE', 'CONVERT',
'COPY', 'CREATE', 'DEALLOCATE', 'DEASSIGN', 'DEBUG', 'DECK',
'DECRYPT', 'DEFINE', 'DELETE', 'DEPOSIT', 'DIFFERENCES', 'DIRECTORY',
'DISABLE', 'AUTOSTART', 'DISCONNECT', 'DISMOUNT', 'DUMP', 'EDIT', 'ENABLE',
'ENCRYPT', 'ENDSUBROUTINE', 'EOD', 'EOJ', 'EXAMINE', 'EXCHANGE',
'EXIT', 'FONT', 'GOSUB', 'GOTO', 'HELP', 'IF', 'THEN', 'ELSE', 'ENDIF', 'INITIALIZE', 'INQUIRE',
'INSTALL', 'JAVA', 'JOB', 'LIBRARY', 'LICENSE', 'LINK', 'LOGIN', 'LOGOUT',
'MACRO', 'MAIL', 'MERGE', 'MESSAGE', 'MONITOR', 'MOUNT', 'NCS', 'ON', 'OPEN',
'PASSWORD', 'PATCH', 'PHONE', 'PIPE', 'PPPD', 'PRINT', 'PRODUCT', 'PURGE',
'READ', 'RECALL', 'RENAME', 'REPLY', 'REQUEST', 'RETURN', 'RMU', 'RUN', 'RUNOFF',
'SEARCH', 'SET', 'SET AUDIT', 'SET BOOTBLOCK', 'SET BROADCAST',
'SET CACHE', 'SET CARD_READER', 'SET CLUSTER', 'SET COMMAND', 'SET CONTROL',
'SET CPU', 'SET DAY', 'SET DEFAULT', 'SET DEVICE', 'SET DIRECTORY',
'SET DISPLAY', 'SET ENTRY', 'SET FILE', 'SET HOST', 'SET IMAGE', 'SET KEY',
'SET LOGINS', 'SET MAGTAPE', 'SET MESSAGE', 'SET NETWORK', 'SET ON', 'SET OUTPUT_RATE',
'SET PASSWORD', 'SET PREFERRED_PATH', 'SET PREFIX', 'SET PRINTER', 'SET PROCESS',
'SET PROMPT', 'SET PROTECTION', 'SET QUEUE', 'SET RESTART_VALUE',
'SET RIGHTS_LIST', 'SET RMS_DEFAULT', 'SET ROOT', 'SET SECURITY',
'SET SERVER ACME_SERVER', 'SET SERVER REGISTRY_SERVER', 'SET SERVER SECURITY_SERVER',
'SET SHADOW', 'SET SYMBOL', 'SET TERMINAL', 'SET TIME', 'SET VERIFY',
'SET VOLUME', 'SET WORKING_SET', 'SHOW', 'SHOW AUDIT',
'SHOW BROADCAST', 'SHOW CLUSTER', 'SHOW CPU', 'SHOW DEFAULT', 'SHOW DEVICES',
'SHOW DISPLAY', 'SHOW ENTRY', 'SHOW ERROR', 'SHOW FASTPATH', 'SHOW IMAGE',
'SHOW INTRUSION', 'SHOW KEY', 'SHOW LICENSE', 'SHOW LOGICAL', 'SHOW MEMORY',
'SHOW NETWORK', 'SHOW PRINTER', 'SHOW PROCESS', 'SHOW PROTECTION', 'SHOW QUEUE',
'SHOW QUOTA', 'SHOW RMS_DEFAULT', 'SHOW ROOT', 'SHOW SECURITY',
'SHOW SERVER ACME_SERVER', 'SHOW SERVER REGISTRY_SERVER', 'SHOW SHADOW',
'SHOW STATUS', 'SHOW SYMBOL', 'SHOW SYSTEM', 'SHOW TERMINAL', 'SHOW TIME',
'SHOW TRANSLATION', 'SHOW USERS', 'SHOW WORKING_SET', 'SHOW ZONE', 'SORT',
'SPAWN', 'START', 'STOP', 'SUBMIT', 'SUBROUTINE', 'SYNCHRONIZE', 'TYPE',
'UNLOCK', 'VIEW', 'WAIT', 'WRITE', 'XAUTH'
),
2 => array( // lexical functions
'F$CONTEXT', 'F$CSID', 'F$CUNITS', 'F$CVSI', 'F$CVTIME', 'F$CVUI',
'F$DELTA_TIME', 'F$DEVICE', 'F$DIRECTORY', 'F$EDIT', 'F$ELEMENT',
'F$ENVIRONMENT', 'F$EXTRACT', 'F$FAO', 'F$FID_TO_NAME', 'F$FILE_ATTRIBUTES',
'F$GETDVI', 'F$GETENV', 'F$GETJPI', 'F$GETQUI', 'F$GETSYI', 'F$IDENTIFIER',
'F$INTEGER', 'F$LENGTH', 'F$LICENSE', 'F$LOCATE', 'F$MATCH_WILD', 'F$MESSAGE',
'F$MODE', 'F$MULTIPATH', 'F$PARSE', 'F$PID', 'F$PRIVILEGE', 'F$PROCESS',
'F$SEARCH', 'F$SETPRV', 'F$STRING', 'F$TIME', 'F$TRNLNM', 'F$TYPE', 'F$UNIQUE',
'F$USER', 'F$VERIFY'
),
3 => array( // special variables etc
'sql$database', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9',
'$status', '$severity', 'sys$login', 'sys$system',
'sys$input', 'sys$output', 'sys$pipe'
)
),
'SYMBOLS' => array(
'(', ')', '[', ']', '@', '&', '|', '<', '>', '-',
'.eqs.', '.eq.', '.lt.', '.lts.', '.gt.', '.gts.', '.ne.', '.nes.',
'.le.', '.ge.', '.ges.', '.les.',
'.EQS.', '.EQ.', '.LT.', '.LTS.', '.GT.', '.GTS.', '.NE.', '.NES.',
'.LE.', '.GE.', '.GES.', '.LES.',
'.and.', '.or.', '.not.',
'.AND.', '.OR.', '.NOT.',
'==', ':==', '=', ':='
),
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
1 => false,
2 => false,
3 => false
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #000099; font-weight: bold;',
2 => 'color: #0066FF;',
3 => 'color: #993300;'
),
'COMMENTS' => array(
0 => 'color: #666666; font-style: italic;',
1 => 'color: #666666; font-style: italic;',
2 => 'color: #9999FF; font-style: italic;'
),
'ESCAPE_CHAR' => array(
0 => 'color: #006666;',
1 => 'color: #0099FF;',
2 => 'color: red;',
3 => 'color: #007800;',
4 => 'color: #007800;',
5 => 'color: #780078;'
),
'BRACKETS' => array(
0 => 'color: #7a0874; font-weight: bold;'
),
'STRINGS' => array(
0 => 'color: #009900;'
),
'NUMBERS' => array(
0 => 'color: #000000;'
),
'METHODS' => array(
),
'SYMBOLS' => array(
0 => 'color: #000000; font-weight: bold;'
),
'REGEXPS' => array(
0 => 'color: #0099FF;', // variables
1 => 'color: #0000FF;', // qualifiers
2 => 'color: #FF6600; font-weight: bold;' // labels
),
'SCRIPT' => array(
)
),
'URLS' => array(
1 => '',
2 => '',
3 => ''
),
'OOLANG' => false,
'OBJECT_SPLITTERS' => array(
),
'REGEXPS' => array(
// variables
0 => "'[a-zA-Z_\\-$]+'",
// qualifiers and parameters
1 => "(?:\/[a-zA-Z_\/]+)[\s=]",
// labels
2 => '(?<=\$)\s*[a-zA-Z\-_]+:'
),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(
),
'HIGHLIGHT_STRICT_BLOCK' => array(
),
'TAB_WIDTH' => 4,
'PARSER_CONTROL' => array(
'COMMENTS' => array(
),
'KEYWORDS' => array(
)
)
);
?>

View File

@ -0,0 +1,131 @@
<?php
/*************************************************************************************
* dcpu16.php
* -------
* Author: Benny Baumann (BenBE@omorphia.de)
* Copyright: (c) 2007-2012 Benny Baumann (http://geshi.org/)
* Release Version: 1.0.8.11
* Date Started: 2012/04/12
*
* DCPU/16 Assembly language file for GeSHi.
* Syntax definition based on http://0x10c.com/doc/dcpu-16.txt
*
* CHANGES
* -------
* 2012/04/12 (1.0.0)
* - First Release
*
* TODO (updated 2012/04/12)
* -------------------------
*
*************************************************************************************
*
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
************************************************************************************/
$language_data = array (
'LANG_NAME' => 'DCPU-16 Assembly',
'COMMENT_SINGLE' => array(1 => ';'),
'COMMENT_MULTI' => array(),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array("'", '"'),
'ESCAPE_CHAR' => '',
'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_HEX_PREFIX,
'KEYWORDS' => array(
/*CPU*/
1 => array(
'set','add','sub','mul','div','mod','shl','shr','and','bor','xor',
'ife','ifn','ifg','ifb',
'jsr'
),
/*registers*/
2 => array(
'a','b','c','x','y','z','i','j',
'pc','sp','o',
'pop','peek','push' //Special cases with DCPU-16
),
),
'SYMBOLS' => array(
'[', ']', '+', '-', ','
),
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
1 => false,
2 => false,
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #000088; font-weight:bold;',
2 => 'color: #0000ff;'
),
'COMMENTS' => array(
1 => 'color: #adadad; font-style: italic;',
),
'ESCAPE_CHAR' => array(
0 => 'color: #000099; font-weight: bold;'
),
'BRACKETS' => array(
0 => 'color: #000088;'
),
'STRINGS' => array(
0 => 'color: #7f007f;'
),
'NUMBERS' => array(
0 => 'color: #880000;'
),
'METHODS' => array(
),
'SYMBOLS' => array(
0 => 'color: #008000;'
),
'REGEXPS' => array(
2 => 'color: #993333;'
),
'SCRIPT' => array(
)
),
'URLS' => array(
1 => 'http://0x10c.com/doc/dcpu-16.txt',
2 => ''
),
'OOLANG' => false,
'OBJECT_SPLITTERS' => array(
),
'REGEXPS' => array(
//Hex numbers
//0 => '0[0-9a-fA-F]{1,32}[hH]',
//Binary numbers
//1 => '\%[01]{1,64}|[01]{1,64}[bB]?(?![^<]*>)',
//Labels
2 => '^:[_a-zA-Z][_a-zA-Z0-9]?(?=\s|$)'
),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(
),
'HIGHLIGHT_STRICT_BLOCK' => array(
),
'TAB_WIDTH' => 4,
'PARSER_CONTROL' => array(
'KEYWORDS' => array(
'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#\/])",
'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-])"
)
)
);
?>

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Stelio Passaris (GeSHi@stelio.net)
* Copyright: (c) 2009 Stelio Passaris (http://stelio.net/stiki/GeSHi)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2009/01/20
*
* DCS language file for GeSHi.

View File

@ -4,13 +4,17 @@
* ----------
* Author: J<EFBFBD>rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de)
* Copyright: (c) 2004 J<EFBFBD>rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.10
* Release Version: 1.0.8.11
* Date Started: 2004/07/26
*
* Delphi (Object Pascal) language file for GeSHi.
*
* CHANGES
* -------
* 2012/06/27 (1.0.8.11)
* - Added some keywords
* - fixed hex numbers and hex char literals (including WideChar)
* - Added support for FPC-Style generics
* 2008/05/23 (1.0.7.22)
* - Added description of extra language features (SF#1970248)
* 2005/11/19 (1.0.3)
@ -51,27 +55,28 @@ $language_data = array (
'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
//Compiler directives
'COMMENT_REGEXP' => array(2 => '/\\{\\$.*?}|\\(\\*\\$.*?\\*\\)/U'),
'CASE_KEYWORDS' => 0,
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array("'"),
'ESCAPE_CHAR' => '',
'KEYWORDS' => array(
1 => array(
'Abstract', 'And', 'Array', 'As', 'Asm', 'At', 'Begin', 'Case',
'Class', 'Const', 'Constructor', 'Contains', 'Destructor',
'Class', 'Const', 'Constructor', 'Contains', 'Default', 'delayed', 'Destructor',
'DispInterface', 'Div', 'Do', 'DownTo', 'Else', 'End', 'Except',
'Export', 'Exports', 'External', 'File', 'Finalization', 'Finally',
'For', 'Function', 'Goto', 'If', 'Implementation', 'In', 'Inherited',
'Initialization', 'Inline', 'Interface', 'Is', 'Label', 'Library',
'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override',
'Export', 'Exports', 'External', 'File', 'Finalization', 'Finally', 'For',
'Function', 'Generic', 'Goto', 'If', 'Implementation', 'In', 'Inherited',
'Initialization', 'Inline', 'Interface', 'Is', 'Label', 'Library', 'Message',
'Mod', 'Nil', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override',
'Package', 'Packed', 'Private', 'Procedure', 'Program', 'Property',
'Protected', 'Public', 'Published', 'Raise', 'Record', 'Register',
'Repeat', 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Then',
'ThreadVar', 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var',
'Virtual', 'While', 'With', 'Xor', 'assembler', 'far',
'Protected', 'Public', 'Published', 'Read', 'Raise', 'Record', 'Register',
'Repeat', 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Specialize', 'Stored',
'Then', 'ThreadVar', 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var',
'Virtual', 'While', 'With', 'Write', 'Xor', 'assembler', 'far',
'near', 'pascal', 'cdecl', 'safecall', 'stdcall', 'varargs'
),
2 => array(
'nil', 'false', 'self', 'true', 'var', 'type', 'const'
'false', 'self', 'true',
),
3 => array(
'Abs', 'AcquireExceptionObject', 'Addr', 'AnsiToUtf8', 'Append', 'ArcTan',
@ -250,7 +255,7 @@ $language_data = array (
1 => 'color: #006600;'
),
'REGEXPS' => array(
0 => 'color: #9ac;',
0 => 'color: #0000cc;',
1 => 'color: #ff0000;'
),
'SYMBOLS' => array(
@ -274,16 +279,23 @@ $language_data = array (
),
'REGEXPS' => array(
//Hex numbers
0 => '\$[0-9a-fA-F]+',
0 => '(?<!\#)\$[0-9a-fA-F]+(?!\w)',
//Characters
1 => '\#(?:\$[0-9a-fA-F]{1,2}|\d{1,3})'
1 => '\#(?:\$[0-9a-fA-F]{1,4}|\d{1,5})'
),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(
),
'HIGHLIGHT_STRICT_BLOCK' => array(
),
'TAB_WIDTH' => 2
'TAB_WIDTH' => 2,
'PARSER_CONTROL' => array(
'KEYWORDS' => array(
3 => array(
'DISALLOWED_AFTER' => '(?=\s*[(;])'
)
)
)
);
?>
?>

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