diff options
author | redmatrix <git@macgirvin.com> | 2016-06-15 19:44:15 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-06-15 19:44:15 -0700 |
commit | fa48de33c2f6cefbac8bfec7cde75b75390d5f39 (patch) | |
tree | 63440977ec1d802850c7b8c21496f01c9a44e7fd /library/Text_Highlighter/perl.xml | |
parent | 476116a972c0f8b8ade495de557b8fc8d3097964 (diff) | |
download | volse-hubzilla-fa48de33c2f6cefbac8bfec7cde75b75390d5f39.tar.gz volse-hubzilla-fa48de33c2f6cefbac8bfec7cde75b75390d5f39.tar.bz2 volse-hubzilla-fa48de33c2f6cefbac8bfec7cde75b75390d5f39.zip |
provide syntax based [colour] highlighting on code blocks for popular languages. I'm not happy with the line height on the list elements but couldn't see where this was defaulted. This uses the syntax [code=xxx]some code snippet[/code], where xxx represents a code/language style - with about 18 builtins.
Diffstat (limited to 'library/Text_Highlighter/perl.xml')
-rw-r--r-- | library/Text_Highlighter/perl.xml | 439 |
1 files changed, 439 insertions, 0 deletions
diff --git a/library/Text_Highlighter/perl.xml b/library/Text_Highlighter/perl.xml new file mode 100644 index 000000000..54f8835ea --- /dev/null +++ b/library/Text_Highlighter/perl.xml @@ -0,0 +1,439 @@ +<?xml version="1.0"?> +<!-- $Id: perl.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="perl" case = "yes"> + + <authors> + <author name="Mariusz 'kg' Jakubowski" email="kg@alternatywa.info" jid="kg@chrome.pl"/> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + <comment>This highlighter is EXPERIMENTAL, so that it may work incorrectly. +Most rules were created by Mariusz Jakubowski, and extended by me. +My knowledge of Perl is poor, and Perl syntax seems too +complicated to me.</comment> + + <default innerClass="code"/> + + <block name="interpreter" match="/^(#!)(.*)/m" innerClass="special"> + <partClass index="1" innerClass="special" /> + <partClass index="2" innerClass="string" /> + </block> + + <region name="pod" innerClass="comment" start="/^=\w+/m" end="/^=cut[^\n]*/m" startBOL="yes" endBOL="yes"/> + + <!-- + brackets + --> + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + <!-- + use smth + --> + <block name="usestatement" match="(use)\s+([\w:]*)" innerClass="special"> + <partClass index="1" innerClass="reserved" /> + <partClass index="2" innerClass="special" /> + </block> + + <block name="packagereference" match="[& ](\w{2,}::)+\w{2,}" innerClass="special"/> + + <region name="q-w-q-statement" + start="/\b(q[wq]\s*((\{)|(\()|(\[)|(\<)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\>)(?(7)\7)))/Us" + end="%b2%" + innerClass="string" delimClass="quotes" remember="yes"> + + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + + </region> + + <region name="qstatement" + start="/\b(q\s*((\{)|(\()|(\[)|(\<)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\>)(?(7)\7)))/Us" + end="%b2%" + innerClass="string" delimClass="quotes" remember="yes"> + + </region> + + <!-- + comments + --> + <block name="comment" match="#.*" innerClass="comment" /> + + + <!-- + regexpr + FIXME: this should be rewrited + --> + <block name="dblregexprver1" match="/(s|tr) ([|#~`!@$%^&*-+=\\;:'",.\/?]) ((\\.|[^\\])*?) (\2)((\\.|[^\\])*?)(\2[ecgimosx]*)/x" innerClass="string"> + <partClass index="1" innerClass="quotes" /> + <partClass index="2" innerClass="quotes" /> + <partClass index="3" innerClass="string" /> + <partClass index="5" innerClass="quotes" /> + <partClass index="6" innerClass="string" /> + <partClass index="8" innerClass="quotes" /> + </block> + + <block name="dblregexprver2" match="/(m) ([|#~`!@$%^&*-+=\\;:'",.\/?]) ((\\.|[^\\])*?) (\2[ecgimosx]*)/x" innerClass="string"> + <partClass index="1" innerClass="quotes" /> + <partClass index="2" innerClass="quotes" /> + <partClass index="3" innerClass="string" /> + <partClass index="5" innerClass="quotes" /> + </block> + + + <region name="regexp" start=" \/" end="\/[cgimosx]*" innerClass="string" delimClass="quotes" case="yes"> + <contains block="reescaped"/> + </region> + + <block name="reescaped" match="\\\/" innerClass="string" contained="yes"> + <onlyin region="regexp"/> + </block> + + <!-- + variables + FIXME: @{...} + --> + <block name="bracketsvars" match="([a-z1-9_]+)(\s*=>)" innerClass="string" contained="yes" case="no"> + <partClass index="1" innerClass="string" /> + <partClass index="2" innerClass="code" /> + <onlyin region="brackets"/> + </block> + + <block name="specialvar" match="\$#?[1-9'`@!]" innerClass="var"/> + + <block name="var" match="(\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/> + <block name="containedvar" match="\$([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/> + + <!-- not shure what is this, but the Perlers do it :) --> + <block name="var2" match="(&|\w+)'[\w_']+\b" innerClass="var" case="no"/> + + <block name="classvar" match="(\{)([a-z1-9]+)(\})" innerClass="var" case="no"> + <partClass index="1" innerClass="brackets" /> + <partClass index="2" innerClass="var" /> + <partClass index="3" innerClass="brackets" /> + </block> + + <block name="curlyvar" match="[\$@%]#?\{[a-z1-9]+\}" innerClass="var" case="no"/> + + <!-- + quotes + --> + <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`"> + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/> + + <block name="escaped" match="\\\\|\\"|\\'|\\`" innerClass="special" contained="yes"> + <onlyin region="qstatement"/> + <onlyin region="strsingle"/> + <onlyin region="exec"/> + </block> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end="""> + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + </region> + + <block name="descaped" match="\\[\\"'`tnr\$\{@]" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + <onlyin region="q-w-q-statement"/> + </block> + + <!-- logical op. + <block name="logic" match="\|\||&&" innerClass="reserved" contained="yes"/>--> + + <!-- + identifiers + --> + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/> + + <!-- + numbers + --> + <block name="number" match="\d*\.?\d+" innerClass="number"/> + + <!-- + http://www.perldoc.com/perl5.6/pod/perlfunc.html + Alphabetical Listing of Perl Functions + --> + <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="abs"/> + <keyword match="accept"/> + <keyword match="alarm"/> + <keyword match="atan2"/> + + <keyword match="bind"/> + <keyword match="binmode"/> + <keyword match="bless"/> + + <keyword match="caller"/> + <keyword match="chdir"/> + <keyword match="chmod"/> + <keyword match="chomp"/> + <keyword match="chop"/> + <keyword match="chown"/> + <keyword match="chr"/> + <keyword match="chroot"/> + <keyword match="close"/> + <keyword match="closedir"/> + <keyword match="connect"/> + <keyword match="continue"/> + <keyword match="cos"/> + <keyword match="crypt"/> + + <keyword match="dbmclose"/> + <keyword match="dbmopen"/> + <keyword match="defined"/> + <keyword match="delete"/> + <keyword match="die"/> + <keyword match="do"/> + <keyword match="dump"/> + + <keyword match="each"/> + <keyword match="endgrent"/> + <keyword match="endhostent"/> + <keyword match="endnetent"/> + <keyword match="endprotoent"/> + <keyword match="endpwent"/> + <keyword match="endservent"/> + <keyword match="eof"/> + <keyword match="eval"/> + <keyword match="exec"/> + <keyword match="exists"/> + <keyword match="exit"/> + <keyword match="exp"/> + + <keyword match="fcntl"/> + <keyword match="fileno"/> + <keyword match="flock"/> + <keyword match="fork"/> + <keyword match="format"/> + <keyword match="formline"/> + + <keyword match="getc"/> + <keyword match="getgrent"/> + <keyword match="getgrgid"/> + <keyword match="getgrnam"/> + <keyword match="gethostbyaddr"/> + <keyword match="gethostbyname"/> + <keyword match="gethostent"/> + <keyword match="getlogin"/> + <keyword match="getnetbyaddr"/> + <keyword match="getnetbyname"/> + <keyword match="getnetent"/> + <keyword match="getpeername"/> + <keyword match="getpgrp"/> + <keyword match="getppid"/> + <keyword match="getpriority"/> + <keyword match="getprotobyname"/> + <keyword match="getprotobynumber"/> + <keyword match="getprotoent"/> + <keyword match="getpwent"/> + <keyword match="getpwnam"/> + <keyword match="getpwuid"/> + <keyword match="getservbyname"/> + <keyword match="getservbyport"/> + <keyword match="getservent"/> + <keyword match="getsockname"/> + <keyword match="getsockopt"/> + <keyword match="glob"/> + <keyword match="gmtime"/> + <keyword match="goto"/> + <keyword match="grep"/> + + <keyword match="hex"/> + + <keyword match="import"/> + <keyword match="index"/> + <keyword match="int"/> + <keyword match="ioctl"/> + + <keyword match="join"/> + + <keyword match="keys"/> + <keyword match="kill"/> + + <keyword match="last"/> + <keyword match="lc"/> + <keyword match="lcfirst"/> + <keyword match="length"/> + <keyword match="link"/> + <keyword match="listen"/> + <keyword match="local"/> + <keyword match="localtime"/> + <keyword match="lock"/> + <keyword match="log"/> + <keyword match="lstat"/> + + <!--<keyword match="m"/>--> + <keyword match="map"/> + <keyword match="mkdir"/> + <keyword match="msgctl"/> + <keyword match="msgget"/> + <keyword match="msgrcv"/> + <keyword match="msgsnd"/> + <keyword match="my"/> + + <keyword match="next"/> + <keyword match="no"/> + + <keyword match="oct"/> + <keyword match="open"/> + <keyword match="opendir"/> + <keyword match="ord"/> + <keyword match="our"/> + + <keyword match="pack"/> + <keyword match="package"/> + <keyword match="pipe"/> + <keyword match="pop"/> + <keyword match="pos"/> + <keyword match="print"/> + <keyword match="printf"/> + <keyword match="prototype"/> + <keyword match="push"/> + + <!--<keyword match="q"/> + <keyword match="qq"/> + <keyword match="qr"/>--> + <keyword match="quotemeta"/> + <!--<keyword match="qw"/> + <keyword match="qx"/>--> + + <keyword match="rand"/> + <keyword match="read"/> + <keyword match="readdir"/> + <keyword match="readline"/> + <keyword match="readlink"/> + <keyword match="readpipe"/> + <keyword match="recv"/> + <keyword match="redo"/> + <keyword match="ref"/> + <keyword match="rename"/> + <keyword match="require"/> + <keyword match="reset"/> + <keyword match="return"/> + <keyword match="reverse"/> + <keyword match="rewinddir"/> + <keyword match="rindex"/> + <keyword match="rmdir"/> + + <!--<keyword match="s"/>--> + <keyword match="scalar"/> + <keyword match="seek"/> + <keyword match="seekdir"/> + <keyword match="select"/> + <keyword match="semctl"/> + <keyword match="semget"/> + <keyword match="semop"/> + <keyword match="send"/> + <keyword match="setgrent"/> + <keyword match="sethostent"/> + <keyword match="setnetent"/> + <keyword match="setpgrp"/> + <keyword match="setpriority"/> + <keyword match="setprotoent"/> + <keyword match="setpwent"/> + <keyword match="setservent"/> + <keyword match="setsockopt"/> + <keyword match="shift"/> + <keyword match="shmctl"/> + <keyword match="shmget"/> + <keyword match="shmread"/> + <keyword match="shmwrite"/> + <keyword match="shutdown"/> + <keyword match="sin"/> + <keyword match="sleep"/> + <keyword match="socket"/> + <keyword match="socketpair"/> + <keyword match="sort"/> + <keyword match="splice"/> + <keyword match="split"/> + <keyword match="sprintf"/> + <keyword match="sqrt"/> + <keyword match="srand"/> + <keyword match="stat"/> + <keyword match="study"/> + <keyword match="sub"/> + <keyword match="substr"/> + <keyword match="symlink"/> + <keyword match="syscall"/> + <keyword match="sysopen"/> + <keyword match="sysread"/> + <keyword match="sysseek"/> + <keyword match="system"/> + <keyword match="syswrite"/> + + <keyword match="tell"/> + <keyword match="telldir"/> + <keyword match="tie"/> + <keyword match="tied"/> + <keyword match="time"/> + <keyword match="times"/> + <!--<keyword match="tr"/>--> + <keyword match="truncate"/> + + <keyword match="uc"/> + <keyword match="ucfirst"/> + <keyword match="umask"/> + <keyword match="undef"/> + <keyword match="unlink"/> + <keyword match="unpack"/> + <keyword match="unshift"/> + <keyword match="untie"/> + <keyword match="use"/> + <keyword match="utime"/> + + <keyword match="values"/> + <keyword match="vec"/> + + <keyword match="wait"/> + <keyword match="waitpid"/> + <keyword match="wantarray"/> + <keyword match="warn"/> + <keyword match="write"/> + + <keyword match="y"/> + </keywords> + + <keywords name="missingreserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="new"/> + </keywords> + + + <keywords name="flowcontrol" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="if"/> + <keyword match="else"/> + <keyword match="elsif"/> + <keyword match="while"/> + <keyword match="unless"/> + <keyword match="for"/> + <keyword match="foreach"/> + <keyword match="until"/> + <keyword match="do"/> + <keyword match="continue"/> + <keyword match="not"/> + <keyword match="or"/> + <keyword match="and"/> + <keyword match="eq"/> + <keyword match="ne"/> + <keyword match="gt"/> + <keyword match="lt"/> + </keywords> + +</highlight> |