diff options
Diffstat (limited to 'inc')
336 files changed, 9044 insertions, 1905 deletions
diff --git a/inc/DifferenceEngine.php b/inc/DifferenceEngine.php index 01926b20c..0a7ce8e7c 100644 --- a/inc/DifferenceEngine.php +++ b/inc/DifferenceEngine.php @@ -818,6 +818,39 @@ class DiffFormatter { } } +/** + * Utilityclass for styling HTML formatted diffs + * + * Depends on global var $DIFF_INLINESTYLES, if true some minimal predefined + * inline styles are used. Useful for HTML mails and RSS feeds + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +class HTMLDiff { + /** + * Holds the style names and basic CSS + */ + static public $styles = array( + 'diff-addedline' => 'background-color: #ddffdd;', + 'diff-deletedline' => 'background-color: #ffdddd;', + 'diff-context' => 'background-color: #f5f5f5;', + 'diff-mark' => 'color: #ff0000;', + ); + + /** + * Return a class or style parameter + */ + static function css($classname){ + global $DIFF_INLINESTYLES; + + if($DIFF_INLINESTYLES){ + if(!isset(self::$styles[$classname])) return ''; + return 'style="'.self::$styles[$classname].'"'; + }else{ + return 'class="'.$classname.'"'; + } + } +} /** * Additions by Axel Boldt follow, partly taken from diff.php, phpwiki-1.3.3 @@ -838,11 +871,11 @@ class _HWLDF_WordAccumulator { function _flushGroup($new_tag) { if ($this->_group !== '') { if ($this->_tag == 'mark') - $this->_line .= '<strong>'.$this->_group.'</strong>'; + $this->_line .= '<strong '.HTMLDiff::css('diff-mark').'>'.$this->_group.'</strong>'; elseif ($this->_tag == 'add') - $this->_line .= '<span class="diff-addedline">'.$this->_group.'</span>'; + $this->_line .= '<span '.HTMLDiff::css('diff-addedline').'>'.$this->_group.'</span>'; elseif ($this->_tag == 'del') - $this->_line .= '<span class="diff-deletedline"><del>'.$this->_group.'</del></span>'; + $this->_line .= '<span '.HTMLDiff::css('diff-deletedline').'><del>'.$this->_group.'</del></span>'; else $this->_line .= $this->_group; } @@ -1020,8 +1053,8 @@ class TableDiffFormatter extends DiffFormatter { global $lang; $l1 = $lang['line'].' '.$xbeg; $l2 = $lang['line'].' '.$ybeg; - $r = '<tr><td class="diff-blockheader" colspan="2">'.$l1.":</td>\n". - '<td class="diff-blockheader" colspan="2">'.$l2.":</td>\n". + $r = '<tr><td '.HTMLDiff::css('diff-blockheader').' colspan="2">'.$l1.":</td>\n". + '<td '.HTMLDiff::css('diff-blockheader').' colspan="2">'.$l2.":</td>\n". "</tr>\n"; return $r; } @@ -1037,11 +1070,11 @@ class TableDiffFormatter extends DiffFormatter { } function addedLine($line) { - return '<td>+</td><td class="diff-addedline">' . $line.'</td>'; + return '<td>+</td><td '.HTMLDiff::css('diff-addedline').'>' . $line.'</td>'; } function deletedLine($line) { - return '<td>-</td><td class="diff-deletedline">' . $line.'</td>'; + return '<td>-</td><td '.HTMLDiff::css('diff-deletedline').'>' . $line.'</td>'; } function emptyLine() { @@ -1049,7 +1082,7 @@ class TableDiffFormatter extends DiffFormatter { } function contextLine($line) { - return '<td> </td><td class="diff-context">'.$line.'</td>'; + return '<td> </td><td '.HTMLDiff::css('diff-context').'>'.$line.'</td>'; } function _added($lines) { @@ -1115,9 +1148,9 @@ class InlineDiffFormatter extends DiffFormatter { $xbeg .= "," . $xlen; if ($ylen != 1) $ybeg .= "," . $ylen; - $r = '<tr><td colspan="'.$this->colspan.'" class="diff-blockheader">@@ '.$lang['line']." -$xbeg +$ybeg @@"; - $r .= ' <span class="diff-deletedline"><del>'.$lang['deleted'].'</del></span>'; - $r .= ' <span class="diff-addedline">'.$lang['created'].'</span>'; + $r = '<tr><td colspan="'.$this->colspan.'" '.HTMLDiff::css('diff-blockheader').'>@@ '.$lang['line']." -$xbeg +$ybeg @@"; + $r .= ' <span '.HTMLDiff::css('diff-deletedline').'><del>'.$lang['deleted'].'</del></span>'; + $r .= ' <span '.HTMLDiff::css('diff-addedline').'>'.$lang['created'].'</span>'; $r .= "</td></tr>\n"; return $r; } @@ -1134,19 +1167,19 @@ class InlineDiffFormatter extends DiffFormatter { function _added($lines) { foreach ($lines as $line) { - print('<tr><td colspan="'.$this->colspan.'" class="diff-addedline">'. $line . "</td></tr>\n"); + print('<tr><td colspan="'.$this->colspan.'" '.HTMLDiff::css('diff-addedline').'>'. $line . "</td></tr>\n"); } } function _deleted($lines) { foreach ($lines as $line) { - print('<tr><td colspan="'.$this->colspan.'" class="diff-deletedline"><del>' . $line . "</del></td></tr>\n"); + print('<tr><td colspan="'.$this->colspan.'" '.HTMLDiff::css('diff-deletedline').'><del>' . $line . "</del></td></tr>\n"); } } function _context($lines) { foreach ($lines as $line) { - print('<tr><td colspan="'.$this->colspan.'" class="diff-context">'.$line."</td></tr>\n"); + print('<tr><td colspan="'.$this->colspan.'" '.HTMLDiff::css('diff-context').'>'.$line."</td></tr>\n"); } } diff --git a/inc/Input.class.php b/inc/Input.class.php new file mode 100644 index 000000000..f4174404a --- /dev/null +++ b/inc/Input.class.php @@ -0,0 +1,229 @@ +<?php + +/** + * Encapsulates access to the $_REQUEST array, making sure used parameters are initialized and + * have the correct type. + * + * All function access the $_REQUEST array by default, if you want to access $_POST or $_GET + * explicitly use the $post and $get members. + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +class Input { + + /** @var PostInput Access $_POST parameters */ + public $post; + /** @var GetInput Access $_GET parameters */ + public $get; + + protected $access; + + /** + * Intilizes the Input class and it subcomponents + */ + function __construct() { + $this->access = &$_REQUEST; + $this->post = new PostInput(); + $this->get = new GetInput(); + } + + /** + * Check if a parameter was set + * + * Basically a wrapper around isset. When called on the $post and $get subclasses, + * the parameter is set to $_POST or $_GET and to $_REQUEST + * + * @see isset + * @param string $name Parameter name + * @return bool + */ + public function has($name) { + return isset($this->access[$name]); + } + + /** + * Remove a parameter from the superglobals + * + * Basically a wrapper around unset. When NOT called on the $post and $get subclasses, + * the parameter will also be removed from $_POST or $_GET + * + * @see isset + * @param string $name Parameter name + * @return bool + */ + public function remove($name) { + if(isset($this->access[$name])) { + unset($this->access[$name]); + } + // also remove from sub classes + if(isset($this->post) && isset($_POST[$name])) { + unset($_POST[$name]); + } + if(isset($this->get) && isset($_GET[$name])) { + unset($_GET[$name]); + } + } + + /** + * Access a request parameter without any type conversion + * + * @param string $name Parameter name + * @param mixed $default Default to return if parameter isn't set + * @param bool $nonempty Return $default if parameter is set but empty() + * @return mixed + */ + public function param($name, $default = null, $nonempty = false) { + if(!isset($this->access[$name])) return $default; + if($nonempty && empty($this->access[$name])) return $default; + return $this->access[$name]; + } + + /** + * Sets a parameter + * + * @param string $name Parameter name + * @param mixed $value Value to set + */ + public function set($name, $value) { + $this->access[$name] = $value; + } + + /** + * Get a reference to a request parameter + * + * This avoids copying data in memory, when the parameter is not set it will be created + * and intialized with the given $default value before a reference is returned + * + * @param string $name Parameter name + * @param mixed $default If parameter is not set, initialize with this value + * @param bool $nonempty Init with $default if parameter is set but empty() + * @return &mixed + */ + public function &ref($name, $default = '', $nonempty = false) { + if(!isset($this->access[$name]) || ($nonempty && empty($this->access[$name]))) { + $this->set($name, $default); + } + + return $this->access[$name]; + } + + /** + * Access a request parameter as int + * + * @param string $name Parameter name + * @param mixed $default Default to return if parameter isn't set or is an array + * @param bool $nonempty Return $default if parameter is set but empty() + * @return int + */ + public function int($name, $default = 0, $nonempty = false) { + if(!isset($this->access[$name])) return $default; + if(is_array($this->access[$name])) return $default; + if($this->access[$name] === '') return $default; + if($nonempty && empty($this->access[$name])) return $default; + + return (int) $this->access[$name]; + } + + /** + * Access a request parameter as string + * + * @param string $name Parameter name + * @param mixed $default Default to return if parameter isn't set or is an array + * @param bool $nonempty Return $default if parameter is set but empty() + * @return string + */ + public function str($name, $default = '', $nonempty = false) { + if(!isset($this->access[$name])) return $default; + if(is_array($this->access[$name])) return $default; + if($nonempty && empty($this->access[$name])) return $default; + + return (string) $this->access[$name]; + } + + /** + * Access a request parameter as bool + * + * Note: $nonempty is here for interface consistency and makes not much sense for booleans + * + * @param string $name Parameter name + * @param mixed $default Default to return if parameter isn't set + * @param bool $nonempty Return $default if parameter is set but empty() + * @return bool + */ + public function bool($name, $default = false, $nonempty = false) { + if(!isset($this->access[$name])) return $default; + if(is_array($this->access[$name])) return $default; + if($this->access[$name] === '') return $default; + if($nonempty && empty($this->access[$name])) return $default; + + return (bool) $this->access[$name]; + } + + /** + * Access a request parameter as array + * + * @param string $name Parameter name + * @param mixed $default Default to return if parameter isn't set + * @param bool $nonempty Return $default if parameter is set but empty() + * @return array + */ + public function arr($name, $default = array(), $nonempty = false) { + if(!isset($this->access[$name])) return $default; + if(!is_array($this->access[$name])) return $default; + if($nonempty && empty($this->access[$name])) return $default; + + return (array) $this->access[$name]; + } + +} + +/** + * Internal class used for $_POST access in Input class + */ +class PostInput extends Input { + protected $access; + + /** + * Initialize the $access array, remove subclass members + */ + function __construct() { + $this->access = &$_POST; + } + + /** + * Sets a parameter in $_POST and $_REQUEST + * + * @param string $name Parameter name + * @param mixed $value Value to set + */ + public function set($name, $value) { + parent::set($name, $value); + $_REQUEST[$name] = $value; + } +} + +/** + * Internal class used for $_GET access in Input class + + */ +class GetInput extends Input { + protected $access; + + /** + * Initialize the $access array, remove subclass members + */ + function __construct() { + $this->access = &$_GET; + } + + /** + * Sets a parameter in $_GET and $_REQUEST + * + * @param string $name Parameter name + * @param mixed $value Value to set + */ + public function set($name, $value) { + parent::set($name, $value); + $_REQUEST[$name] = $value; + } +} diff --git a/inc/JSON.php b/inc/JSON.php index 2dea44003..7f89005ff 100644 --- a/inc/JSON.php +++ b/inc/JSON.php @@ -47,8 +47,6 @@ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * - * @category - * @package * @author Michal Migurski <mike-json@teczno.com> * @author Matt Knapp <mdknapp[at]gmail[dot]com> * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com> @@ -97,19 +95,6 @@ define('JSON_STRICT_TYPE', 11); /** * Converts to and from JSON format. - * - * @category - * @package - * @author Michal Migurski <mike-json@teczno.com> - * @author Matt Knapp <mdknapp[at]gmail[dot]com> - * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com> - * @copyright 2005 Michal Migurski - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version - * @link - * @see - * @since - * @deprecated */ class JSON { @@ -151,7 +136,9 @@ class JSON { * @access public */ function encode($var) { - if (function_exists('json_encode')) return json_encode($var); + if (!$this->skipnative && function_exists('json_encode')){ + return json_encode($var); + } switch (gettype($var)) { case 'boolean': return $var ? 'true' : 'false'; @@ -582,17 +569,17 @@ class JSON { } - } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && - in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) { + } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != JSON_IN_STR)) { // found a quote, and we are not inside a string array_push($stk, array('what' => JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); //print("Found start of string at {$c}\n"); } elseif (($chrs{$c} == $top['delim']) && ($top['what'] == JSON_IN_STR) && - (($chrs{$c - 1} != "\\") || - ($chrs{$c - 1} == "\\" && $chrs{$c - 2} == "\\"))) { + ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) { // found a quote, we're in a string, and it's not escaped + // we know that it's not escaped becase there is _not_ an + // odd number of backslashes at the end of the string so far array_pop($stk); //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); diff --git a/inc/Mailer.class.php b/inc/Mailer.class.php new file mode 100644 index 000000000..fccf1dad9 --- /dev/null +++ b/inc/Mailer.class.php @@ -0,0 +1,658 @@ +<?php +/** + * A class to build and send multi part mails (with HTML content and embedded + * attachments). All mails are assumed to be in UTF-8 encoding. + * + * Attachments are handled in memory so this shouldn't be used to send huge + * files, but then again mail shouldn't be used to send huge files either. + * + * @author Andreas Gohr <andi@splitbrain.org> + */ + +// end of line for mail lines - RFC822 says CRLF but postfix (and other MTAs?) +// think different +if(!defined('MAILHEADER_EOL')) define('MAILHEADER_EOL', "\n"); +#define('MAILHEADER_ASCIIONLY',1); + +/** + * Mail Handling + */ +class Mailer { + + protected $headers = array(); + protected $attach = array(); + protected $html = ''; + protected $text = ''; + + protected $boundary = ''; + protected $partid = ''; + protected $sendparam = null; + + /** @var EmailAddressValidator */ + protected $validator = null; + protected $allowhtml = true; + + /** + * Constructor + * + * Initializes the boundary strings and part counters + */ + public function __construct() { + global $conf; + + $server = parse_url(DOKU_URL, PHP_URL_HOST); + + $this->partid = md5(uniqid(rand(), true)).'@'.$server; + $this->boundary = '----------'.md5(uniqid(rand(), true)); + + $listid = join('.', array_reverse(explode('/', DOKU_BASE))).$server; + $listid = strtolower(trim($listid, '.')); + + $this->allowhtml = (bool)$conf['htmlmail']; + + // add some default headers for mailfiltering FS#2247 + $this->setHeader('X-Mailer', 'DokuWiki '.getVersion()); + $this->setHeader('X-DokuWiki-User', $_SERVER['REMOTE_USER']); + $this->setHeader('X-DokuWiki-Title', $conf['title']); + $this->setHeader('X-DokuWiki-Server', $server); + $this->setHeader('X-Auto-Response-Suppress', 'OOF'); + $this->setHeader('List-Id', $conf['title'].' <'.$listid.'>'); + } + + /** + * Attach a file + * + * @param string $path Path to the file to attach + * @param string $mime Mimetype of the attached file + * @param string $name The filename to use + * @param string $embed Unique key to reference this file from the HTML part + */ + public function attachFile($path, $mime, $name = '', $embed = '') { + if(!$name) { + $name = basename($path); + } + + $this->attach[] = array( + 'data' => file_get_contents($path), + 'mime' => $mime, + 'name' => $name, + 'embed' => $embed + ); + } + + /** + * Attach a file + * + * @param string $data The file contents to attach + * @param string $mime Mimetype of the attached file + * @param string $name The filename to use + * @param string $embed Unique key to reference this file from the HTML part + */ + public function attachContent($data, $mime, $name = '', $embed = '') { + if(!$name) { + list(, $ext) = explode('/', $mime); + $name = count($this->attach).".$ext"; + } + + $this->attach[] = array( + 'data' => $data, + 'mime' => $mime, + 'name' => $name, + 'embed' => $embed + ); + } + + /** + * Callback function to automatically embed images referenced in HTML templates + */ + protected function autoembed_cb($matches) { + static $embeds = 0; + $embeds++; + + // get file and mime type + $media = cleanID($matches[1]); + list(, $mime) = mimetype($media); + $file = mediaFN($media); + if(!file_exists($file)) return $matches[0]; //bad reference, keep as is + + // attach it and set placeholder + $this->attachFile($file, $mime, '', 'autoembed'.$embeds); + return '%%autoembed'.$embeds.'%%'; + } + + /** + * Add an arbitrary header to the mail + * + * If an empy value is passed, the header is removed + * + * @param string $header the header name (no trailing colon!) + * @param string $value the value of the header + * @param bool $clean remove all non-ASCII chars and line feeds? + */ + public function setHeader($header, $value, $clean = true) { + $header = str_replace(' ', '-', ucwords(strtolower(str_replace('-', ' ', $header)))); // streamline casing + if($clean) { + $header = preg_replace('/[^\w \-\.\+\@]+/', '', $header); + $value = preg_replace('/[^\w \-\.\+\@<>]+/', '', $value); + } + + // empty value deletes + $value = trim($value); + if($value === '') { + if(isset($this->headers[$header])) unset($this->headers[$header]); + } else { + $this->headers[$header] = $value; + } + } + + /** + * Set additional parameters to be passed to sendmail + * + * Whatever is set here is directly passed to PHP's mail() command as last + * parameter. Depending on the PHP setup this might break mailing alltogether + */ + public function setParameters($param) { + $this->sendparam = $param; + } + + /** + * Set the text and HTML body and apply replacements + * + * This function applies a whole bunch of default replacements in addition + * to the ones specidifed as parameters + * + * If you pass the HTML part or HTML replacements yourself you have to make + * sure you encode all HTML special chars correctly + * + * @param string $text plain text body + * @param array $textrep replacements to apply on the text part + * @param array $htmlrep replacements to apply on the HTML part, leave null to use $textrep + * @param array $html the HTML body, leave null to create it from $text + * @param bool $wrap wrap the HTML in the default header/Footer + */ + public function setBody($text, $textrep = null, $htmlrep = null, $html = null, $wrap = true) { + global $INFO; + global $conf; + $htmlrep = (array)$htmlrep; + $textrep = (array)$textrep; + + // create HTML from text if not given + if(is_null($html)) { + $html = $text; + $html = hsc($html); + $html = preg_replace('/^-----*$/m', '<hr >', $html); + $html = nl2br($html); + } + if($wrap) { + $wrap = rawLocale('mailwrap', 'html'); + $html = preg_replace('/\n-- <br \/>.*$/s', '', $html); //strip signature + $html = str_replace('@HTMLBODY@', $html, $wrap); + } + + // copy over all replacements missing for HTML (autolink URLs) + foreach($textrep as $key => $value) { + if(isset($htmlrep[$key])) continue; + if(preg_match('/^https?:\/\//i', $value)) { + $htmlrep[$key] = '<a href="'.hsc($value).'">'.hsc($value).'</a>'; + } else { + $htmlrep[$key] = hsc($value); + } + } + + // embed media from templates + $html = preg_replace_callback( + '/@MEDIA\(([^\)]+)\)@/', + array($this, 'autoembed_cb'), $html + ); + + // prepare default replacements + $ip = clientIP(); + $cip = gethostsbyaddrs($ip); + $trep = array( + 'DATE' => dformat(), + 'BROWSER' => $_SERVER['HTTP_USER_AGENT'], + 'IPADDRESS' => $ip, + 'HOSTNAME' => $cip, + 'TITLE' => $conf['title'], + 'DOKUWIKIURL' => DOKU_URL, + 'USER' => $_SERVER['REMOTE_USER'], + 'NAME' => $INFO['userinfo']['name'], + 'MAIL' => $INFO['userinfo']['mail'], + ); + $trep = array_merge($trep, (array)$textrep); + $hrep = array( + 'DATE' => '<i>'.hsc(dformat()).'</i>', + 'BROWSER' => hsc($_SERVER['HTTP_USER_AGENT']), + 'IPADDRESS' => '<code>'.hsc($ip).'</code>', + 'HOSTNAME' => '<code>'.hsc($cip).'</code>', + 'TITLE' => hsc($conf['title']), + 'DOKUWIKIURL' => '<a href="'.DOKU_URL.'">'.DOKU_URL.'</a>', + 'USER' => hsc($_SERVER['REMOTE_USER']), + 'NAME' => hsc($INFO['userinfo']['name']), + 'MAIL' => '<a href="mailto:"'.hsc($INFO['userinfo']['mail']).'">'. + hsc($INFO['userinfo']['mail']).'</a>', + ); + $hrep = array_merge($hrep, (array)$htmlrep); + + // Apply replacements + foreach($trep as $key => $substitution) { + $text = str_replace('@'.strtoupper($key).'@', $substitution, $text); + } + foreach($hrep as $key => $substitution) { + $html = str_replace('@'.strtoupper($key).'@', $substitution, $html); + } + + $this->setHTML($html); + $this->setText($text); + } + + /** + * Set the HTML part of the mail + * + * Placeholders can be used to reference embedded attachments + * + * You probably want to use setBody() instead + */ + public function setHTML($html) { + $this->html = $html; + } + + /** + * Set the plain text part of the mail + * + * You probably want to use setBody() instead + */ + public function setText($text) { + $this->text = $text; + } + + /** + * Add the To: recipients + * + * @see setAddress + * @param string $address Multiple adresses separated by commas + */ + public function to($address) { + $this->setHeader('To', $address, false); + } + + /** + * Add the Cc: recipients + * + * @see setAddress + * @param string $address Multiple adresses separated by commas + */ + public function cc($address) { + $this->setHeader('Cc', $address, false); + } + + /** + * Add the Bcc: recipients + * + * @see setAddress + * @param string $address Multiple adresses separated by commas + */ + public function bcc($address) { + $this->setHeader('Bcc', $address, false); + } + + /** + * Add the From: address + * + * This is set to $conf['mailfrom'] when not specified so you shouldn't need + * to call this function + * + * @see setAddress + * @param string $address from address + */ + public function from($address) { + $this->setHeader('From', $address, false); + } + + /** + * Add the mail's Subject: header + * + * @param string $subject the mail subject + */ + public function subject($subject) { + $this->headers['Subject'] = $subject; + } + + /** + * Sets an email address header with correct encoding + * + * Unicode characters will be deaccented and encoded base64 + * for headers. Addresses may not contain Non-ASCII data! + * + * Example: + * setAddress("föö <foo@bar.com>, me@somewhere.com","TBcc"); + * + * @param string $address Multiple adresses separated by commas + * @return bool|string the prepared header (can contain multiple lines) + */ + public function cleanAddress($address) { + // No named recipients for To: in Windows (see FS#652) + $names = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? false : true; + + $address = preg_replace('/[\r\n\0]+/', ' ', $address); // remove attack vectors + + $headers = ''; + $parts = explode(',', $address); + foreach($parts as $part) { + $part = trim($part); + + // parse address + if(preg_match('#(.*?)<(.*?)>#', $part, $matches)) { + $text = trim($matches[1]); + $addr = $matches[2]; + } else { + $addr = $part; + } + // skip empty ones + if(empty($addr)) { + continue; + } + + // FIXME: is there a way to encode the localpart of a emailaddress? + if(!utf8_isASCII($addr)) { + msg(htmlspecialchars("E-Mail address <$addr> is not ASCII"), -1); + continue; + } + + if(is_null($this->validator)) { + $this->validator = new EmailAddressValidator(); + $this->validator->allowLocalAddresses = true; + } + if(!$this->validator->check_email_address($addr)) { + msg(htmlspecialchars("E-Mail address <$addr> is not valid"), -1); + continue; + } + + // text was given + if(!empty($text) && $names) { + // add address quotes + $addr = "<$addr>"; + + if(defined('MAILHEADER_ASCIIONLY')) { + $text = utf8_deaccent($text); + $text = utf8_strip($text); + } + + if(!utf8_isASCII($text)) { + $text = '=?UTF-8?B?'.base64_encode($text).'?='; + } + } else { + $text = ''; + } + + // add to header comma seperated + if($headers != '') { + $headers .= ', '; + } + $headers .= $text.' '.$addr; + } + + if(empty($headers)) return false; + + return $headers; + } + + + /** + * Prepare the mime multiparts for all attachments + * + * Replaces placeholders in the HTML with the correct CIDs + */ + protected function prepareAttachments() { + $mime = ''; + $part = 1; + // embedded attachments + foreach($this->attach as $media) { + // create content id + $cid = 'part'.$part.'.'.$this->partid; + + // replace wildcards + if($media['embed']) { + $this->html = str_replace('%%'.$media['embed'].'%%', 'cid:'.$cid, $this->html); + } + + $mime .= '--'.$this->boundary.MAILHEADER_EOL; + $mime .= 'Content-Type: '.$media['mime'].';'.MAILHEADER_EOL; + $mime .= 'Content-Transfer-Encoding: base64'.MAILHEADER_EOL; + $mime .= "Content-ID: <$cid>".MAILHEADER_EOL; + if($media['embed']) { + $mime .= 'Content-Disposition: inline; filename="'.$media['name'].'"'.MAILHEADER_EOL; + } else { + $mime .= 'Content-Disposition: attachment; filename="'.$media['name'].'"'.MAILHEADER_EOL; + } + $mime .= MAILHEADER_EOL; //end of headers + $mime .= chunk_split(base64_encode($media['data']), 74, MAILHEADER_EOL); + + $part++; + } + return $mime; + } + + /** + * Build the body and handles multi part mails + * + * Needs to be called before prepareHeaders! + * + * @return string the prepared mail body, false on errors + */ + protected function prepareBody() { + + // no HTML mails allowed? remove HTML body + if(!$this->allowhtml) { + $this->html = ''; + } + + // check for body + if(!$this->text && !$this->html) { + return false; + } + + // add general headers + $this->headers['MIME-Version'] = '1.0'; + + $body = ''; + + if(!$this->html && !count($this->attach)) { // we can send a simple single part message + $this->headers['Content-Type'] = 'text/plain; charset=UTF-8'; + $this->headers['Content-Transfer-Encoding'] = 'base64'; + $body .= chunk_split(base64_encode($this->text), 74, MAILHEADER_EOL); + } else { // multi part it is + $body .= "This is a multi-part message in MIME format.".MAILHEADER_EOL; + + // prepare the attachments + $attachments = $this->prepareAttachments(); + + // do we have alternative text content? + if($this->text && $this->html) { + $this->headers['Content-Type'] = 'multipart/alternative;'.MAILHEADER_EOL. + ' boundary="'.$this->boundary.'XX"'; + $body .= '--'.$this->boundary.'XX'.MAILHEADER_EOL; + $body .= 'Content-Type: text/plain; charset=UTF-8'.MAILHEADER_EOL; + $body .= 'Content-Transfer-Encoding: base64'.MAILHEADER_EOL; + $body .= MAILHEADER_EOL; + $body .= chunk_split(base64_encode($this->text), 74, MAILHEADER_EOL); + $body .= '--'.$this->boundary.'XX'.MAILHEADER_EOL; + $body .= 'Content-Type: multipart/related;'.MAILHEADER_EOL. + ' boundary="'.$this->boundary.'"'.MAILHEADER_EOL; + $body .= MAILHEADER_EOL; + } + + $body .= '--'.$this->boundary.MAILHEADER_EOL; + $body .= 'Content-Type: text/html; charset=UTF-8'.MAILHEADER_EOL; + $body .= 'Content-Transfer-Encoding: base64'.MAILHEADER_EOL; + $body .= MAILHEADER_EOL; + $body .= chunk_split(base64_encode($this->html), 74, MAILHEADER_EOL); + $body .= MAILHEADER_EOL; + $body .= $attachments; + $body .= '--'.$this->boundary.'--'.MAILHEADER_EOL; + + // close open multipart/alternative boundary + if($this->text && $this->html) { + $body .= '--'.$this->boundary.'XX--'.MAILHEADER_EOL; + } + } + + return $body; + } + + /** + * Cleanup and encode the headers array + */ + protected function cleanHeaders() { + global $conf; + + // clean up addresses + if(empty($this->headers['From'])) $this->from($conf['mailfrom']); + $addrs = array('To', 'From', 'Cc', 'Bcc'); + foreach($addrs as $addr) { + if(isset($this->headers[$addr])) { + $this->headers[$addr] = $this->cleanAddress($this->headers[$addr]); + } + } + + if(isset($this->headers['Subject'])) { + // add prefix to subject + if(empty($conf['mailprefix'])) { + if(utf8_strlen($conf['title']) < 20) { + $prefix = '['.$conf['title'].']'; + } else { + $prefix = '['.utf8_substr($conf['title'], 0, 20).'...]'; + } + } else { + $prefix = '['.$conf['mailprefix'].']'; + } + $len = strlen($prefix); + if(substr($this->headers['Subject'], 0, $len) != $prefix) { + $this->headers['Subject'] = $prefix.' '.$this->headers['Subject']; + } + + // encode subject + if(defined('MAILHEADER_ASCIIONLY')) { + $this->headers['Subject'] = utf8_deaccent($this->headers['Subject']); + $this->headers['Subject'] = utf8_strip($this->headers['Subject']); + } + if(!utf8_isASCII($this->headers['Subject'])) { + $this->headers['Subject'] = '=?UTF-8?B?'.base64_encode($this->headers['Subject']).'?='; + } + } + + // wrap headers + foreach($this->headers as $key => $val) { + $this->headers[$key] = wordwrap($val, 78, MAILHEADER_EOL.' '); + } + } + + /** + * Create a string from the headers array + * + * @returns string the headers + */ + protected function prepareHeaders() { + $headers = ''; + foreach($this->headers as $key => $val) { + $headers .= "$key: $val".MAILHEADER_EOL; + } + return $headers; + } + + /** + * return a full email with all headers + * + * This is mainly intended for debugging and testing but could also be + * used for MHT exports + * + * @return string the mail, false on errors + */ + public function dump() { + $this->cleanHeaders(); + $body = $this->prepareBody(); + if($body === false) return false; + $headers = $this->prepareHeaders(); + + return $headers.MAILHEADER_EOL.$body; + } + + /** + * Send the mail + * + * Call this after all data was set + * + * @triggers MAIL_MESSAGE_SEND + * @return bool true if the mail was successfully passed to the MTA + */ + public function send() { + $success = false; + + // prepare hook data + $data = array( + // pass the whole mail class to plugin + 'mail' => $this, + // pass references for backward compatibility + 'to' => &$this->headers['To'], + 'cc' => &$this->headers['Cc'], + 'bcc' => &$this->headers['Bcc'], + 'from' => &$this->headers['From'], + 'subject' => &$this->headers['Subject'], + 'body' => &$this->text, + 'params' => &$this->sendparam, + 'headers' => '', // plugins shouldn't use this + // signal if we mailed successfully to AFTER event + 'success' => &$success, + ); + + // do our thing if BEFORE hook approves + $evt = new Doku_Event('MAIL_MESSAGE_SEND', $data); + if($evt->advise_before(true)) { + // clean up before using the headers + $this->cleanHeaders(); + + // any recipients? + if(trim($this->headers['To']) === '' && + trim($this->headers['Cc']) === '' && + trim($this->headers['Bcc']) === '' + ) return false; + + // The To: header is special + if(isset($this->headers['To'])) { + $to = $this->headers['To']; + unset($this->headers['To']); + } else { + $to = ''; + } + + // so is the subject + if(isset($this->headers['Subject'])) { + $subject = $this->headers['Subject']; + unset($this->headers['Subject']); + } else { + $subject = ''; + } + + // make the body + $body = $this->prepareBody(); + if($body === false) return false; + + // cook the headers + $headers = $this->prepareHeaders(); + // add any headers set by legacy plugins + if(trim($data['headers'])) { + $headers .= MAILHEADER_EOL.trim($data['headers']); + } + + // send the thing + if(is_null($this->sendparam)) { + $success = @mail($to, $subject, $body, $headers); + } else { + $success = @mail($to, $subject, $body, $headers, $this->sendparam); + } + } + // any AFTER actions? + $evt->advise_after(); + return $success; + } +} diff --git a/inc/PassHash.class.php b/inc/PassHash.class.php index 3fb1349d2..f85766723 100644 --- a/inc/PassHash.class.php +++ b/inc/PassHash.class.php @@ -16,65 +16,67 @@ class PassHash { * match true is is returned else false * * @author Andreas Gohr <andi@splitbrain.org> + * @param $clear string Clear-Text password + * @param $hash string Hash to compare against * @return bool */ - function verify_hash($clear,$hash){ - $method=''; - $salt=''; - $magic=''; + function verify_hash($clear, $hash) { + $method = ''; + $salt = ''; + $magic = ''; //determine the used method and salt $len = strlen($hash); - if(preg_match('/^\$1\$([^\$]{0,8})\$/',$hash,$m)){ + if(preg_match('/^\$1\$([^\$]{0,8})\$/', $hash, $m)) { $method = 'smd5'; $salt = $m[1]; $magic = '1'; - }elseif(preg_match('/^\$apr1\$([^\$]{0,8})\$/',$hash,$m)){ + } elseif(preg_match('/^\$apr1\$([^\$]{0,8})\$/', $hash, $m)) { $method = 'apr1'; $salt = $m[1]; $magic = 'apr1'; - }elseif(preg_match('/^\$P\$(.{31})$/',$hash,$m)){ + } elseif(preg_match('/^\$P\$(.{31})$/', $hash, $m)) { $method = 'pmd5'; $salt = $m[1]; $magic = 'P'; - }elseif(preg_match('/^\$H\$(.{31})$/',$hash,$m)){ + } elseif(preg_match('/^\$H\$(.{31})$/', $hash, $m)) { $method = 'pmd5'; $salt = $m[1]; $magic = 'H'; - }elseif(preg_match('/^sha1\$(.{5})\$/',$hash,$m)){ + } elseif(preg_match('/^sha1\$(.{5})\$/', $hash, $m)) { $method = 'djangosha1'; $salt = $m[1]; - }elseif(preg_match('/^md5\$(.{5})\$/',$hash,$m)){ + } elseif(preg_match('/^md5\$(.{5})\$/', $hash, $m)) { $method = 'djangomd5'; $salt = $m[1]; - }elseif(preg_match('/^\$2a\$(.{2})\$/',$hash,$m)){ + } elseif(preg_match('/^\$2a\$(.{2})\$/', $hash, $m)) { $method = 'bcrypt'; $salt = $hash; - }elseif(substr($hash,0,6) == '{SSHA}'){ + } elseif(substr($hash, 0, 6) == '{SSHA}') { $method = 'ssha'; - $salt = substr(base64_decode(substr($hash, 6)),20); - }elseif(substr($hash,0,6) == '{SMD5}'){ + $salt = substr(base64_decode(substr($hash, 6)), 20); + } elseif(substr($hash, 0, 6) == '{SMD5}') { $method = 'lsmd5'; - $salt = substr(base64_decode(substr($hash, 6)),16); - }elseif($len == 32){ + $salt = substr(base64_decode(substr($hash, 6)), 16); + } elseif($len == 32) { $method = 'md5'; - }elseif($len == 40){ + } elseif($len == 40) { $method = 'sha1'; - }elseif($len == 16){ + } elseif($len == 16) { $method = 'mysql'; - }elseif($len == 41 && $hash[0] == '*'){ + } elseif($len == 41 && $hash[0] == '*') { $method = 'my411'; - }elseif($len == 34){ + } elseif($len == 34) { $method = 'kmd5'; $salt = $hash; - }else{ + } else { $method = 'crypt'; - $salt = substr($hash,0,2); + $salt = substr($hash, 0, 2); } //crypt and compare $call = 'hash_'.$method; - if($this->$call($clear,$salt,$magic) === $hash){ + if($this->$call($clear, $salt, $magic) === $hash) { return true; } return false; @@ -83,13 +85,14 @@ class PassHash { /** * Create a random salt * - * @param int $len - The length of the salt + * @param int $len The length of the salt + * @return string */ - public function gen_salt($len=32){ + public function gen_salt($len = 32) { $salt = ''; $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - for($i=0; $i<$len; $i++){ - $salt .= $chars[mt_rand(0,61)]; + for($i = 0; $i < $len; $i++) { + $salt .= $chars[mt_rand(0, 61)]; } return $salt; } @@ -100,12 +103,12 @@ class PassHash { * If $salt is not null, the value is kept, but the lenght restriction is * applied. * - * @param stringref $salt - The salt, pass null if you want one generated - * @param int $len - The length of the salt + * @param string &$salt The salt, pass null if you want one generated + * @param int $len The length of the salt */ - public function init_salt(&$salt,$len=32){ + public function init_salt(&$salt, $len = 32) { if(is_null($salt)) $salt = $this->gen_salt($len); - if(strlen($salt) > $len) $salt = substr($salt,0,$len); + if(strlen($salt) > $len) $salt = substr($salt, 0, $len); } // Password hashing methods follow below @@ -122,36 +125,37 @@ class PassHash { * @author Andreas Gohr <andi@splitbrain.org> * @author <mikey_nich at hotmail dot com> * @link http://de.php.net/manual/en/function.crypt.php#73619 - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @param string $magic - the hash identifier (apr1 or 1) - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @return string Hashed password */ - public function hash_smd5($clear, $salt=null){ - $this->init_salt($salt,8); + public function hash_smd5($clear, $salt = null) { + $this->init_salt($salt, 8); - if(defined('CRYPT_MD5') && CRYPT_MD5){ - return crypt($clear,'$1$'.$salt.'$'); - }else{ + if(defined('CRYPT_MD5') && CRYPT_MD5) { + return crypt($clear, '$1$'.$salt.'$'); + } else { // Fall back to PHP-only implementation return $this->hash_apr1($clear, $salt, '1'); } } - /** * Password hashing method 'lsmd5' * * Uses salted MD5 hashs. Salt is 8 bytes long. * * This is the format used by LDAP. + * + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @return string Hashed password */ - public function hash_lsmd5($clear, $salt=null){ - $this->init_salt($salt,8); + public function hash_lsmd5($clear, $salt = null) { + $this->init_salt($salt, 8); return "{SMD5}".base64_encode(md5($clear.$salt, true).$salt); } - /** * Password hashing method 'apr1' * @@ -161,17 +165,17 @@ class PassHash { * * @author <mikey_nich at hotmail dot com> * @link http://de.php.net/manual/en/function.crypt.php#73619 - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @param string $magic - the hash identifier (apr1 or 1) - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @param string $magic The hash identifier (apr1 or 1) + * @return string Hashed password */ - public function hash_apr1($clear, $salt=null, $magic='apr1'){ - $this->init_salt($salt,8); + public function hash_apr1($clear, $salt = null, $magic = 'apr1') { + $this->init_salt($salt, 8); - $len = strlen($clear); + $len = strlen($clear); $text = $clear.'$'.$magic.'$'.$salt; - $bin = pack("H32", md5($clear.$salt.$clear)); + $bin = pack("H32", md5($clear.$salt.$clear)); for($i = $len; $i > 0; $i -= 16) { $text .= substr($bin, 0, min(16, $i)); } @@ -181,22 +185,24 @@ class PassHash { $bin = pack("H32", md5($text)); for($i = 0; $i < 1000; $i++) { $new = ($i & 1) ? $clear : $bin; - if ($i % 3) $new .= $salt; - if ($i % 7) $new .= $clear; + if($i % 3) $new .= $salt; + if($i % 7) $new .= $clear; $new .= ($i & 1) ? $bin : $clear; $bin = pack("H32", md5($new)); } $tmp = ''; - for ($i = 0; $i < 5; $i++) { + for($i = 0; $i < 5; $i++) { $k = $i + 6; $j = $i + 12; - if ($j == 16) $j = 5; + if($j == 16) $j = 5; $tmp = $bin[$i].$bin[$k].$bin[$j].$tmp; } $tmp = chr(0).chr(0).$bin[11].$tmp; - $tmp = strtr(strrev(substr(base64_encode($tmp), 2)), - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", - "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + $tmp = strtr( + strrev(substr(base64_encode($tmp), 2)), + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + ); return '$'.$magic.'$'.$salt.'$'.$tmp; } @@ -205,10 +211,10 @@ class PassHash { * * Uses MD5 hashs. * - * @param string $clear - the clear text to hash - * @returns string - hashed password + * @param string $clear The clear text to hash + * @return string Hashed password */ - public function hash_md5($clear){ + public function hash_md5($clear) { return md5($clear); } @@ -217,10 +223,10 @@ class PassHash { * * Uses SHA1 hashs. * - * @param string $clear - the clear text to hash - * @returns string - hashed password + * @param string $clear The clear text to hash + * @return string Hashed password */ - public function hash_sha1($clear){ + public function hash_sha1($clear) { return sha1($clear); } @@ -229,12 +235,12 @@ class PassHash { * * Uses salted SHA1 hashs. Salt is 4 bytes long. * - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @return string Hashed password */ - public function hash_ssha($clear, $salt=null){ - $this->init_salt($salt,4); + public function hash_ssha($clear, $salt = null) { + $this->init_salt($salt, 4); return '{SSHA}'.base64_encode(pack("H*", sha1($clear.$salt)).$salt); } @@ -243,13 +249,13 @@ class PassHash { * * Uses salted crypt hashs. Salt is 2 bytes long. * - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @return string Hashed password */ - public function hash_crypt($clear, $salt=null){ - $this->init_salt($salt,2); - return crypt($clear,$salt); + public function hash_crypt($clear, $salt = null) { + $this->init_salt($salt, 2); + return crypt($clear, $salt); } /** @@ -259,16 +265,16 @@ class PassHash { * * @link http://www.php.net/mysql * @author <soren at byu dot edu> - * @param string $clear - the clear text to hash - * @returns string - hashed password + * @param string $clear The clear text to hash + * @return string Hashed password */ - public function hash_mysql($clear){ - $nr=0x50305735; - $nr2=0x12345671; - $add=7; + public function hash_mysql($clear) { + $nr = 0x50305735; + $nr2 = 0x12345671; + $add = 7; $charArr = preg_split("//", $clear); - foreach ($charArr as $char) { - if (($char == '') || ($char == ' ') || ($char == '\t')) continue; + foreach($charArr as $char) { + if(($char == '') || ($char == ' ') || ($char == '\t')) continue; $charVal = ord($char); $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8); $nr2 += ($nr2 << 8) ^ $nr; @@ -282,10 +288,10 @@ class PassHash { * * Uses SHA1 hashs. This method is used by MySQL 4.11 and above * - * @param string $clear - the clear text to hash - * @returns string - hashed password + * @param string $clear The clear text to hash + * @return string Hashed password */ - public function hash_my411($clear){ + public function hash_my411($clear) { return '*'.sha1(pack("H*", sha1($clear))); } @@ -297,16 +303,16 @@ class PassHash { * Salt is 2 bytes long, but stored at position 16, so you need to pass at * least 18 bytes. You can pass the crypted hash as salt. * - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @return string Hashed password */ - public function hash_kmd5($clear, $salt=null){ + public function hash_kmd5($clear, $salt = null) { $this->init_salt($salt); - $key = substr($salt, 16, 2); - $hash1 = strtolower(md5($key . md5($clear))); - $hash2 = substr($hash1, 0, 16) . $key . substr($hash1, 16); + $key = substr($salt, 16, 2); + $hash1 = strtolower(md5($key.md5($clear))); + $hash2 = substr($hash1, 0, 16).$key.substr($hash1, 16); return $hash2; } @@ -316,48 +322,60 @@ class PassHash { * Uses salted MD5 hashs. Salt is 1+8 bytes long, 1st byte is the * iteration count when given, for null salts $compute is used. * - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @param string $magic - the hash identifier (P or H) - * @param int $compute - the iteration count for new passwords - * @returns string - hashed password + * The actual iteration count is the given count squared, maximum is + * 30 (-> 1073741824). If a higher one is given, the function throws + * an exception. + * + * @link http://www.openwall.com/phpass/ + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @param string $magic The hash identifier (P or H) + * @param int $compute The iteration count for new passwords + * @throws Exception + * @return string Hashed password */ - public function hash_pmd5($clear, $salt=null, $magic='P',$compute=8){ + public function hash_pmd5($clear, $salt = null, $magic = 'P', $compute = 8) { $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - if(is_null($salt)){ + if(is_null($salt)) { $this->init_salt($salt); $salt = $itoa64[$compute].$salt; // prefix iteration count } $iterc = $salt[0]; // pos 0 of salt is iteration count - $iter = strpos($itoa64,$iterc); + $iter = strpos($itoa64, $iterc); + + if($iter > 30) { + throw new Exception("Too high iteration count ($iter) in ". + __CLASS__.'::'.__FUNCTION__); + } + $iter = 1 << $iter; - $salt = substr($salt,1,8); + $salt = substr($salt, 1, 8); // iterate - $hash = md5($salt . $clear, true); + $hash = md5($salt.$clear, true); do { - $hash = md5($hash . $clear, true); - } while (--$iter); + $hash = md5($hash.$clear, true); + } while(--$iter); // encode $output = ''; - $count = 16; - $i = 0; + $count = 16; + $i = 0; do { $value = ord($hash[$i++]); $output .= $itoa64[$value & 0x3f]; - if ($i < $count) + if($i < $count) $value |= ord($hash[$i]) << 8; $output .= $itoa64[($value >> 6) & 0x3f]; - if ($i++ >= $count) + if($i++ >= $count) break; - if ($i < $count) + if($i < $count) $value |= ord($hash[$i]) << 16; $output .= $itoa64[($value >> 12) & 0x3f]; - if ($i++ >= $count) + if($i++ >= $count) break; $output .= $itoa64[($value >> 18) & 0x3f]; - } while ($i < $count); + } while($i < $count); return '$'.$magic.'$'.$iterc.$salt.$output; } @@ -365,7 +383,7 @@ class PassHash { /** * Alias for hash_pmd5 */ - public function hash_hmd5($clear, $salt=null, $magic='H', $compute=8){ + public function hash_hmd5($clear, $salt = null, $magic = 'H', $compute = 8) { return $this->hash_pmd5($clear, $salt, $magic, $compute); } @@ -376,12 +394,12 @@ class PassHash { * This is used by the Django Python framework * * @link http://docs.djangoproject.com/en/dev/topics/auth/#passwords - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @return string Hashed password */ - public function hash_djangosha1($clear, $salt=null){ - $this->init_salt($salt,5); + public function hash_djangosha1($clear, $salt = null) { + $this->init_salt($salt, 5); return 'sha1$'.$salt.'$'.sha1($salt.$clear); } @@ -392,16 +410,15 @@ class PassHash { * This is used by the Django Python framework * * @link http://docs.djangoproject.com/en/dev/topics/auth/#passwords - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @return string Hashed password */ - public function hash_djangomd5($clear, $salt=null){ - $this->init_salt($salt,5); + public function hash_djangomd5($clear, $salt = null) { + $this->init_salt($salt, 5); return 'md5$'.$salt.'$'.md5($salt.$clear); } - /** * Passwordhashing method 'bcrypt' * @@ -413,20 +430,21 @@ class PassHash { * will break. When no salt is given, the iteration count can be set * through the $compute variable. * - * @param string $clear - the clear text to hash - * @param string $salt - the salt to use, null for random - * @param int $compute - the iteration count (between 4 and 31) - * @returns string - hashed password + * @param string $clear The clear text to hash + * @param string $salt The salt to use, null for random + * @param int $compute The iteration count (between 4 and 31) + * @throws Exception + * @return string Hashed password */ - public function hash_bcrypt($clear, $salt=null, $compute=8){ - if(!defined('CRYPT_BLOWFISH') || CRYPT_BLOWFISH != 1){ + public function hash_bcrypt($clear, $salt = null, $compute = 8) { + if(!defined('CRYPT_BLOWFISH') || CRYPT_BLOWFISH != 1) { throw new Exception('This PHP installation has no bcrypt support'); } - if(is_null($salt)){ + if(is_null($salt)) { if($compute < 4 || $compute > 31) $compute = 8; $salt = '$2a$'.str_pad($compute, 2, '0', STR_PAD_LEFT).'$'. - $this->gen_salt(22); + $this->gen_salt(22); } return crypt($clear, $salt); diff --git a/inc/RemoteAPICore.php b/inc/RemoteAPICore.php index 546832100..36c518881 100644 --- a/inc/RemoteAPICore.php +++ b/inc/RemoteAPICore.php @@ -169,7 +169,7 @@ class RemoteAPICore { * @return page text. */ function rawPage($id,$rev=''){ - $id = cleanID($id); + $id = $this->resolvePageId($id); if(auth_quickaclcheck($id) < AUTH_READ){ throw new RemoteAccessDeniedException('You are not allowed to read this file', 111); } @@ -228,7 +228,7 @@ class RemoteAPICore { * Return a wiki page rendered to html */ function htmlPage($id,$rev=''){ - $id = cleanID($id); + $id = $this->resolvePageId($id); if(auth_quickaclcheck($id) < AUTH_READ){ throw new RemoteAccessDeniedException('You are not allowed to read this page', 111); } @@ -302,6 +302,7 @@ class RemoteAPICore { 'mtime' => filemtime($file), 'size' => filesize($file), 'snippet' => $snippet, + 'title' => useHeading('navigation') ? p_get_first_heading($id) : $id ); } return $pages; @@ -355,14 +356,14 @@ class RemoteAPICore { * Return a list of backlinks */ function listBackLinks($id){ - return ft_backlinks(cleanID($id)); + return ft_backlinks($this->resolvePageId($id)); } /** * Return some basic data about a page */ function pageInfo($id,$rev=''){ - $id = cleanID($id); + $id = $this->resolvePageId($id); if(auth_quickaclcheck($id) < AUTH_READ){ throw new RemoteAccessDeniedException('You are not allowed to read this page', 111); } @@ -393,7 +394,7 @@ class RemoteAPICore { global $TEXT; global $lang; - $id = cleanID($id); + $id = $this->resolvePageId($id); $TEXT = cleanText($text); $sum = $params['sum']; $minor = $params['minor']; @@ -506,7 +507,7 @@ class RemoteAPICore { * Returns the permissions of a given wiki page */ function aclCheck($id) { - $id = cleanID($id); + $id = $this->resolvePageId($id); return auth_quickaclcheck($id); } @@ -516,7 +517,7 @@ class RemoteAPICore { * @author Michael Klier <chi@chimeric.de> */ function listLinks($id) { - $id = cleanID($id); + $id = $this->resolvePageId($id); if(auth_quickaclcheck($id) < AUTH_READ){ throw new RemoteAccessDeniedException('You are not allowed to read this page', 111); } @@ -632,7 +633,7 @@ class RemoteAPICore { * @author Michael Klier <chi@chimeric.de> */ function pageVersions($id, $first) { - $id = cleanID($id); + $id = $this->resolvePageId($id); if(auth_quickaclcheck($id) < AUTH_READ) { throw new RemoteAccessDeniedException('You are not allowed to read this page', 111); } @@ -710,7 +711,7 @@ class RemoteAPICore { $unlockfail = array(); foreach((array) $set['lock'] as $id){ - $id = cleanID($id); + $id = $this->resolvePageId($id); if(auth_quickaclcheck($id) < AUTH_EDIT || checklock($id)){ $lockfail[] = $id; }else{ @@ -720,7 +721,7 @@ class RemoteAPICore { } foreach((array) $set['unlock'] as $id){ - $id = cleanID($id); + $id = $this->resolvePageId($id); if(auth_quickaclcheck($id) < AUTH_EDIT || !unlock($id)){ $unlockfail[] = $id; }else{ @@ -763,6 +764,14 @@ class RemoteAPICore { return $ok; } + private function resolvePageId($id) { + $id = cleanID($id); + if(empty($id)) { + global $conf; + $id = cleanID($conf['start']); + } + return $id; + } } diff --git a/inc/actions.php b/inc/actions.php index 4a2e200ae..e85cbfccc 100644 --- a/inc/actions.php +++ b/inc/actions.php @@ -380,7 +380,7 @@ function act_revert($act){ if($REV){ $text = rawWiki($ID,$REV); if(!$text) return 'show'; //something went wrong - $sum = $lang['restored']; + $sum = sprintf($lang['restored'], dformat($REV)); } // spam check @@ -498,7 +498,7 @@ function act_edit($act){ //set summary default if(!$SUM){ if($REV){ - $SUM = $lang['restored']; + $SUM = sprintf($lang['restored'], dformat($REV)); }elseif(!$INFO['exists']){ $SUM = $lang['created']; } @@ -506,7 +506,7 @@ function act_edit($act){ // Use the date of the newest revision, not of the revision we edit // This is used for conflict detection - if(!$DATE) $DATE = $INFO['meta']['date']['modified']; + if(!$DATE) $DATE = @filemtime(wikiFN($ID)); //check if locked by anyone - if not lock for my self //do not lock when the user can't edit anyway diff --git a/inc/auth.php b/inc/auth.php index 59ef1cb54..d0f21c825 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -12,13 +12,13 @@ if(!defined('DOKU_INC')) die('meh.'); // some ACL level defines -define('AUTH_NONE',0); -define('AUTH_READ',1); -define('AUTH_EDIT',2); -define('AUTH_CREATE',4); -define('AUTH_UPLOAD',8); -define('AUTH_DELETE',16); -define('AUTH_ADMIN',255); +define('AUTH_NONE', 0); +define('AUTH_READ', 1); +define('AUTH_EDIT', 2); +define('AUTH_CREATE', 4); +define('AUTH_UPLOAD', 8); +define('AUTH_DELETE', 16); +define('AUTH_ADMIN', 255); /** * Initialize the auth system. @@ -29,26 +29,30 @@ define('AUTH_ADMIN',255); * * @todo backend loading maybe should be handled by the class autoloader * @todo maybe split into multiple functions at the XXX marked positions + * @triggers AUTH_LOGIN_CHECK + * @return bool */ -function auth_setup(){ +function auth_setup() { global $conf; + /* @var auth_basic $auth */ global $auth; + /* @var Input $INPUT */ + global $INPUT; global $AUTH_ACL; global $lang; - global $config_cascade; $AUTH_ACL = array(); if(!$conf['useacl']) return false; // load the the backend auth functions and instantiate the auth object XXX - if (@file_exists(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php')) { + if(@file_exists(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php')) { require_once(DOKU_INC.'inc/auth/basic.class.php'); require_once(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php'); $auth_class = "auth_".$conf['authtype']; - if (class_exists($auth_class)) { + if(class_exists($auth_class)) { $auth = new $auth_class(); - if ($auth->success == false) { + if($auth->success == false) { // degrade to unauthenticated user unset($auth); auth_logoff(); @@ -61,14 +65,11 @@ function auth_setup(){ nice_die($lang['authmodfailed']); } - if(!$auth) return; + if(!$auth) return false; // do the login either by cookie or provided credentials XXX - if (!isset($_REQUEST['u'])) $_REQUEST['u'] = ''; - if (!isset($_REQUEST['p'])) $_REQUEST['p'] = ''; - if (!isset($_REQUEST['r'])) $_REQUEST['r'] = ''; - $_REQUEST['http_credentials'] = false; - if (!$conf['rememberme']) $_REQUEST['r'] = false; + $INPUT->set('http_credentials', false); + if(!$conf['rememberme']) $INPUT->set('r', false); // handle renamed HTTP_AUTHORIZATION variable (can happen when a fix like // the one presented at @@ -77,48 +78,50 @@ function auth_setup(){ if(isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; // streamline HTTP auth credentials (IIS/rewrite -> mod_php) - if(isset($_SERVER['HTTP_AUTHORIZATION'])){ - list($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']) = + if(isset($_SERVER['HTTP_AUTHORIZATION'])) { + list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); } // if no credentials were given try to use HTTP auth (for SSO) - if(empty($_REQUEST['u']) && empty($_COOKIE[DOKU_COOKIE]) && !empty($_SERVER['PHP_AUTH_USER'])){ - $_REQUEST['u'] = $_SERVER['PHP_AUTH_USER']; - $_REQUEST['p'] = $_SERVER['PHP_AUTH_PW']; - $_REQUEST['http_credentials'] = true; + if(!$INPUT->str('u') && empty($_COOKIE[DOKU_COOKIE]) && !empty($_SERVER['PHP_AUTH_USER'])) { + $INPUT->set('u', $_SERVER['PHP_AUTH_USER']); + $INPUT->set('p', $_SERVER['PHP_AUTH_PW']); + $INPUT->set('http_credentials', true); } // apply cleaning - $_REQUEST['u'] = $auth->cleanUser($_REQUEST['u']); + $INPUT->set('u', $auth->cleanUser($INPUT->str('u'))); - if(isset($_REQUEST['authtok'])){ + if($INPUT->str('authtok')) { // when an authentication token is given, trust the session - auth_validateToken($_REQUEST['authtok']); - }elseif(!is_null($auth) && $auth->canDo('external')){ + auth_validateToken($INPUT->str('authtok')); + } elseif(!is_null($auth) && $auth->canDo('external')) { // external trust mechanism in place - $auth->trustExternal($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']); - }else{ + $auth->trustExternal($INPUT->str('u'), $INPUT->str('p'), $INPUT->bool('r')); + } else { $evdata = array( - 'user' => $_REQUEST['u'], - 'password' => $_REQUEST['p'], - 'sticky' => $_REQUEST['r'], - 'silent' => $_REQUEST['http_credentials'], - ); + 'user' => $INPUT->str('u'), + 'password' => $INPUT->str('p'), + 'sticky' => $INPUT->bool('r'), + 'silent' => $INPUT->bool('http_credentials') + ); trigger_event('AUTH_LOGIN_CHECK', $evdata, 'auth_login_wrapper'); } //load ACL into a global array XXX $AUTH_ACL = auth_loadACL(); + + return true; } /** * Loads the ACL setup and handle user wildcards * * @author Andreas Gohr <andi@splitbrain.org> - * @returns array + * @return array */ -function auth_loadACL(){ +function auth_loadACL() { global $config_cascade; if(!is_readable($config_cascade['acl']['default'])) return array(); @@ -126,24 +129,32 @@ function auth_loadACL(){ $acl = file($config_cascade['acl']['default']); //support user wildcard - if(isset($_SERVER['REMOTE_USER'])){ + if(isset($_SERVER['REMOTE_USER'])) { $len = count($acl); - for($i=0; $i<$len; $i++){ + for($i = 0; $i < $len; $i++) { if($acl[$i]{0} == '#') continue; - list($id,$rest) = preg_split('/\s+/',$acl[$i],2); - $id = str_replace('%USER%',cleanID($_SERVER['REMOTE_USER']),$id); - $rest = str_replace('%USER%',auth_nameencode($_SERVER['REMOTE_USER']),$rest); + list($id, $rest) = preg_split('/\s+/', $acl[$i], 2); + $id = str_replace('%USER%', cleanID($_SERVER['REMOTE_USER']), $id); + $rest = str_replace('%USER%', auth_nameencode($_SERVER['REMOTE_USER']), $rest); $acl[$i] = "$id\t$rest"; } } return $acl; } +/** + * Event hook callback for AUTH_LOGIN_CHECK + * + * @param $evdata + * @return bool + */ function auth_login_wrapper($evdata) { - return auth_login($evdata['user'], - $evdata['password'], - $evdata['sticky'], - $evdata['silent']); + return auth_login( + $evdata['user'], + $evdata['password'], + $evdata['sticky'], + $evdata['silent'] + ); } /** @@ -175,53 +186,56 @@ function auth_login_wrapper($evdata) { * @param bool $silent Don't show error on bad auth * @return bool true on successful auth */ -function auth_login($user,$pass,$sticky=false,$silent=false){ +function auth_login($user, $pass, $sticky = false, $silent = false) { global $USERINFO; global $conf; global $lang; + /* @var auth_basic $auth */ global $auth; + $sticky ? $sticky = true : $sticky = false; //sanity check - if (!$auth) return false; + if(!$auth) return false; - if(!empty($user)){ + if(!empty($user)) { //usual login - if ($auth->checkPass($user,$pass)){ + if($auth->checkPass($user, $pass)) { // make logininfo globally available $_SERVER['REMOTE_USER'] = $user; - $secret = auth_cookiesalt(!$sticky); //bind non-sticky to session - auth_setCookie($user,PMA_blowfish_encrypt($pass,$secret),$sticky); + $secret = auth_cookiesalt(!$sticky); //bind non-sticky to session + auth_setCookie($user, PMA_blowfish_encrypt($pass, $secret), $sticky); return true; - }else{ + } else { //invalid credentials - log off - if(!$silent) msg($lang['badlogin'],-1); + if(!$silent) msg($lang['badlogin'], -1); auth_logoff(); return false; } - }else{ + } else { // read cookie information - list($user,$sticky,$pass) = auth_getCookie(); - if($user && $pass){ + list($user, $sticky, $pass) = auth_getCookie(); + if($user && $pass) { // we got a cookie - see if we can trust it // get session info $session = $_SESSION[DOKU_COOKIE]['auth']; if(isset($session) && - $auth->useSessionCache($user) && - ($session['time'] >= time()-$conf['auth_security_timeout']) && - ($session['user'] == $user) && - ($session['pass'] == sha1($pass)) && //still crypted - ($session['buid'] == auth_browseruid()) ){ + $auth->useSessionCache($user) && + ($session['time'] >= time() - $conf['auth_security_timeout']) && + ($session['user'] == $user) && + ($session['pass'] == sha1($pass)) && //still crypted + ($session['buid'] == auth_browseruid()) + ) { // he has session, cookie and browser right - let him in $_SERVER['REMOTE_USER'] = $user; - $USERINFO = $session['info']; //FIXME move all references to session + $USERINFO = $session['info']; //FIXME move all references to session return true; } // no we don't trust it yet - recheck pass but silent $secret = auth_cookiesalt(!$sticky); //bind non-sticky to session - $pass = PMA_blowfish_decrypt($pass,$secret); - return auth_login($user,$pass,$sticky,true); + $pass = PMA_blowfish_decrypt($pass, $secret); + return auth_login($user, $pass, $sticky, true); } } //just to be sure @@ -239,8 +253,8 @@ function auth_login($user,$pass,$sticky=false,$silent=false){ * @param string $token The authentication token * @return boolean true (or will exit on failure) */ -function auth_validateToken($token){ - if(!$token || $token != $_SESSION[DOKU_COOKIE]['auth']['token']){ +function auth_validateToken($token) { + if(!$token || $token != $_SESSION[DOKU_COOKIE]['auth']['token']) { // bad token header("HTTP/1.0 401 Unauthorized"); print 'Invalid auth token - maybe the session timed out'; @@ -250,7 +264,7 @@ function auth_validateToken($token){ // still here? trust the session data global $USERINFO; $_SERVER['REMOTE_USER'] = $_SESSION[DOKU_COOKIE]['auth']['user']; - $USERINFO = $_SESSION[DOKU_COOKIE]['auth']['info']; + $USERINFO = $_SESSION[DOKU_COOKIE]['auth']['info']; return true; } @@ -262,7 +276,7 @@ function auth_validateToken($token){ * @author Andreas Gohr <andi@splitbrain.org> * @return string The auth token */ -function auth_createToken(){ +function auth_createToken() { $token = md5(mt_rand()); @session_start(); // reopen the session if needed $_SESSION[DOKU_COOKIE]['auth']['token'] = $token; @@ -281,14 +295,14 @@ function auth_createToken(){ * * @return string a MD5 sum of various browser headers */ -function auth_browseruid(){ - $ip = clientIP(true); - $uid = ''; +function auth_browseruid() { + $ip = clientIP(true); + $uid = ''; $uid .= $_SERVER['HTTP_USER_AGENT']; $uid .= $_SERVER['HTTP_ACCEPT_ENCODING']; $uid .= $_SERVER['HTTP_ACCEPT_LANGUAGE']; $uid .= $_SERVER['HTTP_ACCEPT_CHARSET']; - $uid .= substr($ip,0,strpos($ip,'.')); + $uid .= substr($ip, 0, strpos($ip, '.')); return md5($uid); } @@ -304,15 +318,15 @@ function auth_browseruid(){ * @param bool $addsession if true, the sessionid is added to the salt * @return string */ -function auth_cookiesalt($addsession=false){ +function auth_cookiesalt($addsession = false) { global $conf; $file = $conf['metadir'].'/_htcookiesalt'; $salt = io_readFile($file); - if(empty($salt)){ - $salt = uniqid(rand(),true); - io_saveFile($file,$salt); + if(empty($salt)) { + $salt = uniqid(rand(), true); + io_saveFile($file, $salt); } - if($addsession){ + if($addsession) { $salt .= session_id(); } return $salt; @@ -327,10 +341,10 @@ function auth_cookiesalt($addsession=false){ * @author Andreas Gohr <andi@splitbrain.org> * @param bool $keepbc - when true, the breadcrumb data is not cleared */ -function auth_logoff($keepbc=false){ +function auth_logoff($keepbc = false) { global $conf; global $USERINFO; - global $INFO, $ID; + /* @var auth_basic $auth */ global $auth; // make sure the session is writable (it usually is) @@ -346,13 +360,13 @@ function auth_logoff($keepbc=false){ unset($_SESSION[DOKU_COOKIE]['bc']); if(isset($_SERVER['REMOTE_USER'])) unset($_SERVER['REMOTE_USER']); - $USERINFO=null; //FIXME + $USERINFO = null; //FIXME $cookieDir = empty($conf['cookiedir']) ? DOKU_REL : $conf['cookiedir']; - if (version_compare(PHP_VERSION, '5.2.0', '>')) { - setcookie(DOKU_COOKIE,'',time()-600000,$cookieDir,'',($conf['securecookie'] && is_ssl()),true); - }else{ - setcookie(DOKU_COOKIE,'',time()-600000,$cookieDir,'',($conf['securecookie'] && is_ssl())); + if(version_compare(PHP_VERSION, '5.2.0', '>')) { + setcookie(DOKU_COOKIE, '', time() - 600000, $cookieDir, '', ($conf['securecookie'] && is_ssl()), true); + } else { + setcookie(DOKU_COOKIE, '', time() - 600000, $cookieDir, '', ($conf['securecookie'] && is_ssl())); } if($auth) $auth->logOff(); @@ -368,32 +382,34 @@ function auth_logoff($keepbc=false){ * * @author Andreas Gohr <andi@splitbrain.org> * @see auth_isadmin - * @param string user - Username - * @param array groups - List of groups the user is in - * @param bool adminonly - when true checks if user is admin + * @param string $user Username + * @param array $groups List of groups the user is in + * @param bool $adminonly when true checks if user is admin + * @return bool */ -function auth_ismanager($user=null,$groups=null,$adminonly=false){ +function auth_ismanager($user = null, $groups = null, $adminonly = false) { global $conf; global $USERINFO; + /* @var auth_basic $auth */ global $auth; - if (!$auth) return false; + if(!$auth) return false; if(is_null($user)) { - if (!isset($_SERVER['REMOTE_USER'])) { + if(!isset($_SERVER['REMOTE_USER'])) { return false; } else { $user = $_SERVER['REMOTE_USER']; } } - if(is_null($groups)){ + if(is_null($groups)) { $groups = (array) $USERINFO['grps']; } // check superuser match - if(auth_isMember($conf['superuser'],$user, $groups)) return true; + if(auth_isMember($conf['superuser'], $user, $groups)) return true; if($adminonly) return false; // check managers - if(auth_isMember($conf['manager'],$user, $groups)) return true; + if(auth_isMember($conf['manager'], $user, $groups)) return true; return false; } @@ -406,13 +422,15 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){ * The info is available through $INFO['isadmin'], too * * @author Andreas Gohr <andi@splitbrain.org> - * @see auth_ismanager + * @see auth_ismanager() + * @param string $user Username + * @param array $groups List of groups the user is in + * @return bool */ -function auth_isadmin($user=null,$groups=null){ - return auth_ismanager($user,$groups,true); +function auth_isadmin($user = null, $groups = null) { + return auth_ismanager($user, $groups, true); } - /** * Match a user and his groups against a comma separated list of * users and groups to determine membership status @@ -424,31 +442,32 @@ function auth_isadmin($user=null,$groups=null){ * @param $groups array groups the user is member of * @return bool true for membership acknowledged */ -function auth_isMember($memberlist,$user,array $groups){ +function auth_isMember($memberlist, $user, array $groups) { + /* @var auth_basic $auth */ global $auth; - if (!$auth) return false; + if(!$auth) return false; // clean user and groups - if(!$auth->isCaseSensitive()){ - $user = utf8_strtolower($user); - $groups = array_map('utf8_strtolower',$groups); + if(!$auth->isCaseSensitive()) { + $user = utf8_strtolower($user); + $groups = array_map('utf8_strtolower', $groups); } - $user = $auth->cleanUser($user); - $groups = array_map(array($auth,'cleanGroup'),$groups); + $user = $auth->cleanUser($user); + $groups = array_map(array($auth, 'cleanGroup'), $groups); // extract the memberlist - $members = explode(',',$memberlist); - $members = array_map('trim',$members); + $members = explode(',', $memberlist); + $members = array_map('trim', $members); $members = array_unique($members); $members = array_filter($members); // compare cleaned values - foreach($members as $member){ + foreach($members as $member) { if(!$auth->isCaseSensitive()) $member = utf8_strtolower($member); - if($member[0] == '@'){ - $member = $auth->cleanGroup(substr($member,1)); + if($member[0] == '@') { + $member = $auth->cleanGroup(substr($member, 1)); if(in_array($member, $groups)) return true; - }else{ + } else { $member = $auth->cleanUser($member); if($member == $user) return true; } @@ -468,12 +487,12 @@ function auth_isMember($memberlist,$user,array $groups){ * @param string $id page ID (needs to be resolved and cleaned) * @return int permission level */ -function auth_quickaclcheck($id){ +function auth_quickaclcheck($id) { global $conf; global $USERINFO; # if no ACL is used always return upload rights if(!$conf['useacl']) return AUTH_UPLOAD; - return auth_aclcheck($id,$_SERVER['REMOTE_USER'],$USERINFO['grps']); + return auth_aclcheck($id, $_SERVER['REMOTE_USER'], $USERINFO['grps']); } /** @@ -482,111 +501,115 @@ function auth_quickaclcheck($id){ * * @author Andreas Gohr <andi@splitbrain.org> * - * @param string $id page ID (needs to be resolved and cleaned) - * @param string $user Username - * @param array $groups Array of groups the user is in + * @param string $id page ID (needs to be resolved and cleaned) + * @param string $user Username + * @param array|null $groups Array of groups the user is in * @return int permission level */ -function auth_aclcheck($id,$user,$groups){ +function auth_aclcheck($id, $user, $groups) { global $conf; global $AUTH_ACL; + /* @var auth_basic $auth */ global $auth; // if no ACL is used always return upload rights if(!$conf['useacl']) return AUTH_UPLOAD; - if (!$auth) return AUTH_NONE; + if(!$auth) return AUTH_NONE; //make sure groups is an array if(!is_array($groups)) $groups = array(); //if user is superuser or in superusergroup return 255 (acl_admin) - if(auth_isadmin($user,$groups)) { return AUTH_ADMIN; } + if(auth_isadmin($user, $groups)) { + return AUTH_ADMIN; + } $ci = ''; if(!$auth->isCaseSensitive()) $ci = 'ui'; - $user = $auth->cleanUser($user); - $groups = array_map(array($auth,'cleanGroup'),(array)$groups); - $user = auth_nameencode($user); + $user = $auth->cleanUser($user); + $groups = array_map(array($auth, 'cleanGroup'), (array) $groups); + $user = auth_nameencode($user); //prepend groups with @ and nameencode $cnt = count($groups); - for($i=0; $i<$cnt; $i++){ + for($i = 0; $i < $cnt; $i++) { $groups[$i] = '@'.auth_nameencode($groups[$i]); } - $ns = getNS($id); - $perm = -1; + $ns = getNS($id); + $perm = -1; - if($user || count($groups)){ + if($user || count($groups)) { //add ALL group $groups[] = '@ALL'; //add User if($user) $groups[] = $user; - }else{ + } else { $groups[] = '@ALL'; } //check exact match first - $matches = preg_grep('/^'.preg_quote($id,'/').'\s+(\S+)\s+/'.$ci,$AUTH_ACL); - if(count($matches)){ - foreach($matches as $match){ - $match = preg_replace('/#.*$/','',$match); //ignore comments - $acl = preg_split('/\s+/',$match); - if (!in_array($acl[1], $groups)) { + $matches = preg_grep('/^'.preg_quote($id, '/').'\s+(\S+)\s+/'.$ci, $AUTH_ACL); + if(count($matches)) { + foreach($matches as $match) { + $match = preg_replace('/#.*$/', '', $match); //ignore comments + $acl = preg_split('/\s+/', $match); + if(!in_array($acl[1], $groups)) { continue; } if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL! - if($acl[2] > $perm){ + if($acl[2] > $perm) { $perm = $acl[2]; } } - if($perm > -1){ + if($perm > -1) { //we had a match - return it return $perm; } } //still here? do the namespace checks - if($ns){ + if($ns) { $path = $ns.':*'; - }else{ + } else { $path = '*'; //root document } - do{ - $matches = preg_grep('/^'.preg_quote($path,'/').'\s+(\S+)\s+/'.$ci,$AUTH_ACL); - if(count($matches)){ - foreach($matches as $match){ - $match = preg_replace('/#.*$/','',$match); //ignore comments - $acl = preg_split('/\s+/',$match); - if (!in_array($acl[1], $groups)) { + do { + $matches = preg_grep('/^'.preg_quote($path, '/').'\s+(\S+)\s+/'.$ci, $AUTH_ACL); + if(count($matches)) { + foreach($matches as $match) { + $match = preg_replace('/#.*$/', '', $match); //ignore comments + $acl = preg_split('/\s+/', $match); + if(!in_array($acl[1], $groups)) { continue; } if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL! - if($acl[2] > $perm){ + if($acl[2] > $perm) { $perm = $acl[2]; } } //we had a match - return it - if ($perm != -1) { + if($perm != -1) { return $perm; } } //get next higher namespace - $ns = getNS($ns); + $ns = getNS($ns); - if($path != '*'){ + if($path != '*') { $path = $ns.':*'; if($path == ':*') $path = '*'; - }else{ + } else { //we did this already //looks like there is something wrong with the ACL //break here msg('No ACL setup yet! Denying access to everyone.'); return AUTH_NONE; } - }while(1); //this should never loop endless + } while(1); //this should never loop endless + return AUTH_NONE; } /** @@ -602,7 +625,7 @@ function auth_aclcheck($id,$user,$groups){ * @author Andreas Gohr <gohr@cosmocode.de> * @see rawurldecode() */ -function auth_nameencode($name,$skip_group=false){ +function auth_nameencode($name, $skip_group = false) { global $cache_authname; $cache =& $cache_authname; $name = (string) $name; @@ -610,13 +633,17 @@ function auth_nameencode($name,$skip_group=false){ // never encode wildcard FS#1955 if($name == '%USER%') return $name; - if (!isset($cache[$name][$skip_group])) { - if($skip_group && $name{0} =='@'){ - $cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', - "'%'.dechex(ord(substr('\\1',-1)))",substr($name,1)); - }else{ - $cache[$name][$skip_group] = preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', - "'%'.dechex(ord(substr('\\1',-1)))",$name); + if(!isset($cache[$name][$skip_group])) { + if($skip_group && $name{0} == '@') { + $cache[$name][$skip_group] = '@'.preg_replace( + '/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', + "'%'.dechex(ord(substr('\\1',-1)))", substr($name, 1) + ); + } else { + $cache[$name][$skip_group] = preg_replace( + '/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', + "'%'.dechex(ord(substr('\\1',-1)))", $name + ); } } @@ -631,20 +658,20 @@ function auth_nameencode($name,$skip_group=false){ * * @return string pronouncable password */ -function auth_pwgen(){ +function auth_pwgen() { $pw = ''; $c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones - $v = 'aeiou'; //vowels - $a = $c.$v; //both + $v = 'aeiou'; //vowels + $a = $c.$v; //both //use two syllables... - for($i=0;$i < 2; $i++){ - $pw .= $c[rand(0, strlen($c)-1)]; - $pw .= $v[rand(0, strlen($v)-1)]; - $pw .= $a[rand(0, strlen($a)-1)]; + for($i = 0; $i < 2; $i++) { + $pw .= $c[rand(0, strlen($c) - 1)]; + $pw .= $v[rand(0, strlen($v) - 1)]; + $pw .= $a[rand(0, strlen($a) - 1)]; } //... and add a nice number - $pw .= rand(10,99); + $pw .= rand(10, 99); return $pw; } @@ -653,38 +680,33 @@ function auth_pwgen(){ * Sends a password to the given user * * @author Andreas Gohr <andi@splitbrain.org> - * + * @param string $user Login name of the user + * @param string $password The new password in clear text * @return bool true on success */ -function auth_sendPassword($user,$password){ - global $conf; +function auth_sendPassword($user, $password) { global $lang; + /* @var auth_basic $auth */ global $auth; - if (!$auth) return false; + if(!$auth) return false; - $hdrs = ''; $user = $auth->cleanUser($user); $userinfo = $auth->getUserData($user); if(!$userinfo['mail']) return false; $text = rawLocale('password'); - $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text); - $text = str_replace('@FULLNAME@',$userinfo['name'],$text); - $text = str_replace('@LOGIN@',$user,$text); - $text = str_replace('@PASSWORD@',$password,$text); - $text = str_replace('@TITLE@',$conf['title'],$text); - - if(empty($conf['mailprefix'])) { - $subject = $lang['regpwmail']; - } else { - $subject = '['.$conf['mailprefix'].'] '.$lang['regpwmail']; - } - - return mail_send($userinfo['name'].' <'.$userinfo['mail'].'>', - $subject, - $text, - $conf['mailfrom']); + $trep = array( + 'FULLNAME' => $userinfo['name'], + 'LOGIN' => $user, + 'PASSWORD' => $password + ); + + $mail = new Mailer(); + $mail->to($userinfo['name'].' <'.$userinfo['mail'].'>'); + $mail->subject($lang['regpwmail']); + $mail->setBody($text, $trep); + return $mail->send(); } /** @@ -693,12 +715,12 @@ function auth_sendPassword($user,$password){ * This registers a new user - Data is read directly from $_POST * * @author Andreas Gohr <andi@splitbrain.org> - * * @return bool true on success, false on any error */ -function register(){ +function register() { global $lang; global $conf; + /* @var auth_basic $auth */ global $auth; if(!$_POST['save']) return false; @@ -708,61 +730,63 @@ function register(){ $_POST['login'] = trim($auth->cleanUser($_POST['login'])); //clean fullname and email - $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname'])); - $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email'])); + $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $_POST['fullname'])); + $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $_POST['email'])); - if( empty($_POST['login']) || + if(empty($_POST['login']) || empty($_POST['fullname']) || - empty($_POST['email']) ){ - msg($lang['regmissing'],-1); + empty($_POST['email']) + ) { + msg($lang['regmissing'], -1); return false; } - if ($conf['autopasswd']) { - $pass = auth_pwgen(); // automatically generate password - } elseif (empty($_POST['pass']) || - empty($_POST['passchk'])) { - msg($lang['regmissing'], -1); // complain about missing passwords + if($conf['autopasswd']) { + $pass = auth_pwgen(); // automatically generate password + } elseif(empty($_POST['pass']) || + empty($_POST['passchk']) + ) { + msg($lang['regmissing'], -1); // complain about missing passwords return false; - } elseif ($_POST['pass'] != $_POST['passchk']) { - msg($lang['regbadpass'], -1); // complain about misspelled passwords + } elseif($_POST['pass'] != $_POST['passchk']) { + msg($lang['regbadpass'], -1); // complain about misspelled passwords return false; } else { - $pass = $_POST['pass']; // accept checked and valid password + $pass = $_POST['pass']; // accept checked and valid password } //check mail - if(!mail_isvalid($_POST['email'])){ - msg($lang['regbadmail'],-1); + if(!mail_isvalid($_POST['email'])) { + msg($lang['regbadmail'], -1); return false; } //okay try to create the user - if(!$auth->triggerUserMod('create', array($_POST['login'],$pass,$_POST['fullname'],$_POST['email']))){ - msg($lang['reguexists'],-1); + if(!$auth->triggerUserMod('create', array($_POST['login'], $pass, $_POST['fullname'], $_POST['email']))) { + msg($lang['reguexists'], -1); return false; } // create substitutions for use in notification email $substitutions = array( - 'NEWUSER' => $_POST['login'], - 'NEWNAME' => $_POST['fullname'], - 'NEWEMAIL' => $_POST['email'], - ); + 'NEWUSER' => $_POST['login'], + 'NEWNAME' => $_POST['fullname'], + 'NEWEMAIL' => $_POST['email'], + ); - if (!$conf['autopasswd']) { - msg($lang['regsuccess2'],1); + if(!$conf['autopasswd']) { + msg($lang['regsuccess2'], 1); notify('', 'register', '', $_POST['login'], false, $substitutions); return true; } // autogenerated password? then send him the password - if (auth_sendPassword($_POST['login'],$pass)){ - msg($lang['regsuccess'],1); + if(auth_sendPassword($_POST['login'], $pass)) { + msg($lang['regsuccess'], 1); notify('', 'register', '', $_POST['login'], false, $substitutions); return true; - }else{ - msg($lang['regmailfail'],-1); + } else { + msg($lang['regmailfail'], -1); return false; } } @@ -774,63 +798,78 @@ function register(){ */ function updateprofile() { global $conf; - global $INFO; global $lang; + /* @var auth_basic $auth */ global $auth; + /* @var Input $INPUT */ + global $INPUT; - if(empty($_POST['save'])) return false; + if(!$INPUT->post->bool('save')) return false; if(!checkSecurityToken()) return false; if(!actionOK('profile')) { - msg($lang['profna'],-1); + msg($lang['profna'], -1); return false; } - if ($_POST['newpass'] != $_POST['passchk']) { - msg($lang['regbadpass'], -1); // complain about misspelled passwords + $changes = array(); + $changes['pass'] = $INPUT->post->str('newpass'); + $changes['name'] = $INPUT->post->str('fullname'); + $changes['mail'] = $INPUT->post->str('email'); + + // check misspelled passwords + if($changes['pass'] != $INPUT->post->str('passchk')) { + msg($lang['regbadpass'], -1); return false; } - //clean fullname and email - $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname'])); - $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email'])); + // clean fullname and email + $changes['name'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $changes['name'])); + $changes['mail'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $changes['mail'])); - if ((empty($_POST['fullname']) && $auth->canDo('modName')) || - (empty($_POST['email']) && $auth->canDo('modMail'))) { - msg($lang['profnoempty'],-1); + // no empty name and email (except the backend doesn't support them) + if((empty($changes['name']) && $auth->canDo('modName')) || + (empty($changes['mail']) && $auth->canDo('modMail')) + ) { + msg($lang['profnoempty'], -1); return false; } - - if (!mail_isvalid($_POST['email']) && $auth->canDo('modMail')){ - msg($lang['regbadmail'],-1); + if(!mail_isvalid($changes['mail']) && $auth->canDo('modMail')) { + msg($lang['regbadmail'], -1); return false; } - if ($_POST['fullname'] != $INFO['userinfo']['name'] && $auth->canDo('modName')) $changes['name'] = $_POST['fullname']; - if ($_POST['email'] != $INFO['userinfo']['mail'] && $auth->canDo('modMail')) $changes['mail'] = $_POST['email']; - if (!empty($_POST['newpass']) && $auth->canDo('modPass')) $changes['pass'] = $_POST['newpass']; + $changes = array_filter($changes); + + // check for unavailable capabilities + if(!$auth->canDo('modName')) unset($changes['name']); + if(!$auth->canDo('modMail')) unset($changes['mail']); + if(!$auth->canDo('modPass')) unset($changes['pass']); - if (!count($changes)) { + // anything to do? + if(!count($changes)) { msg($lang['profnochange'], -1); return false; } - if ($conf['profileconfirm']) { - if (!$auth->checkPass($_SERVER['REMOTE_USER'], $_POST['oldpass'])) { - msg($lang['badlogin'],-1); + if($conf['profileconfirm']) { + if(!$auth->checkPass($_SERVER['REMOTE_USER'], $INPUT->post->str('oldpass'))) { + msg($lang['badlogin'], -1); return false; } } - if ($result = $auth->triggerUserMod('modify', array($_SERVER['REMOTE_USER'], $changes))) { + if($result = $auth->triggerUserMod('modify', array($_SERVER['REMOTE_USER'], $changes))) { // update cookie and session with the changed data - if ($changes['pass']){ - list($user,$sticky,$pass) = auth_getCookie(); - $pass = PMA_blowfish_encrypt($changes['pass'],auth_cookiesalt(!$sticky)); - auth_setCookie($_SERVER['REMOTE_USER'],$pass,(bool)$sticky); + if($changes['pass']) { + list( /*user*/, $sticky, /*pass*/) = auth_getCookie(); + $pass = PMA_blowfish_encrypt($changes['pass'], auth_cookiesalt(!$sticky)); + auth_setCookie($_SERVER['REMOTE_USER'], $pass, (bool) $sticky); } return true; } + + return false; } /** @@ -847,68 +886,73 @@ function updateprofile() { * * @return bool true on success, false on any error */ -function act_resendpwd(){ +function act_resendpwd() { global $lang; global $conf; + /* @var auth_basic $auth */ global $auth; + /* @var Input $INPUT */ + global $INPUT; if(!actionOK('resendpwd')) { - msg($lang['resendna'],-1); + msg($lang['resendna'], -1); return false; } - $token = preg_replace('/[^a-f0-9]+/','',$_REQUEST['pwauth']); + $token = preg_replace('/[^a-f0-9]+/', '', $INPUT->str('pwauth')); - if($token){ + if($token) { // we're in token phase - get user info from token $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth'; - if(!@file_exists($tfile)){ - msg($lang['resendpwdbadauth'],-1); - unset($_REQUEST['pwauth']); + if(!@file_exists($tfile)) { + msg($lang['resendpwdbadauth'], -1); + $INPUT->remove('pwauth'); return false; } // token is only valid for 3 days - if( (time() - filemtime($tfile)) > (3*60*60*24) ){ - msg($lang['resendpwdbadauth'],-1); - unset($_REQUEST['pwauth']); + if((time() - filemtime($tfile)) > (3 * 60 * 60 * 24)) { + msg($lang['resendpwdbadauth'], -1); + $INPUT->remove('pwauth'); @unlink($tfile); return false; } - $user = io_readfile($tfile); + $user = io_readfile($tfile); $userinfo = $auth->getUserData($user); if(!$userinfo['mail']) { msg($lang['resendpwdnouser'], -1); return false; } - if(!$conf['autopasswd']){ // we let the user choose a password + if(!$conf['autopasswd']) { // we let the user choose a password + $pass = $INPUT->str('pass'); + // password given correctly? - if(!isset($_REQUEST['pass']) || $_REQUEST['pass'] == '') return false; - if($_REQUEST['pass'] != $_REQUEST['passchk']){ - msg($lang['regbadpass'],-1); + if(!$pass) return false; + if($pass != $INPUT->str('passchk')) { + msg($lang['regbadpass'], -1); return false; } - $pass = $_REQUEST['pass']; - if (!$auth->triggerUserMod('modify', array($user,array('pass' => $pass)))) { - msg('error modifying user data',-1); + // change it + if(!$auth->triggerUserMod('modify', array($user, array('pass' => $pass)))) { + msg('error modifying user data', -1); return false; } - }else{ // autogenerate the password and send by mail + } else { // autogenerate the password and send by mail $pass = auth_pwgen(); - if (!$auth->triggerUserMod('modify', array($user,array('pass' => $pass)))) { - msg('error modifying user data',-1); + if(!$auth->triggerUserMod('modify', array($user, array('pass' => $pass)))) { + msg('error modifying user data', -1); return false; } - if (auth_sendPassword($user,$pass)) { - msg($lang['resendpwdsuccess'],1); + if(auth_sendPassword($user, $pass)) { + msg($lang['resendpwdsuccess'], 1); } else { - msg($lang['regmailfail'],-1); + msg($lang['regmailfail'], -1); } } @@ -918,13 +962,13 @@ function act_resendpwd(){ } else { // we're in request phase - if(!$_POST['save']) return false; + if(!$INPUT->post->bool('save')) return false; - if (empty($_POST['login'])) { + if(!$INPUT->post->str('login')) { msg($lang['resendpwdmissing'], -1); return false; } else { - $user = trim($auth->cleanUser($_POST['login'])); + $user = trim($auth->cleanUser($INPUT->post->str('login'))); } $userinfo = $auth->getUserData($user); @@ -936,35 +980,29 @@ function act_resendpwd(){ // generate auth token $token = md5(auth_cookiesalt().$user); //secret but user based $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth'; - $url = wl('',array('do'=>'resendpwd','pwauth'=>$token),true,'&'); + $url = wl('', array('do'=> 'resendpwd', 'pwauth'=> $token), true, '&'); - io_saveFile($tfile,$user); + io_saveFile($tfile, $user); $text = rawLocale('pwconfirm'); - $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text); - $text = str_replace('@FULLNAME@',$userinfo['name'],$text); - $text = str_replace('@LOGIN@',$user,$text); - $text = str_replace('@TITLE@',$conf['title'],$text); - $text = str_replace('@CONFIRM@',$url,$text); - - if(empty($conf['mailprefix'])) { - $subject = $lang['regpwmail']; + $trep = array( + 'FULLNAME' => $userinfo['name'], + 'LOGIN' => $user, + 'CONFIRM' => $url + ); + + $mail = new Mailer(); + $mail->to($userinfo['name'].' <'.$userinfo['mail'].'>'); + $mail->subject($lang['regpwmail']); + $mail->setBody($text, $trep); + if($mail->send()) { + msg($lang['resendpwdconfirm'], 1); } else { - $subject = '['.$conf['mailprefix'].'] '.$lang['regpwmail']; - } - - if(mail_send($userinfo['name'].' <'.$userinfo['mail'].'>', - $subject, - $text, - $conf['mailfrom'])){ - msg($lang['resendpwdconfirm'],1); - }else{ - msg($lang['regmailfail'],-1); + msg($lang['regmailfail'], -1); } return true; } - - return false; // never reached + // never reached } /** @@ -974,32 +1012,37 @@ function act_resendpwd(){ * is chosen. * * @author Andreas Gohr <andi@splitbrain.org> + * @param string $clear The clear text password + * @param string $method The hashing method + * @param string $salt A salt, null for random * @return string The crypted password */ -function auth_cryptPassword($clear,$method='',$salt=null){ +function auth_cryptPassword($clear, $method = '', $salt = null) { global $conf; if(empty($method)) $method = $conf['passcrypt']; - $pass = new PassHash(); - $call = 'hash_'.$method; + $pass = new PassHash(); + $call = 'hash_'.$method; - if(!method_exists($pass,$call)){ - msg("Unsupported crypt method $method",-1); + if(!method_exists($pass, $call)) { + msg("Unsupported crypt method $method", -1); return false; } - return $pass->$call($clear,$salt); + return $pass->$call($clear, $salt); } /** * Verifies a cleartext password against a crypted hash * - * @author Andreas Gohr <andi@splitbrain.org> - * @return bool + * @author Andreas Gohr <andi@splitbrain.org> + * @param string $clear The clear text password + * @param string $crypt The hash to compare with + * @return bool true if both match */ -function auth_verifyPassword($clear,$crypt){ +function auth_verifyPassword($clear, $crypt) { $pass = new PassHash(); - return $pass->verify_hash($clear,$crypt); + return $pass->verify_hash($clear, $crypt); } /** @@ -1008,23 +1051,25 @@ function auth_verifyPassword($clear,$crypt){ * @param string $user username * @param string $pass encrypted password * @param bool $sticky whether or not the cookie will last beyond the session + * @return bool */ -function auth_setCookie($user,$pass,$sticky) { +function auth_setCookie($user, $pass, $sticky) { global $conf; + /* @var auth_basic $auth */ global $auth; global $USERINFO; - if (!$auth) return false; + if(!$auth) return false; $USERINFO = $auth->getUserData($user); // set cookie - $cookie = base64_encode($user).'|'.((int) $sticky).'|'.base64_encode($pass); + $cookie = base64_encode($user).'|'.((int) $sticky).'|'.base64_encode($pass); $cookieDir = empty($conf['cookiedir']) ? DOKU_REL : $conf['cookiedir']; - $time = $sticky ? (time()+60*60*24*365) : 0; //one year - if (version_compare(PHP_VERSION, '5.2.0', '>')) { - setcookie(DOKU_COOKIE,$cookie,$time,$cookieDir,'',($conf['securecookie'] && is_ssl()),true); - }else{ - setcookie(DOKU_COOKIE,$cookie,$time,$cookieDir,'',($conf['securecookie'] && is_ssl())); + $time = $sticky ? (time() + 60 * 60 * 24 * 365) : 0; //one year + if(version_compare(PHP_VERSION, '5.2.0', '>')) { + setcookie(DOKU_COOKIE, $cookie, $time, $cookieDir, '', ($conf['securecookie'] && is_ssl()), true); + } else { + setcookie(DOKU_COOKIE, $cookie, $time, $cookieDir, '', ($conf['securecookie'] && is_ssl())); } // set session $_SESSION[DOKU_COOKIE]['auth']['user'] = $user; @@ -1032,6 +1077,8 @@ function auth_setCookie($user,$pass,$sticky) { $_SESSION[DOKU_COOKIE]['auth']['buid'] = auth_browseruid(); $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO; $_SESSION[DOKU_COOKIE]['auth']['time'] = time(); + + return true; } /** @@ -1039,15 +1086,15 @@ function auth_setCookie($user,$pass,$sticky) { * * @returns array */ -function auth_getCookie(){ - if (!isset($_COOKIE[DOKU_COOKIE])) { +function auth_getCookie() { + if(!isset($_COOKIE[DOKU_COOKIE])) { return array(null, null, null); } - list($user,$sticky,$pass) = explode('|',$_COOKIE[DOKU_COOKIE],3); + list($user, $sticky, $pass) = explode('|', $_COOKIE[DOKU_COOKIE], 3); $sticky = (bool) $sticky; $pass = base64_decode($pass); $user = base64_decode($user); - return array($user,$sticky,$pass); + return array($user, $sticky, $pass); } //Setup VIM: ex: et ts=2 : diff --git a/inc/auth/ad.class.php b/inc/auth/ad.class.php index bc4168527..e161c2939 100644 --- a/inc/auth/ad.class.php +++ b/inc/auth/ad.class.php @@ -70,6 +70,9 @@ class auth_ad extends auth_basic { } // Prepare SSO + if(!utf8_check($_SERVER['REMOTE_USER'])){ + $_SERVER['REMOTE_USER'] = utf8_encode($_SERVER['REMOTE_USER']); + } if($_SERVER['REMOTE_USER'] && $this->cnf['sso']){ // remove possible NTLM domain list($dom,$usr) = explode('\\',$_SERVER['REMOTE_USER'],2); diff --git a/inc/common.php b/inc/common.php index 0a75f2eab..768260bbf 100644 --- a/inc/common.php +++ b/inc/common.php @@ -11,11 +11,11 @@ if(!defined('DOKU_INC')) die('meh.'); /** * These constants are used with the recents function */ -define('RECENTS_SKIP_DELETED',2); -define('RECENTS_SKIP_MINORS',4); -define('RECENTS_SKIP_SUBSPACES',8); -define('RECENTS_MEDIA_CHANGES',16); -define('RECENTS_MEDIA_PAGES_MIXED',32); +define('RECENTS_SKIP_DELETED', 2); +define('RECENTS_SKIP_MINORS', 4); +define('RECENTS_SKIP_SUBSPACES', 8); +define('RECENTS_MEDIA_CHANGES', 16); +define('RECENTS_MEDIA_PAGES_MIXED', 32); /** * Wrapper around htmlspecialchars() @@ -23,7 +23,7 @@ define('RECENTS_MEDIA_PAGES_MIXED',32); * @author Andreas Gohr <andi@splitbrain.org> * @see htmlspecialchars() */ -function hsc($string){ +function hsc($string) { return htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); } @@ -34,7 +34,7 @@ function hsc($string){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function ptln($string,$indent=0){ +function ptln($string, $indent = 0) { echo str_repeat(' ', $indent)."$string\n"; } @@ -43,8 +43,8 @@ function ptln($string,$indent=0){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function stripctl($string){ - return preg_replace('/[\x00-\x1F]+/s','',$string); +function stripctl($string) { + return preg_replace('/[\x00-\x1F]+/s', '', $string); } /** @@ -55,19 +55,19 @@ function stripctl($string){ * @link http://christ1an.blogspot.com/2007/04/preventing-csrf-efficiently.html * @return string */ -function getSecurityToken(){ +function getSecurityToken() { return md5(auth_cookiesalt().session_id().$_SERVER['REMOTE_USER']); } /** * Check the secret CSRF token */ -function checkSecurityToken($token=null){ +function checkSecurityToken($token = null) { if(!$_SERVER['REMOTE_USER']) return true; // no logged in user, no need for a check if(is_null($token)) $token = $_REQUEST['sectok']; - if(getSecurityToken() != $token){ - msg('Security Token did not match. Possible CSRF attack.',-1); + if(getSecurityToken() != $token) { + msg('Security Token did not match. Possible CSRF attack.', -1); return false; } return true; @@ -78,13 +78,10 @@ function checkSecurityToken($token=null){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function formSecurityToken($print=true){ +function formSecurityToken($print = true) { $ret = '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" /></div>'."\n"; - if($print){ - echo $ret; - }else{ - return $ret; - } + if($print) echo $ret; + return $ret; } /** @@ -93,7 +90,7 @@ function formSecurityToken($print=true){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function pageinfo(){ +function pageinfo() { global $ID; global $REV; global $RANGE; @@ -102,32 +99,32 @@ function pageinfo(){ // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary - $info['id'] = $ID; + $info['id'] = $ID; $info['rev'] = $REV; // set info about manager/admin status. $info['isadmin'] = false; $info['ismanager'] = false; - if(isset($_SERVER['REMOTE_USER'])){ - $info['userinfo'] = $USERINFO; - $info['perm'] = auth_quickaclcheck($ID); - $info['subscribed'] = get_info_subscribed(); - $info['client'] = $_SERVER['REMOTE_USER']; + if(isset($_SERVER['REMOTE_USER'])) { + $info['userinfo'] = $USERINFO; + $info['perm'] = auth_quickaclcheck($ID); + $info['subscribed'] = get_info_subscribed(); + $info['client'] = $_SERVER['REMOTE_USER']; - if($info['perm'] == AUTH_ADMIN){ + if($info['perm'] == AUTH_ADMIN) { $info['isadmin'] = true; $info['ismanager'] = true; - }elseif(auth_ismanager()){ + } elseif(auth_ismanager()) { $info['ismanager'] = true; } // if some outside auth were used only REMOTE_USER is set - if(!$info['userinfo']['name']){ + if(!$info['userinfo']['name']) { $info['userinfo']['name'] = $_SERVER['REMOTE_USER']; } - }else{ - $info['perm'] = auth_aclcheck($ID,'',null); + } else { + $info['perm'] = auth_aclcheck($ID, '', null); $info['subscribed'] = false; $info['client'] = clientIP(true); } @@ -136,76 +133,76 @@ function pageinfo(){ $info['locked'] = checklock($ID); $info['filepath'] = fullpath(wikiFN($ID)); $info['exists'] = @file_exists($info['filepath']); - if($REV){ + if($REV) { //check if current revision was meant - if($info['exists'] && (@filemtime($info['filepath'])==$REV)){ + if($info['exists'] && (@filemtime($info['filepath']) == $REV)) { $REV = ''; - }elseif($RANGE){ + } elseif($RANGE) { //section editing does not work with old revisions! $REV = ''; $RANGE = ''; - msg($lang['nosecedit'],0); - }else{ + msg($lang['nosecedit'], 0); + } else { //really use old revision - $info['filepath'] = fullpath(wikiFN($ID,$REV)); + $info['filepath'] = fullpath(wikiFN($ID, $REV)); $info['exists'] = @file_exists($info['filepath']); } } $info['rev'] = $REV; - if($info['exists']){ + if($info['exists']) { $info['writable'] = (is_writable($info['filepath']) && - ($info['perm'] >= AUTH_EDIT)); - }else{ + ($info['perm'] >= AUTH_EDIT)); + } else { $info['writable'] = ($info['perm'] >= AUTH_CREATE); } - $info['editable'] = ($info['writable'] && empty($info['locked'])); - $info['lastmod'] = @filemtime($info['filepath']); + $info['editable'] = ($info['writable'] && empty($info['locked'])); + $info['lastmod'] = @filemtime($info['filepath']); //load page meta data $info['meta'] = p_get_metadata($ID); //who's the editor - if($REV){ + if($REV) { $revinfo = getRevisionInfo($ID, $REV, 1024); - }else{ - if (is_array($info['meta']['last_change'])) { + } else { + if(is_array($info['meta']['last_change'])) { $revinfo = $info['meta']['last_change']; } else { $revinfo = getRevisionInfo($ID, $info['lastmod'], 1024); // cache most recent changelog line in metadata if missing and still valid - if ($revinfo!==false) { + if($revinfo !== false) { $info['meta']['last_change'] = $revinfo; p_set_metadata($ID, array('last_change' => $revinfo)); } } } //and check for an external edit - if($revinfo!==false && $revinfo['date']!=$info['lastmod']){ + if($revinfo !== false && $revinfo['date'] != $info['lastmod']) { // cached changelog line no longer valid - $revinfo = false; + $revinfo = false; $info['meta']['last_change'] = $revinfo; p_set_metadata($ID, array('last_change' => $revinfo)); } - $info['ip'] = $revinfo['ip']; - $info['user'] = $revinfo['user']; - $info['sum'] = $revinfo['sum']; + $info['ip'] = $revinfo['ip']; + $info['user'] = $revinfo['user']; + $info['sum'] = $revinfo['sum']; // See also $INFO['meta']['last_change'] which is the most recent log line for page $ID. // Use $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT in place of $info['minor']. - if($revinfo['user']){ + if($revinfo['user']) { $info['editor'] = $revinfo['user']; - }else{ + } else { $info['editor'] = $revinfo['ip']; } // draft - $draft = getCacheName($info['client'].$ID,'.draft'); - if(@file_exists($draft)){ - if(@filemtime($draft) < @filemtime(wikiFN($ID))){ + $draft = getCacheName($info['client'].$ID, '.draft'); + if(@file_exists($draft)) { + if(@filemtime($draft) < @filemtime(wikiFN($ID))) { // remove stale draft @unlink($draft); - }else{ + } else { $info['draft'] = $draft; } } @@ -221,14 +218,14 @@ function pageinfo(){ * * @author Andreas Gohr */ -function buildURLparams($params, $sep='&'){ +function buildURLparams($params, $sep = '&') { $url = ''; $amp = false; - foreach($params as $key => $val){ + foreach($params as $key => $val) { if($amp) $url .= $sep; $url .= rawurlencode($key).'='; - $url .= rawurlencode((string)$val); + $url .= rawurlencode((string) $val); $amp = true; } return $url; @@ -241,29 +238,28 @@ function buildURLparams($params, $sep='&'){ * * @author Andreas Gohr */ -function buildAttributes($params,$skipempty=false){ - $url = ''; +function buildAttributes($params, $skipempty = false) { + $url = ''; $white = false; - foreach($params as $key => $val){ + foreach($params as $key => $val) { if($key{0} == '_') continue; if($val === '' && $skipempty) continue; if($white) $url .= ' '; $url .= $key.'="'; - $url .= htmlspecialchars ($val); + $url .= htmlspecialchars($val); $url .= '"'; $white = true; } return $url; } - /** * This builds the breadcrumb trail and returns it as array * * @author Andreas Gohr <andi@splitbrain.org> */ -function breadcrumbs(){ +function breadcrumbs() { // we prepare the breadcrumbs early for quick session closing static $crumbs = null; if($crumbs != null) return $crumbs; @@ -276,30 +272,30 @@ function breadcrumbs(){ $crumbs = isset($_SESSION[DOKU_COOKIE]['bc']) ? $_SESSION[DOKU_COOKIE]['bc'] : array(); //we only save on show and existing wiki documents $file = wikiFN($ID); - if($ACT != 'show' || !@file_exists($file)){ + if($ACT != 'show' || !@file_exists($file)) { $_SESSION[DOKU_COOKIE]['bc'] = $crumbs; return $crumbs; } // page names $name = noNSorNS($ID); - if (useHeading('navigation')) { + if(useHeading('navigation')) { // get page title - $title = p_get_first_heading($ID,METADATA_RENDER_USING_SIMPLE_CACHE); - if ($title) { + $title = p_get_first_heading($ID, METADATA_RENDER_USING_SIMPLE_CACHE); + if($title) { $name = $title; } } //remove ID from array - if (isset($crumbs[$ID])) { + if(isset($crumbs[$ID])) { unset($crumbs[$ID]); } //add to array $crumbs[$ID] = $name; //reduce size - while(count($crumbs) > $conf['breadcrumbs']){ + while(count($crumbs) > $conf['breadcrumbs']) { array_shift($crumbs); } //save to session @@ -318,18 +314,19 @@ function breadcrumbs(){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function idfilter($id,$ue=true){ +function idfilter($id, $ue = true) { global $conf; - if ($conf['useslash'] && $conf['userewrite']){ - $id = strtr($id,':','/'); - }elseif (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && - $conf['userewrite']) { - $id = strtr($id,':',';'); - } - if($ue){ + if($conf['useslash'] && $conf['userewrite']) { + $id = strtr($id, ':', '/'); + } elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && + $conf['userewrite'] + ) { + $id = strtr($id, ':', ';'); + } + if($ue) { $id = rawurlencode($id); - $id = str_replace('%3A',':',$id); //keep as colon - $id = str_replace('%2F','/',$id); //keep as slash + $id = str_replace('%3A', ':', $id); //keep as colon + $id = str_replace('%2F', '/', $id); //keep as slash } return $id; } @@ -342,33 +339,35 @@ function idfilter($id,$ue=true){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function wl($id='',$more='',$abs=false,$sep='&'){ +function wl($id = '', $urlParameters = '', $absolute = false, $separator = '&') { global $conf; - if(is_array($more)){ - $more = buildURLparams($more,$sep); - }else{ - $more = str_replace(',',$sep,$more); + if(is_array($urlParameters)) { + $urlParameters = buildURLparams($urlParameters, $separator); + } else { + $urlParameters = str_replace(',', $separator, $urlParameters); } - - $id = idfilter($id); - if($abs){ + if($id === '') { + $id = $conf['start']; + } + $id = idfilter($id); + if($absolute) { $xlink = DOKU_URL; - }else{ + } else { $xlink = DOKU_BASE; } - if($conf['userewrite'] == 2){ + if($conf['userewrite'] == 2) { $xlink .= DOKU_SCRIPT.'/'.$id; - if($more) $xlink .= '?'.$more; - }elseif($conf['userewrite']){ + if($urlParameters) $xlink .= '?'.$urlParameters; + } elseif($conf['userewrite']) { $xlink .= $id; - if($more) $xlink .= '?'.$more; - }elseif($id){ + if($urlParameters) $xlink .= '?'.$urlParameters; + } elseif($id) { $xlink .= DOKU_SCRIPT.'?id='.$id; - if($more) $xlink .= $sep.$more; - }else{ + if($urlParameters) $xlink .= $separator.$urlParameters; + } else { $xlink .= DOKU_SCRIPT; - if($more) $xlink .= '?'.$more; + if($urlParameters) $xlink .= '?'.$urlParameters; } return $xlink; @@ -381,29 +380,29 @@ function wl($id='',$more='',$abs=false,$sep='&'){ * * @author Ben Coburn <btcoburn@silicodon.net> */ -function exportlink($id='',$format='raw',$more='',$abs=false,$sep='&'){ +function exportlink($id = '', $format = 'raw', $more = '', $abs = false, $sep = '&') { global $conf; - if(is_array($more)){ - $more = buildURLparams($more,$sep); - }else{ - $more = str_replace(',',$sep,$more); + if(is_array($more)) { + $more = buildURLparams($more, $sep); + } else { + $more = str_replace(',', $sep, $more); } $format = rawurlencode($format); - $id = idfilter($id); - if($abs){ + $id = idfilter($id); + if($abs) { $xlink = DOKU_URL; - }else{ + } else { $xlink = DOKU_BASE; } - if($conf['userewrite'] == 2){ + if($conf['userewrite'] == 2) { $xlink .= DOKU_SCRIPT.'/'.$id.'?do=export_'.$format; if($more) $xlink .= $sep.$more; - }elseif($conf['userewrite'] == 1){ + } elseif($conf['userewrite'] == 1) { $xlink .= '_export/'.$format.'/'.$id; if($more) $xlink .= '?'.$more; - }else{ + } else { $xlink .= DOKU_SCRIPT.'?do=export_'.$format.$sep.'id='.$id; if($more) $xlink .= $sep.$more; } @@ -419,42 +418,43 @@ function exportlink($id='',$format='raw',$more='',$abs=false,$sep='&'){ * The $more parameter should always be given as array, the function then * will strip default parameters to produce even cleaner URLs * - * @param string $id - the media file id or URL - * @param mixed $more - string or array with additional parameters - * @param boolean $direct - link to detail page if false - * @param string $sep - URL parameter separator - * @param boolean $abs - Create an absolute URL + * @param string $id the media file id or URL + * @param mixed $more string or array with additional parameters + * @param bool $direct link to detail page if false + * @param string $sep URL parameter separator + * @param bool $abs Create an absolute URL + * @return string */ -function ml($id='',$more='',$direct=true,$sep='&',$abs=false){ +function ml($id = '', $more = '', $direct = true, $sep = '&', $abs = false) { global $conf; - if(is_array($more)){ + if(is_array($more)) { // strip defaults for shorter URLs if(isset($more['cache']) && $more['cache'] == 'cache') unset($more['cache']); if(!$more['w']) unset($more['w']); if(!$more['h']) unset($more['h']); if(isset($more['id']) && $direct) unset($more['id']); - $more = buildURLparams($more,$sep); - }else{ - $more = str_replace('cache=cache','',$more); //skip default - $more = str_replace(',,',',',$more); - $more = str_replace(',',$sep,$more); + $more = buildURLparams($more, $sep); + } else { + $more = str_replace('cache=cache', '', $more); //skip default + $more = str_replace(',,', ',', $more); + $more = str_replace(',', $sep, $more); } - if($abs){ + if($abs) { $xlink = DOKU_URL; - }else{ + } else { $xlink = DOKU_BASE; } // external URLs are always direct without rewriting - if(preg_match('#^(https?|ftp)://#i',$id)){ + if(preg_match('#^(https?|ftp)://#i', $id)) { $xlink .= 'lib/exe/fetch.php'; // add hash: - $xlink .= '?hash='.substr(md5(auth_cookiesalt().$id),0,6); - if($more){ + $xlink .= '?hash='.substr(md5(auth_cookiesalt().$id), 0, 6); + if($more) { $xlink .= $sep.$more; $xlink .= $sep.'media='.rawurlencode($id); - }else{ + } else { $xlink .= $sep.'media='.rawurlencode($id); } return $xlink; @@ -463,29 +463,29 @@ function ml($id='',$more='',$direct=true,$sep='&',$abs=false){ $id = idfilter($id); // decide on scriptname - if($direct){ - if($conf['userewrite'] == 1){ + if($direct) { + if($conf['userewrite'] == 1) { $script = '_media'; - }else{ + } else { $script = 'lib/exe/fetch.php'; } - }else{ - if($conf['userewrite'] == 1){ + } else { + if($conf['userewrite'] == 1) { $script = '_detail'; - }else{ + } else { $script = 'lib/exe/detail.php'; } } // build URL based on rewrite mode - if($conf['userewrite']){ + if($conf['userewrite']) { $xlink .= $script.'/'.$id; if($more) $xlink .= '?'.$more; - }else{ - if($more){ + } else { + if($more) { $xlink .= $script.'?'.$more; $xlink .= $sep.'media='.$id; - }else{ + } else { $xlink .= $script.'?media='.$id; } } @@ -493,15 +493,13 @@ function ml($id='',$more='',$direct=true,$sep='&',$abs=false){ return $xlink; } - - /** * Just builds a link to a script * * @todo maybe obsolete * @author Andreas Gohr <andi@splitbrain.org> */ -function script($script='doku.php'){ +function script($script = 'doku.php') { return DOKU_BASE.DOKU_SCRIPT; } @@ -529,7 +527,7 @@ function script($script='doku.php'){ * @param string $text - optional text to check, if not given the globals are used * @return bool - true if a spam word was found */ -function checkwordblock($text=''){ +function checkwordblock($text = '') { global $TEXT; global $PRE; global $SUF; @@ -541,32 +539,32 @@ function checkwordblock($text=''){ if(!$text) $text = "$PRE $TEXT $SUF"; // we prepare the text a tiny bit to prevent spammers circumventing URL checks - $text = preg_replace('!(\b)(www\.[\w.:?\-;,]+?\.[\w.:?\-;,]+?[\w/\#~:.?+=&%@\!\-.:?\-;,]+?)([.:?\-;,]*[^\w/\#~:.?+=&%@\!\-.:?\-;,])!i','\1http://\2 \2\3',$text); + $text = preg_replace('!(\b)(www\.[\w.:?\-;,]+?\.[\w.:?\-;,]+?[\w/\#~:.?+=&%@\!\-.:?\-;,]+?)([.:?\-;,]*[^\w/\#~:.?+=&%@\!\-.:?\-;,])!i', '\1http://\2 \2\3', $text); $wordblocks = getWordblocks(); // how many lines to read at once (to work around some PCRE limits) - if(version_compare(phpversion(),'4.3.0','<')){ + if(version_compare(phpversion(), '4.3.0', '<')) { // old versions of PCRE define a maximum of parenthesises even if no // backreferences are used - the maximum is 99 // this is very bad performancewise and may even be too high still $chunksize = 40; - }else{ + } else { // read file in chunks of 200 - this should work around the // MAX_PATTERN_SIZE in modern PCRE $chunksize = 200; } - while($blocks = array_splice($wordblocks,0,$chunksize)){ + while($blocks = array_splice($wordblocks, 0, $chunksize)) { $re = array(); // build regexp from blocks - foreach($blocks as $block){ - $block = preg_replace('/#.*$/','',$block); + foreach($blocks as $block) { + $block = preg_replace('/#.*$/', '', $block); $block = trim($block); if(empty($block)) continue; - $re[] = $block; + $re[] = $block; } - if(count($re) && preg_match('#('.join('|',$re).')#si',$text,$matches)) { + if(count($re) && preg_match('#('.join('|', $re).')#si', $text, $matches)) { // prepare event data - $data['matches'] = $matches; + $data['matches'] = $matches; $data['userinfo']['ip'] = $_SERVER['REMOTE_ADDR']; if($_SERVER['REMOTE_USER']) { $data['userinfo']['user'] = $_SERVER['REMOTE_USER']; @@ -590,42 +588,43 @@ function checkwordblock($text=''){ * a routable public address, prefering the ones suplied in the X * headers * - * @param boolean $single If set only a single IP is returned * @author Andreas Gohr <andi@splitbrain.org> + * @param boolean $single If set only a single IP is returned + * @return string */ -function clientIP($single=false){ - $ip = array(); +function clientIP($single = false) { + $ip = array(); $ip[] = $_SERVER['REMOTE_ADDR']; if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) - $ip = array_merge($ip,explode(',',str_replace(' ','',$_SERVER['HTTP_X_FORWARDED_FOR']))); + $ip = array_merge($ip, explode(',', str_replace(' ', '', $_SERVER['HTTP_X_FORWARDED_FOR']))); if(!empty($_SERVER['HTTP_X_REAL_IP'])) - $ip = array_merge($ip,explode(',',str_replace(' ','',$_SERVER['HTTP_X_REAL_IP']))); + $ip = array_merge($ip, explode(',', str_replace(' ', '', $_SERVER['HTTP_X_REAL_IP']))); // some IPv4/v6 regexps borrowed from Feyd // see: http://forums.devnetwork.net/viewtopic.php?f=38&t=53479 - $dec_octet = '(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[0-9])'; - $hex_digit = '[A-Fa-f0-9]'; - $h16 = "{$hex_digit}{1,4}"; + $dec_octet = '(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[0-9])'; + $hex_digit = '[A-Fa-f0-9]'; + $h16 = "{$hex_digit}{1,4}"; $IPv4Address = "$dec_octet\\.$dec_octet\\.$dec_octet\\.$dec_octet"; - $ls32 = "(?:$h16:$h16|$IPv4Address)"; + $ls32 = "(?:$h16:$h16|$IPv4Address)"; $IPv6Address = "(?:(?:{$IPv4Address})|(?:". - "(?:$h16:){6}$ls32" . - "|::(?:$h16:){5}$ls32" . - "|(?:$h16)?::(?:$h16:){4}$ls32" . - "|(?:(?:$h16:){0,1}$h16)?::(?:$h16:){3}$ls32" . - "|(?:(?:$h16:){0,2}$h16)?::(?:$h16:){2}$ls32" . - "|(?:(?:$h16:){0,3}$h16)?::(?:$h16:){1}$ls32" . - "|(?:(?:$h16:){0,4}$h16)?::$ls32" . - "|(?:(?:$h16:){0,5}$h16)?::$h16" . - "|(?:(?:$h16:){0,6}$h16)?::" . - ")(?:\\/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))?)"; + "(?:$h16:){6}$ls32". + "|::(?:$h16:){5}$ls32". + "|(?:$h16)?::(?:$h16:){4}$ls32". + "|(?:(?:$h16:){0,1}$h16)?::(?:$h16:){3}$ls32". + "|(?:(?:$h16:){0,2}$h16)?::(?:$h16:){2}$ls32". + "|(?:(?:$h16:){0,3}$h16)?::(?:$h16:){1}$ls32". + "|(?:(?:$h16:){0,4}$h16)?::$ls32". + "|(?:(?:$h16:){0,5}$h16)?::$h16". + "|(?:(?:$h16:){0,6}$h16)?::". + ")(?:\\/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))?)"; // remove any non-IP stuff - $cnt = count($ip); + $cnt = count($ip); $match = array(); - for($i=0; $i<$cnt; $i++){ - if(preg_match("/^$IPv4Address$/",$ip[$i],$match) || preg_match("/^$IPv6Address$/",$ip[$i],$match)) { + for($i = 0; $i < $cnt; $i++) { + if(preg_match("/^$IPv4Address$/", $ip[$i], $match) || preg_match("/^$IPv6Address$/", $ip[$i], $match)) { $ip[$i] = $match[0]; } else { $ip[$i] = ''; @@ -635,14 +634,14 @@ function clientIP($single=false){ $ip = array_values(array_unique($ip)); if(!$ip[0]) $ip[0] = '0.0.0.0'; // for some strange reason we don't have a IP - if(!$single) return join(',',$ip); + if(!$single) return join(',', $ip); // decide which IP to use, trying to avoid local addresses $ip = array_reverse($ip); - foreach($ip as $i){ - if(preg_match('/^(::1|[fF][eE]80:|127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/',$i)){ + foreach($ip as $i) { + if(preg_match('/^(::1|[fF][eE]80:|127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/', $i)) { continue; - }else{ + } else { return $i; } } @@ -657,37 +656,42 @@ function clientIP($single=false){ * * @link http://www.brainhandles.com/2007/10/15/detecting-mobile-browsers/#code */ -function clientismobile(){ +function clientismobile() { if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) return true; - if(preg_match('/wap\.|\.wap/i',$_SERVER['HTTP_ACCEPT'])) return true; + if(preg_match('/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'])) return true; if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; $uamatches = 'midp|j2me|avantg|docomo|novarra|palmos|palmsource|240x320|opwv|chtml|pda|windows ce|mmp\/|blackberry|mib\/|symbian|wireless|nokia|hand|mobi|phone|cdm|up\.b|audio|SIE\-|SEC\-|samsung|HTC|mot\-|mitsu|sagem|sony|alcatel|lg|erics|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|\d\d\di|moto'; - if(preg_match("/$uamatches/i",$_SERVER['HTTP_USER_AGENT'])) return true; + if(preg_match("/$uamatches/i", $_SERVER['HTTP_USER_AGENT'])) return true; return false; } - /** * Convert one or more comma separated IPs to hostnames * + * If $conf['dnslookups'] is disabled it simply returns the input string + * * @author Glen Harris <astfgl@iamnota.org> - * @returns a comma separated list of hostnames + * @param string $ips comma separated list of IP addresses + * @return string a comma separated list of hostnames */ -function gethostsbyaddrs($ips){ +function gethostsbyaddrs($ips) { + global $conf; + if(!$conf['dnslookups']) return $ips; + $hosts = array(); - $ips = explode(',',$ips); + $ips = explode(',', $ips); if(is_array($ips)) { - foreach($ips as $ip){ + foreach($ips as $ip) { $hosts[] = gethostbyaddr(trim($ip)); } - return join(',',$hosts); + return join(',', $hosts); } else { return gethostbyaddr(trim($ips)); } @@ -700,7 +704,7 @@ function gethostsbyaddrs($ips){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function checklock($id){ +function checklock($id) { global $conf; $lock = wikiLockFN($id); @@ -708,14 +712,14 @@ function checklock($id){ if(!@file_exists($lock)) return false; //lockfile expired - if((time() - filemtime($lock)) > $conf['locktime']){ + if((time() - filemtime($lock)) > $conf['locktime']) { @unlink($lock); return false; } //my own lock - list($ip,$session) = explode("\n",io_readFile($lock)); - if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()){ + list($ip, $session) = explode("\n", io_readFile($lock)); + if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()) { return false; } @@ -727,18 +731,18 @@ function checklock($id){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function lock($id){ +function lock($id) { global $conf; - if($conf['locktime'] == 0){ + if($conf['locktime'] == 0) { return; } $lock = wikiLockFN($id); - if($_SERVER['REMOTE_USER']){ - io_saveFile($lock,$_SERVER['REMOTE_USER']); - }else{ - io_saveFile($lock,clientIP()."\n".session_id()); + if($_SERVER['REMOTE_USER']) { + io_saveFile($lock, $_SERVER['REMOTE_USER']); + } else { + io_saveFile($lock, clientIP()."\n".session_id()); } } @@ -746,13 +750,14 @@ function lock($id){ * Unlock a page if it was locked by the user * * @author Andreas Gohr <andi@splitbrain.org> + * @param string $id page id to unlock * @return bool true if a lock was removed */ -function unlock($id){ +function unlock($id) { $lock = wikiLockFN($id); - if(@file_exists($lock)){ - list($ip,$session) = explode("\n",io_readFile($lock)); - if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()){ + if(@file_exists($lock)) { + list($ip, $session) = explode("\n", io_readFile($lock)); + if($ip == $_SERVER['REMOTE_USER'] || $ip == clientIP() || $session == session_id()) { @unlink($lock); return true; } @@ -766,8 +771,8 @@ function unlock($id){ * @see formText() for 2crlf conversion * @author Andreas Gohr <andi@splitbrain.org> */ -function cleanText($text){ - $text = preg_replace("/(\015\012)|(\015)/","\012",$text); +function cleanText($text) { + $text = preg_replace("/(\015\012)|(\015)/", "\012", $text); return $text; } @@ -779,8 +784,8 @@ function cleanText($text){ * @see cleanText() for 2unix conversion * @author Andreas Gohr <andi@splitbrain.org> */ -function formText($text){ - $text = str_replace("\012","\015\012",$text); +function formText($text) { + $text = str_replace("\012", "\015\012", $text); return htmlspecialchars($text); } @@ -789,8 +794,8 @@ function formText($text){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function rawLocale($id){ - return io_readFile(localeFN($id)); +function rawLocale($id, $ext = 'txt') { + return io_readFile(localeFN($id, $ext)); } /** @@ -798,7 +803,7 @@ function rawLocale($id){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function rawWiki($id,$rev=''){ +function rawWiki($id, $rev = '') { return io_readWikiPage(wikiFN($id, $rev), $id, $rev); } @@ -808,34 +813,33 @@ function rawWiki($id,$rev=''){ * @triggers COMMON_PAGETPL_LOAD * @author Andreas Gohr <andi@splitbrain.org> */ -function pageTemplate($id){ +function pageTemplate($id) { global $conf; - if (is_array($id)) $id = $id[0]; + if(is_array($id)) $id = $id[0]; // prepare initial event data $data = array( - 'id' => $id, // the id of the page to be created - 'tpl' => '', // the text used as template - 'tplfile' => '', // the file above text was/should be loaded from - 'doreplace' => true // should wildcard replacements be done on the text? + 'id' => $id, // the id of the page to be created + 'tpl' => '', // the text used as template + 'tplfile' => '', // the file above text was/should be loaded from + 'doreplace' => true // should wildcard replacements be done on the text? ); - $evt = new Doku_Event('COMMON_PAGETPL_LOAD',$data); - if($evt->advise_before(true)){ + $evt = new Doku_Event('COMMON_PAGETPL_LOAD', $data); + if($evt->advise_before(true)) { // the before event might have loaded the content already - if(empty($data['tpl'])){ + if(empty($data['tpl'])) { // if the before event did not set a template file, try to find one - if(empty($data['tplfile'])){ + if(empty($data['tplfile'])) { $path = dirname(wikiFN($id)); - $tpl = ''; - if(@file_exists($path.'/_template.txt')){ + if(@file_exists($path.'/_template.txt')) { $data['tplfile'] = $path.'/_template.txt'; - }else{ + } else { // search upper namespaces for templates - $len = strlen(rtrim($conf['datadir'],'/')); - while (strlen($path) >= $len){ - if(@file_exists($path.'/__template.txt')){ + $len = strlen(rtrim($conf['datadir'], '/')); + while(strlen($path) >= $len) { + if(@file_exists($path.'/__template.txt')) { $data['tplfile'] = $path.'/__template.txt'; break; } @@ -861,6 +865,12 @@ function pageTemplate($id){ * @author Andreas Gohr <andi@splitbrain.org> */ function parsePageTemplate(&$data) { + /** + * @var string $id the id of the page to be created + * @var string $tpl the text used as template + * @var string $tplfile the file above text was/should be loaded from + * @var bool $doreplace should wildcard replacements be done on the text? + */ extract($data); global $USERINFO; @@ -870,39 +880,41 @@ function parsePageTemplate(&$data) { $file = noNS($id); $page = strtr($file, $conf['sepchar'], ' '); - $tpl = str_replace(array( - '@ID@', - '@NS@', - '@FILE@', - '@!FILE@', - '@!FILE!@', - '@PAGE@', - '@!PAGE@', - '@!!PAGE@', - '@!PAGE!@', - '@USER@', - '@NAME@', - '@MAIL@', - '@DATE@', - ), - array( - $id, - getNS($id), - $file, - utf8_ucfirst($file), - utf8_strtoupper($file), - $page, - utf8_ucfirst($page), - utf8_ucwords($page), - utf8_strtoupper($page), - $_SERVER['REMOTE_USER'], - $USERINFO['name'], - $USERINFO['mail'], - $conf['dformat'], - ), $tpl); + $tpl = str_replace( + array( + '@ID@', + '@NS@', + '@FILE@', + '@!FILE@', + '@!FILE!@', + '@PAGE@', + '@!PAGE@', + '@!!PAGE@', + '@!PAGE!@', + '@USER@', + '@NAME@', + '@MAIL@', + '@DATE@', + ), + array( + $id, + getNS($id), + $file, + utf8_ucfirst($file), + utf8_strtoupper($file), + $page, + utf8_ucfirst($page), + utf8_ucwords($page), + utf8_strtoupper($page), + $_SERVER['REMOTE_USER'], + $USERINFO['name'], + $USERINFO['mail'], + $conf['dformat'], + ), $tpl + ); // we need the callback to work around strftime's char limit - $tpl = preg_replace_callback('/%./',create_function('$m','return strftime($m[0]);'),$tpl); + $tpl = preg_replace_callback('/%./', create_function('$m', 'return strftime($m[0]);'), $tpl); $data['tpl'] = $tpl; return $tpl; } @@ -917,17 +929,17 @@ function parsePageTemplate(&$data) { * * @author Andreas Gohr <andi@splitbrain.org> */ -function rawWikiSlices($range,$id,$rev=''){ +function rawWikiSlices($range, $id, $rev = '') { $text = io_readWikiPage(wikiFN($id, $rev), $id, $rev); // Parse range - list($from,$to) = explode('-',$range,2); + list($from, $to) = explode('-', $range, 2); // Make range zero-based, use defaults if marker is missing $from = !$from ? 0 : ($from - 1); $to = !$to ? strlen($text) : ($to - 1); $slices[0] = substr($text, 0, $from); - $slices[1] = substr($text, $from, $to-$from); + $slices[1] = substr($text, $from, $to - $from); $slices[2] = substr($text, $to); return $slices; } @@ -941,14 +953,16 @@ function rawWikiSlices($range,$id,$rev=''){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function con($pre,$text,$suf,$pretty=false){ - if($pretty){ - if ($pre !== '' && substr($pre, -1) !== "\n" && - substr($text, 0, 1) !== "\n") { +function con($pre, $text, $suf, $pretty = false) { + if($pretty) { + if($pre !== '' && substr($pre, -1) !== "\n" && + substr($text, 0, 1) !== "\n" + ) { $pre .= "\n"; } - if ($suf !== '' && substr($text, -1) !== "\n" && - substr($suf, 0, 1) !== "\n") { + if($suf !== '' && substr($text, -1) !== "\n" && + substr($suf, 0, 1) !== "\n" + ) { $text .= "\n"; } } @@ -963,7 +977,7 @@ function con($pre,$text,$suf,$pretty=false){ * @author Andreas Gohr <andi@splitbrain.org> * @author Ben Coburn <btcoburn@silicodon.net> */ -function saveWikiText($id,$text,$summary,$minor=false){ +function saveWikiText($id, $text, $summary, $minor = false) { /* Note to developers: This code is subtle and delicate. Test the behavior of the attic and changelog with dokuwiki and external edits @@ -974,31 +988,31 @@ function saveWikiText($id,$text,$summary,$minor=false){ global $lang; global $REV; // ignore if no changes were made - if($text == rawWiki($id,'')){ + if($text == rawWiki($id, '')) { return; } - $file = wikiFN($id); - $old = @filemtime($file); // from page - $wasRemoved = (trim($text) == ''); // check for empty or whitespace only - $wasCreated = !@file_exists($file); - $wasReverted = ($REV==true); - $newRev = false; - $oldRev = getRevisions($id, -1, 1, 1024); // from changelog - $oldRev = (int)(empty($oldRev)?0:$oldRev[0]); - if(!@file_exists(wikiFN($id, $old)) && @file_exists($file) && $old>=$oldRev) { + $file = wikiFN($id); + $old = @filemtime($file); // from page + $wasRemoved = (trim($text) == ''); // check for empty or whitespace only + $wasCreated = !@file_exists($file); + $wasReverted = ($REV == true); + $newRev = false; + $oldRev = getRevisions($id, -1, 1, 1024); // from changelog + $oldRev = (int) (empty($oldRev) ? 0 : $oldRev[0]); + if(!@file_exists(wikiFN($id, $old)) && @file_exists($file) && $old >= $oldRev) { // add old revision to the attic if missing saveOldRevision($id); // add a changelog entry if this edit came from outside dokuwiki - if ($old>$oldRev) { - addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=>true)); + if($old > $oldRev) { + addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=> true)); // remove soon to be stale instructions $cache = new cache_instructions($id, $file); $cache->removeCache(); } } - if ($wasRemoved){ + if($wasRemoved) { // Send "update" event with empty data, so plugins can react to page deletion $data = array(array($file, '', false), getNS($id), noNS($id), false); trigger_event('IO_WIKIPAGE_WRITE', $data); @@ -1017,37 +1031,40 @@ function saveWikiText($id,$text,$summary,$minor=false){ // remove empty namespaces io_sweepNS($id, 'datadir'); io_sweepNS($id, 'mediadir'); - }else{ + } else { // save file (namespace dir is created in io_writeWikiPage) io_writeWikiPage($file, $text, $id); // pre-save the revision, to keep the attic in sync $newRev = saveOldRevision($id); - $del = false; + $del = false; } // select changelog line type $extra = ''; - $type = DOKU_CHANGE_TYPE_EDIT; - if ($wasReverted) { - $type = DOKU_CHANGE_TYPE_REVERT; + $type = DOKU_CHANGE_TYPE_EDIT; + if($wasReverted) { + $type = DOKU_CHANGE_TYPE_REVERT; $extra = $REV; - } - else if ($wasCreated) { $type = DOKU_CHANGE_TYPE_CREATE; } - else if ($wasRemoved) { $type = DOKU_CHANGE_TYPE_DELETE; } - else if ($minor && $conf['useacl'] && $_SERVER['REMOTE_USER']) { $type = DOKU_CHANGE_TYPE_MINOR_EDIT; } //minor edits only for logged in users + } else if($wasCreated) { + $type = DOKU_CHANGE_TYPE_CREATE; + } else if($wasRemoved) { + $type = DOKU_CHANGE_TYPE_DELETE; + } else if($minor && $conf['useacl'] && $_SERVER['REMOTE_USER']) { + $type = DOKU_CHANGE_TYPE_MINOR_EDIT; + } //minor edits only for logged in users addLogEntry($newRev, $id, $type, $summary, $extra); // send notify mails - notify($id,'admin',$old,$summary,$minor); - notify($id,'subscribers',$old,$summary,$minor); + notify($id, 'admin', $old, $summary, $minor); + notify($id, 'subscribers', $old, $summary, $minor); // update the purgefile (timestamp of the last time anything within the wiki was changed) - io_saveFile($conf['cachedir'].'/purgefile',time()); + io_saveFile($conf['cachedir'].'/purgefile', time()); // if useheading is enabled, purge the cache of all linking pages - if(useHeading('content')){ + if(useHeading('content')) { $pages = ft_backlinks($id); - foreach ($pages as $page) { + foreach($pages as $page) { $cache = new cache_renderer($page, wikiFN($page), 'xhtml'); $cache->removeCache(); } @@ -1060,12 +1077,12 @@ function saveWikiText($id,$text,$summary,$minor=false){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function saveOldRevision($id){ +function saveOldRevision($id) { global $conf; $oldf = wikiFN($id); if(!@file_exists($oldf)) return ''; $date = filemtime($oldf); - $newf = wikiFN($id,$date); + $newf = wikiFN($id, $date); io_writeWikiPage($newf, rawWiki($id), $id, $date); return $date; } @@ -1073,88 +1090,97 @@ function saveOldRevision($id){ /** * Sends a notify mail on page change or registration * - * @param string $id The changed page - * @param string $who Who to notify (admin|subscribers|register) - * @param int $rev Old page revision - * @param string $summary What changed - * @param boolean $minor Is this a minor edit? - * @param array $replace Additional string substitutions, @KEY@ to be replaced by value + * @param string $id The changed page + * @param string $who Who to notify (admin|subscribers|register) + * @param int|string $rev Old page revision + * @param string $summary What changed + * @param boolean $minor Is this a minor edit? + * @param array $replace Additional string substitutions, @KEY@ to be replaced by value * + * @return bool * @author Andreas Gohr <andi@splitbrain.org> */ -function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){ +function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace = array()) { global $lang; global $conf; global $INFO; + global $DIFF_INLINESTYLES; - // decide if there is something to do - if($who == 'admin'){ - if(empty($conf['notify'])) return; //notify enabled? + // decide if there is something to do, eg. whom to mail + if($who == 'admin') { + if(empty($conf['notify'])) return false; //notify enabled? $text = rawLocale('mailtext'); $to = $conf['notify']; $bcc = ''; - }elseif($who == 'subscribers'){ - if(!$conf['subscribers']) return; //subscribers enabled? - if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) return; //skip minors + } elseif($who == 'subscribers') { + if(!$conf['subscribers']) return false; //subscribers enabled? + if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) return false; //skip minors $data = array('id' => $id, 'addresslist' => '', 'self' => false); - trigger_event('COMMON_NOTIFY_ADDRESSLIST', $data, - 'subscription_addresslist'); + trigger_event( + 'COMMON_NOTIFY_ADDRESSLIST', $data, + 'subscription_addresslist' + ); $bcc = $data['addresslist']; - if(empty($bcc)) return; + if(empty($bcc)) return false; $to = ''; $text = rawLocale('subscr_single'); - }elseif($who == 'register'){ - if(empty($conf['registernotify'])) return; + } elseif($who == 'register') { + if(empty($conf['registernotify'])) return false; $text = rawLocale('registermail'); $to = $conf['registernotify']; $bcc = ''; - }else{ - return; //just to be safe + } else { + return false; //just to be safe } - $ip = clientIP(); - $text = str_replace('@DATE@',dformat(),$text); - $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text); - $text = str_replace('@IPADDRESS@',$ip,$text); - $text = str_replace('@HOSTNAME@',gethostsbyaddrs($ip),$text); - $text = str_replace('@NEWPAGE@',wl($id,'',true,'&'),$text); - $text = str_replace('@PAGE@',$id,$text); - $text = str_replace('@TITLE@',$conf['title'],$text); - $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text); - $text = str_replace('@SUMMARY@',$summary,$text); - $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text); - $text = str_replace('@NAME@',$INFO['userinfo']['name'],$text); - $text = str_replace('@MAIL@',$INFO['userinfo']['mail'],$text); - - foreach ($replace as $key => $substitution) { - $text = str_replace('@'.strtoupper($key).'@',$substitution, $text); - } + // prepare replacements (keys not set in hrep will be taken from trep) + $trep = array( + 'NEWPAGE' => wl($id, '', true, '&'), + 'PAGE' => $id, + 'SUMMARY' => $summary + ); + $trep = array_merge($trep, $replace); + $hrep = array(); - if($who == 'register'){ + // prepare content + if($who == 'register') { $subject = $lang['mail_new_user'].' '.$summary; - }elseif($rev){ - $subject = $lang['mail_changed'].' '.$id; - $text = str_replace('@OLDPAGE@',wl($id,"rev=$rev",true,'&'),$text); - $df = new Diff(explode("\n",rawWiki($id,$rev)), - explode("\n",rawWiki($id))); - $dformat = new UnifiedDiffFormatter(); - $diff = $dformat->format($df); - }else{ - $subject=$lang['mail_newpage'].' '.$id; - $text = str_replace('@OLDPAGE@','none',$text); - $diff = rawWiki($id); - } - $text = str_replace('@DIFF@',$diff,$text); - if(empty($conf['mailprefix'])) { - if(utf8_strlen($conf['title']) < 20) { - $subject = '['.$conf['title'].'] '.$subject; - }else{ - $subject = '['.utf8_substr($conf['title'], 0, 20).'...] '.$subject; - } - }else{ - $subject = '['.$conf['mailprefix'].'] '.$subject; - } - mail_send($to,$subject,$text,$conf['mailfrom'],'',$bcc); + } elseif($rev) { + $subject = $lang['mail_changed'].' '.$id; + $trep['OLDPAGE'] = wl($id, "rev=$rev", true, '&'); + $df = new Diff(explode("\n", rawWiki($id, $rev)), + explode("\n", rawWiki($id))); + $dformat = new UnifiedDiffFormatter(); + $tdiff = $dformat->format($df); + + $DIFF_INLINESTYLES = true; + $dformat = new InlineDiffFormatter(); + $hdiff = $dformat->format($df); + $hdiff = '<table>'.$hdiff.'</table>'; + $DIFF_INLINESTYLES = false; + } else { + $subject = $lang['mail_newpage'].' '.$id; + $trep['OLDPAGE'] = '---'; + $tdiff = rawWiki($id); + $hdiff = nl2br(hsc($tdiff)); + } + $trep['DIFF'] = $tdiff; + $hrep['DIFF'] = $hdiff; + + // send mail + $mail = new Mailer(); + $mail->to($to); + $mail->bcc($bcc); + $mail->subject($subject); + $mail->setBody($text, $trep, $hrep); + if($who == 'subscribers') { + $mail->setHeader( + 'List-Unsubscribe', + '<'.wl($id, array('do'=> 'subscribe'), true, '&').'>', + false + ); + } + return $mail->send(); } /** @@ -1163,8 +1189,8 @@ function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){ * @author Andreas Gohr <andi@splitbrain.org> * @author Todd Augsburger <todd@rollerorgans.com> */ -function getGoogleQuery(){ - if (!isset($_SERVER['HTTP_REFERER'])) { +function getGoogleQuery() { + if(!isset($_SERVER['HTTP_REFERER'])) { return ''; } $url = parse_url($_SERVER['HTTP_REFERER']); @@ -1174,21 +1200,21 @@ function getGoogleQuery(){ // temporary workaround against PHP bug #49733 // see http://bugs.php.net/bug.php?id=49733 if(UTF8_MBSTRING) $enc = mb_internal_encoding(); - parse_str($url['query'],$query); + parse_str($url['query'], $query); if(UTF8_MBSTRING) mb_internal_encoding($enc); $q = ''; if(isset($query['q'])) - $q = $query['q']; // google, live/msn, aol, ask, altavista, alltheweb, gigablast + $q = $query['q']; // google, live/msn, aol, ask, altavista, alltheweb, gigablast elseif(isset($query['p'])) - $q = $query['p']; // yahoo + $q = $query['p']; // yahoo elseif(isset($query['query'])) - $q = $query['query']; // lycos, netscape, clusty, hotbot - elseif(preg_match("#a9\.com#i",$url['host'])) // a9 - $q = urldecode(ltrim($url['path'],'/')); + $q = $query['query']; // lycos, netscape, clusty, hotbot + elseif(preg_match("#a9\.com#i", $url['host'])) // a9 + $q = urldecode(ltrim($url['path'], '/')); if($q === '') return ''; - $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/',$q,-1,PREG_SPLIT_NO_EMPTY); + $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/', $q, -1, PREG_SPLIT_NO_EMPTY); return $q; } @@ -1198,19 +1224,19 @@ function getGoogleQuery(){ * @deprecated No longer used * @author Andreas Gohr <andi@splitbrain.org> */ -function setCorrectLocale(){ +function setCorrectLocale() { global $conf; global $lang; $enc = strtoupper($lang['encoding']); - foreach ($lang['locales'] as $loc){ + foreach($lang['locales'] as $loc) { //try locale - if(@setlocale(LC_ALL,$loc)) return; + if(@setlocale(LC_ALL, $loc)) return; //try loceale with encoding - if(@setlocale(LC_ALL,"$loc.$enc")) return; + if(@setlocale(LC_ALL, "$loc.$enc")) return; } //still here? try to set from environment - @setlocale(LC_ALL,""); + @setlocale(LC_ALL, ""); } /** @@ -1222,17 +1248,17 @@ function setCorrectLocale(){ * @author Aidan Lister <aidan@php.net> * @version 1.0.0 */ -function filesize_h($size, $dec = 1){ +function filesize_h($size, $dec = 1) { $sizes = array('B', 'KB', 'MB', 'GB'); $count = count($sizes); - $i = 0; + $i = 0; - while ($size >= 1024 && ($i < $count - 1)) { + while($size >= 1024 && ($i < $count - 1)) { $size /= 1024; $i++; } - return round($size, $dec) . ' ' . $sizes[$i]; + return round($size, $dec).' '.$sizes[$i]; } /** @@ -1240,27 +1266,27 @@ function filesize_h($size, $dec = 1){ * * @author Andreas Gohr <gohr@cosmocode.de> */ -function datetime_h($dt){ +function datetime_h($dt) { global $lang; $ago = time() - $dt; - if($ago > 24*60*60*30*12*2){ - return sprintf($lang['years'], round($ago/(24*60*60*30*12))); + if($ago > 24 * 60 * 60 * 30 * 12 * 2) { + return sprintf($lang['years'], round($ago / (24 * 60 * 60 * 30 * 12))); } - if($ago > 24*60*60*30*2){ - return sprintf($lang['months'], round($ago/(24*60*60*30))); + if($ago > 24 * 60 * 60 * 30 * 2) { + return sprintf($lang['months'], round($ago / (24 * 60 * 60 * 30))); } - if($ago > 24*60*60*7*2){ - return sprintf($lang['weeks'], round($ago/(24*60*60*7))); + if($ago > 24 * 60 * 60 * 7 * 2) { + return sprintf($lang['weeks'], round($ago / (24 * 60 * 60 * 7))); } - if($ago > 24*60*60*2){ - return sprintf($lang['days'], round($ago/(24*60*60))); + if($ago > 24 * 60 * 60 * 2) { + return sprintf($lang['days'], round($ago / (24 * 60 * 60))); } - if($ago > 60*60*2){ - return sprintf($lang['hours'], round($ago/(60*60))); + if($ago > 60 * 60 * 2) { + return sprintf($lang['hours'], round($ago / (60 * 60))); } - if($ago > 60*2){ - return sprintf($lang['minutes'], round($ago/(60))); + if($ago > 60 * 2) { + return sprintf($lang['minutes'], round($ago / (60))); } return sprintf($lang['seconds'], $ago); } @@ -1274,15 +1300,15 @@ function datetime_h($dt){ * @see datetime_h * @author Andreas Gohr <gohr@cosmocode.de> */ -function dformat($dt=null,$format=''){ +function dformat($dt = null, $format = '') { global $conf; if(is_null($dt)) $dt = time(); $dt = (int) $dt; if(!$format) $format = $conf['dformat']; - $format = str_replace('%f',datetime_h($dt),$format); - return strftime($format,$dt); + $format = str_replace('%f', datetime_h($dt), $format); + return strftime($format, $dt); } /** @@ -1291,11 +1317,12 @@ function dformat($dt=null,$format=''){ * @author <ungu at terong dot com> * @link http://www.php.net/manual/en/function.date.php#54072 * @param int $int_date: current date in UNIX timestamp + * @return string */ function date_iso8601($int_date) { - $date_mod = date('Y-m-d\TH:i:s', $int_date); + $date_mod = date('Y-m-d\TH:i:s', $int_date); $pre_timezone = date('O', $int_date); - $time_zone = substr($pre_timezone, 0, 3).":".substr($pre_timezone, 3, 2); + $time_zone = substr($pre_timezone, 0, 3).":".substr($pre_timezone, 3, 2); $date_mod .= $time_zone; return $date_mod; } @@ -1309,16 +1336,16 @@ function date_iso8601($int_date) { function obfuscate($email) { global $conf; - switch ($conf['mailguard']) { + switch($conf['mailguard']) { case 'visible' : $obfuscate = array('@' => ' [at] ', '.' => ' [dot] ', '-' => ' [dash] '); return strtr($email, $obfuscate); case 'hex' : $encode = ''; - $len = strlen($email); - for ($x=0; $x < $len; $x++){ - $encode .= '&#x' . bin2hex($email{$x}).';'; + $len = strlen($email); + for($x = 0; $x < $len; $x++) { + $encode .= '&#x'.bin2hex($email{$x}).';'; } return $encode; @@ -1333,8 +1360,8 @@ function obfuscate($email) { * * @author Andreas Gohr <andi@splitbrain.org> */ -function unslash($string,$char="'"){ - return str_replace('\\'.$char,$char,$string); +function unslash($string, $char = "'") { + return str_replace('\\'.$char, $char, $string); } /** @@ -1343,10 +1370,10 @@ function unslash($string,$char="'"){ * @author <gilthans dot NO dot SPAM at gmail dot com> * @link http://de3.php.net/manual/en/ini.core.php#79564 */ -function php_to_byte($v){ - $l = substr($v, -1); +function php_to_byte($v) { + $l = substr($v, -1); $ret = substr($v, 0, -1); - switch(strtoupper($l)){ + switch(strtoupper($l)) { case 'P': $ret *= 1024; case 'T': @@ -1357,10 +1384,10 @@ function php_to_byte($v){ $ret *= 1024; case 'K': $ret *= 1024; - break; + break; default; $ret *= 10; - break; + break; } return $ret; } @@ -1368,8 +1395,8 @@ function php_to_byte($v){ /** * Wrapper around preg_quote adding the default delimiter */ -function preg_quote_cb($string){ - return preg_quote($string,'/'); +function preg_quote_cb($string) { + return preg_quote($string, '/'); } /** @@ -1385,14 +1412,15 @@ function preg_quote_cb($string){ * @param int $max maximum chars you want for the whole string * @param int $min minimum number of chars to have left for middle shortening * @param string $char the shortening character to use + * @return string */ -function shorten($keep,$short,$max,$min=9,$char='…'){ +function shorten($keep, $short, $max, $min = 9, $char = '…') { $max = $max - utf8_strlen($keep); if($max < $min) return $keep; $len = utf8_strlen($short); if($len <= $max) return $keep.$short; - $half = floor($max/2); - return $keep.utf8_substr($short,0,$half-1).$char.utf8_substr($short,$len-$half); + $half = floor($max / 2); + return $keep.utf8_substr($short, 0, $half - 1).$char.utf8_substr($short, $len - $half); } /** @@ -1401,11 +1429,11 @@ function shorten($keep,$short,$max,$min=9,$char='…'){ * * @author Andy Webber <dokuwiki AT andywebber DOT com> */ -function editorinfo($username){ +function editorinfo($username) { global $conf; global $auth; - switch($conf['showuseras']){ + switch($conf['showuseras']) { case 'username': case 'email': case 'email_link': @@ -1416,13 +1444,13 @@ function editorinfo($username){ } if(isset($info) && $info) { - switch($conf['showuseras']){ + switch($conf['showuseras']) { case 'username': return hsc($info['name']); case 'email': return obfuscate($info['mail']); case 'email_link': - $mail=obfuscate($info['mail']); + $mail = obfuscate($info['mail']); return '<a href="mailto:'.$mail.'">'.$mail.'</a>'; default: return hsc($username); @@ -1438,20 +1466,21 @@ function editorinfo($username){ * * @author Andreas Gohr <andi@splitbrain.org> * @param string $type - type of image 'badge' or 'button' + * @return string */ -function license_img($type){ +function license_img($type) { global $license; global $conf; if(!$conf['license']) return ''; if(!is_array($license[$conf['license']])) return ''; - $lic = $license[$conf['license']]; - $try = array(); + $lic = $license[$conf['license']]; + $try = array(); $try[] = 'lib/images/license/'.$type.'/'.$conf['license'].'.png'; $try[] = 'lib/images/license/'.$type.'/'.$conf['license'].'.gif'; - if(substr($conf['license'],0,3) == 'cc-'){ + if(substr($conf['license'], 0, 3) == 'cc-') { $try[] = 'lib/images/license/'.$type.'/cc.png'; } - foreach($try as $src){ + foreach($try as $src) { if(@file_exists(DOKU_INC.$src)) return $src; } return ''; @@ -1463,12 +1492,15 @@ function license_img($type){ * If the memory_get_usage() function is not available the * function just assumes $bytes of already allocated memory * - * @param int $mem Size of memory you want to allocate in bytes - * @param int $used already allocated memory (see above) * @author Filip Oscadal <webmaster@illusionsoftworks.cz> * @author Andreas Gohr <andi@splitbrain.org> + * + * @param int $mem Size of memory you want to allocate in bytes + * @param int $bytes + * @internal param int $used already allocated memory (see above) + * @return bool */ -function is_mem_available($mem,$bytes=1048576){ +function is_mem_available($mem, $bytes = 1048576) { $limit = trim(ini_get('memory_limit')); if(empty($limit)) return true; // no limit set! @@ -1476,13 +1508,13 @@ function is_mem_available($mem,$bytes=1048576){ $limit = php_to_byte($limit); // get used memory if possible - if(function_exists('memory_get_usage')){ + if(function_exists('memory_get_usage')) { $used = memory_get_usage(); - }else{ + } else { $used = $bytes; } - if($used+$mem > $limit){ + if($used + $mem > $limit) { return false; } @@ -1497,10 +1529,10 @@ function is_mem_available($mem,$bytes=1048576){ * @link http://support.microsoft.com/kb/q176113/ * @author Andreas Gohr <andi@splitbrain.org> */ -function send_redirect($url){ +function send_redirect($url) { //are there any undisplayed messages? keep them in session for display global $MSG; - if (isset($MSG) && count($MSG) && !defined('NOSESSION')){ + if(isset($MSG) && count($MSG) && !defined('NOSESSION')) { //reopen session, store data and close session again @session_start(); $_SESSION[DOKU_COOKIE]['msg'] = $MSG; @@ -1511,22 +1543,23 @@ function send_redirect($url){ // work around IE bug // http://www.ianhoar.com/2008/11/16/internet-explorer-6-and-redirected-anchor-links/ - list($url,$hash) = explode('#',$url); - if($hash){ - if(strpos($url,'?')){ + list($url, $hash) = explode('#', $url); + if($hash) { + if(strpos($url, '?')) { $url = $url.'&#'.$hash; - }else{ + } else { $url = $url.'?&#'.$hash; } } // check if running on IIS < 6 with CGI-PHP - if( isset($_SERVER['SERVER_SOFTWARE']) && isset($_SERVER['GATEWAY_INTERFACE']) && - (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== false) && + if(isset($_SERVER['SERVER_SOFTWARE']) && isset($_SERVER['GATEWAY_INTERFACE']) && + (strpos($_SERVER['GATEWAY_INTERFACE'], 'CGI') !== false) && (preg_match('|^Microsoft-IIS/(\d)\.\d$|', trim($_SERVER['SERVER_SOFTWARE']), $matches)) && - $matches[1] < 6 ){ + $matches[1] < 6 + ) { header('Refresh: 0;url='.$url); - }else{ + } else { header('Location: '.$url); } exit; @@ -1546,12 +1579,14 @@ function send_redirect($url){ * or $_GET) * @param string $exc The text of the raised exception * + * @throws Exception + * @return mixed * @author Adrian Lang <lang@cosmocode.de> */ function valid_input_set($param, $valid_values, $array, $exc = '') { - if (isset($array[$param]) && in_array($array[$param], $valid_values)) { + if(isset($array[$param]) && in_array($array[$param], $valid_values)) { return $array[$param]; - } elseif (isset($valid_values['default'])) { + } elseif(isset($valid_values['default'])) { return $valid_values['default']; } else { throw new Exception($exc); @@ -1562,12 +1597,12 @@ function valid_input_set($param, $valid_values, $array, $exc = '') { * Read a preference from the DokuWiki cookie */ function get_doku_pref($pref, $default) { - if (strpos($_COOKIE['DOKU_PREFS'], $pref) !== false) { + if(strpos($_COOKIE['DOKU_PREFS'], $pref) !== false) { $parts = explode('#', $_COOKIE['DOKU_PREFS']); $cnt = count($parts); - for ($i = 0; $i < $cnt; $i+=2){ - if ($parts[$i] == $pref) { - return $parts[$i+1]; + for($i = 0; $i < $cnt; $i += 2) { + if($parts[$i] == $pref) { + return $parts[$i + 1]; } } } diff --git a/inc/config_cascade.php b/inc/config_cascade.php index 79567fc56..e4a3df353 100644 --- a/inc/config_cascade.php +++ b/inc/config_cascade.php @@ -66,6 +66,7 @@ $config_cascade = array_merge( ), 'plugins' => array( + 'default' => array(DOKU_CONF.'plugins.php'), 'local' => array(DOKU_CONF.'plugins.local.php'), 'protected' => array( DOKU_CONF.'plugins.required.php', diff --git a/inc/events.php b/inc/events.php index 621cb64c1..4e81f85c8 100644 --- a/inc/events.php +++ b/inc/events.php @@ -149,8 +149,8 @@ class Doku_Event_Handler { * @param $method (function) event handler function * @param $param (mixed) data passed to the event handler */ - function register_hook($event, $advise, &$obj, $method, $param=null) { - $this->_hooks[$event.'_'.$advise][] = array(&$obj, $method, $param); + function register_hook($event, $advise, $obj, $method, $param=null) { + $this->_hooks[$event.'_'.$advise][] = array($obj, $method, $param); } function process_event(&$event,$advise='') { @@ -158,8 +158,7 @@ class Doku_Event_Handler { $evt_name = $event->name . ($advise ? '_'.$advise : '_BEFORE'); if (!empty($this->_hooks[$evt_name])) { - $hook = reset($this->_hooks[$evt_name]); - do { + foreach ($this->_hooks[$evt_name] as $hook) { // list($obj, $method, $param) = $hook; $obj =& $hook[0]; $method = $hook[1]; @@ -171,7 +170,8 @@ class Doku_Event_Handler { $obj->$method($event, $param); } - } while ($event->_continue && $hook = next($this->_hooks[$evt_name])); + if (!$event->_continue) break; + } } } } diff --git a/inc/fulltext.php b/inc/fulltext.php index 620237296..8f4db111d 100644 --- a/inc/fulltext.php +++ b/inc/fulltext.php @@ -405,6 +405,8 @@ function ft_snippet_re_preprocess($term) { }else{ $term = $term.'\b'; } + + if($term == '\b' || $term == '\b\b') $term = ''; return $term; } diff --git a/inc/geshi.php b/inc/geshi.php index 31d2da49f..aedc64f84 100644 --- a/inc/geshi.php +++ b/inc/geshi.php @@ -41,7 +41,7 @@ // /** The version of this GeSHi file */ -define('GESHI_VERSION', '1.0.8.8'); +define('GESHI_VERSION', '1.0.8.10'); // Define the root directory for the GeSHi code tree if (!defined('GESHI_ROOT')) { @@ -209,12 +209,16 @@ define('GESHI_NUMBER_BIN_PREFIX_0B', 64); //0b[01]+ define('GESHI_NUMBER_OCT_PREFIX', 256); //0[0-7]+ /** Number format to highlight octal numbers with a prefix 0o (logtalk) */ define('GESHI_NUMBER_OCT_PREFIX_0O', 512); //0[0-7]+ +/** Number format to highlight octal numbers with a leading @ (Used in HiSofts Devpac series). */ +define('GESHI_NUMBER_OCT_PREFIX_AT', 1024); //@[0-7]+ /** Number format to highlight octal numbers with a suffix of o */ -define('GESHI_NUMBER_OCT_SUFFIX', 1024); //[0-7]+[oO] +define('GESHI_NUMBER_OCT_SUFFIX', 2048); //[0-7]+[oO] /** Number format to highlight hex numbers with a prefix 0x */ define('GESHI_NUMBER_HEX_PREFIX', 4096); //0x[0-9a-fA-F]+ +/** Number format to highlight hex numbers with a prefix $ */ +define('GESHI_NUMBER_HEX_PREFIX_DOLLAR', 8192); //$[0-9a-fA-F]+ /** Number format to highlight hex numbers with a suffix of h */ -define('GESHI_NUMBER_HEX_SUFFIX', 8192); //[0-9][0-9a-fA-F]*h +define('GESHI_NUMBER_HEX_SUFFIX', 16384); //[0-9][0-9a-fA-F]*h /** Number format to highlight floating-point numbers without support for scientific notation */ define('GESHI_NUMBER_FLT_NONSCI', 65536); //\d+\.\d+ /** Number format to highlight floating-point numbers without support for scientific notation */ @@ -732,6 +736,88 @@ class GeSHi { } /** + * Get supported langs or an associative array lang=>full_name. + * @param boolean $longnames + * @return array + */ + function get_supported_languages($full_names=false) + { + // return array + $back = array(); + + // we walk the lang root + $dir = dir($this->language_path); + + // foreach entry + while (false !== ($entry = $dir->read())) + { + $full_path = $this->language_path.$entry; + + // Skip all dirs + if (is_dir($full_path)) { + continue; + } + + // we only want lang.php files + if (!preg_match('/^([^.]+)\.php$/', $entry, $matches)) { + continue; + } + + // Raw lang name is here + $langname = $matches[1]; + + // We want the fullname too? + if ($full_names === true) + { + if (false !== ($fullname = $this->get_language_fullname($langname))) + { + $back[$langname] = $fullname; // we go associative + } + } + else + { + // just store raw langname + $back[] = $langname; + } + } + + $dir->close(); + + return $back; + } + + /** + * Get full_name for a lang or false. + * @param string $language short langname (html4strict for example) + * @return mixed + */ + function get_language_fullname($language) + { + //Clean up the language name to prevent malicious code injection + $language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language); + + $language = strtolower($language); + + // get fullpath-filename for a langname + $fullpath = $this->language_path.$language.'.php'; + + // we need to get contents :S + if (false === ($data = file_get_contents($fullpath))) { + $this->error = sprintf('Geshi::get_lang_fullname() Unknown Language: %s', $language); + return false; + } + + // match the langname + 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; + } + + // return fullname for langname + return stripcslashes($matches[1]); + } + + /** * Sets the type of header to be used. * * If GESHI_HEADER_DIV is used, the code is surrounded in a "div".This @@ -1353,6 +1439,10 @@ class GeSHi { function get_language_name_from_extension( $extension, $lookup = array() ) { if ( !is_array($lookup) || empty($lookup)) { $lookup = array( + '6502acme' => array( 'a', 's', 'asm', 'inc' ), + '6502tasm' => array( 'a', 's', 'asm', 'inc' ), + '6502kickass' => array( 'a', 's', 'asm', 'inc' ), + '68000devpac' => array( 'a', 's', 'asm', 'inc' ), 'abap' => array('abap'), 'actionscript' => array('as'), 'ada' => array('a', 'ada', 'adb', 'ads'), @@ -1971,7 +2061,7 @@ class GeSHi { //All this formats are matched case-insensitively! static $numbers_format = array( GESHI_NUMBER_INT_BASIC => - '(?:(?<![0-9a-z_\.%])|(?<=\.\.))(?<![\d\.]e[+\-])([1-9]\d*?|0)(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', + '(?:(?<![0-9a-z_\.%$@])|(?<=\.\.))(?<![\d\.]e[+\-])([1-9]\d*?|0)(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_INT_CSTYLE => '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])([1-9]\d*?|0)l(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_BIN_SUFFIX => @@ -1984,10 +2074,14 @@ class GeSHi { '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])0[0-7]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_OCT_PREFIX_0O => '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])0o[0-7]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', + GESHI_NUMBER_OCT_PREFIX_AT => + '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])\@[0-7]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_OCT_SUFFIX => '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])[0-7]+?o(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_HEX_PREFIX => '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])0x[0-9a-fA-F]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\$[0-9a-fA-F]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_HEX_SUFFIX => '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\d[0-9a-fA-F]*?[hH](?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_FLT_NONSCI => @@ -2021,6 +2115,10 @@ class GeSHi { $this->language_data['NUMBERS_RXCACHE'][$key] = "/(?<!<\|\/)(?<!<\|!REG3XP)(?<!<\|\/NUM!)(?<!\d\/>)($regexp)(?!(?:<DOT>|(?>[^\<]))+>)(?![^<]*>)(?!\|>)(?!\/>)/i"; // } + + if(!isset($this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'])) { + $this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'] = '#\d#'; + } } $this->parse_cache_built = true; @@ -3241,7 +3339,7 @@ class GeSHi { $stuff_to_parse = ' ' . $this->hsc($stuff_to_parse); // Highlight keywords - $disallowed_before = "(?<![a-zA-Z0-9\$_\|\#;>|^&"; + $disallowed_before = "(?<![a-zA-Z0-9\$_\|\#|^&"; $disallowed_after = "(?![a-zA-Z0-9_\|%\\-&;"; if ($this->lexic_permissions['STRINGS']) { $quotemarks = preg_quote(implode($this->language_data['QUOTEMARKS']), '/'); @@ -3299,7 +3397,7 @@ class GeSHi { // Basically, we don't put the styles in yet because then the styles themselves will // get highlighted if the language has a CSS keyword in it (like CSS, for example ;)) $stuff_to_parse = preg_replace_callback( - "/$disallowed_before_local({$keywordset})(?!\<DOT\>(?:htm|php))$disallowed_after_local/$modifiers", + "/$disallowed_before_local({$keywordset})(?!\<DOT\>(?:htm|php|aspx?))$disallowed_after_local/$modifiers", array($this, 'handle_keyword_replace'), $stuff_to_parse ); @@ -3346,7 +3444,8 @@ class GeSHi { // Highlight numbers. As of 1.0.8 we support different types of numbers $numbers_found = false; - if ($this->lexic_permissions['NUMBERS'] && preg_match('#\d#', $stuff_to_parse )) { + + if ($this->lexic_permissions['NUMBERS'] && preg_match($this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'], $stuff_to_parse )) { $numbers_found = true; //For each of the formats ... @@ -4465,7 +4564,7 @@ class GeSHi { * @access private */ function optimize_regexp_list($list, $regexp_delimiter = '/') { - $regex_chars = array('.', '\\', '+', '*', '?', '[', '^', ']', '$', + $regex_chars = array('.', '\\', '+', '-', '*', '?', '[', '^', ']', '$', '(', ')', '{', '}', '=', '!', '<', '>', '|', ':', $regexp_delimiter); sort($list); $regexp_list = array(''); diff --git a/inc/geshi/4cs.php b/inc/geshi/4cs.php index 48b671f4a..7b1efec9a 100644 --- a/inc/geshi/4cs.php +++ b/inc/geshi/4cs.php @@ -4,7 +4,7 @@ * ------ * Author: Jason Curl (jason.curl@continental-corporation.com) * Copyright: (c) 2009 Jason Curl - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/09/05 * * 4CS language file for GeSHi. diff --git a/inc/geshi/6502acme.php b/inc/geshi/6502acme.php new file mode 100644 index 000000000..880211d5b --- /dev/null +++ b/inc/geshi/6502acme.php @@ -0,0 +1,230 @@ +<?php +/************************************************************************************* + * 6502acme.php + * ------- + * Author: Warren Willmey + * Copyright: (c) 2010 Warren Willmey. + * Release Version: 1.0.8.10 + * Date Started: 2010/05/26 + * + * MOS 6502 (more specifically 6510) ACME Cross Assembler 0.93 by Marco Baye language file for GeSHi. + * + * CHANGES + * ------- + * 2010/07/22 + * - First Release + * + * TODO (updated 2010/07/22) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'MOS 6502 (6510) ACME Cross Assembler format', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* 6502/6510 Opcodes. */ + 1 => array( + 'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi', + 'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', + 'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor', + 'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy', + 'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol', + 'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta', + 'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya', + ), + /* Index Registers, yes the 6502 has other registers by they are only + * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */ + 2 => array( + 'x', 'y', 's' + ), + /* Directives or "pseudo opcodes" as defined by ACME 0.93 file AllPOs.txt. */ + 3 => array( + '!8', '!08', '!by', '!byte', + '!16', '!wo', '!word', + '!24', '!32', + '!fi', '!fill', + '!align', + '!ct', '!convtab', + '!tx', '!text', + '!pet', + '!raw', + '!scrxor', + '!to', + '!source', + '!bin', '!binary', + '!zn', '!zone', + '!sl', + '!svl', + '!sal', + '!if', '!ifdef', + '!for', + '!set', + '!do', 'while', 'until', + '!eof', '!endoffile', + '!warn', '!error', '!serious', + '!macro', +// , '*=' // Not a valid keyword (uses both * and = signs) moved to symbols instead. + '!initmem', + '!pseudopc', + '!cpu', + '!al', '!as', '!rl', '!rs', + ), + + /* 6502/6510 undocumented opcodes (often referred to as illegal instructions). + * These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816. + * As they are undocumented instructions there are no "official" names for them, there are also + * several more that mainly perform various forms of crash and are not supported by ACME 0.93. + */ + 4 => array( + 'anc', 'arr', 'asr', 'dcp', 'dop', 'isc', 'jam', 'lax', + 'rla', 'rra', 'sax', 'sbx', 'slo', 'sre', 'top', + ), + /* 65c02 instructions, MOS added a few (much needed) instructions in the CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes. + * ACME 0.93 does not support the rmb0-7 and smb0-7 instructions (they are currently rem'ed out). */ + 5 => array( + 'bra', 'phx', 'phy', 'plx', 'ply', 'stz', 'trb', 'tsb' + ), + /* 65816 instructions. */ + 6 => array( + 'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei', + 'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl', + 'sep', 'tcd', 'tcs', 'tdc', 'tsc', 'txy', 'tyx', 'wdm', + 'xba', 'xce', + ), + /* Deprecated directives or "pseudo opcodes" as defined by ACME 0.93 file AllPOs.txt. */ + 7 => array( + '!cbm', + '!sz', '!subzone', + '!realpc', + ), + /* Math functions, some are aliases for the symbols. */ + 8 => array( + 'not', 'div', 'mod', 'xor', 'or', 'sin', 'cos', 'tan', + 'arcsin', 'arccos', 'arctan', 'int', 'float', + + ), + + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '*=', '#', '!', '^', '-', '*', '/', + '%', '+', '-', '<<', '>>', '>>>', + '<', '>', '^', '<=', '<', '>=', '>', '!=', + '=', '&', '|', '<>', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00f; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #080; font-weight:bold;', + 4 => 'color: #f00; font-weight:bold;', + 5 => 'color: #80f; font-weight:bold;', + 6 => 'color: #f08; font-weight:bold;', + 7 => 'color: #a04; font-weight:bold; font-style: italic;', + 8 => 'color: #000;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + GESHI_NUMBER_FLT_NONSCI => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + 0 => 'color: #f00;' + , 1 => 'color: #933;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + // AMCE Octal format not support and gets picked up as Decimal unfortunately. + 'REGEXPS' => array( + //ACME .# Binary number format. e.g. %..##..##..## + 0 => '\%[\.\#]{1,64}', + //ACME Local Labels + 1 => '\.[_a-zA-Z][_a-zA-Z0-9]*', + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/' + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/6502kickass.php b/inc/geshi/6502kickass.php new file mode 100644 index 000000000..b1edcaa5b --- /dev/null +++ b/inc/geshi/6502kickass.php @@ -0,0 +1,241 @@ +<?php +/************************************************************************************* + * 6502kickass.php + * ------- + * Author: Warren Willmey + * Copyright: (c) 2010 Warren Willmey. + * Release Version: 1.0.8.10 + * Date Started: 2010/06/07 + * + * MOS 6502 (6510) Kick Assembler 3.13 language file for GeSHi. + * + * CHANGES + * ------- + * 2010/07/22 + * - First Release + * + * TODO (updated 2010/07/22) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'MOS 6502 (6510) Kick Assembler format', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* 6502/6510 Opcodes including undocumented opcodes as Kick Assembler 3.13 does not make a distinction - they are ALL valid. */ + 1 => array( + 'adc', 'ahx', 'alr', 'anc', 'anc2', 'and', 'arr', 'asl', + 'axs', 'bcc', 'bcs', 'beq', 'bit', 'bmi', 'bne', 'bpl', + 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', 'clv', 'cmp', + 'cpx', 'cpy', 'dcp', 'dec', 'dex', 'dey', 'eor', 'inc', + 'inx', 'iny', 'isc', 'jmp', 'jsr', 'las', 'lax', 'lda', + 'ldx', 'ldy', 'lsr', 'nop', 'ora', 'pha', 'php', 'pla', + 'plp', 'rla', 'rol', 'ror', 'rra', 'rti', 'rts', 'sax', + 'sbc', 'sbc2', 'sec', 'sed', 'sei', 'shx', 'shy', 'slo', + 'sre', 'sta', 'stx', 'sty', 'tas', 'tax', 'tay', 'tsx', + 'txa', 'txs', 'tya', 'xaa', + ), + /* DTV additional Opcodes. */ + 2 => array( + 'bra', 'sac', 'sir' + ), + /* Index Registers, yes the 6502 has other registers by they are only + * accessable by specific opcodes. */ + 3 => array( + 'x', 'y' + ), + /* Directives. */ + 4 => array( + '.pc', '.pseudopc', 'virtual', '.align', '.byte', '.word', '.text', '.fill', + '.import source', '.import binary', '.import c64', '.import text', '.import', '.print', '.printnow', + '.error', '.var', '.eval', '.const', '.eval const', '.enum', '.label', '.define', '.struct', + 'if', '.for', '.macro', '.function', '.return', '.pseudocommand', '.namespace', '.filenamespace', + '.assert', '.asserterror', + ), + /* Kick Assembler 3.13 Functions/Operators. */ + 5 => array( + 'size', 'charAt', 'substring', 'asNumber', 'asBoolean', 'toIntString', 'toBinaryString', 'toOctalString', + 'toHexString', 'lock', // String functions/operators. + 'get', 'set', 'add', 'remove', 'shuffle', // List functions. + 'put', 'keys', // Hashtable functions. + 'getType', 'getValue', 'CmdArgument', // Pseudo Commands functions. + 'asmCommandSize', // Opcode Constants functions. + 'LoadBinary', 'getSize', + 'LoadSid', 'getData', + 'LoadPicture', 'width', 'height', 'getPixel', 'getSinglecolorByte', 'getMulticolorByte', + 'createFile', 'writeln', + 'cmdLineVars', + 'getX', 'getY', 'getZ', // Vector functions. + 'RotationMatrix', 'ScaleMatrix', 'MoveMatrix', 'PerspectiveMatrix', // Matrix functions. + + ), + + /* Kick Assembler 3.13 Math Functions. */ + 6 => array( + 'abs', 'acos', 'asin', 'atan', 'atan2', 'cbrt', 'ceil', 'cos', 'cosh', + 'exp', 'expm1', 'floor', 'hypot', 'IEEEremainder', 'log', 'log10', + 'log1p', 'max', 'min', 'pow', 'mod', 'random', 'round', 'signum', + 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'toDegrees', 'toRadians', + ), + + /* Kick Assembler 3.13 Objects/Data Types. */ + 7 => array( + 'List', // List() Object. + 'Hashtable', // Hashtable() Object. + 'Vector', // Vector() Object. + 'Matrix', // Matrix() Object. + ), + + /* Kick Assembler 3.13 Constants. */ + 8 => array( + 'PI', 'E', // Math Constants. + 'AT_ABSOLUTE' , 'AT_ABSOLUTEX' , 'AT_ABSOLUTEY' , 'AT_IMMEDIATE', // Pseudo Commands Constants. + 'AT_INDIRECT' , 'AT_IZEROPAGEX' , 'AT_IZEROPAGEY' , 'AT_NONE', + 'BLACK', 'WHITE', 'RED', 'CYAN', 'PURPLE', 'GREEN', 'BLUE', // Colour Constants. + 'YELLOW', 'ORANGE', 'BROWN', 'LIGHT_RED', 'DARK_GRAY', 'GRAY', + 'LIGHT_GREEN', 'LIGHT_BLUE', 'LIGHT_GRAY', + 'C64FILE', // Template Tag names. + 'BF_C64FILE', 'BF_BITMAP_SINGLECOLOR', 'BF_KOALA' , 'BF_FLI', // Binary format constant + ), + + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '-', '+', '-', '*', '/', '>', '<', '<<', '>>', '&', '|', '^', '=', '==', + '!=', '>=', '<=', '!', '&&', '||', '#', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00f; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #00f; font-weight:bold;', + 4 => 'color: #080; font-weight:bold;', + 5 => 'color: #80f; font-weight:bold;', + 6 => 'color: #f08; font-weight:bold;', + 7 => 'color: #a04; font-weight:bold; font-style: italic;', + 8 => 'color: #f08; font-weight:bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + GESHI_NUMBER_FLT_NONSCI => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + 0 => 'color: #933;', + 1 => 'color: #933;', + 2 => 'color: #933;', + 3 => 'color: #00f; font-weight:bold;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + // AMCE Octal format not support and gets picked up as Decimal unfortunately. + 'REGEXPS' => array( + //Labels end with a collon. + 0 => '[!]{0,1}[_a-zA-Z][_a-zA-Z0-9]*\:', + //Multi Labels (local labels) references start with ! and end with + or - for forward/backward reference. + 1 => '![_a-zA-Z][_a-zA-Z0-9]*[+-]', + //Macros start with a colon :Macro. + 2 => ':[_a-zA-Z][_a-zA-Z0-9]*', + // Opcode Constants, such as LDA_IMM, STA_IZPY are basically all 6502 opcodes + // in UPPER case followed by _underscore_ and the ADDRESS MODE. + // As you might imagine that is rather a lot ( 78 supported Opcodes * 12 Addressing modes = 936 variations) + // So I thought it better and easier to maintain as a regular expression. + // NOTE: The order of the Address Modes must be maintained or it wont work properly (eg. place ZP first and find out!) + 3 => '[A-Z]{3}[2]?_(?:IMM|IND|IZPX|IZPY|ZPX|ZPY|ABSX|ABSY|REL|ABS|ZP)', + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/' + ), + 'KEYWORDS' => array( + 5 => array ( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\;>|^&'\"])" + ), + 6 => array ( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\;>|^&'\"])" + ), + 8 => array ( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\;>|^&'\"])" + ) + ) + ), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/6502tasm.php b/inc/geshi/6502tasm.php new file mode 100644 index 000000000..5f9f2b9be --- /dev/null +++ b/inc/geshi/6502tasm.php @@ -0,0 +1,189 @@ +<?php +/************************************************************************************* + * 6502tasm.php + * ------- + * Author: Warren Willmey + * Copyright: (c) 2010 Warren Willmey. + * Release Version: 1.0.8.10 + * Date Started: 2010/06/02 + * + * MOS 6502 (6510) TASM/64TASS (64TASS being the super set of TASM) language file for GeSHi. + * + * CHANGES + * ------- + * 2010/07/22 + * - First Release + * + * TODO (updated 2010/07/22) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'MOS 6502 (6510) TASM/64TASS 1.46 Assembler format', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* 6502/6510 Opcodes. */ + 1 => array( + 'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi', + 'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', + 'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor', + 'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy', + 'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol', + 'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta', + 'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya', + ), + /* Index Registers, yes the 6502 has other registers by they are only + * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */ + 2 => array( + 'x', 'y', 's' + ), + /* Directives. */ + 3 => array( + '.al', '.align', '.as', '.assert', '.binary', '.byte', '.cerror', '.char', + '.comment', '.cpu', '.cwarn', '.databank', '.dpage', '.else', '.elsif', + '.enc', '.endc', '.endif', '.endm', '.endp', '.error', '.fi', '.fill', + '.for', '.here', '.if', '.ifeq', '.ifmi', '.ifne', '.ifpl', + '.include', '.int', '.logical', '.long', '.macro', '.next', '.null', '.offs', + '.page', '.pend', '.proc', '.rept', '.rta', '.shift', '.text', '.warn', '.word', + '.xl', '.xs', +// , '*=' // Not a valid keyword (uses both * and = signs) moved to symbols instead. + ), + + /* 6502/6510 undocumented opcodes (often referred to as illegal instructions). + * These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816. + * As they are undocumented instructions there are no "official" names for them, these are the names + * used by 64TASS V1.46. + */ + 4 => array( + 'ahx', 'alr', 'anc', 'ane', 'arr', 'asr', 'axs', 'dcm', + 'dcp', 'ins', 'isb', 'isc', 'jam', 'lae', 'las', 'lax', + 'lds', 'lxa', 'rla', 'rra', 'sax', 'sbx', 'sha', 'shs', + 'shx', 'shy', 'slo', 'sre', 'tas', 'xaa', + ), + /* 65c02 instructions, MOS added a few (much needed) instructions in the + * CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes. */ + 5 => array( + 'bra', 'dea', 'gra', 'ina', 'phx', 'phy', 'plx', 'ply', + 'stz', 'trb', 'tsb', + ), + /* 65816 instructions. */ + 6 => array( + 'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei', + 'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl', + 'sep', 'stp', 'swa', 'tad', 'tcd', 'tcs', 'tda', + 'tdc', 'tsa', 'tsc', 'txy', 'tyx', 'wai', 'xba', 'xce', + ), + /* Deprecated directives (or yet to be implemented). */ + 7 => array( + '.global', '.check' + ), + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '*=', '#', '<', '>', '`', '=', '<', '>', + '!=', '>=', '<=', '+', '-', '*', '/', '//', '|', + '^', '&', '<<', '>>', '-', '~', '!', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00f; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #080; font-weight:bold;', + 4 => 'color: #f00; font-weight:bold;', + 5 => 'color: #80f; font-weight:bold;', + 6 => 'color: #f08; font-weight:bold;', + 7 => 'color: #a04; font-weight:bold; font-style: italic;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + // AMCE Octal format not support and gets picked up as Decimal unfortunately. + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/' + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/68000devpac.php b/inc/geshi/68000devpac.php new file mode 100644 index 000000000..efd800809 --- /dev/null +++ b/inc/geshi/68000devpac.php @@ -0,0 +1,168 @@ +<?php +/************************************************************************************* + * 68000devpac.php + * ------- + * Author: Warren Willmey + * Copyright: (c) 2010 Warren Willmey. + * Release Version: 1.0.8.10 + * Date Started: 2010/06/09 + * + * Motorola 68000 - HiSoft Devpac ST 2 Assembler language file for GeSHi. + * + * CHANGES + * ------- + * 2010/07/22 + * - First Release + * + * TODO (updated 2010/07/22) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'Motorola 68000 - HiSoft Devpac ST 2 Assembler format', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* Directives. */ + 1 => array( + 'end', 'include', 'incbin', 'opt', 'even', 'cnop', 'dc.b', 'dc.w', + 'dc.l', 'ds.b', 'ds.w', 'ds.l', 'dcb.b', 'dcb.w', 'dcb.l', + 'fail', 'output', '__g2', 'rept', 'endr', 'list', 'nolist', 'plen', + 'llen', 'ttl', 'subttl', 'spc', 'page', 'listchar', 'format', + 'equ', 'equr', 'set', 'reg', 'rs.b', 'rs.w', 'rs.l', 'rsreset', + 'rsset', '__rs', 'ifeq', 'ifne', 'ifgt', 'ifge', 'iflt', 'ifle', 'endc', + 'ifd', 'ifnd', 'ifc', 'ifnc', 'elseif', 'iif', 'macro', 'endm', 'mexit', + 'narg', '\@', 'section', 'text', 'data', 'bss', 'xdef', 'xref', 'org', + 'offset', '__lk', 'comment', + ), + /* 68000 Opcodes. */ + 2 => array( + 'abcd', 'add', 'adda', 'addi', 'addq', 'addx', 'and', 'andi', + 'asl', 'asr', 'bcc', 'bchg', 'bclr', 'bcs', 'beq', 'bge', + 'bgt', 'bhi', 'ble', 'bls', 'blt', 'bmi', 'bne', 'bpl', + 'bra', 'bset', 'bsr', 'btst', 'bvc', 'bvs', 'chk', 'clr', + 'cmp', 'cmpa', 'cmpi', 'cmpm', 'dbcc', 'dbcs', 'dbeq', 'dbf', + 'dbge', 'dbgt', 'dbhi', 'dble', 'dbls', 'dblt', 'dbmi', 'dbne', + 'dbpl', 'dbra', 'dbt', 'dbvc', 'dbvs', 'divs', 'divu', 'eor', + 'eori', 'exg', 'ext','illegal','jmp', 'jsr', 'lea', 'link', + 'lsl', 'lsr', 'move','movea','movem','movep','moveq', 'muls', + 'mulu', 'nbcd', 'neg', 'negx', 'nop', 'not', 'or', 'ori', + 'pea', 'reset', 'rol', 'ror', 'roxl', 'roxr', 'rte', 'rtr', + 'rts', 'sbcd', 'scc', 'scs', 'seq', 'sf', 'sge', 'sgt', + 'shi', 'sle', 'sls', 'slt', 'smi', 'sne', 'spl', 'st', + 'stop', 'sub', 'suba', 'subi', 'subq', 'subx', 'svc', 'svs', + 'swap', 'tas', 'trap','trapv', 'tst', 'unlk', + ), + /* oprand sizes. */ + 3 => array( + 'b', 'w', 'l' , 's' + ), + /* 68000 Registers. */ + 4 => array( + 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', + 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'sp', 'usp', 'ssp', + 'pc', 'ccr', 'sr', + ), + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '+', '-', '~', '<<', '>>', '&', + '!', '^', '*', '/', '=', '<', '>', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #f08; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #00f; font-weight:bold;', + 4 => 'color: #080; font-weight:bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + GESHI_NUMBER_OCT_PREFIX_AT => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + 0 => 'color: #933;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_OCT_PREFIX_AT | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + 'REGEXPS' => array( + //Labels may end in a colon. + 0 => '(?<=\A\x20|\r|\n|^)[\._a-zA-Z][\._a-zA-Z0-9]*[\:]?[\s]' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%\@]/' + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/abap.php b/inc/geshi/abap.php index 942d2397e..6ce930c7c 100644 --- a/inc/geshi/abap.php +++ b/inc/geshi/abap.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * ABAP language file for GeSHi. diff --git a/inc/geshi/actionscript.php b/inc/geshi/actionscript.php index 41d66edd2..47eec3950 100644 --- a/inc/geshi/actionscript.php +++ b/inc/geshi/actionscript.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/20 * * Actionscript language file for GeSHi. diff --git a/inc/geshi/actionscript3.php b/inc/geshi/actionscript3.php index 4aab929dc..ba27573cc 100644 --- a/inc/geshi/actionscript3.php +++ b/inc/geshi/actionscript3.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2007/11/26 * * ActionScript3 language file for GeSHi. @@ -60,7 +60,7 @@ $language_data = array ( 'COMMENT_MULTI' => array('/*' => '*/'), 'COMMENT_REGEXP' => array( //Regular expressions - 2 => "/(?<=[\\s^])(s|tr|y)\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])*\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU", + 2 => "/(?<=[\\s^])(s|tr|y)\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(?<!\s)\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])*(?<!\s)\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(?<!\s)\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU", ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), diff --git a/inc/geshi/ada.php b/inc/geshi/ada.php index c6b0597bb..8f8390952 100644 --- a/inc/geshi/ada.php +++ b/inc/geshi/ada.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/29 * * Ada language file for GeSHi. diff --git a/inc/geshi/algol68.php b/inc/geshi/algol68.php new file mode 100644 index 000000000..1f79f10eb --- /dev/null +++ b/inc/geshi/algol68.php @@ -0,0 +1,329 @@ +<?php +/************************************************************************************* + * algol68.php + * -------- + * 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 + * Date Started: 2010/04/24 + * + * ALGOL 68 language file for GeSHi. + * + * CHANGES + * ------- + * 2010/04/24 (1.0.8.8.0) + * - First Release - machine generated by http://rosettacode.org/geshi/ + * 2010/05/24 (1.0.8.8.1) + * - #2324 - converted comment detection to RegEx + * 2010/06/16 (1.0.8.8.2) + * - separate symbols from keywords - quick fix + * 2010/06/16 (1.0.8.8.3) + * - reverse length order symbols + * - Add RegEx for BITS and REAL literals (INT to do) + * - recognise LONG and SHORT prefixes to literals + * 2010/07/23 (1.0.8.8.4) + * - fix errors detected by langcheck.php, eg rm tab, fix indenting, rm duplicate keywords, fix symbols as keywords etc + * - removed bulk of local variables from name space. + * - unfolded arrays + * + * TODO (updated yyyy/mm/dd) + * ------------------------- + * - Use "Parser Control" to fix KEYWORD parsing, eg: (INT minus one= -1; print(ABSminus one)) + * - Parse $FORMATS$ more fully - if possible. + * - Pull reserved words from the source of A68G and A68RS + * - Pull stdlib PROC/OP/MODE symbols from the soruce of A68G and A68RS + * - Pull PROC/OP/MODE extensions from the soruce of A68G and A68RS + * - Use RegEx to detect extended precision PROC names, eg 'long long sin' etc + * - Use RegEx to detect white space std PROC names, eg 'new line' + * - Use RegEx to detect white space ext PROC names, eg 'cgs speed of light' + * - Use RegEx to detect BOLD symbols, eg userdefined MODEs and OPs + * - Add REgEx for INT literals - Adding INT breaks formatting... + * - Adding PIPE as a key word breaks formatting of "|" symbols!! + * + ************************************************************************************* + * + * 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 + * + ************************************************************************************/ + +if(!function_exists('geshi_langfile_algol68_vars')) { + function geshi_langfile_algol68_vars(){ + $pre='(?<![0-9a-z_\.])'; + $post='?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)'; + $post=""; # assuming the RegEx is greedy # + + $_="\s*"; + + $srad="Rr"; $rrad="[".$srad."]"; # either one digit, OR opt-space in digits # + $sbin="0-1"; $rbin="[".$sbin."]"; $_bin=$rbin."(?:[".$sbin."\s]*".$rbin."|)"; + $snib="0-3"; $rnib="[".$snib."]"; $_nib=$rnib."(?:[".$snib."\s]*".$rnib."|)"; + $soct="0-7"; $roct="[".$soct."]"; $_oct=$roct."(?:[".$soct."\s]*".$roct."|)"; + $sdec="0-9"; $rdec="[".$sdec."]"; $_dec=$rdec."(?:[".$sdec."\s]*".$rdec."|)"; + $shex="0-9A-Fa-f"; $rhex="[".$shex."]"; $_hex=$rhex."(?:[".$shex."\s]*".$rhex."|)"; + + # Define BITS: # + $prebits=$pre; $postbits=$post; + $bl="2".$_.$rrad.$_.$_bin; + $bl=$bl."|"."2".$_.$rrad.$_.$_bin; + $bl=$bl."|"."4".$_.$rrad.$_.$_nib; + $bl=$bl."|"."8".$_.$rrad.$_.$_oct; + $bl=$bl."|"."1".$_."0".$_.$rrad.$_.$_dec; + $bl=$bl."|"."1".$_."6".$_.$rrad.$_.$_hex; + + # Define INT: # + $preint=$pre; $postint=$post; + # for some reason ".0 e - 2" is not recognised, but ".0 e + 2" IS! + # work around: remove spaces between sign and digits! Maybe because + # of the Unary '-' Operator + $sign_="(?:-|\-|[-]|[\-]|\+|)"; # attempts # + + $sign_="(?:-\s*|\+\s*|)"; # n.b. sign is followed by white space # + + $_int=$sign_.$_dec; + $il= $_int; # +_9 # + + $GESHI_NUMBER_INT_BASIC='(?:(?<![0-9a-z_\.%])|(?<=\.\.))(?<![\d\.]e[+\-])([1-9]\d*?|0)(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)'; + + # Define REAL: # + $prereal=$pre; $postreal=$post; + $sexp="Ee\\\\"; $_exp="(?:⏨|[".$sexp."])".$_.$_int; + $_decimal="[.]".$_.$_dec; + + # Add permitted permutations of various parts # + $rl= $_int.$_.$_decimal.$_.$_exp; # +_9_._9_e_+_9 # + $rl=$rl."|".$_int.$_."[.]".$_.$_exp; # +_9_.___e_+_9 # + $rl=$rl."|".$_int.$_.$_exp; # +_9_____e_+_9 # + $rl=$rl."|".$sign_.$_decimal.$_.$_exp; # +___._9_e_+_9 # + + $rl=$rl."|".$_int.$_.$_decimal; # +_9_._9 # + $rl=$rl."|".$sign_.$_decimal; # +___._9 # + + # The following line damaged formatting... + #$rl=$rl."|".$_int; # +_9 # + + # Apparently Algol68 does not support '2.', c.f. Algol 68G + #$rl=$rl."|".$_int.$_."[.]"; # +_9_. # + + # Literal prefixes are overridden by KEYWORDS :-( + $LONGS="(?:(?:(LONG\s+)*|(SHORT\s+))*|)"; + + return array( + "BITS" => $prebits.$LONGS."(?:".$bl.")".$postbits, + "INT" => $preint.$LONGS."(?:".$il.")".$postint, + "REAL" => $prereal.$LONGS."(?:".$rl.")".$postreal, + + "BOLD" => 'color: #b1b100; font-weight: bold;', + "ITALIC" => 'color: #b1b100;', # procedures traditionally italic # + "NONSTD" => 'color: #FF0000; font-weight: bold;', # RED # + "COMMENT" => 'color: #666666; font-style: italic;' + ); + } +} +$a68=geshi_langfile_algol68_vars(); + +$language_data = array( + 'LANG_NAME' => 'ALGOL 68', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array( + '¢' => '¢', + '£' => '£', + '#' => '#', + ), + 'COMMENT_REGEXP' => array( + 1 => '/\bCO((?:MMENT)?)\b.*?\bCO\\1\b/i', + 2 => '/\bPR((?:AGMAT)?)\b.*?\bPR\\1\b/i', + 3 => '/\bQUOTE\b.*?\bQUOTE\b/i' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '"', + 'NUMBERS' => GESHI_NUMBER_HEX_SUFFIX, # Warning: Feature!! # +# GESHI_NUMBER_HEX_SUFFIX, # Attempt ignore default # + 'KEYWORDS' => array( +# Extensions + 1 => array('KEEP', 'FINISH', 'USE', 'SYSPROCS', 'IOSTATE', 'USING', 'ENVIRON', 'PROGRAM', 'CONTEXT'), +# 2 => array('CASE', 'IN', 'OUSE', 'IN', 'OUT', 'ESAC', '(', '|', '|:', ')', 'FOR', 'FROM', 'TO', 'BY', 'WHILE', 'DO', 'OD', 'IF', 'THEN', 'ELIF', 'THEN', 'ELSE', 'FI', 'PAR', 'BEGIN', 'EXIT', 'END', 'GO', 'GOTO', 'FORALL', 'UPTO', 'DOWNTO', 'FOREACH', 'ASSERT'), # + 2 => array('CASE', 'IN', 'OUSE', /* 'IN',*/ 'OUT', 'ESAC', 'PAR', 'BEGIN', 'EXIT', 'END', 'GO TO', 'GOTO', 'FOR', 'FROM', 'TO', 'BY', 'WHILE', 'DO', 'OD', 'IF', 'THEN', 'ELIF', /* 'THEN',*/ 'ELSE', 'FI' ), + 3 => array('BITS', 'BOOL', 'BYTES', 'CHAR', 'COMPL', 'INT', 'REAL', 'SEMA', 'STRING', 'VOID'), + 4 => array('MODE', 'OP', 'PRIO', 'PROC', 'FLEX', 'HEAP', 'LOC', 'REF', 'LONG', 'SHORT', 'EITHER'), +# Extensions or deprecated keywords +# 'PIPE': keyword somehow interferes with the internal operation of GeSHi + 5 => array('FORALL', 'UPTO', 'DOWNTO', 'FOREACH', 'ASSERT', 'CTB', 'CT', 'CTAB', 'COMPLEX', 'VECTOR', 'SOUND' /*, 'PIPE'*/), + 6 => array('CHANNEL', 'FILE', 'FORMAT', 'STRUCT', 'UNION', 'OF'), +# '(', '|', '|:', ')', # +# 7 => array('OF', 'AT', '@', 'IS', ':=:', 'ISNT', ':/=:', ':≠:', 'CTB', 'CT', '::', 'CTAB', '::=', 'TRUE', 'FALSE', 'EMPTY', 'NIL', '○', 'SKIP', '~'), + 7 => array('AT', 'IS', 'ISNT', 'TRUE', 'FALSE', 'EMPTY', 'NIL', 'SKIP'), + 8 => array('NOT', 'UP', 'DOWN', 'LWB', 'UPB', /* '-',*/ 'ABS', 'ARG', 'BIN', 'ENTIER', 'LENG', 'LEVEL', 'ODD', 'REPR', 'ROUND', 'SHORTEN', 'CONJ', 'SIGN'), +# OPERATORS ordered roughtly by PRIORITY # +# 9 => array('¬', '↑', '↓', '⌊', '⌈', '~', '⎩', '⎧'), +# 10 => array('+*', 'I', '+×', '⊥', '!', '⏨'), + 10 => array('I'), +# 11 => array('SHL', 'SHR', '**', 'UP', 'DOWN', 'LWB', 'UPB', '↑', '↓', '⌊', '⌈', '⎩', '⎧'), + 11 => array('SHL', 'SHR', /*'UP', 'DOWN', 'LWB', 'UPB'*/), +# 12 => array('*', '/', '%', 'OVER', '%*', 'MOD', 'ELEM', '×', '÷', '÷×', '÷*', '%×', '□', '÷:'), + 12 => array('OVER', 'MOD', 'ELEM'), +# 13 => array('-', '+'), +# 14 => array('<', 'LT', '<=', 'LE', '>=', 'GE', '>', 'GT', '≤', '≥'), + 14 => array('LT', 'LE', 'GE', 'GT'), +# 15 => array('=', 'EQ', '/=', 'NE', '≠', '~='), + 15 => array('EQ', 'NE'), +# 16 => array('&', 'AND', '∧', 'OR', '∨', '/\\', '\\/'), + 16 => array('AND', 'OR'), + 17 => array('MINUSAB', 'PLUSAB', 'TIMESAB', 'DIVAB', 'OVERAB', 'MODAB', 'PLUSTO'), +# 18 => array('-:=', '+:=', '*:=', '/:=', '%:=', '%*:=', '+=:', '×:=', '÷:=', '÷×:=', '÷*:=', '%×:=', '÷::=', 'MINUS', 'PLUS', 'DIV', 'MOD', 'PRUS'), +# Extensions or deprecated keywords + 18 => array('MINUS', 'PLUS', 'DIV', /* 'MOD',*/ 'PRUS', 'IS NOT'), +# Extensions or deprecated keywords + 19 => array('THEF', 'ANDF', 'ORF', 'ANDTH', 'OREL', 'ANDTHEN', 'ORELSE'), +# Built in procedures - from standard prelude # + 20 => array('int lengths', 'intlengths', 'int shorths', 'intshorths', 'max int', 'maxint', 'real lengths', 'reallengths', 'real shorths', 'realshorths', 'bits lengths', 'bitslengths', 'bits shorths', 'bitsshorths', 'bytes lengths', 'byteslengths', 'bytes shorths', 'bytesshorths', 'max abs char', 'maxabschar', 'int width', 'intwidth', 'long int width', 'longintwidth', 'long long int width', 'longlongintwidth', 'real width', 'realwidth', 'long real width', 'longrealwidth', 'long long real width', 'longlongrealwidth', 'exp width', 'expwidth', 'long exp width', 'longexpwidth', 'long long exp width', 'longlongexpwidth', 'bits width', 'bitswidth', 'long bits width', 'longbitswidth', 'long long bits width', 'longlongbitswidth', 'bytes width', 'byteswidth', 'long bytes width', 'longbyteswidth', 'max real', 'maxreal', 'small real', 'smallreal', 'long max int', 'longmaxint', 'long long max int', 'longlongmaxint', 'long max real', 'longmaxreal', 'long small real', 'longsmallreal', 'long long max real', 'longlongmaxreal', 'long long small real', 'longlongsmallreal', 'long max bits', 'longmaxbits', 'long long max bits', 'longlongmaxbits', 'null character', 'nullcharacter', 'blank', 'flip', 'flop', 'error char', 'errorchar', 'exp char', 'expchar', 'newline char', 'newlinechar', 'formfeed char', 'formfeedchar', 'tab char', 'tabchar'), + 21 => array('stand in channel', 'standinchannel', 'stand out channel', 'standoutchannel', 'stand back channel', 'standbackchannel', 'stand draw channel', 'standdrawchannel', 'stand error channel', 'standerrorchannel'), + 22 => array('put possible', 'putpossible', 'get possible', 'getpossible', 'bin possible', 'binpossible', 'set possible', 'setpossible', 'reset possible', 'resetpossible', 'reidf possible', 'reidfpossible', 'draw possible', 'drawpossible', 'compressible', 'on logical file end', 'onlogicalfileend', 'on physical file end', 'onphysicalfileend', 'on line end', 'onlineend', 'on page end', 'onpageend', 'on format end', 'onformatend', 'on value error', 'onvalueerror', 'on open error', 'onopenerror', 'on transput error', 'ontransputerror', 'on format error', 'onformaterror', 'open', 'establish', 'create', 'associate', 'close', 'lock', 'scratch', 'space', 'new line', 'newline', 'print', 'write f', 'writef', 'print f', 'printf', 'write bin', 'writebin', 'print bin', 'printbin', 'read f', 'readf', 'read bin', 'readbin', 'put f', 'putf', 'get f', 'getf', 'make term', 'maketerm', 'make device', 'makedevice', 'idf', 'term', 'read int', 'readint', 'read long int', 'readlongint', 'read long long int', 'readlonglongint', 'read real', 'readreal', 'read long real', 'readlongreal', 'read long long real', 'readlonglongreal', 'read complex', 'readcomplex', 'read long complex', 'readlongcomplex', 'read long long complex', 'readlonglongcomplex', 'read bool', 'readbool', 'read bits', 'readbits', 'read long bits', 'readlongbits', 'read long long bits', 'readlonglongbits', 'read char', 'readchar', 'read string', 'readstring', 'print int', 'printint', 'print long int', 'printlongint', 'print long long int', 'printlonglongint', 'print real', 'printreal', 'print long real', 'printlongreal', 'print long long real', 'printlonglongreal', 'print complex', 'printcomplex', 'print long complex', 'printlongcomplex', 'print long long complex', 'printlonglongcomplex', 'print bool', 'printbool', 'print bits', 'printbits', 'print long bits', 'printlongbits', 'print long long bits', 'printlonglongbits', 'print char', 'printchar', 'print string', 'printstring', 'whole', 'fixed', 'float'), + 23 => array('pi', 'long pi', 'longpi', 'long long pi', 'longlongpi'), + 24 => array('sqrt', 'curt', 'cbrt', 'exp', 'ln', 'log', 'sin', 'arc sin', 'arcsin', 'cos', 'arc cos', 'arccos', 'tan', 'arc tan', 'arctan', 'long sqrt', 'longsqrt', 'long curt', 'longcurt', 'long cbrt', 'longcbrt', 'long exp', 'longexp', 'long ln', 'longln', 'long log', 'longlog', 'long sin', 'longsin', 'long arc sin', 'longarcsin', 'long cos', 'longcos', 'long arc cos', 'longarccos', 'long tan', 'longtan', 'long arc tan', 'longarctan', 'long long sqrt', 'longlongsqrt', 'long long curt', 'longlongcurt', 'long long cbrt', 'longlongcbrt', 'long long exp', 'longlongexp', 'long long ln', 'longlongln', 'long long log', 'longlonglog', 'long long sin', 'longlongsin', 'long long arc sin', 'longlongarcsin', 'long long cos', 'longlongcos', 'long long arc cos', 'longlongarccos', 'long long tan', 'longlongtan', 'long long arc tan', 'longlongarctan'), + 25 => array('first random', 'firstrandom', 'next random', 'nextrandom', 'long next random', 'longnextrandom', 'long long next random', 'longlongnextrandom'), + 26 => array('real', 'bits pack', 'bitspack', 'long bits pack', 'longbitspack', 'long long bits pack', 'longlongbitspack', 'bytes pack', 'bytespack', 'long bytes pack', 'longbytespack', 'char in string', 'charinstring', 'last char in string', 'lastcharinstring', 'string in string', 'stringinstring'), + 27 => array('utc time', 'utctime', 'local time', 'localtime', 'argc', 'argv', 'get env', 'getenv', 'reset errno', 'reseterrno', 'errno', 'strerror'), + 28 => array('sinh', 'long sinh', 'longsinh', 'long long sinh', 'longlongsinh', 'arc sinh', 'arcsinh', 'long arc sinh', 'longarcsinh', 'long long arc sinh', 'longlongarcsinh', 'cosh', 'long cosh', 'longcosh', 'long long cosh', 'longlongcosh', 'arc cosh', 'arccosh', 'long arc cosh', 'longarccosh', 'long long arc cosh', 'longlongarccosh', 'tanh', 'long tanh', 'longtanh', 'long long tanh', 'longlongtanh', 'arc tanh', 'arctanh', 'long arc tanh', 'longarctanh', 'long long arc tanh', 'longlongarctanh', 'arc tan2', 'arctan2', 'long arc tan2', 'longarctan2', 'long long arc tan2', 'longlongarctan2'), + 29 => array('complex sqrt', 'complexsqrt', 'long complex sqrt', 'longcomplexsqrt', 'long long complex sqrt', 'longlongcomplexsqrt', 'complex exp', 'complexexp', 'long complex exp', 'longcomplexexp', 'long long complex exp', 'longlongcomplexexp', 'complex ln', 'complexln', 'long complex ln', 'longcomplexln', 'long long complex ln', 'longlongcomplexln', 'complex sin', 'complexsin', 'long complex sin', 'longcomplexsin', 'long long complex sin', 'longlongcomplexsin', 'complex arc sin', 'complexarcsin', 'long complex arc sin', 'longcomplexarcsin', 'long long complex arc sin', 'longlongcomplexarcsin', 'complex cos', 'complexcos', 'long complex cos', 'longcomplexcos', 'long long complex cos', 'longlongcomplexcos', 'complex arc cos', 'complexarccos', 'long complex arc cos', 'longcomplexarccos', 'long long complex arc cos', 'longlongcomplexarccos', 'complex tan', 'complextan', 'long complex tan', 'longcomplextan', 'long long complex tan', 'longlongcomplextan', 'complex arc tan', 'complexarctan', 'long complex arc tan', 'longcomplexarctan', 'long long complex arc tan', 'longlongcomplexarctan', 'complex sinh', 'complexsinh', 'complex arc sinh', 'complexarcsinh', 'complex cosh', 'complexcosh', 'complex arc cosh', 'complexarccosh', 'complex tanh', 'complextanh', 'complex arc tanh', 'complexarctanh') + ), + 'SYMBOLS' => array( + 1 => array( /* reverse length sorted... */ '÷×:=', '%×:=', ':≠:', '÷*:=', '÷::=', '%*:=', ':/=:', '×:=', '÷:=', '÷×', '%:=', '%×', '*:=', '+:=', '+=:', '+×', '-:=', '/:=', '::=', ':=:', '÷*', '÷:', '↑', '↓', '∧', '∨', '≠', '≤', '≥', '⊥', '⌈', '⌊', '⎧', '⎩', /* '⏨', */ '□', '○', '%*', '**', '+*', '/=', '::', '/\\', '\\/', '<=', '>=', '|:', '~=', '¬', '×', '÷', '!', '%', '&', '(', ')', '*', '+', ',', '-', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '^', '{', '|', '}', '~') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, +# 9 => true, + 10 => true, + 11 => true, + 12 => true, +# 13 => true, + 14 => true, + 15 => true, + 16 => true, + 17 => true, + 18 => true, + 19 => true, + 20 => true, + 21 => true, + 22 => true, + 23 => true, + 24 => true, + 25 => true, + 26 => true, + 27 => true, + 28 => true, + 29 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => $a68['NONSTD'], 2 => $a68['BOLD'], 3 => $a68['BOLD'], 4 => $a68['BOLD'], + 5 => $a68['NONSTD'], 6 => $a68['BOLD'], 7 => $a68['BOLD'], 8 => $a68['BOLD'], + /* 9 => $a68['BOLD'],*/ 10 => $a68['BOLD'], 11 => $a68['BOLD'], 12 => $a68['BOLD'], + /* 13 => $a68['BOLD'],*/ 14 => $a68['BOLD'], 15 => $a68['BOLD'], 16 => $a68['BOLD'], 17 => $a68['BOLD'], + 18 => $a68['NONSTD'], 19 => $a68['NONSTD'], + 20 => $a68['ITALIC'], 21 => $a68['ITALIC'], 22 => $a68['ITALIC'], 23 => $a68['ITALIC'], + 24 => $a68['ITALIC'], 25 => $a68['ITALIC'], 26 => $a68['ITALIC'], 27 => $a68['ITALIC'], + 28 => $a68['ITALIC'], 29 => $a68['ITALIC'] + ), + 'COMMENTS' => array( + 1 => $a68['COMMENT'], 2 => $a68['COMMENT'], 3 => $a68['COMMENT'], /* 4 => $a68['COMMENT'], + 5 => $a68['COMMENT'],*/ 'MULTI' => $a68['COMMENT'] + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;', + 1 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;', + 1 => 'color: #339933;' + ), + 'REGEXPS' => array( + 0 => 'color: #cc66cc;', # BITS # + 1 => 'color: #cc66cc;', # REAL # + /* 2 => 'color: #cc66cc;', # INT # */ + ), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', +# 9 => '', + 10 => '', + 11 => '', + 12 => '', +# 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 18 => '', + 19 => '', + 20 => '', + 21 => '', + 22 => '', + 23 => '', + 24 => '', + 25 => '', + 26 => '', + 27 => '', + 28 => '', + 29 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 0 => '→', + 1 => 'OF' + ), + 'REGEXPS' => array( + 0 => $a68['BITS'], + 1 => $a68['REAL'] + # 2 => $a68['INT'], # Breaks formatting for some reason # + # 2 => $GESHI_NUMBER_INT_BASIC # Also breaks formatting # + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +unset($a68); +?>
\ No newline at end of file diff --git a/inc/geshi/apache.php b/inc/geshi/apache.php index 34704eb22..ace3862ef 100644 --- a/inc/geshi/apache.php +++ b/inc/geshi/apache.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/29/07 * * Apache language file for GeSHi. @@ -344,6 +344,9 @@ $language_data = array ( //mod_unique_id.c + //mod_upload_progress + 'ReportUploads', 'TrackUploads', 'UploadProgressSharedMemorySize', + //mod_userdir.c 'UserDir', diff --git a/inc/geshi/applescript.php b/inc/geshi/applescript.php index 9e214f2e1..c64a4974d 100644 --- a/inc/geshi/applescript.php +++ b/inc/geshi/applescript.php @@ -4,7 +4,7 @@ * -------- * Author: Stephan Klimek (http://www.initware.org) * Copyright: Stephan Klimek (http://www.initware.org) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/07/20 * * AppleScript language file for GeSHi. diff --git a/inc/geshi/apt_sources.php b/inc/geshi/apt_sources.php index f4cf9ae3f..9feefceaf 100644 --- a/inc/geshi/apt_sources.php +++ b/inc/geshi/apt_sources.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/06/17 * * Apt sources.list language file for GeSHi. @@ -55,7 +55,7 @@ $language_data = array ( 'stable/updates', //Debian 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', 'woody', 'sarge', - 'etch', 'lenny', 'sid', + 'etch', 'lenny', 'wheezy', 'sid', //Ubuntu 'warty', 'warty-updates', 'warty-security', 'warty-proposed', 'warty-backports', 'hoary', 'hoary-updates', 'hoary-security', 'hoary-proposed', 'hoary-backports', @@ -65,7 +65,11 @@ $language_data = array ( 'feisty', 'feisty-updates', 'feisty-security', 'feisty-proposed', 'feisty-backports', 'gutsy', 'gutsy-updates', 'gutsy-security', 'gutsy-proposed', 'gutsy-backports', 'hardy', 'hardy-updates', 'hardy-security', 'hardy-proposed', 'hardy-backports', - 'intrepid', 'intrepid-updates', 'intrepid-security', 'intrepid-proposed', 'intrepid-backports' + 'intrepid', 'intrepid-updates', 'intrepid-security', 'intrepid-proposed', 'intrepid-backports', + 'jaunty', 'jaunty-updates', 'jaunty-security', 'jaunty-proposed', 'jaunty-backports', + 'karmic', 'karmic-updates', 'karmic-security', 'karmic-proposed', 'karmic-backports', + 'lucid', 'lucid-updates', 'lucid-security', 'lucid-proposed', 'lucid-backports', + 'maverick', 'maverick-updates', 'maverick-security', 'maverick-proposed', 'maverick-backports' ), 3 => array( 'main', 'restricted', 'preview', 'contrib', 'non-free', @@ -141,4 +145,4 @@ $language_data = array ( 'TAB_WIDTH' => 4 ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/asm.php b/inc/geshi/asm.php index d54e24023..2093d86b8 100644 --- a/inc/geshi/asm.php +++ b/inc/geshi/asm.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/27 * * x86 Assembler language file for GeSHi. @@ -99,9 +99,9 @@ $language_data = array ( 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','err','err1','err2','errb', + 'dosseg','else','elseif','endif','endw','equ','err','err1','err2','errb', 'errdef','errdif','errdifi','erre','erridn','erridni','errnb','errndef', - 'errnz','exit','fardata','fardata?','if','lall','lfcond','list','listall', + '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', @@ -114,7 +114,7 @@ $language_data = array ( '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', - 'rept','seg','segment','short','size','sizeof','sizestr','struc','struct', + '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' ), @@ -222,4 +222,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/asp.php b/inc/geshi/asp.php index 4a9d6c8e2..c011de960 100644 --- a/inc/geshi/asp.php +++ b/inc/geshi/asp.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/13 * * ASP language file for GeSHi. diff --git a/inc/geshi/autoconf.php b/inc/geshi/autoconf.php index 0883f9f54..901125bdc 100644 --- a/inc/geshi/autoconf.php +++ b/inc/geshi/autoconf.php @@ -4,7 +4,7 @@ * ----- * Author: Mihai Vasilian (grayasm@gmail.com) * Copyright: (c) 2010 Mihai Vasilian - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/01/25 * * autoconf language file for GeSHi. diff --git a/inc/geshi/autohotkey.php b/inc/geshi/autohotkey.php index 6a3528334..c162f7ade 100644 --- a/inc/geshi/autohotkey.php +++ b/inc/geshi/autohotkey.php @@ -4,7 +4,7 @@ * -------- * Author: Naveen Garg (naveen.garg@gmail.com) * Copyright: (c) 2009 Naveen Garg and GeSHi - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/06/11 * * Autohotkey language file for GeSHi. diff --git a/inc/geshi/autoit.php b/inc/geshi/autoit.php index c8ef4404b..7f69d2bd5 100644 --- a/inc/geshi/autoit.php +++ b/inc/geshi/autoit.php @@ -4,7 +4,7 @@ * -------- * Author: big_daddy (robert.i.anthony@gmail.com) * Copyright: (c) 2006 and to GESHi ;) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/01/26 * * AutoIT language file for GeSHi. diff --git a/inc/geshi/avisynth.php b/inc/geshi/avisynth.php index f74f50c3a..949d0ecb6 100644 --- a/inc/geshi/avisynth.php +++ b/inc/geshi/avisynth.php @@ -4,7 +4,7 @@ * -------- * Author: Ryan Jones (sciguyryan@gmail.com) * Copyright: (c) 2008 Ryan Jones - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/10/08 * * AviSynth language file for GeSHi. diff --git a/inc/geshi/awk.php b/inc/geshi/awk.php index 5d540315c..a1ab68ef1 100644 --- a/inc/geshi/awk.php +++ b/inc/geshi/awk.php @@ -4,7 +4,7 @@ * ------- * Author: George Pollard (porges@porg.es) * Copyright: (c) 2009 George Pollard - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/01/28 * * Awk language file for GeSHi. diff --git a/inc/geshi/bascomavr.php b/inc/geshi/bascomavr.php new file mode 100644 index 000000000..8270fb26e --- /dev/null +++ b/inc/geshi/bascomavr.php @@ -0,0 +1,185 @@ +<?php +/************************************************************************************* + * bascomavr.php + * --------------------------------- + * Author: aquaticus.info + * Copyright: (c) 2008 aquaticus.info + * Release Version: 1.0.8.10 + * Date Started: 2008/01/09 + * + * BASCOM AVR language file for GeSHi. + * + * You can find the BASCOM AVR Website at (www.mcselec.com/bascom-avr.htm) + * + * CHANGES + * ------- + * 2008/01/09 (1.0.8.10) + * - First Release + * + ************************************************************************************* + * + * 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' => 'BASCOM AVR', + 'COMMENT_SINGLE' => array(1 => "'"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + // Navy Blue Bold Keywords + '1WRESET' , '1WREAD' , '1WWRITE' , '1WSEARCHFIRST' , '1WSEARCHNEXT' ,'1WVERIFY' , '1WIRECOUNT', + 'CONFIG' , 'ACI' , 'ADC' , 'BCCARD' , 'CLOCK' , 'COM1' , + 'COM2' , 'PS2EMU' , 'ATEMU' , 'I2CSLAVE' , + 'INPUT', 'OUTPUT', 'GRAPHLCD' , 'KEYBOARD' , 'TIMER0' , 'TIMER1' , + 'LCDBUS' , 'LCDMODE' , '1WIRE' , 'LCD' , 'SERIALOUT' , + 'SERIALIN' , 'SPI' , 'LCDPIN' , 'SDA' , 'SCL' , + 'WATCHDOG' , 'PORT' , 'COUNTER0', 'COUNTER1' , 'TCPIP' , 'TWISLAVE' , + 'X10' , 'XRAM' , 'USB', + 'BCD' , 'GRAY2BIN' , 'BIN2GRAY' , 'BIN' , 'MAKEBCD' , 'MAKEDEC' , 'MAKEINT' , 'FORMAT' , 'FUSING' , 'BINVAL' , + 'CRC8' , 'CRC16' , 'CRC16UNI' , 'CRC32' , 'HIGH' , 'HIGHW' , 'LOW', + 'DATE' , 'TIME' , 'DATE$' , 'TIME$' , 'DAYOFWEEK' , 'DAYOFYEAR' , 'SECOFDAY' , 'SECELAPSED' , 'SYSDAY' , 'SYSSEC' , 'SYSSECELAPSED', + 'WAIT' , 'WAITMS' , 'WAITUS' , 'DELAY', + 'BSAVE' , 'BLOAD' , 'GET' , 'VER' , 'DISKFREE' , 'DIR' , 'DriveReset' , 'DriveInit' , 'LINE' , 'INITFILESYSTEM' , + 'EOF' , 'WRITE' , 'FLUSH' , 'FREEFILE' , 'FILEATTR' , 'FILEDATE' , 'FILETIME' , 'FILEDATETIME' , 'FILELEN' , 'SEEK' , + 'KILL' , 'DriveGetIdentity' , 'DriveWriteSector' , 'DriveReadSector' , 'LOC' , 'LOF' , 'PUT' , 'OPEN' , 'CLOSE', + 'GLCDCMD' , 'GLCDDATA' , 'SETFONT' , 'PSET' , 'SHOWPIC' , 'SHOWPICE' , 'CIRCLE' , 'BOX', + 'I2CINIT' , 'I2CRECEIVE' , 'I2CSEND' , 'I2CSTART','I2CSTOP','I2CRBYTE','I2CWBYTE', + 'ALIAS' , 'BITWAIT' , 'TOGGLE' , 'RESET' , 'SET' , 'SHIFTIN' , 'SHIFTOUT' , 'DEBOUNCE' , 'PULSEIN' , 'PULSEOUT', + 'IDLE' , 'POWERDOWN' , 'POWERSAVE' , 'ON', 'INTERRUPT' , 'ENABLE' , 'DISABLE' , 'START' , 'VERSION' , 'CLOCKDIVISION' , 'CRYSTAL' , 'STOP', + 'ADR' , 'ADR2' , 'WRITEEEPROM' , 'CPEEK' , 'CPEEKH' , 'PEEK' , 'POKE' , 'OUT' , 'READEEPROM' , 'DATA' , 'INP' , 'READ' , 'RESTORE' , 'LOOKDOWN' , 'LOOKUP' , 'LOOKUPSTR' , 'LOAD' , 'LOADADR' , 'LOADLABEL' , 'LOADWORDADR' , 'MEMCOPY', + 'RC5SEND' , 'RC6SEND' , 'GETRC5' , 'SONYSEND', + 'BAUD' , 'BAUD1', 'BUFSPACE' , 'CLEAR', 'ECHO' , 'WAITKEY' , 'ISCHARWAITING' , 'INKEY' , 'INPUTBIN' , 'INPUTHEX' , 'PRINT', 'PRINT1','PRINT0', 'PRINTBIN' , 'SERIN' , 'SEROUT' , 'SPC' , 'MAKEMODBUS', + 'SPIIN' , 'SPIINIT' , 'SPIMOVE' , 'SPIOUT', 'SINGLE', + 'ASC' , 'UCASE' , 'LCASE' , 'TRIM' , 'SPLIT' , 'LTRIM' , 'INSTR' , 'SPACE' , 'RTRIM' , 'LEFT' , 'LEN' , 'MID' , 'RIGHT' , 'VAL' , 'STR' , 'CHR' , 'CHECKSUM' , 'HEX' , 'HEXVAL', + 'BASE64DEC' , 'BASE64ENC' , 'IP2STR' , 'UDPREAD' , 'UDPWRITE' , 'UDPWRITESTR' , 'TCPWRITE' , 'TCPWRITESTR' , 'TCPREAD' , 'GETDSTIP' , 'GETDSTPORT' , 'SOCKETSTAT' , 'SOCKETCONNECT' , 'SOCKETLISTEN' , 'GETSOCKET' , 'CLOSESOCKET' , + 'SETTCP' , 'GETTCPREGS' , 'SETTCPREGS' , 'SETIPPROTOCOL' , 'TCPCHECKSUM', + 'HOME' , 'CURSOR' , 'UPPERLINE' , 'THIRDLINE' , 'INITLCD' , 'LOWERLINE' , 'LCDAT' , 'FOURTHLINE' , 'DISPLAY' , 'LCDCONTRAST' , 'LOCATE' , 'SHIFTCURSOR' , 'DEFLCDCHAR' , 'SHIFTLCD' , 'CLS', + 'ACOS' , 'ASIN' , 'ATN' , 'ATN2' , 'EXP' , 'RAD2DEG' , 'FRAC' , 'TAN' , 'TANH' , 'COS' , 'COSH' , 'LOG' , 'LOG10' , 'ROUND' , 'ABS' , 'INT' , 'MAX' , 'MIN' , 'SQR' , 'SGN' , 'POWER' , 'SIN' , 'SINH' , 'FIX' , 'INCR' , 'DECR' , 'DEG2RAD', + 'DBG' , 'DEBUG', 'DTMFOUT' , 'ENCODER' , 'GETADC' , 'GETKBD' , 'GETATKBD' , 'GETRC' , 'VALUE' , 'POPALL' , 'PS2MOUSEXY' , 'PUSHALL' , + 'RETURN' , 'RND' , 'ROTATE' , 'SENDSCAN' , 'SENDSCANKBD' , 'SHIFT' , 'SOUND' , 'STCHECK' , 'SWAP' , 'VARPTR' , 'X10DETECT' , 'X10SEND' , 'READMAGCARD' , 'REM' , 'BITS' , 'BYVAL' , 'CALL' , 'READHITAG', + 'Buffered', 'Size', 'Dummy', 'Parity', 'None', 'Stopbits', 'Databits', 'Clockpol', 'Synchrone', 'Prescaler', 'Reference', 'int0', 'int1', 'Interrupts', + 'Auto', 'avcc', 'ack', 'nack', 'Pin', 'Db4', 'Db3', 'Db2', 'Db1', 'Db7', 'Db6', 'Db5', 'Db0', 'e', 'rs', 'twi', + ), + 2 => array( + // Red Lowercase Keywords + '$ASM' , '$BAUD' , '$BAUD1' , '$BGF' , '$BOOT' , '$CRYSTAL' , '$DATA' , '$DBG' , '$DEFAULT' , '$EEPLEAVE' , '$EEPROM' , + '$EEPROMHEX' , '$EXTERNAL' , '$HWSTACK' , '$INC' , '$INCLUDE' , '$INITMICRO' , '$LCD' , '$LCDRS' , '$LCDPUTCTRL' , + '$LCDPUTDATA' , '$LCDVFO' , '$LIB' , '$LOADER' , '$LOADERSIZE' , '$MAP' , '$NOCOMPILE' , '$NOINIT' , '$NORAMCLEAR' , + '$PROG' , '$PROGRAMMER' , '$REGFILE' , '$RESOURCE' , '$ROMSTART', '$SERIALINPUT', '$SERIALINPUT1' , '$SERIALINPUT2LCD' , + '$SERIALOUTPUT' , '$SERIALOUTPUT1' , '$SIM' , '$SWSTACK' , '$TIMEOUT' , '$TINY' , '$WAITSTATE' , '$XRAMSIZE' , '$XRAMSTART', '$XA', + '#IF' , '#ELSE' , '#ENDIF', '$framesize' + ), + 3 => array( + // Blue Lowercase Keywords + 'IF', 'THEN', 'ELSE', 'END', 'WHILE', 'WEND', 'DO', 'LOOP', 'SELECT', 'CASE', 'FOR', 'NEXT', + 'GOSUB' , 'GOTO' , 'LOCAL' , 'SUB' , 'DEFBIT', 'DEFBYTE', 'DEFINT', 'DEFWORD', 'DEFLNG', 'DEFSNG', 'DEFDBL', + 'CONST', 'DECLARE', 'FUNCTION', 'DIM', 'EXIT', 'LONG', 'INTEGER', 'BYTE', 'AS', 'STRING', 'WORD' + ), + 4 => array( + //light blue + 'PINA.0', 'PINA.1', 'PINA.2', 'PINA.3', 'PINA.4', 'PINA.5', 'PINA.6', 'PINA.7', + 'PINB.0', 'PINB.1', 'PINB.2', 'PINB.3', 'PINB.4', 'PINB.5', 'PINB.6', 'PINB.7', + 'PINC.0', 'PINC.1', 'PINC.2', 'PINC.3', 'PINC.4', 'PINC.5', 'PINC.6', 'PINC.7', + 'PIND.0', 'PIND.1', 'PIND.2', 'PIND.3', 'PIND.4', 'PIND.5', 'PIND.6', 'PIND.7', + 'PINE.0', 'PINE.1', 'PINE.2', 'PINE.3', 'PINE.4', 'PINE.5', 'PINE.6', 'PINE.7', + 'PINF.0', 'PINF.1', 'PINF.2', 'PINF.3', 'PINF.4', 'PINF.5', 'PINF.6', 'PINF.7', + + 'PORTA.0', 'PORTA.1', 'PORTA.2', 'PORTA.3', 'PORTA.4', 'PORTA.5', 'PORTA.6', 'PORTA.7', + 'PORTB.0', 'PORTB.1', 'PORTB.2', 'PORTB.3', 'PORTB.4', 'PORTB.5', 'PORTB.6', 'PORTB.7', + 'PORTC.0', 'PORTC.1', 'PORTC.2', 'PORTC.3', 'PORTC.4', 'PORTC.5', 'PORTC.6', 'PORTC.7', + 'PORTD.0', 'PORTD.1', 'PORTD.2', 'PORTD.3', 'PORTD.4', 'PORTD.5', 'PORTD.6', 'PORTD.7', + 'PORTE.0', 'PORTE.1', 'PORTE.2', 'PORTE.3', 'PORTE.4', 'PORTE.5', 'PORTE.6', 'PORTE.7', + 'PORTF.0', 'PORTF.1', 'PORTF.2', 'PORTF.3', 'PORTF.4', 'PORTF.5', 'PORTF.6', 'PORTF.7', + + 'DDRA.0', 'DDRA.1', 'DDRA.2', 'DDRA.3', 'DDRA.4', 'DDRA.5', 'DDRA.6', 'DDRA.7', + 'DDRB.0', 'DDRB.1', 'DDRB.2', 'DDRB.3', 'DDRB.4', 'DDRB.5', 'DDRB.6', 'DDRB.7', + 'DDRC.0', 'DDRC.1', 'DDRC.2', 'DDRC.3', 'DDRC.4', 'DDRC.5', 'DDRC.6', 'DDRC.7', + 'DDRD.0', 'DDRD.1', 'DDRD.2', 'DDRD.3', 'DDRD.4', 'DDRD.5', 'DDRD.6', 'DDRD.7', + 'DDRE.0', 'DDRE.1', 'DDRE.2', 'DDRE.3', 'DDRE.4', 'DDRE.5', 'DDRE.6', 'DDRE.7', + 'DDRF.0', 'DDRF.1', 'DDRF.2', 'DDRF.3', 'DDRF.4', 'DDRF.5', 'DDRF.6', 'DDRF.7', + + 'DDRA','DDRB','DDRC','DDRD','DDRE','DDRF', + 'PORTA','PORTB','PORTC','PORTD','PORTE','PORTF', + 'PINA','PINB','PINC','PIND','PINE','PINF', + ) + ), + 'SYMBOLS' => array( + '=', '<', '>', '>=', '<=', '+', '-', '*', '/', '%', '(', ')', '{', '}', '[', ']', ';', ':', '$', '&H' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000080; font-weight: bold;', + 2 => 'color: #FF0000;', + 3 => 'color: #0000FF;', + 4 => 'color: #0080FF;', + ), + 'COMMENTS' => array( + 1 => 'color: #657CC4; font-style: italic;' + ), + 'BRACKETS' => array( + 0 => 'color: #000080;' + ), + 'STRINGS' => array( + 0 => 'color: #008000;' + ), + 'NUMBERS' => array( + 0 => 'color: #000080; font-weight: bold;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #0000FF;' + ), + 'ESCAPE_CHAR' => array( + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/bash.php b/inc/geshi/bash.php index dad391c8a..8edb3f30e 100644 --- a/inc/geshi/bash.php +++ b/inc/geshi/bash.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/20 * * BASH language file for GeSHi. @@ -65,7 +65,10 @@ $language_data = array ( //BASH-style Heredoc 2 => '/<<-?\s*?(\'?)([a-zA-Z0-9]+)\1\\n.*\\n\\2(?![a-zA-Z0-9])/siU', //Escaped String Starters - 3 => "/\\\\['\"]/siU" + 3 => "/\\\\['\"]/siU", + // Single-Line Shell usage: Hide the prompt at the beginning + /* 4 => "/\A(?!#!)\s*(?>[\w:@\\/\\-\\._~]*[$#]\s?)?(?=[^\n]+\n?\Z)|^(?!#!)(\w+@)?[\w\\-\\.]+(:~?)[\w\\/\\-\\._]*?[$#]\s?/ms" */ + 4 => "/\A(?!#!)(?:(?>[\w:@\\/\\-\\._~]*)[$#]\s?)(?=(?>[^\n]+)\n?\Z)|^(?!#!)(?:\w+@)?(?>[\w\\-\\.]+)(?>:~?[\w\\/\\-\\._]*?)?[$#]\s?/sm" ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array('"'), @@ -90,10 +93,44 @@ $language_data = array ( 'if', 'in', 'select', 'set', 'then', 'until', 'while', 'time' ), 2 => array( - 'aclocal', 'aconnect', 'aplay', 'apm', 'apmsleep', 'apropos', - 'apt-cache', 'apt-file', 'apt-get', 'apt-key', 'apt-src', 'aptitude', - 'ar', 'arch', 'arecord', 'as', 'as86', 'ash', 'autoconf', - 'autoheader', 'automake', 'awk', + 'aclocal', 'aconnect', 'apachectl', 'apache2ctl', 'aplay', 'apm', + 'apmsleep', 'apropos', 'apt-cache', 'apt-cdrom', 'apt-config', + 'apt-file', 'apt-ftparchive', 'apt-get', 'apt-key', 'apt-listbugs', + 'apt-listchanges', 'apt-mark', 'apt-mirror', 'apt-sortpkgs', + 'apt-src', 'apticron', 'aptitude', 'aptsh', 'apxs', 'apxs2', 'ar', + 'arch', 'arecord', 'as', 'as86', 'ash', 'autoconf', 'autoheader', + 'automake', 'awk', + + 'apachectl start', 'apachectl stop', 'apachectl restart', + 'apachectl graceful', 'apachectl graceful-stop', + 'apachectl configtest', 'apachectl status', 'apachectl fullstatus', + 'apachectl help', 'apache2ctl start', 'apache2ctl stop', + 'apache2ctl restart', 'apache2ctl graceful', + 'apache2ctl graceful-stop', 'apache2ctl configtest', + 'apache2ctl status', 'apache2ctl fullstatus', 'apache2ctl help', + + 'apt-cache add', 'apt-cache depends', 'apt-cache dotty', + 'apt-cache dump', 'apt-cache dumpavail', 'apt-cache gencaches', + 'apt-cache pkgnames', 'apt-cache policy', 'apt-cache rdepends', + 'apt-cache search', 'apt-cache show', 'apt-cache showauto', + 'apt-cache showpkg', 'apt-cache showsrc', 'apt-cache stats', + 'apt-cache unmet', 'apt-cache xvcg', 'apt-cdrom add', + 'apt-cdrom ident', 'apt-config dump', 'apt-config shell', + 'apt-file find', 'apt-file list', 'apt-file purge', + 'apt-file search', 'apt-file shot', 'apt-file update', + 'apt-get autoclean', 'apt-get autoremove', 'apt-get build-dep', + 'apt-get check', 'apt-get clean', 'apt-get dist-upgrade', + 'apt-get dselect-upgrade', 'apt-get install', 'apt-get markauto', + 'apt-get purge', 'apt-get remove', 'apt-get source', + 'apt-get unmarkauto', 'apt-get update', 'apt-get upgrade', + 'apt-key add', 'apt-key adv', 'apt-key del', 'apt-key export', + 'apt-key exportall', 'apt-key finger', 'apt-key list', + 'apt-key net-update', 'apt-key update', 'apt-listbugs apt', + 'apt-listbugs list', 'apt-listbugs rss', 'apt-src build', + 'apt-src clean', 'apt-src import', 'apt-src install', + 'apt-src list', 'apt-src location', 'apt-src name', + 'apt-src remove', 'apt-src update', 'apt-src upgrade', + 'apt-src version', 'basename', 'bash', 'bc', 'bison', 'bunzip2', 'bzcat', 'bzcmp', 'bzdiff', 'bzegrep', 'bzfgrep', 'bzgrep', @@ -104,6 +141,14 @@ $language_data = array ( 'chown', 'chroot', 'chsh', 'chvt', 'clear', 'cmp', 'comm', 'co', 'col', 'cp', 'cpio', 'cpp', 'csh', 'cut', 'cvs', 'cvs-pserver', + 'cvs add', 'cvs admin', 'cvs annotate', 'cvs checkout', + 'cvs commit', 'cvs diff', 'cvs edit', 'cvs editors', 'cvs export', + 'cvs history', 'cvs import', 'cvs init', 'cvs log', 'cvs login', + 'cvs logout', 'cvs ls', 'cvs pserver', 'cvs rannotate', + 'cvs rdiff', 'cvs release', 'cvs remove', 'cvs rlog', 'cvs rls', + 'cvs rtag', 'cvs server', 'cvs status', 'cvs tag', 'cvs unedit', + 'cvs update', 'cvs version', 'cvs watch', 'cvs watchers', + 'dash', 'date', 'dc', 'dch', 'dcop', 'dd', 'ddate', 'ddd', 'deallocvt', 'debconf', 'defoma', 'depmod', 'df', 'dh', 'dialog', 'diff', 'diff3', 'dig', 'dir', 'dircolors', 'directomatic', @@ -120,7 +165,47 @@ $language_data = array ( 'gimptool', 'gmake', 'gocr', 'grep', 'groups', 'gs', 'gunzip', 'gzexe', 'gzip', - 'git', 'gitaction', 'git-add', 'git-add--interactive', 'git-am', + 'git', 'git add', 'git add--interactive', 'git am', 'git annotate', + 'git apply', 'git archive', 'git bisect', 'git bisect--helper', + 'git blame', 'git branch', 'git bundle', 'git cat-file', + 'git check-attr', 'git checkout', 'git checkout-index', + 'git check-ref-format', 'git cherry', 'git cherry-pick', + 'git clean', 'git clone', 'git commit', 'git commit-tree', + 'git config', 'git count-objects', 'git daemon', 'git describe', + 'git diff', 'git diff-files', 'git diff-index', 'git difftool', + 'git difftool--helper', 'git diff-tree', 'git fast-export', + 'git fast-import', 'git fetch', 'git fetch-pack', + 'git filter-branch', 'git fmt-merge-msg', 'git for-each-ref', + 'git format-patch', 'git fsck', 'git fsck-objects', 'git gc', + 'git get-tar-commit-id', 'git grep', 'git hash-object', 'git help', + 'git http-backend', 'git http-fetch', 'git http-push', + 'git imap-send', 'git index-pack', 'git init', 'git init-db', + 'git instaweb', 'git log', 'git lost-found', 'git ls-files', + 'git ls-remote', 'git ls-tree', 'git mailinfo', 'git mailsplit', + 'git merge', 'git merge-base', 'git merge-file', 'git merge-index', + 'git merge-octopus', 'git merge-one-file', 'git merge-ours', + 'git merge-recursive', 'git merge-resolve', 'git merge-subtree', + 'git mergetool', 'git merge-tree', 'git mktag', 'git mktree', + 'git mv', 'git name-rev', 'git notes', 'git pack-objects', + 'git pack-redundant', 'git pack-refs', 'git patch-id', + 'git peek-remote', 'git prune', 'git prune-packed', 'git pull', + 'git push', 'git quiltimport', 'git read-tree', 'git rebase', + 'git rebase--interactive', 'git receive-pack', 'git reflog', + 'git relink', 'git remote', 'git remote-ftp', 'git remote-ftps', + 'git remote-http', 'git remote-https', 'git remote-testgit', + 'git repack', 'git replace', 'git repo-config', 'git request-pull', + 'git rerere', 'git reset', 'git revert', 'git rev-list', + 'git rev-parse', 'git rm', 'git send-pack', 'git shell', + 'git shortlog', 'git show', 'git show-branch', 'git show-index', + 'git show-ref', 'git stage', 'git stash', 'git status', + 'git stripspace', 'git submodule', 'git symbolic-ref', 'git tag', + 'git tar-tree', 'git unpack-file', 'git unpack-objects', + 'git update-index', 'git update-ref', 'git update-server-info', + 'git upload-archive', 'git upload-pack', 'git var', + 'git verify-pack', 'git verify-tag', 'git web--browse', + 'git whatchanged', 'git write-tree', + + 'gitaction', 'git-add', 'git-add--interactive', 'git-am', 'git-annotate', 'git-apply', 'git-archive', 'git-bisect', 'git-bisect--helper', 'git-blame', 'git-branch', 'git-bundle', 'git-cat-file', 'git-check-attr', 'git-checkout', @@ -166,6 +251,9 @@ $language_data = array ( 'id', 'ifconfig', 'ifdown', 'ifup', 'igawk', 'install', + 'ip', 'ip addr', 'ip addrlabel', 'ip link', 'ip maddr', 'ip mroute', + 'ip neigh', 'ip route', 'ip rule', 'ip tunnel', 'ip xfrm', + 'join', 'kbd_mode','kbdrate', 'kdialog', 'kfile', 'kill', 'killall', @@ -200,6 +288,20 @@ $language_data = array ( 'svnadmin', 'svndumpfilter', 'svnlook', 'svnmerge', 'svnmucc', 'svnserve', 'svnshell', 'svnsync', 'svnversion', 'svnwrap', 'sync', + 'svn add', 'svn ann', 'svn annotate', 'svn blame', 'svn cat', + 'svn changelist', 'svn checkout', 'svn ci', 'svn cl', 'svn cleanup', + 'svn co', 'svn commit', 'svn copy', 'svn cp', 'svn del', + 'svn delete', 'svn di', 'svn diff', 'svn export', 'svn h', + 'svn help', 'svn import', 'svn info', 'svn list', 'svn lock', + 'svn log', 'svn ls', 'svn merge', 'svn mergeinfo', 'svn mkdir', + 'svn move', 'svn mv', 'svn pd', 'svn pdel', 'svn pe', 'svn pedit', + 'svn pg', 'svn pget', 'svn pl', 'svn plist', 'svn praise', + 'svn propdel', 'svn propedit', 'svn propget', 'svn proplist', + 'svn propset', 'svn ps', 'svn pset', 'svn remove', 'svn ren', + 'svn rename', 'svn resolve', 'svn resolved', 'svn revert', 'svn rm', + 'svn st', 'svn stat', 'svn status', 'svn sw', 'svn switch', + 'svn unlock', 'svn up', 'svn update', + 'tac', 'tail', 'tar', 'tee', 'tempfile', 'touch', 'tr', 'tree', 'true', @@ -216,7 +318,14 @@ $language_data = array ( 'xargs', 'xhost', 'xmodmap', 'xset', - 'yacc', 'yes', 'ypdomainname', + 'yacc', 'yes', 'ypdomainname', 'yum', + + 'yum check-update', 'yum clean', 'yum deplist', 'yum erase', + 'yum groupinfo', 'yum groupinstall', 'yum grouplist', + 'yum groupremove', 'yum groupupdate', 'yum info', 'yum install', + 'yum list', 'yum localinstall', 'yum localupdate', 'yum makecache', + 'yum provides', 'yum remove', 'yum resolvedep', 'yum search', + 'yum shell', 'yum update', 'yum upgrade', 'yum whatprovides', 'zcat', 'zcmp', 'zdiff', 'zdump', 'zegrep', 'zfgrep', 'zforce', 'zgrep', 'zip', 'zipgrep', 'zipinfo', 'zless', 'zmore', 'znew', @@ -252,7 +361,8 @@ $language_data = array ( 0 => 'color: #666666; font-style: italic;', 1 => 'color: #800000;', 2 => 'color: #cc0000; font-style: italic;', - 3 => 'color: #000000; font-weight: bold;' + 3 => 'color: #000000; font-weight: bold;', + 4 => 'color: #666666;' ), 'ESCAPE_CHAR' => array( 1 => 'color: #000099; font-weight: bold;', @@ -318,10 +428,13 @@ $language_data = array ( 'DISALLOWED_BEFORE' => '$' ), 'KEYWORDS' => array( - 'DISALLOWED_BEFORE' => "(?<![\.\-a-zA-Z0-9_\$\#])", - 'DISALLOWED_AFTER' => "(?![\.\-a-zA-Z0-9_%=\\/])" + 'DISALLOWED_BEFORE' => "(?<![\.\-a-zA-Z0-9_\$\#:])", + 'DISALLOWED_AFTER' => "(?![\.\-a-zA-Z0-9_%=\\/:])", + 2 => array( + 'SPACE_AS_WHITESPACE' => false + ) + ) ) - ) ); ?>
\ No newline at end of file diff --git a/inc/geshi/basic4gl.php b/inc/geshi/basic4gl.php index 7ac869304..ce409e8a4 100644 --- a/inc/geshi/basic4gl.php +++ b/inc/geshi/basic4gl.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2007/09/15 * * Basic4GL language file for GeSHi. diff --git a/inc/geshi/bf.php b/inc/geshi/bf.php index ba44e6caf..0529ec3c5 100644 --- a/inc/geshi/bf.php +++ b/inc/geshi/bf.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/10/31 * * Brainfuck language file for GeSHi. diff --git a/inc/geshi/bibtex.php b/inc/geshi/bibtex.php index e47e0665c..13685608b 100644 --- a/inc/geshi/bibtex.php +++ b/inc/geshi/bibtex.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2009/04/29 * * BibTeX language file for GeSHi. diff --git a/inc/geshi/blitzbasic.php b/inc/geshi/blitzbasic.php index e43ec4635..15f24fdbe 100644 --- a/inc/geshi/blitzbasic.php +++ b/inc/geshi/blitzbasic.php @@ -4,7 +4,7 @@ * -------------- * Author: P�draig O`Connel (info@moonsword.info) * Copyright: (c) 2005 P�draig O`Connel (http://moonsword.info) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 16.10.2005 * * BlitzBasic language file for GeSHi. diff --git a/inc/geshi/bnf.php b/inc/geshi/bnf.php index f52df9cb8..7cec792a9 100644 --- a/inc/geshi/bnf.php +++ b/inc/geshi/bnf.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2006/09/28 * * BNF (Backus-Naur form) language file for GeSHi. diff --git a/inc/geshi/boo.php b/inc/geshi/boo.php index 09d4ee40e..f56afee5f 100644 --- a/inc/geshi/boo.php +++ b/inc/geshi/boo.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2007/09/10 * * Boo language file for GeSHi. diff --git a/inc/geshi/c.php b/inc/geshi/c.php index b0e2987d7..7db6d3d50 100644 --- a/inc/geshi/c.php +++ b/inc/geshi/c.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * C language file for GeSHi. @@ -92,7 +92,85 @@ $language_data = array ( 'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline' ), 3 => array( - 'printf', 'cout' + // assert.h + 'assert', + + //complex.h + 'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan', + 'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj', + 'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh', + + //ctype.h + 'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl', + 'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace', + 'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper', + + //inttypes.h + 'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax', + 'wcstoumax', + + //locale.h + 'localeconv', 'setlocale', + + //math.h + 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp', + 'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow', + 'sin', 'sinh', 'sqrt', 'tan', 'tanh', + + //setjmp.h + 'longjmp', 'setjmp', + + //signal.h + 'raise', + + //stdarg.h + 'va_arg', 'va_copy', 'va_end', 'va_start', + + //stddef.h + 'offsetof', + + //stdio.h + 'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc', + 'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar', + 'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell', + 'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf', + 'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf', + 'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile', + 'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf', + 'vsprintf', 'vsscanf', + + //stdlib.h + 'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch', + 'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv', + 'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod', + 'strtol', 'strtoul', 'system', + + //string.h + 'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat', + 'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror', + 'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr', + 'strspn', 'strstr', 'strtok', 'strxfrm', + + //time.h + 'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime', + 'mktime', 'strftime', 'time', + + //wchar.h + 'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide', + 'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc', + 'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf', + 'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb', + 'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn', + 'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk', + 'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok', + 'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp', + 'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf', + + //wctype.h + 'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit', + 'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace', + 'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper', + 'wctrans', 'wctype' ), 4 => array( 'auto', 'char', 'const', 'double', 'float', 'int', 'long', @@ -111,7 +189,8 @@ $language_data = array ( 'int8_t', 'int16_t', 'int32_t', 'int64_t', 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', - 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t' + 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t', + 'size_t', 'off_t' ), ), 'SYMBOLS' => array( diff --git a/inc/geshi/c_loadrunner.php b/inc/geshi/c_loadrunner.php new file mode 100644 index 000000000..4e5429cda --- /dev/null +++ b/inc/geshi/c_loadrunner.php @@ -0,0 +1,323 @@ +<?php +/************************************************************************************* + * c_loadrunner.php + * --------------------------------- + * 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 + * Date Started: 2010-07-25 + * + * C (for LoadRunner) language file for GeSHi. + * + * Based on LoadRunner 9.52. + * + * CHANGES + * ------- + * 2010-08-01 (1.0.8.9) + * - Added highlighting support for LoadRunner {parameters}. + * 2010-07-25 (1.0.8.8) + * - First Release. Syntax highlighting support for lr_, web_, and sapgui_ functions only. + * + * TODO (updated 2010-07-25) + * ------------------------- + * - Add support for other vuser types: MMS, FTP, 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 ( + // The First Indices + 'LANG_NAME' => 'C (LoadRunner)', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + // Escape characters within strings (like \\) are not highlighted differently in LoadRunner, so + // I am using GeSHi escape characters (or regular expressions) to highlight LoadRunner {parameters}. + // LoadRunner {parameters} must begin with a letter and contain only alphanumeric characters and '_' + 'ESCAPE_REGEXP' => array( + 0 => "#\{[a-zA-Z]{1}[a-zA-Z_]{0,}\}#", + ), + + // Keywords + 'KEYWORDS' => array( + // Keywords from http://en.wikipedia.org/wiki/C_syntax + 1 => array( + 'auto', 'break', 'case', 'char', 'const', 'continue', 'default', + 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto', + 'if', 'inline', 'int', 'long', 'register', 'restrict', 'return', + 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', + 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while', + '_Bool', '_Complex', '_Imaginary' + ), + // C preprocessor directives from http://en.wikipedia.org/wiki/C_preprocessor + 2 => array( + '#define', '#if', '#ifdef', '#ifndef', '#include', '#else', '#elif', '#endif', '#pragma', '#undef' + ), + // Functions from lrun.h + 3 => array( + 'lr_start_transaction', 'lr_start_sub_transaction', 'lr_start_transaction_instance', 'lr_end_transaction', + 'lr_end_sub_transaction', 'lr_end_transaction_instance', 'lr_stop_transaction', 'lr_stop_transaction_instance', + 'lr_resume_transaction', 'lr_resume_transaction_instance', 'lr_wasted_time', 'lr_set_transaction', 'lr_user_data_point', + 'lr_user_data_point_instance', 'lr_user_data_point_ex', 'lr_user_data_point_instance_ex', 'lr_get_transaction_duration', + 'lr_get_trans_instance_duration', 'lr_get_transaction_think_time', 'lr_get_trans_instance_think_time', + 'lr_get_transaction_wasted_time', 'lr_get_trans_instance_wasted_time', 'lr_get_transaction_status', + 'lr_get_trans_instance_status', 'lr_set_transaction_status', 'lr_set_transaction_status_by_name', + 'lr_set_transaction_instance_status', 'lr_start_timer', 'lr_end_timer', 'lr_rendezvous', 'lr_rendezvous_ex', + 'lr_get_vuser_ip', 'lr_whoami', 'lr_get_host_name', 'lr_get_master_host_name', 'lr_get_attrib_long', + 'lr_get_attrib_string', 'lr_get_attrib_double', 'lr_paramarr_idx', 'lr_paramarr_random', 'lr_paramarr_len', + 'lr_param_unique', 'lr_param_sprintf', 'lr_load_dll', 'lr_continue_on_error', 'lr_decrypt', 'lr_abort', 'lr_exit', + 'lr_peek_events', 'lr_think_time', 'lr_debug_message', 'lr_log_message', 'lr_message', 'lr_error_message', + 'lr_output_message', 'lr_vuser_status_message', 'lr_fail_trans_with_error', 'lr_next_row', 'lr_advance_param', + 'lr_eval_string', 'lr_eval_string_ext', 'lr_eval_string_ext_free', 'lr_param_increment', 'lr_save_var', + 'lr_save_string', 'lr_save_int', 'lr_save_datetime', 'lr_save_searched_string', 'lr_set_debug_message', + 'lr_get_debug_message', 'lr_enable_ip_spoofing', 'lr_disable_ip_spoofing', 'lr_convert_string_encoding' + ), + // Constants from lrun.h + 4 => array( + 'DP_FLAGS_NO_LOG', 'DP_FLAGS_STANDARD_LOG', 'DP_FLAGS_EXTENDED_LOG', 'merc_timer_handle_t', 'LR_EXIT_VUSER', + 'LR_EXIT_ACTION_AND_CONTINUE', 'LR_EXIT_ITERATION_AND_CONTINUE', 'LR_EXIT_VUSER_AFTER_ITERATION', + 'LR_EXIT_VUSER_AFTER_ACTION', 'LR_EXIT_MAIN_ITERATION_AND_CONTINUE', 'LR_MSG_CLASS_DISABLE_LOG', + 'LR_MSG_CLASS_STANDARD_LOG', 'LR_MSG_CLASS_RETURNED_DATA', 'LR_MSG_CLASS_PARAMETERS', 'LR_MSG_CLASS_ADVANCED_TRACE', + 'LR_MSG_CLASS_EXTENDED_LOG', 'LR_MSG_CLASS_SENT_DATA', 'LR_MSG_CLASS_JIT_LOG_ON_ERROR', 'LR_SWITCH_OFF', 'LR_SWITCH_ON', + 'LR_SWITCH_DEFAULT', 'ONE_DAY', 'ONE_HOUR', 'ONE_MIN', 'DATE_NOW', 'TIME_NOW', 'LR_MSG_CLASS_BRIEF_LOG', + 'LR_MSG_CLASS_RESULT_DATA', 'LR_MSG_CLASS_FULL_TRACE', 'LR_MSG_CLASS_AUTO_LOG', 'LR_MSG_OFF', 'LR_MSG_ON', + 'LR_MSG_DEFAULT' + ), + // Functions from web_api.h + 5 => array( + 'web_reg_add_cookie', 'web_report_data_point', 'web_text_link', 'web_element', 'web_image_link', 'web_static_image', + 'web_image_submit', 'web_button', 'web_edit_field', 'web_radio_group', 'web_check_box', 'web_list', 'web_text_area', + 'web_map_area', 'web_eval_java_script', 'web_reg_dialog', 'web_reg_cross_step_download', 'web_browser', + 'web_set_rts_key', 'web_save_param_length', 'web_save_timestamp_param', 'web_load_cache', 'web_dump_cache', + 'web_add_cookie_ex' + ), + // Constants from web_api.h + 6 => array( + 'DESCRIPTION', 'ACTION', 'VERIFICATION', 'LR_NOT_FOUND', 'HTTP_INFO_TOTAL_REQUEST_STAT', + 'HTTP_INFO_TOTAL_RESPONSE_STAT', 'LRW_OPT_STOP_VUSER_ON_ERROR', 'LRW_OPT_DISPLAY_IMAGE_BODY' + ), + // Functions from as_web.h + 7 => array( + 'web_add_filter', 'web_add_auto_filter', 'web_add_auto_header', 'web_add_header', 'web_add_cookie', + 'web_cleanup_auto_headers', 'web_cleanup_cookies', 'web_concurrent_end', 'web_concurrent_start', 'web_create_html_param', + 'web_create_html_param_ex', 'web_custom_request', 'web_disable_keep_alive', 'web_enable_keep_alive', 'web_find', + 'web_get_int_property', 'web_image', 'web_image_check', 'web_link', 'web_global_verification', 'web_reg_find', + 'web_reg_save_param', 'web_convert_param', 'web_remove_auto_filter', 'web_remove_auto_header', 'web_revert_auto_header', + 'web_remove_cookie', 'web_save_header', 'web_set_certificate', 'web_set_certificate_ex', 'web_set_connections_limit', + 'web_set_max_html_param_len', 'web_set_max_retries', 'web_set_proxy', 'web_set_proxy_bypass', 'web_set_secure_proxy', + 'web_set_sockets_option', 'web_set_option', 'web_set_timeout', 'web_set_user', 'web_sjis_to_euc_param', + 'web_submit_data', 'web_submit_form', 'web_url', 'web_set_proxy_bypass_local', 'web_cache_cleanup', + 'web_create_html_query', 'web_create_radio_button_param', 'web_switch_net_layer' + ), + // Constants from as_web.h + 8 => array( + 'ENDFORM', 'LAST', 'ENDITEM', 'EXTRARES', 'ITEMDATA', 'STARTHIDDENS', 'ENDHIDDENS', 'CONNECT', 'RECEIVE', 'RESOLVE', + 'STEP', 'REQUEST', 'RESPONSE', 'STARTQUERY', 'ENDQUERY', 'INPROPS', 'OUTPROPS', 'ENDPROPS', 'RAW_BODY_START', + 'RAW_BODY_END', 'HTTP_INFO_RETURN_CODE', 'HTTP_INFO_DOWNLOAD_SIZE', 'HTTP_INFO_DOWNLOAD_TIME', + 'LRW_NET_SOCKET_OPT_LOAD_VERIFY_FILE', 'LRW_NET_SOCKET_OPT_DEFAULT_VERIFY_PATH', 'LRW_NET_SOCKET_OPT_SSL_VERSION', + 'LRW_NET_SOCKET_OPT_SSL_CIPHER_LIST', 'LRW_NET_SOCKET_OPT_SO_REUSE_ADDRESS', 'LRW_NET_SOCKET_OPT_USER_IP_ADDRESS', + 'LRW_NET_SOCKET_OPT_IP_ADDRESS_BY_INDEX', 'LRW_NET_SOCKET_OPT_HELP', 'LRW_NET_SOCKET_OPT_PRINT_USER_IP_ADDRESS_LIST', + 'LRW_OPT_HTML_CHAR_REF_BACKWARD_COMPATIBILITY', 'LRW_OPT_VALUE_YES', 'LRW_OPT_VALUE_NO' + ), + // Functions from as_sapgui.h + 9 => array( + 'sapgui_open_connection', 'sapgui_open_connection_ex', 'sapgui_logon', 'sapgui_create_session', + 'sapgui_create_new_session', 'sapgui_call_method', 'sapgui_call_method_ex', 'sapgui_set_property', + 'sapgui_get_property', 'sapgui_set_collection_property', 'sapgui_active_object_from_parent_method', + 'sapgui_active_object_from_parent_property', 'sapgui_call_method_of_active_object', + 'sapgui_call_method_of_active_object_ex', 'sapgui_set_property_of_active_object', 'sapgui_get_property_of_active_object', + 'sapgui_select_active_connection', 'sapgui_select_active_session', 'sapgui_select_active_window ', + 'sapgui_status_bar_get_text', 'sapgui_status_bar_get_param', 'sapgui_status_bar_get_type', 'sapgui_get_status_bar_text', + 'sapgui_get_active_window_title', 'sapgui_is_object_available', 'sapgui_is_tab_selected', 'sapgui_is_object_changeable', + 'sapgui_set_ok_code', 'sapgui_send_vkey', 'sapgui_resize_window', 'sapgui_window_resize', 'sapgui_window_maximize', + 'sapgui_window_close', 'sapgui_window_restore', 'sapgui_window_scroll_to_row', 'sapgui_press_button', + 'sapgui_select_radio_button', 'sapgui_set_password', 'sapgui_set_text', 'sapgui_select_menu', 'sapgui_select_tab', + 'sapgui_set_checkbox', 'sapgui_set_focus', 'sapgui_select_combobox_entry', 'sapgui_get_ok_code', + 'sapgui_is_radio_button_selected', 'sapgui_get_text', 'sapgui_is_checkbox_selected', 'sapgui_table_set_focus', + 'sapgui_table_press_button', 'sapgui_table_select_radio_button', 'sapgui_table_set_password', 'sapgui_table_set_text', + 'sapgui_table_set_checkbox', 'sapgui_table_select_combobox_entry', 'sapgui_table_set_row_selected', + 'sapgui_table_set_column_selected', 'sapgui_table_set_column_width', 'sapgui_table_reorder', 'sapgui_table_fill_data', + 'sapgui_table_get_text', 'sapgui_table_is_radio_button_selected', 'sapgui_table_is_checkbox_selected', + 'sapgui_table_is_row_selected', 'sapgui_table_is_column_selected', 'sapgui_table_get_column_width', + 'sapgui_grid_clear_selection', 'sapgui_grid_select_all', 'sapgui_grid_selection_changed', + 'sapgui_grid_press_column_header', 'sapgui_grid_select_cell', 'sapgui_grid_select_rows', 'sapgui_grid_select_column', + 'sapgui_grid_deselect_column', 'sapgui_grid_select_columns', 'sapgui_grid_select_cells', 'sapgui_grid_select_cell_row', + 'sapgui_grid_select_cell_column', 'sapgui_grid_set_column_order', 'sapgui_grid_set_column_width', + 'sapgui_grid_scroll_to_row', 'sapgui_grid_double_click', 'sapgui_grid_click', 'sapgui_grid_press_button', + 'sapgui_grid_press_total_row', 'sapgui_grid_set_cell_data', 'sapgui_grid_set_checkbox', + 'sapgui_grid_double_click_current_cell', 'sapgui_grid_click_current_cell', 'sapgui_grid_press_button_current_cell', + 'sapgui_grid_press_total_row_current_cell', 'sapgui_grid_press_F1', 'sapgui_grid_press_F4', 'sapgui_grid_press_ENTER', + 'sapgui_grid_press_toolbar_button', 'sapgui_grid_press_toolbar_context_button', 'sapgui_grid_open_context_menu', + 'sapgui_grid_select_context_menu', 'sapgui_grid_select_toolbar_menu', 'sapgui_grid_fill_data', + 'sapgui_grid_get_current_cell_row', 'sapgui_grid_get_current_cell_column', 'sapgui_grid_get_rows_count', + 'sapgui_grid_get_columns_count', 'sapgui_grid_get_cell_data', 'sapgui_grid_is_checkbox_selected', + 'sapgui_tree_scroll_to_node', 'sapgui_tree_set_hierarchy_header_width', 'sapgui_tree_set_selected_node', + 'sapgui_tree_double_click_node', 'sapgui_tree_press_key', 'sapgui_tree_press_button', 'sapgui_tree_set_checkbox', + 'sapgui_tree_double_click_item', 'sapgui_tree_click_link', 'sapgui_tree_open_default_context_menu', + 'sapgui_tree_open_node_context_menu', 'sapgui_tree_open_header_context_menu', 'sapgui_tree_open_item_context_menu', + 'sapgui_tree_select_context_menu', 'sapgui_tree_select_item', 'sapgui_tree_select_node', 'sapgui_tree_unselect_node', + 'sapgui_tree_unselect_all', 'sapgui_tree_select_column', 'sapgui_tree_unselect_column', 'sapgui_tree_set_column_order', + 'sapgui_tree_collapse_node', 'sapgui_tree_expand_node', 'sapgui_tree_scroll_to_item', 'sapgui_tree_set_column_width', + 'sapgui_tree_press_header', 'sapgui_tree_is_checkbox_selected', 'sapgui_tree_get_node_text', 'sapgui_tree_get_item_text', + 'sapgui_calendar_scroll_to_date', 'sapgui_calendar_focus_date', 'sapgui_calendar_select_interval', + 'sapgui_apogrid_select_all', 'sapgui_apogrid_clear_selection', 'sapgui_apogrid_select_cell', + 'sapgui_apogrid_deselect_cell', 'sapgui_apogrid_select_row', 'sapgui_apogrid_deselect_row', + 'sapgui_apogrid_select_column', 'sapgui_apogrid_deselect_column', 'sapgui_apogrid_scroll_to_row', + 'sapgui_apogrid_scroll_to_column', 'sapgui_apogrid_double_click', 'sapgui_apogrid_set_cell_data', + 'sapgui_apogrid_get_cell_data', 'sapgui_apogrid_is_cell_changeable', 'sapgui_apogrid_get_cell_format', + 'sapgui_apogrid_get_cell_tooltip', 'sapgui_apogrid_press_ENTER', 'sapgui_apogrid_open_cell_context_menu', + 'sapgui_apogrid_select_context_menu_item', 'sapgui_text_edit_scroll_to_line', 'sapgui_text_edit_set_selection_indexes', + 'sapgui_text_edit_set_unprotected_text_part', 'sapgui_text_edit_get_first_visible_line', + 'sapgui_text_edit_get_selection_index_start', 'sapgui_text_edit_get_selection_index_end', + 'sapgui_text_edit_get_number_of_unprotected_text_parts', 'sapgui_text_edit_double_click', + 'sapgui_text_edit_single_file_dropped', 'sapgui_text_edit_multiple_files_dropped', 'sapgui_text_edit_press_F1', + 'sapgui_text_edit_press_F4', 'sapgui_text_edit_open_context_menu', 'sapgui_text_edit_select_context_menu', + 'sapgui_text_edit_modified_status_changed', 'sapgui_htmlviewer_send_event', 'sapgui_htmlviewer_dom_get_property', + 'sapgui_toolbar_press_button', 'sapgui_toolbar_press_context_button', 'sapgui_toolbar_select_menu_item', + 'sapgui_toolbar_select_menu_item_by_text', 'sapgui_toolbar_select_context_menu_item', + 'sapgui_toolbar_select_context_menu_item_by_text' + ), + // Constants from as_sapgui.h + 10 => array( + 'BEGIN_OPTIONAL', 'END_OPTIONAL', 'al-keys', 'ENTER', 'HELP', 'F2', 'BACK', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', + 'F10', 'F11', 'ESC', 'SHIFT_F1', 'SHIFT_F2', 'SHIFT_F3', 'SHIFT_F4', 'SHIFT_F5', 'SHIFT_F6', 'SHIFT_F7', 'SHIFT_F8', + 'SHIFT_F9', 'SHIFT_F10', 'SHIFT_F11', 'SHIFT_F12', 'CTRL_F1', 'CTRL_F2', 'CTRL_F3', 'CTRL_F4', 'CTRL_F5', 'CTRL_F6', + 'CTRL_F7', 'CTRL_F8', 'CTRL_F9', 'CTRL_F10', 'CTRL_F11', 'CTRL_F12', 'CTRL_SHIFT_F1', 'CTRL_SHIFT_F2', 'CTRL_SHIFT_F3', + 'CTRL_SHIFT_F4', 'CTRL_SHIFT_F5', 'CTRL_SHIFT_F6', 'CTRL_SHIFT_F7', 'CTRL_SHIFT_F8', 'CTRL_SHIFT_F9', 'CTRL_SHIFT_F10', + 'CTRL_SHIFT_F11', 'CTRL_SHIFT_F12', 'CANCEL', 'CTRL_F', 'CTRL_PAGE_UP', 'PAGE_UP', 'PAGE_DOWN', 'CTRL_PAGE_DOWN', + 'CTRL_G', 'CTRL_P' + ), + ), + + // Symbols and Case Sensitivity + // Symbols from: http://en.wikipedia.org/wiki/C_syntax + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', + '+', '-', '*', '/', '%', + '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, // Standard C reserved keywords + 2 => true, // C preprocessor directives + 3 => true, // Functions from lrun.h + 4 => true, // Constants from lrun.h + 5 => true, // Functions from web_api.h + 6 => true, // Constants from web_api.h + 7 => true, // Functions from as_web.h + 8 => true, // Constants from as_web.h + 9 => true, // Functions from as_sapgui.h + 10 => true, // Constants from as_sapgui.h + ), + + // Styles + 'STYLES' => array( + 'KEYWORDS' => array( + // Functions are brown, constants and reserved words are blue + 1 => 'color: #0000ff;', // Standard C reserved keywords + 2 => 'color: #0000ff;', // C preprocessor directives + 3 => 'color: #8a0000;', // Functions from lrun.h + 4 => 'color: #0000ff;', // Constants from lrun.h + 5 => 'color: #8a0000;', // Functions from web_api.h + 6 => 'color: #0000ff;', // Constants from web_api.h + 7 => 'color: #8a0000;', // Functions from as_web.h + 8 => 'color: #0000ff;', // Constants from as_web.h + 9 => 'color: #8a0000;', // Functions from as_sapgui.h + 10 => 'color: #0000ff;', // Constants from as_sapgui.h + ), + 'COMMENTS' => array( + // Comments are grey + 1 => 'color: #9b9b9b;', + 'MULTI' => 'color: #9b9b9b;' + ), + 'ESCAPE_CHAR' => array( + // GeSHi cannot define a separate style for ESCAPE_REGEXP. The style for ESCAPE_CHAR also applies to ESCAPE_REGEXP. + // This is used for LoadRunner {parameters} + // {parameters} are pink + 0 => 'color: #c000c0;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + // Strings are green + 0 => 'color: #008080;' + ), + 'NUMBERS' => array( + // Numbers are green + 0 => 'color: #008080;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #008080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #008080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #008080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#008080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#008080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#008080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#008080;' + ), + 'METHODS' => array( + 1 => 'color: #000000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000000;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + + // URLs for Functions + 'URLS' => array( + 1 => '', // Standard C reserved keywords + 2 => '', // C preprocessor directives + 3 => '', // Functions from lrun.h + 4 => '', // Constants from lrun.h + 5 => '', // Functions from web_api.h + 6 => '', // Constants from web_api.h + 7 => '', // Functions from as_web.h + 8 => '', // Constants from as_web.h + 9 => '', // Functions from as_sapgui.h + 10 => '', // Constants from as_sapgui.h + ), + + // Object Orientation + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + + // Regular Expressions + // Note that REGEXPS are not applied within strings. + 'REGEXPS' => array( + ), + + // Contextual Highlighting and Strict Mode + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + + // Tabs + // Note that if you are using <pre> tags for your code, then the browser chooses how many spaces your tabs will translate to. + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/c_mac.php b/inc/geshi/c_mac.php index 1a034ae08..f80dc2ed2 100644 --- a/inc/geshi/c_mac.php +++ b/inc/geshi/c_mac.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * C for Macs language file for GeSHi. diff --git a/inc/geshi/caddcl.php b/inc/geshi/caddcl.php index 74310d6d9..6587cfed9 100644 --- a/inc/geshi/caddcl.php +++ b/inc/geshi/caddcl.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/30 * * CAD DCL (Dialog Control Language) language file for GeSHi. diff --git a/inc/geshi/cadlisp.php b/inc/geshi/cadlisp.php index 9277e5192..00e3c6c5b 100644 --- a/inc/geshi/cadlisp.php +++ b/inc/geshi/cadlisp.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/30 * * AutoCAD/IntelliCAD Lisp language file for GeSHi. diff --git a/inc/geshi/cfdg.php b/inc/geshi/cfdg.php index ee17fdf53..31d32fa45 100644 --- a/inc/geshi/cfdg.php +++ b/inc/geshi/cfdg.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2006/03/11 * * CFDG language file for GeSHi. diff --git a/inc/geshi/cfm.php b/inc/geshi/cfm.php index dd508eec7..f340c39ac 100644 --- a/inc/geshi/cfm.php +++ b/inc/geshi/cfm.php @@ -4,7 +4,7 @@ * ------- * Author: Diego * Copyright: (c) 2006 Diego - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/02/25 * * ColdFusion language file for GeSHi. diff --git a/inc/geshi/chaiscript.php b/inc/geshi/chaiscript.php index e1baad4db..dcd05dbf5 100644 --- a/inc/geshi/chaiscript.php +++ b/inc/geshi/chaiscript.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2009/07/03 * * ChaiScript language file for GeSHi. diff --git a/inc/geshi/cil.php b/inc/geshi/cil.php index 142c7743a..975572c64 100644 --- a/inc/geshi/cil.php +++ b/inc/geshi/cil.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2007/10/24 * * CIL (Common Intermediate Language) language file for GeSHi. diff --git a/inc/geshi/clojure.php b/inc/geshi/clojure.php index 4bcb9a3ae..bf21c7603 100644 --- a/inc/geshi/clojure.php +++ b/inc/geshi/clojure.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2009/09/20 * * Clojure language file for GeSHi. diff --git a/inc/geshi/cmake.php b/inc/geshi/cmake.php index ccd855b0b..fcf45c691 100644 --- a/inc/geshi/cmake.php +++ b/inc/geshi/cmake.php @@ -4,7 +4,7 @@ * ------- * Author: Daniel Nelson (danieln@eng.utah.edu) * Copyright: (c) 2009 Daniel Nelson - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/04/06 * * CMake language file for GeSHi. diff --git a/inc/geshi/cobol.php b/inc/geshi/cobol.php index c1220a06f..c3ed01d4c 100644 --- a/inc/geshi/cobol.php +++ b/inc/geshi/cobol.php @@ -4,7 +4,7 @@ * ---------- * Author: BenBE (BenBE@omorphia.org) * Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/07/02 * * COBOL language file for GeSHi. diff --git a/inc/geshi/coffeescript.php b/inc/geshi/coffeescript.php new file mode 100644 index 000000000..f85541973 --- /dev/null +++ b/inc/geshi/coffeescript.php @@ -0,0 +1,146 @@ +<?php +/************************************************************************************* + * coffeescript.php + * ---------- + * Author: Trevor Burnham (trevorburnham@gmail.com) + * Copyright: (c) 2010 Trevor Burnham (http://iterative.ly) + * Release Version: 1.0.8.10 + * Date Started: 2010/06/08 + * + * CoffeeScript language file for GeSHi. + * + * CHANGES + * ------- + * 2010/06/08 (1.0.8.9) + * - First Release + * + ************************************************************************************* + * + * 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' => 'CoffeeScript', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array('###' => '###'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + //Longest quotemarks ALWAYS first + 'QUOTEMARKS' => array('"""', "'''", '"', "'"), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + + /* + ** Set 1: control keywords + */ + 1 => array( + 'break', 'by', 'catch', 'continue', 'else', 'finally', 'for', 'in', 'of', 'if', + 'return', 'switch', 'then', 'throw', 'try', 'unless', 'when', 'while', 'until' + ), + + /* + ** Set 2: logic keywords + */ + 2 => array( + 'and', 'or', 'is', 'isnt', 'not' + ), + + /* + ** Set 3: other keywords + */ + 3 => array( + 'instanceof', 'new', 'delete', 'typeof', + 'class', 'super', 'this', 'extends' + ), + + /* + ** Set 4: constants + */ + 4 => array( + 'true', 'false', 'on', 'off', 'yes', 'no', + 'Infinity', 'NaN', 'undefined', 'null' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '{', '}', '*', '&', '|', '%', '!', ',', ';', '<', '>', '?', '`', + '+', '-', '*', '/', '->', '=>', '<<', '>>', '@', ':', '^' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #ff7700;font-weight:bold;', + 2 => 'color: #008000;', + 3 => 'color: #dc143c;', + 4 => 'color: #0000cd;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: black;' + ), + 'STRINGS' => array( + 0 => 'color: #483d8b;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff4500;' + ), + 'METHODS' => array( + 1 => 'color: black;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + 0 => array( + '<script type="text/coffeescript">' => '</script>' + ) + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/cpp-qt.php b/inc/geshi/cpp-qt.php index 8523d16b7..3f6aa3079 100644 --- a/inc/geshi/cpp-qt.php +++ b/inc/geshi/cpp-qt.php @@ -4,7 +4,7 @@ * ------- * Author: Iulian M * Copyright: (c) 2006 Iulian M - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/09/27 * * C++ (with QT extensions) language file for GeSHi. @@ -55,7 +55,7 @@ $language_data = array ( 'ESCAPE_CHAR' => '', 'ESCAPE_REGEXP' => array( //Simple Single Char Escapes - 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + 1 => "#\\\\[abfnrtv\\\'\"?\n]#i", //Hexadecimal Char Specs 2 => "#\\\\x[\da-fA-F]{2}#", //Hexadecimal Char Specs diff --git a/inc/geshi/cpp.php b/inc/geshi/cpp.php index 30f5a93f2..289ab9947 100644 --- a/inc/geshi/cpp.php +++ b/inc/geshi/cpp.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/09/27 * * C++ language file for GeSHi. @@ -63,7 +63,7 @@ $language_data = array ( 'ESCAPE_CHAR' => '', 'ESCAPE_REGEXP' => array( //Simple Single Char Escapes - 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + 1 => "#\\\\[abfnrtv\\\'\"?\n]#i", //Hexadecimal Char Specs 2 => "#\\\\x[\da-fA-F]{2}#", //Hexadecimal Char Specs diff --git a/inc/geshi/csharp.php b/inc/geshi/csharp.php index 6a9c3c2bd..e73f22d50 100644 --- a/inc/geshi/csharp.php +++ b/inc/geshi/csharp.php @@ -5,7 +5,7 @@ * 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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * C# language file for GeSHi. diff --git a/inc/geshi/css.php b/inc/geshi/css.php index 51f261486..a8706bd26 100644 --- a/inc/geshi/css.php +++ b/inc/geshi/css.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/18 * * CSS language file for GeSHi. @@ -58,7 +58,15 @@ $language_data = array ( ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array('"', "'"), - 'ESCAPE_CHAR' => '\\', + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + //1 => "#\\\\[nfrtv\$\"\n\\\\]#i", + //Hexadecimal Char Specs + 2 => "#\\\\[\da-fA-F]{1,6}\s?#i", + //Unicode Char Specs + //3 => "#\\\\u[\da-fA-F]{1,8}#i", + ), 'KEYWORDS' => array( 1 => array( 'aqua', 'azimuth', 'background-attachment', 'background-color', @@ -153,7 +161,10 @@ $language_data = array ( 'MULTI' => 'color: #808080; font-style: italic;' ), 'ESCAPE_CHAR' => array( - 0 => 'color: #000099; font-weight: bold;' + 0 => 'color: #000099; font-weight: bold;', + //1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #000099; font-weight: bold;' + //3 => 'color: #000099; font-weight: bold;' ), 'BRACKETS' => array( 0 => 'color: #00AA00;' diff --git a/inc/geshi/cuesheet.php b/inc/geshi/cuesheet.php index 81c607c10..e994a0aa3 100644 --- a/inc/geshi/cuesheet.php +++ b/inc/geshi/cuesheet.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (benbe@geshi.org) * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/12/21 * * Cuesheet language file for GeSHi. diff --git a/inc/geshi/d.php b/inc/geshi/d.php index 5ef349d52..107d07b1a 100644 --- a/inc/geshi/d.php +++ b/inc/geshi/d.php @@ -4,7 +4,7 @@ * ----- * Author: Thomas Kuehne (thomas@kuehne.cn) * Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/04/22 * * D language file for GeSHi. diff --git a/inc/geshi/dcs.php b/inc/geshi/dcs.php index 4762ed906..bac2beea8 100644 --- a/inc/geshi/dcs.php +++ b/inc/geshi/dcs.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2009/01/20 * * DCS language file for GeSHi. diff --git a/inc/geshi/delphi.php b/inc/geshi/delphi.php index ff54af8f9..d7f19f832 100644 --- a/inc/geshi/delphi.php +++ b/inc/geshi/delphi.php @@ -4,7 +4,7 @@ * ---------- * Author: J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/26 * * Delphi (Object Pascal) language file for GeSHi. diff --git a/inc/geshi/diff.php b/inc/geshi/diff.php index 5570406da..09cc50873 100644 --- a/inc/geshi/diff.php +++ b/inc/geshi/diff.php @@ -4,7 +4,7 @@ * -------- * Author: Conny Brunnkvist (conny@fuchsia.se), W. Tasin (tasin@fhm.edu) * Copyright: (c) 2004 Fuchsia Open Source Solutions (http://www.fuchsia.se/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/12/29 * * Diff-output language file for GeSHi. diff --git a/inc/geshi/div.php b/inc/geshi/div.php index 276e9e882..e8de7a525 100644 --- a/inc/geshi/div.php +++ b/inc/geshi/div.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Gabriel Lorenzo (ermakina@gmail.com) * Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/06/19 * * DIV language file for GeSHi. diff --git a/inc/geshi/dos.php b/inc/geshi/dos.php index 9484d3766..e84e1550a 100644 --- a/inc/geshi/dos.php +++ b/inc/geshi/dos.php @@ -4,7 +4,7 @@ * ------- * Author: Alessandro Staltari (staltari@geocities.com) * Copyright: (c) 2005 Alessandro Staltari (http://www.geocities.com/SiliconValley/Vista/8155/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/07/05 * * DOS language file for GeSHi. @@ -66,7 +66,8 @@ $language_data = array ( //DOS comment lines 'COMMENT_REGEXP' => array( 1 => "/^\s*@?REM\b.*$/mi", - 2 => "/^\s*::.*$/m" + 2 => "/^\s*::.*$/m", + 3 => "/\^./" ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array(), @@ -100,7 +101,7 @@ $language_data = array ( ) ), 'SYMBOLS' => array( - '(', ')', '@', '%' + '(', ')', '@', '%', '!', '|', '<', '>', '&' ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -119,6 +120,7 @@ $language_data = array ( 'COMMENTS' => array( 1 => 'color: #808080; font-style: italic;', 2 => 'color: #b100b1; font-style: italic;', + 3 => 'color: #33cc33;' ), 'ESCAPE_CHAR' => array( 0 => 'color: #ff0000; font-weight: bold;' @@ -143,7 +145,8 @@ $language_data = array ( 'REGEXPS' => array( 0 => 'color: #b100b1; font-weight: bold;', 1 => 'color: #448844;', - 2 => 'color: #448888;' + 2 => 'color: #448888;', + 3 => 'color: #448888;' ) ), 'OOLANG' => false, @@ -159,7 +162,7 @@ $language_data = array ( /* Label */ 0 => array( /* GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\s\n]*)',*/ - GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\n]*)', + GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\s\n]*)', GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 'si', GESHI_BEFORE => '\\1', @@ -182,6 +185,15 @@ $language_data = array ( GESHI_MODIFIERS => 'si', GESHI_BEFORE => '\\1', GESHI_AFTER => '\\3' + ), + /* Arguments or variable evaluation */ + 3 => array( +/* GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/ + GESHI_SEARCH => '(!(?:!(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^!>\n]*(?=!))((?<!%\d)%|)(?!!>)', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => 'si', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' ) ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, @@ -191,7 +203,20 @@ $language_data = array ( ), 'TAB_WIDTH' => 4, 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, + 'NUMBERS' => GESHI_NEVER + ), 'KEYWORDS' => array( + 1 => array( + 'DISALLOWED_BEFORE' => '(?<![\w\-])' + ), + 2 => array( + 'DISALLOWED_BEFORE' => '(?<![\w\-])' + ), + 3 => array( + 'DISALLOWED_BEFORE' => '(?<![\w\-])' + ), 4 => array( 'DISALLOWED_BEFORE' => '(?<!\w)' ) diff --git a/inc/geshi/dot.php b/inc/geshi/dot.php index 04b6792d7..1d5036d36 100644 --- a/inc/geshi/dot.php +++ b/inc/geshi/dot.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Adrien Friggeri (adrien@friggeri.net) * Copyright: (c) 2007 Adrien Friggeri (http://www.friggeri.net) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/05/30 * * dot language file for GeSHi. diff --git a/inc/geshi/e.php b/inc/geshi/e.php new file mode 100644 index 000000000..9bdbc137b --- /dev/null +++ b/inc/geshi/e.php @@ -0,0 +1,208 @@ +<?php +/************************************************************************************* + * e.php + * -------- + * Author: Kevin Reid (kpreid@switchb.org) + * Copyright: (c) 2010 Kevin Reid (http://switchb.org/kpreid/) + * Release Version: 1.0.8.10 + * Date Started: 2010/04/16 + * + * E language file for GeSHi. + * + * CHANGES + * ------- + * 2010-04-21 (1.0.8.8) + * - Fixing langcheck-reported bugs. + * 2010-04-14 (0.1) + * - First Release + * + * TODO (updated 2010-04-21) + * ------------------------- + * - Do something useful with the keyword groups. Since RC uses CSS classes named + * by the group numbers, either + * - change the numbering to match conventional uses by other languages, + * - or find or create some way to produce usefully named classes. + * + ************************************************************************************* + * + * 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' => 'E', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array('/**' => '*/'), // Note: This is method doc, not a general comment syntax. + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + + // FIXME: The escaping inside ` is actually doubling of any interior `, $, or @ -- backslash is NOT special + 'QUOTEMARKS' => array('\'', '"', '`'), + 'ESCAPE_CHAR' => '\\', + + 'KEYWORDS' => array( + // builtin control structures + 1 => array( + 'accum', 'break', 'try', 'continue', 'if', 'while', 'for', 'switch' + ), + + // control structures subsidiary keywords + 2 => array( + 'catch', 'else', 'finally', 'in', 'exit' + ), + + // named operators + 3 => array( + 'fn', 'via' + ), + + // variable/function/object definers + 4 => array( + 'def', 'bind', 'var' + ), + + // object definition subsidiary keywords + 5 => array( + 'extends', 'as', 'implements', 'guards', 'match', 'to', 'method' + ), + + // builtin nouns in safeEnv + 6 => array( + 'null', 'false', 'true', 'throw', '__loop', '__makeList', + '__makeMap', '__makeProtocolDesc', '__makeMessageDesc', + '__makeParamDesc', 'any', 'void', 'boolean', '__makeOrderedSpace', + 'ValueGuard', '__MatchContext', 'require', '__makeVerbFacet', 'NaN', + 'Infinity', '__identityFunc', '__makeInt', '__makeFinalSlot', + '__makeVarSlot', '__makeGuardedSlot', '__makeGuard', '__makeTwine', + '__makeSourceSpan', '__auditedBy', 'Guard', 'near', 'pbc', + 'PassByCopy', 'DeepPassByCopy', 'Data', 'Persistent', 'DeepFrozen', + 'int', 'float64', 'char', 'String', 'Twine', 'TextWriter', 'List', + 'Map', 'nullOk', 'Tuple', '__Portrayal', 'notNull', 'vow', 'rcvr', + 'SturdyRef', 'simple__quasiParser', 'twine__quasiParser', + 'rx__quasiParser', 'e__quasiParser', 'epatt__quasiParser', + 'sml__quasiParser', 'term__quasiParser', 'traceln', '__equalizer', + '__comparer', 'Ref', 'E', 'promiseAllFulfilled', 'EIO', 'help', + 'safeScope', '__eval', 'resource__uriGetter', 'type__uriGetter', + 'import__uriGetter', 'elib__uriGetter', 'elang__uriGetter', + 'opaque__uriGetter' + ), + + // builtin nouns in privilegedEnv + 7 => array( + 'file__uriGetter', 'fileURL__uriGetter', 'jar__uriGetter', + 'http__uriGetter', 'ftp__uriGetter', 'gopher__uriGetter', + 'news__uriGetter', 'cap__uriGetter', 'makeCommand', 'stdout', + 'stderr', 'stdin', 'print', 'println', 'interp', 'entropy', 'timer', + 'introducer', 'identityMgr', 'makeSturdyRef', 'timeMachine', + 'unsafe__uriGetter', 'currentVat', 'rune', 'awt__uriGetter', + 'swing__uriGetter', 'JPanel__quasiParser', 'swt__uriGetter', + 'currentDisplay', 'swtGrid__quasiParser', 'swtGrid`', + 'privilegedScope' + ), + + // reserved keywords + 8 => array( + 'abstract', 'an', 'assert', 'attribute', 'be', 'begin', 'behalf', + 'belief', 'believe', 'believes', 'case', 'class', 'const', + 'constructor', 'declare', 'default', 'define', 'defmacro', + 'delicate', 'deprecated', 'dispatch', 'do', 'encapsulate', + 'encapsulated', 'encapsulates', 'end', 'ensure', 'enum', 'eventual', + 'eventually', 'export', 'facet', 'forall', 'function', 'given', + 'hidden', 'hides', 'inline', 'is', 'know', 'knows', 'lambda', 'let', + 'methods', 'module', 'namespace', 'native', 'obeys', 'octet', + 'oneway', 'operator', 'package', 'private', 'protected', 'public', + 'raises', 'reliance', 'reliant', 'relies', 'rely', 'reveal', 'sake', + 'signed', 'static', 'struct', 'suchthat', 'supports', 'suspect', + 'suspects', 'synchronized', 'this', 'transient', 'truncatable', + 'typedef', 'unsigned', 'unum', 'uses', 'using', 'utf8', 'utf16', + 'virtual', 'volatile', 'wstring' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ',' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #b1b100;', + 3 => 'color: #b1b100;', + 4 => 'color: #b1b100;', + 5 => 'color: #b1b100;', + 6 => 'color: #b1b100;', + 7 => 'color: #b1b100;', + 8 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => 'http://wiki.erights.org/wiki/{FNAME}', + 2 => 'http://wiki.erights.org/wiki/{FNAME}', + 3 => 'http://wiki.erights.org/wiki/{FNAME}', + 4 => 'http://wiki.erights.org/wiki/{FNAME}', + 5 => 'http://wiki.erights.org/wiki/{FNAME}', + 6 => 'http://wiki.erights.org/wiki/{FNAME}', + 7 => 'http://wiki.erights.org/wiki/{FNAME}', + 8 => 'http://wiki.erights.org/wiki/{FNAME}' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '<-', + 3 => '::' + ), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?>
\ No newline at end of file diff --git a/inc/geshi/ecmascript.php b/inc/geshi/ecmascript.php index 3e61b57cb..e220c839b 100644 --- a/inc/geshi/ecmascript.php +++ b/inc/geshi/ecmascript.php @@ -4,7 +4,7 @@ * -------------- * Author: Michel Mariani (http://www.tonton-pixel.com/site/) * Copyright: (c) 2010 Michel Mariani (http://www.tonton-pixel.com/site/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/01/08 * * ECMAScript language file for GeSHi. diff --git a/inc/geshi/eiffel.php b/inc/geshi/eiffel.php index 89cef7965..66427acc7 100644 --- a/inc/geshi/eiffel.php +++ b/inc/geshi/eiffel.php @@ -4,7 +4,7 @@ * ---------- * Author: Zoran Simic (zsimic@axarosenberg.com) * Copyright: (c) 2005 Zoran Simic - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/06/30 * * Eiffel language file for GeSHi. diff --git a/inc/geshi/email.php b/inc/geshi/email.php index 91a104840..68f875499 100644 --- a/inc/geshi/email.php +++ b/inc/geshi/email.php @@ -4,7 +4,7 @@ * --------------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/10/19 * * Email (mbox \ eml \ RFC format) language file for GeSHi. @@ -51,14 +51,14 @@ $language_data = array ( 'HTTP', 'SMTP', 'ASMTP', 'ESMTP' ), 2 => array( - 'Authentication-Results','Content-Description','Content-Type', + 'Authentication-Results','Comment','Content-Description','Content-Type', 'Content-Disposition','Content-Transfer-Encoding','Delivered-To', 'Dkim-Signature','Domainkey-Signature','In-Reply-To','Message-Id', 'MIME-Version','OpenPGP','Received','Received-SPF','References', - 'Resend-From','Resend-To','Return-Path','User-Agent' + 'Reply-To', 'Resend-From','Resend-To','Return-Path','User-Agent' ), 3 => array( - 'Date','From','Subject','To', + 'Date','From','Sender','Subject','To','CC' ), 4 => array( 'by', 'for', 'from', 'id', 'with' @@ -132,7 +132,7 @@ $language_data = array ( ), //Email-Adresses or Mail-IDs 2 => array( - GESHI_SEARCH => "\b[\w\.\-]+@\w+(?:(?:\.\w+)*\.\w{2,4})?", + GESHI_SEARCH => "\b(?<!\\/)(?P<q>\"?)[\w\.\-]+\k<q>@(?!-)[\w\-]+(?<!-)(?:(?:\.(?!-)[\w\-]+(?<!-))*)?", GESHI_REPLACE => "\\0", GESHI_MODIFIERS => "mi", GESHI_BEFORE => "", @@ -178,7 +178,7 @@ $language_data = array ( ), 'STRICT_MODE_APPLIES' => GESHI_ALWAYS, 'SCRIPT_DELIMITERS' => array( - 0 => "/(?P<start>^)[A-Z][a-zA-Z0-9\-]*\s*:\s*(?:.|(?=\n\s)\n)*(?P<end>$)/m" + 0 => "/(?P<start>^)[A-Za-z][a-zA-Z0-9\-]*\s*:\s*(?:.|(?=\n\s)\n)*(?P<end>$)/m" ), 'HIGHLIGHT_STRICT_BLOCK' => array( 0 => true, diff --git a/inc/geshi/epc.php b/inc/geshi/epc.php new file mode 100644 index 000000000..764461fc2 --- /dev/null +++ b/inc/geshi/epc.php @@ -0,0 +1,154 @@ +<?php +/************************************************************************************* + * epc.php + * -------- + * Author: Thorsten Muehlfelder (muehlfelder@enertex.de) + * Copyright: (c) 2010 Enertex Bayern GmbH + * Release Version: 1.0.8.10 + * Date Started: 2010/08/26 + * + * Enerscript language file for GeSHi. + * + * CHANGES + * ------- + * 2010/08/26 (1.0.8.10) + * - First Release + * + ************************************************************************************* + * + * 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' => 'EPC', + 'COMMENT_SINGLE' => array('//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //[Sections] + //1 => "/^\\[.*\\]/" + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array( + 0 => '"', + 1 => '$' + ), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'if', 'then', 'else', 'endif', + 'and', 'or', 'xor', 'hysteresis' + ), + 2 => array( + 'read', 'write', 'event', + 'gettime', 'settime', 'getdate', 'setdate', 'gettimedate', 'settimedate', + 'hour', 'minute', 'second', 'changehour', 'changeminute', 'changesecond', + 'date', 'month', 'day', 'dayofweek', 'sun', 'azimuth', 'elevation', + 'sunrisehour', 'sunriseminute', 'sunsethour', 'sunsetminute', + 'wtime', 'htime', 'mtime', 'stime', + 'cwtime', 'chtime', 'cmtime', 'cstime', + 'delay', 'after', 'cycle', + 'readflash', 'writeflash', + 'abs', 'acos', 'asin', 'atan', 'cos', 'ceil', 'average', 'exp', 'floor', + 'log', 'max', 'min', 'mod', 'pow', 'sqrt', 'sin', 'tan', 'change', 'convert', + 'eval', 'systemstart', 'random', 'comobject', 'sleep', 'scene', 'storescene', 'callscene', + 'find', 'stringcast', 'stringset', 'stringformat', 'split', 'size', + 'readrs232'. 'sendrs232', 'address', 'readknx', + 'readudp', 'sendudp', 'connecttcp', 'closetcp', 'readtcp', 'sendtcp', + 'resolve', 'sendmail', + 'button', 'webbutton', 'chart', 'webchart', 'webdisplay', 'getslider', 'pshifter', 'mpshifter', + 'getpslider', 'mbutton', 'mbbutton', 'mchart', 'mpchart', 'mpbutton', 'pdisplay', 'pchart', + 'pbutton', 'setslider', 'setpslider', 'slider', 'pslider', 'page', 'line', 'header', + 'footer', 'none', 'plink', 'link', 'frame', 'dframe' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '%', 'b01', + ), + 1 => array( + '+', '-', '==', '>=', '=<', + ), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #e63ec3;', + 2 => 'color: #e63ec3;' + ), + 'COMMENTS' => array( + 0 => 'color: #0000ff;' + //1 => 'color: #ffa500;' + ), + 'ESCAPE_CHAR' => array( + 1 => 'color: #000099;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #8a0808;', + 1 => 'color: #6e6e6e;' + ), + 'NUMBERS' => array( + 0 => 'color: #0b610b;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #0b610b;', + 1 => 'color: #e63ec3;' + ), + 'REGEXPS' => array( + 1 => 'color: #0b610b;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + // Numbers, e.g. 255u08 + 1 => "[0-9]*[subf][0136][12468]" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'COMMENTS' => array( + 'DISALLOWED_BEFORE' => '$' + ), + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![\.\-a-zA-Z0-9_\$\#])", + 'DISALLOWED_AFTER' => "(?![\.\-a-zA-Z0-9_%=\\/])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/erlang.php b/inc/geshi/erlang.php index d98de2f37..ede55917c 100644 --- a/inc/geshi/erlang.php +++ b/inc/geshi/erlang.php @@ -7,7 +7,7 @@ * - Uwe Dauernheim (uwe@dauernheim.net) * - Dan Forest-Barbier (dan@twisted.in) * Copyright: (c) 2008 Uwe Dauernheim (http://www.kreisquadratur.de/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008-09-27 * * Erlang language file for GeSHi. @@ -355,7 +355,7 @@ $language_data = array( 2 => ':' ), 'REGEXPS' => array( - //Macro definitions + //�Macro definitions 0 => array( GESHI_SEARCH => '(-define\s*\()([a-zA-Z0-9_]+)(\(|,)', GESHI_REPLACE => '\2', @@ -403,7 +403,7 @@ $language_data = array( GESHI_BEFORE => '\1', GESHI_AFTER => '' ), - // ASCIIcodes + // ASCII�codes 6 => '(\$[a-zA-Z0-9_])', // Records 7 => array( @@ -423,8 +423,8 @@ $language_data = array( 'PARSER_CONTROL' => array( 'KEYWORDS' => array( 3 => array( - 'DISALLOWED_BEFORE' => '', - 'DISALLOWED_AFTER' => '(?=\s*\()' + 'DISALLOWED_BEFORE' => '(?<![\w])', + 'DISALLOWED_AFTER' => ''//'(?=\s*\()' ), 5 => array( 'DISALLOWED_BEFORE' => '(?<=\'|)', diff --git a/inc/geshi/euphoria.php b/inc/geshi/euphoria.php new file mode 100644 index 000000000..afd4ad7c4 --- /dev/null +++ b/inc/geshi/euphoria.php @@ -0,0 +1,140 @@ +<?php +/************************************************************************************* + * euphoria.php + * --------------------------------- + * Author: Nicholas Koceja (nerketur@hotmail.com) + * Copyright: (c) 2010 Nicholas Koceja + * Release Version: 1.0.8.10 + * Date Started: 11/24/2010 + * + * Euphoria language file for GeSHi. + * + * Author's note: The colors are based off of the Euphoria Editor (ed.ex) colors. + * Also, I added comments in places so I could remember a few things about Euphoria. + * + * + * CHANGES + * ------- + * <date-of-release> (1.0.8.9) + * - First Release + * + * TODO (updated <date-of-release>) + * ------------------------- + * seperate the funtions from the procedures, and have a slight color change for each. + * + ************************************************************************************* + * + * 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' => 'Euphoria', + 'COMMENT_SINGLE' => array(1 => '--'), + 'COMMENT_MULTI' => array(), //Euphoria doesn't support multi-line comments + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( // keywords + 'and', 'by', 'constant', 'do', 'else', 'elsif', 'end', 'exit', + 'for', 'function', 'global', 'if', 'include', 'not', 'or', + 'procedure', 'return', 'then', 'to', 'type', 'while', 'with', + 'without', 'xor' + ), + 2 => array( // built-ins + 'abort', 'and_bits', 'append', 'arctan', 'atom', 'c_func', 'call', + 'c_proc', 'call_func', 'call_proc', 'clear_screen', 'close', 'compare', + 'command_line', 'cos', 'date', 'equal', 'find', 'find_from', 'floor', + 'getc', 'getenv', 'gets', 'get_key', 'get_pixel', 'integer', 'length', + 'log', 'machine_func', 'machine_proc', 'match', 'match_from', + 'mem_copy', 'mem_set', 'not_bits', 'object', 'open', 'or_bits', 'peek', + 'peek4s', 'peek4u', 'pixel', 'platform', 'poke', 'poke4', 'position', + 'power', 'prepend', 'print', 'printf', 'profile', 'puts', 'rand', + 'remainder', 'repeat', 'routine_id', 'sequence', 'sin', 'sprintf', + 'sqrt', 'system', 'system_exec', 'tan', 'task_clock_stop', + 'task_clock_start', 'task_create', 'task_list', 'task_schedule', + 'task_self', 'task_status', 'task_suspend', 'task_yield', 'time', + 'trace', 'xor_bits' + ), + ), + 'SYMBOLS' => array( + 0 => array( + '(', ')', '{', '}', '[', ']' + ), + 1 => array( + '+', '-', '*', '/', '=', '&', '^' + ), + 2 => array( + '&', '?', ',' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000ff; font-weight: bold;', // keywords + 2 => 'color: #cc33ff; font-weight: bold;', // builtins + ), + 'COMMENTS' => array( + 1 => 'color: #ff0000; font-style: italic;', + 'MULTI' => '' // doesn't exist + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009900; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #999900; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #00cc00;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc33cc; font-style: italic' + ), + 'METHODS' => array( // Doesn't exist in Euphoria. Everything is a function =) + 0 => '' + ), + 'SYMBOLS' => array( + 0 => 'color: #999900;', // brackets + 1 => 'color: #333333;', // operators + 2 => 'color: #333333; font-style: bold' // print+concat + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( // Never included in scripts. + ) + ), + 'REGEXPS' => array( + ), + 'URLS' => array( + 1 => '', + 2 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/f1.php b/inc/geshi/f1.php new file mode 100644 index 000000000..13056b78b --- /dev/null +++ b/inc/geshi/f1.php @@ -0,0 +1,151 @@ +<?php +/************************************************************************************* + * f1.php + * ------- + * Author: Juro Bystricky (juro@f1compiler.com) + * Copyright: K2 Software Corp. + * Release Version: 1.0.8.10 + * Date Started: 2010/07/06 + * + * Formula One language file for GeSHi. + * + * CHANGES + * ------- + * 2010/07/06 (1.0.8.9) + * - First Release + * + * TODO + * ------------------------- + * - Add more RTL functions with URLs + * + ************************************************************************************* + * + * 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' => 'Formula One', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('{' => '}'), + 'COMMENT_REGEXP' => array( + //Nested Comments + 2 => "/(\{(?:\{.*\}|[^\{])*\})/m" + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'",'"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\nrt\'\"?\n]#i", + //Hexadecimal Char Specs (Utf16 codes, Unicode versions only) + 2 => "#\\\\u[\da-fA-F]{4}#", + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | + GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX_0O | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( + 'pred','proc','subr','else','elsif','iff','if','then','false','true', + 'case','of','use','local','mod','end','list','file','all','one','max','min','rel', + 'external','Nil','_stdcall','_cdecl','_addressof','_pred','_file','_line' + ), + 2 => array( + 'Ascii','Bin','I','L','P','R','S','U' + ), + 3 => array( + 'Append','in','Dupl','Len','Print','_AllDifferent','_AllAscending', + '_AllDescending','_Ascending','_Descending' + ) + ), + 'SYMBOLS' => array( + 0 => array('(', ')', '[', ']'), + 1 => array('<', '>','='), + 2 => array('+', '-', '*', '/'), + 3 => array('&', '|'), + 4 => array(':', ';') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000ff;', + 2 => 'color: #000080;', + 3 => 'color: #000080;', + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'COMMENTS' => array( + 1 => 'color: #008000; font-style: italic;', + 2 => 'color: #008000; font-style: italic;', + 'MULTI' => 'color: #008000; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #009999; font-weight: bold;', + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #800000;' + ), + 'METHODS' => array( + 1 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000000;', + 1 => 'color: #000000;', + 2 => 'color: #000000;', + 3 => 'color: #000000;', + 4 => 'color: #000000;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => 'http://www.f1compiler.com/f1helponline/f1_runtime_library.html#{FNAME}' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/falcon.php b/inc/geshi/falcon.php new file mode 100644 index 000000000..ce75f2057 --- /dev/null +++ b/inc/geshi/falcon.php @@ -0,0 +1,218 @@ +<?php +/************************************************************************************* + * falcon.php + * --------------------------------- + * Author: billykater (billykater+geshi@gmail.com) + * Copyright: (c) 2010 billykater (http://falconpl.org/) + * Release Version: 1.0.8.10 + * Date Started: 2010/06/07 + * + * Falcon language file for GeSHi. + * + * CHANGES + * ------- + * <2010/8/1> (1.0.8.10) + * - First Release + * + ************************************************************************************* + * + * 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' => 'Falcon', + 'COMMENT_SINGLE' => array( 1 => '//' ), + 'COMMENT_MULTI' => array( '/*' => '*/' ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array( "'", '"' ), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'break','case','catch','class','const','continue','def','default', + 'dropping','elif','else','end','enum','for','forfirst','forlast', + 'formiddle','from','function','global','if','init','innerfunc', + 'launch','loop','object','raise','return','select','state','static', + 'switch','try','while' + ), + 2 => array( + 'false','nil','true', + ), + 3 => array( + 'and','as','eq','fself','in','not','notin','or','provides','self','to' + ), + 4 => array( + 'directive','export','import','load','macro' + ), + 5 => array( + 'ArrayType','BooleanType','ClassMethodType','ClassType','DictionaryType', + 'FunctionType','MemBufType','MethodType','NilType','NumericType','ObjectType', + 'RangeType','StringType','LBindType' + ), + 6 => array( + "CurrentTime","IOStream","InputStream","MemBufFromPtr","OutputStream", + "PageDict","ParseRFC2822","abs","acos","all", + "allp","any","anyp","argd","argv", + "arrayAdd","arrayBuffer","arrayCompact","arrayDel","arrayDelAll", + "arrayFill","arrayFind","arrayHead","arrayIns","arrayMerge", + "arrayNM","arrayRemove","arrayResize","arrayScan","arraySort", + "arrayTail","asin","assert","atan","atan2", + "attributes","baseClass","beginCritical","bless","brigade", + "broadcast","cascade","ceil","choice","chr", + "className","clone","combinations","compare","consume", + "cos","deg2rad","deoob","derivedFrom","describe", + "deserialize","dictBack","dictBest","dictClear","dictFill", + "dictFind","dictFront","dictGet","dictKeys","dictMerge", + "dictRemove","dictSet","dictValues","dirChange","dirCurrent", + "dirMake","dirMakeLink","dirReadLink","dirRemove","dolist", + "endCritical","epoch","eval","exit","exp", + "factorial","fileChgroup","fileChmod","fileChown","fileCopy", + "fileExt","fileMove","fileName","fileNameMerge","filePath", + "fileRemove","fileType","fileUnit","filter","fint", + "firstOf","floop","floor","fract","getAssert", + "getEnviron","getProperty","getSlot","getSystemEncoding","getenv", + "iff","include","input","inspect","int", + "isBound","isCallable","isoob","lbind","len", + "let","lit","log","map","max", + "metaclass","min","numeric","oob","ord", + "paramCount","paramIsRef","paramSet","parameter","passvp", + "permutations","pow","print","printl","properties", + "rad2deg","random","randomChoice","randomDice","randomGrab", + "randomPick","randomSeed","randomWalk","readURI","reduce", + "retract","round","seconds","serialize","set", + "setProperty","setenv","sin","sleep","stdErr", + "stdErrRaw","stdIn","stdInRaw","stdOut","stdOutRaw", + "strBack","strBackFind","strBackTrim","strBuffer","strCmpIgnoreCase", + "strEndsWith","strEscape","strEsq","strFill","strFind", + "strFromMemBuf","strFront","strFrontTrim","strLower","strMerge", + "strReplace","strReplicate","strSplit","strSplitTrimmed","strStartsWith", + "strToMemBuf","strTrim","strUnescape","strUnesq","strUpper", + "strWildcardMatch","subscribe","systemErrorDescription","tan","times", + "toString","transcodeFrom","transcodeTo","typeOf","unsetenv", + "unsubscribe","valof","vmFalconPath","vmIsMain","vmModuleName", + "vmModuleVersionInfo","vmSearchPath","vmSystemType","vmVersionInfo","vmVersionName", + "writeURI","xmap","yield","yieldOut" + ), + 7 => array( + "AccessError","Array","BOM","Base64","Class", + "ClassMethod","CloneError","CmdlineParser","CodeError","Continuation", + "Dictionary","Directory","Error","FileStat","Format", + "Function","GarbagePointer","GenericError","Integer","InterruptedError", + "IoError","Iterator","LateBinding","List","MathError", + "MemoryBuffer","MessageError","Method","Numeric","Object", + "ParamError","ParseError","Path","Range","Semaphore", + "Sequence","Set","Stream","String","StringStream", + "SyntaxError","Table","TableError","TimeStamp","TimeZone", + "Tokenizer","TypeError","URI","VMSlot" + ), + 8 => array( + "args","scriptName","scriptPath" + ), + 9 => array( + "GC" + ), + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => 'http://falconpl.org/project_docs/core/functions.html#typeOf', + 6 => 'http://falconpl.org/project_docs/core/functions.html#{FNAME}', + 7 => 'http://falconpl.org/project_docs/core/class_{FNAME}.html', + 8 => 'http://falconpl.org/project_docs/core/globals.html#{FNAME}', + 9 => 'http://falconpl.org/project_docs/core/object_{FNAME}.html)' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, + 9 => true + ), + 'SYMBOLS' => array( + '(',')','$','%','&','/','{','[',']','=','}','?','+','-','#','*','@', + '<','>','|',',',':',';','\\','^' + ), + 'REGEXPS' => array( + 0 => array( + GESHI_SEARCH => '(\[)([a-zA-Z_]|\c{C})(?:[a-zA-Z0-9_]|\p{C})*(\])', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3', + + ), + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + 0 => array( '<?' => '?>' ) + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000080;font-weight:bold;', + 2 => 'color: #800000;font-weight:bold;', + 3 => 'color: #800000;font-weight:bold;', + 4 => 'color: #000080;font-weight:bold;', + 5 => 'color: #000000;font-weight:bold;', + 6 => 'font-weight:bold;', + 7 => 'font-weight:bold;', + 8 => 'font-weight:bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #29B900;', + 'MULTI' => 'color: #008080' + ), + 'STRINGS' => array( + 0 => 'color: #800000' + ), + 'BRACKETS' => array( + 0 => 'color: #000000' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #800000' + ), + 'NUMBERS' => array( + 0 => 'color: #000000' + ), + 'METHODS' => array( + 0 => 'color: #000000' + ), + 'SYMBOLS' => array( + 0 => 'color: #8B0513' + ), + 'SCRIPT' => array( + 0 => '' + ), + 'REGEXPS' => array( + 0 => 'color: #FF00FF' + ) + ), + + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + '.' + ) +); +?>
\ No newline at end of file diff --git a/inc/geshi/fo.php b/inc/geshi/fo.php index 3a1d24021..e472f2271 100644 --- a/inc/geshi/fo.php +++ b/inc/geshi/fo.php @@ -4,7 +4,7 @@ * -------- * Author: Tan-Vinh Nguyen (tvnguyen@web.de) * Copyright: (c) 2009 Tan-Vinh Nguyen - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/03/23 * * fo language file for GeSHi. diff --git a/inc/geshi/fortran.php b/inc/geshi/fortran.php index 6eac52ae0..247e3e4b4 100644 --- a/inc/geshi/fortran.php +++ b/inc/geshi/fortran.php @@ -4,7 +4,7 @@ * ----------- * Author: Cedric Arrabie (cedric.arrabie@univ-pau.fr) * Copyright: (C) 2006 Cetric Arrabie - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/04/22 * * Fortran language file for GeSHi. diff --git a/inc/geshi/freebasic.php b/inc/geshi/freebasic.php index 35fc8ca6f..8ac2904eb 100644 --- a/inc/geshi/freebasic.php +++ b/inc/geshi/freebasic.php @@ -4,7 +4,7 @@ * ------------- * Author: Roberto Rossi * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/08/19 * * FreeBasic (http://www.freebasic.net/) language file for GeSHi. diff --git a/inc/geshi/fsharp.php b/inc/geshi/fsharp.php index 56146958c..a900e4b60 100644 --- a/inc/geshi/fsharp.php +++ b/inc/geshi/fsharp.php @@ -4,7 +4,7 @@ * ---------- * Author: julien ortin (jo_spam-divers@yahoo.fr) * Copyright: (c) 2009 julien ortin - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/09/20 * * F# language file for GeSHi. @@ -43,7 +43,8 @@ $language_data = array( 'LANG_NAME' => 'F#', 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), - 'COMMENT_MULTI' => array('(*' => '*)', '/*' => '*/'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array(3 => '/\(\*(?!\)).*?\*\)/'), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'HARDQUOTE' => array('@"', '"'), @@ -153,7 +154,8 @@ $language_data = array( 'COMMENTS' => array( 'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */ 1 => 'color: #5d478b; font-style: italic;', - 2 => 'color: #5d478b; font-style: italic;' /* light purple */ + 2 => 'color: #5d478b; font-style: italic;', /* light purple */ + 3 => 'color: #5d478b; font-style: italic;' /* light purple */ ), 'ESCAPE_CHAR' => array( ), diff --git a/inc/geshi/gambas.php b/inc/geshi/gambas.php index 0fc89bb59..b89db0382 100644 --- a/inc/geshi/gambas.php +++ b/inc/geshi/gambas.php @@ -5,7 +5,7 @@ * Author: Jesus Guardon (jguardon@telefonica.net) * Copyright: (c) 2009 Jesus Guardon (http://gambas-es.org), * Benny Baumann (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/20 * * GAMBAS language file for GeSHi. diff --git a/inc/geshi/gdb.php b/inc/geshi/gdb.php index ed7ee2ffa..284b589a0 100644 --- a/inc/geshi/gdb.php +++ b/inc/geshi/gdb.php @@ -4,7 +4,7 @@ * -------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2009 Milian Wolff - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/06/24 * * GDB language file for GeSHi. @@ -43,7 +43,7 @@ $language_data = array ( 'COMMENT_MULTI' => array(), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array('"'), - 'ESCAPE_CHAR' => '', + 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( 0 => array( 'Application', @@ -54,8 +54,7 @@ $language_data = array ( '[KCrash Handler]', ), ), - 'NUMBERS' => - GESHI_NUMBER_INT_BASIC, + 'NUMBERS' => false, 'SYMBOLS' => array( ), 'CASE_SENSITIVE' => array( @@ -79,7 +78,6 @@ $language_data = array ( 0 => 'color: #933;' ), 'NUMBERS' => array( - 0 => 'color: #cc66cc;', ), 'METHODS' => array( ), @@ -88,12 +86,14 @@ $language_data = array ( 'REGEXPS' => array( 0 => 'color: #000066; font-weight:bold;', 1 => 'color: #006600;', - 2 => 'color: #000066;', - 3 => 'color: #0066FF; text-style:italic;', - 4 => 'color: #80B5FF; text-style:italic;', - 5 => 'color: #A3007D;', - 6 => 'color: #FF00BF;', - 7 => 'font-weight: bold;' + 2 => 'color: #B07E00;', + 3 => 'color: #0057AE; text-style:italic;', + 4 => 'color: #0057AE; text-style:italic;', + 5 => 'color: #442886;', + 6 => 'color: #442886; font-weight:bold;', + 7 => 'color: #FF0000; font-weight:bold;', + 8 => 'color: #006E26;', + 9 => 'color: #555;', ), 'SCRIPT' => array( ) @@ -132,7 +132,7 @@ $language_data = array ( ), //Files with linenumbers 3 => array( - GESHI_SEARCH => '(at )(.+)(:\d+\s*)$', + GESHI_SEARCH => '(at\s+)(.+)(:\d+\s*)$', GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '\\1', @@ -140,16 +140,14 @@ $language_data = array ( ), //Libs without linenumbers 4 => array( - GESHI_SEARCH => '(from )(.+)(\s*)$', + GESHI_SEARCH => '(from\s+)(.+)(\s*)$', GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '\\1', GESHI_AFTER => '\\3' ), - //Hex mem address - 5 => '0x[a-f0-9]+', //Line numbers - 6 => array( + 5 => array( GESHI_SEARCH => '(:)(\d+)(\s*)$', GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 'm', @@ -157,19 +155,44 @@ $language_data = array ( GESHI_AFTER => '\\3' ), //Location + 6 => array( + GESHI_SEARCH => '(\s+)(in\s+)?([^ 0-9][^ ]*)([ \n]+\()', + GESHI_REPLACE => '\\3', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1\\2', + GESHI_AFTER => '\\4' + ), + // interesting parts: abort, qFatal, assertions, null ptrs, ... 7 => array( - GESHI_SEARCH => '( in )([^ \(\)]+)( \()', - GESHI_REPLACE => '\\2', + GESHI_SEARCH => '\b((?:\*__GI_)?(?:__assert_fail|abort)|qFatal|0x0)\b([^\.]|$)', + GESHI_REPLACE => '\\1', GESHI_MODIFIERS => '', - GESHI_BEFORE => '\\1', - GESHI_AFTER => '\\3' + GESHI_BEFORE => '', + GESHI_AFTER => '\\2' + ), + // Namespace / Classes + 8 => array( + GESHI_SEARCH => '\b(\w+)(::)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'U', + GESHI_BEFORE => '', + GESHI_AFTER => '\\2' ), + // make ptr adresses and <value optimized out> uninteresting + 9 => '\b(?:0x[a-f0-9]{2,}|value\s+optimized\s+out)\b' ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( ), 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'NUMBERS' => false + ), ) ); +// kate: replace-tabs on; indent-width 4; + ?> diff --git a/inc/geshi/genero.php b/inc/geshi/genero.php index a7ccf5fee..1d70d752c 100644 --- a/inc/geshi/genero.php +++ b/inc/geshi/genero.php @@ -4,7 +4,7 @@ * ---------- * Author: Lars Gersmann (lars.gersmann@gmail.com) * Copyright: (c) 2007 Lars Gersmann, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/07/01 * * Genero (FOURJ's Genero 4GL) language file for GeSHi. diff --git a/inc/geshi/genie.php b/inc/geshi/genie.php index 66bea6dc7..898f9ef10 100644 --- a/inc/geshi/genie.php +++ b/inc/geshi/genie.php @@ -4,7 +4,7 @@ * ---------- * Author: Nicolas Joseph (nicolas.joseph@valaide.org) * Copyright: (c) 2009 Nicolas Joseph - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/04/29 * * Genie language file for GeSHi. diff --git a/inc/geshi/gettext.php b/inc/geshi/gettext.php index e1c88e185..1dc8f8d24 100644 --- a/inc/geshi/gettext.php +++ b/inc/geshi/gettext.php @@ -4,7 +4,7 @@ * -------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/05/25 * * GNU Gettext .po/.pot language file for GeSHi. diff --git a/inc/geshi/glsl.php b/inc/geshi/glsl.php index f9a37ed07..d810db3f0 100644 --- a/inc/geshi/glsl.php +++ b/inc/geshi/glsl.php @@ -4,7 +4,7 @@ * ----- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2008 Benny Baumann (BenBE@omorphia.de) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/03/20 * * glSlang language file for GeSHi. diff --git a/inc/geshi/gml.php b/inc/geshi/gml.php index 3f8a06c4f..57c42d4c8 100644 --- a/inc/geshi/gml.php +++ b/inc/geshi/gml.php @@ -4,7 +4,7 @@ * -------- * Author: Jos� Jorge Enr�quez (jenriquez@users.sourceforge.net) * Copyright: (c) 2005 Jos� Jorge Enr�quez Rodr�guez (http://www.zonamakers.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/06/21 * * GML language file for GeSHi. diff --git a/inc/geshi/gnuplot.php b/inc/geshi/gnuplot.php index 980561d35..59b343eb1 100644 --- a/inc/geshi/gnuplot.php +++ b/inc/geshi/gnuplot.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/07/07 * * Gnuplot script language file for GeSHi. diff --git a/inc/geshi/go.php b/inc/geshi/go.php new file mode 100644 index 000000000..a71c2515e --- /dev/null +++ b/inc/geshi/go.php @@ -0,0 +1,375 @@ +<?php +/************************************************************************************* + * go.php + * -------- + * Author: Markus Jarderot (mizardx at gmail dot com) + * Copyright: (c) 2010 Markus Jarderot + * Release Version: 1.0.8.10 + * Date Started: 2010/05/20 + * + * Go language file for GeSHi. + * + * CHANGES + * ------- + * 2010/05/20 (1.0.8.9) + * - First Release + * + * TODO (updated 2010/05/20) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'Go', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + # Raw strings (escapes and linebreaks ignored) + 2 => "#`[^`]*`#" + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', "'"), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + 1 => "#\\\\[abfnrtv\\\\\'\"]#", + 2 => "#\\\\[0-7]{3}#", + 3 => "#\\\\x[0-9a-fA-F]{2}#", + 4 => "#\\\\u[0-9a-fA-F]{4}#", + 5 => "#\\\\U[0-9a-fA-F]{8}#" + ), + 'NUMBERS' => array( + # integer literals (possibly imaginary) + 0 => '\b([1-9][0-9]*i?|0[0-7]*|0[xX][0-9a-f]+|0[0-9]*i)\b', + # real floating point literals + 1 => '\b((?:\d+\.\d*(?:[Ee][+-]?\d+\b)?|\.\d+(?:[Ee][+-]?\d+)?|\d+[Ee][+-]?\d+)?)\b', + # imaginary floating point literals + 2 => '\b((?:\d+\.\d*(?:[Ee][+-]?\d+)?|\.\d+(?:[Ee][+-]?\d+)?|\d+[Ee][+-]?\d+)?i)\b' + ), + 'KEYWORDS' => array( + # statements + 1 => array( + 'break', 'case', 'const', 'continue', 'default', 'defer', 'else', + 'fallthrough', 'for', 'go', 'goto', 'if', 'import', 'package', + 'range', 'return', 'select', 'switch', 'type', 'var' + ), + # literals + 2 => array( + 'nil', 'true', 'false' + ), + # built-in functions + 3 => array( + 'close', 'closed', 'len', 'cap', 'new', 'make', 'copy', 'cmplx', + 'real', 'imag', 'panic', 'recover', 'print', 'println' + ), + # built-in types + 4 => array( + 'chan', 'func', 'interface', 'map', 'struct', 'bool', 'uint8', + 'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64', + 'float32', 'float64', 'complex64', 'complex128', 'byte', 'uint', + 'int', 'float', 'complex', 'uintptr', 'string' + ), + # library types + 5 => array( + 'aes.Cipher', 'aes.KeySizeError', 'ascii85.CorruptInputError', 'asn1.BitString', + 'asn1.RawValue', 'asn1.StructuralError', 'asn1.SyntaxError', 'ast.ChanDir', + 'ast.Comment', 'ast.CommentGroup', 'ast.Decl', 'ast.Expr', 'ast.Field', + 'ast.FieldList', 'ast.File', 'ast.Filter', 'ast.MergeMode', 'ast.Node', + 'ast.ObjKind', 'ast.Object', 'ast.Package', 'ast.Scope', 'ast.Stmt', + 'ast.Visitor', 'av.Color', 'av.Image', 'av.Window', 'base64.CorruptInputError', + 'base64.Encoding', 'big.Int', 'big.Word', 'bignum.Integer', 'bignum.Rational', + 'binary.ByteOrder', 'block.Cipher', 'block.EAXTagError', 'blowfish.Cipher', + 'blowfish.KeySizeError', 'bufio.BufSizeError', 'bufio.Error', 'bufio.ReadWriter', + 'bufio.Reader', 'bufio.Writer', 'bytes.Buffer', 'datafmt.Environment', + 'datafmt.Format', 'datafmt.Formatter', 'datafmt.FormatterMap', 'datafmt.State', + 'doc.Filter', 'doc.FuncDoc', 'doc.PackageDoc', 'doc.TypeDoc', 'doc.ValueDoc', + 'draw.Color', 'draw.Context', 'draw.Image', 'draw.Mouse', 'draw.Op', + 'draw.Point', 'draw.Rectangle', 'dwarf.AddrType', 'dwarf.ArrayType', + 'dwarf.Attr', 'dwarf.BasicType', 'dwarf.BoolType', 'dwarf.CharType', + 'dwarf.CommonType', 'dwarf.ComplexType', 'dwarf.Data', 'dwarf.DecodeError', + 'dwarf.DotDotDotType', 'dwarf.Entry', 'dwarf.EnumType', 'dwarf.EnumValue', + 'dwarf.Field', 'dwarf.FloatType', 'dwarf.FuncType', 'dwarf.IntType', + 'dwarf.Offset', 'dwarf.PtrType', 'dwarf.QualType', 'dwarf.Reader', + 'dwarf.StructField', 'dwarf.StructType', 'dwarf.Tag', 'dwarf.Type', + 'dwarf.TypedefType', 'dwarf.UcharType', 'dwarf.UintType', 'dwarf.VoidType', + 'elf.Class', 'elf.Data', 'elf.Dyn32', 'elf.Dyn64', 'elf.DynFlag', 'elf.DynTag', + 'elf.File', 'elf.FileHeader', 'elf.FormatError', 'elf.Header32', 'elf.Header64', + 'elf.Machine', 'elf.NType', 'elf.OSABI', 'elf.Prog', 'elf.Prog32', 'elf.Prog64', + 'elf.ProgFlag', 'elf.ProgHeader', 'elf.ProgType', 'elf.R_386', 'elf.R_ALPHA', + 'elf.R_ARM', 'elf.R_PPC', 'elf.R_SPARC', 'elf.R_X86_64', 'elf.Rel32', + 'elf.Rel64', 'elf.Rela32', 'elf.Rela64', 'elf.Section', 'elf.Section32', + 'elf.Section64', 'elf.SectionFlag', 'elf.SectionHeader', 'elf.SectionIndex', + 'elf.SectionType', 'elf.Sym32', 'elf.Sym64', 'elf.SymBind', 'elf.SymType', + 'elf.SymVis', 'elf.Symbol', 'elf.Type', 'elf.Version', 'eval.ArrayType', + 'eval.ArrayValue', 'eval.BoolValue', 'eval.BoundedType', 'eval.ChanType', + 'eval.Code', 'eval.Constant', 'eval.Def', 'eval.DivByZeroError', + 'eval.FloatValue', 'eval.Frame', 'eval.Func', 'eval.FuncDecl', 'eval.FuncType', + 'eval.FuncValue', 'eval.IMethod', 'eval.IdealFloatValue', 'eval.IdealIntValue', + 'eval.IndexError', 'eval.IntValue', 'eval.Interface', 'eval.InterfaceType', + 'eval.InterfaceValue', 'eval.KeyError', 'eval.Map', 'eval.MapType', + 'eval.MapValue', 'eval.Method', 'eval.MultiType', 'eval.NamedType', + 'eval.NegativeCapacityError', 'eval.NegativeLengthError', 'eval.NilPointerError', + 'eval.PtrType', 'eval.PtrValue', 'eval.RedefinitionError', 'eval.Scope', + 'eval.Slice', 'eval.SliceError', 'eval.SliceType', 'eval.SliceValue', + 'eval.StringValue', 'eval.StructField', 'eval.StructType', 'eval.StructValue', + 'eval.Thread', 'eval.Type', 'eval.UintValue', 'eval.Value', 'eval.Variable', + 'eval.World', 'exec.Cmd', 'expvar.Int', 'expvar.IntFunc', 'expvar.KeyValue', + 'expvar.Map', 'expvar.String', 'expvar.StringFunc', 'expvar.Var', 'flag.Flag', + 'flag.Value', 'flate.CorruptInputError', 'flate.InternalError', + 'flate.ReadError', 'flate.Reader', 'flate.WriteError', 'flate.WrongValueError', + 'fmt.Formatter', 'fmt.GoStringer', 'fmt.State', 'fmt.Stringer', + 'git85.CorruptInputError', 'gob.Decoder', 'gob.Encoder', 'gosym.DecodingError', + 'gosym.Func', 'gosym.LineTable', 'gosym.Obj', 'gosym.Sym', 'gosym.Table', + 'gosym.UnknownFileError', 'gosym.UnknownLineError', 'gzip.Deflater', + 'gzip.Header', 'gzip.Inflater', 'hash.Hash', 'hash.Hash32', 'hash.Hash64', + 'heap.Interface', 'hex.InvalidHexCharError', 'hex.OddLengthInputError', + 'http.ClientConn', 'http.Conn', 'http.Handler', 'http.HandlerFunc', + 'http.ProtocolError', 'http.Request', 'http.Response', 'http.ServeMux', + 'http.ServerConn', 'http.URL', 'http.URLError', 'http.URLEscapeError', + 'image.Alpha', 'image.AlphaColor', 'image.Color', 'image.ColorImage', + 'image.ColorModel', 'image.ColorModelFunc', 'image.Image', 'image.NRGBA', + 'image.NRGBA64', 'image.NRGBA64Color', 'image.NRGBAColor', 'image.Paletted', + 'image.RGBA', 'image.RGBA64', 'image.RGBA64Color', 'image.RGBAColor', + 'io.Closer', 'io.Error', 'io.PipeReader', 'io.PipeWriter', 'io.ReadByter', + 'io.ReadCloser', 'io.ReadSeeker', 'io.ReadWriteCloser', 'io.ReadWriteSeeker', + 'io.ReadWriter', 'io.Reader', 'io.ReaderAt', 'io.ReaderFrom', 'io.SectionReader', + 'io.Seeker', 'io.WriteCloser', 'io.WriteSeeker', 'io.Writer', 'io.WriterAt', + 'io.WriterTo', 'iterable.Func', 'iterable.Group', 'iterable.Grouper', + 'iterable.Injector', 'iterable.Iterable', 'jpeg.FormatError', 'jpeg.Reader', + 'jpeg.UnsupportedError', 'json.Decoder', 'json.Encoder', + 'json.InvalidUnmarshalError', 'json.Marshaler', 'json.MarshalerError', + 'json.SyntaxError', 'json.UnmarshalTypeError', 'json.Unmarshaler', + 'json.UnsupportedTypeError', 'list.Element', 'list.List', 'log.Logger', + 'macho.Cpu', 'macho.File', 'macho.FileHeader', 'macho.FormatError', 'macho.Load', + 'macho.LoadCmd', 'macho.Regs386', 'macho.RegsAMD64', 'macho.Section', + 'macho.Section32', 'macho.Section64', 'macho.SectionHeader', 'macho.Segment', + 'macho.Segment32', 'macho.Segment64', 'macho.SegmentHeader', 'macho.Thread', + 'macho.Type', 'net.Addr', 'net.AddrError', 'net.Conn', 'net.DNSConfigError', + 'net.DNSError', 'net.Error', 'net.InvalidAddrError', 'net.InvalidConnError', + 'net.Listener', 'net.OpError', 'net.PacketConn', 'net.TCPAddr', 'net.TCPConn', + 'net.TCPListener', 'net.UDPAddr', 'net.UDPConn', 'net.UnixAddr', 'net.UnixConn', + 'net.UnixListener', 'net.UnknownNetworkError', 'net.UnknownSocketError', + 'netchan.Dir', 'netchan.Exporter', 'netchan.Importer', 'nntp.Article', + 'nntp.Conn', 'nntp.Error', 'nntp.Group', 'nntp.ProtocolError', 'ogle.Arch', + 'ogle.ArchAlignedMultiple', 'ogle.ArchLSB', 'ogle.Breakpoint', 'ogle.Event', + 'ogle.EventAction', 'ogle.EventHandler', 'ogle.EventHook', 'ogle.FormatError', + 'ogle.Frame', 'ogle.Goroutine', 'ogle.GoroutineCreate', 'ogle.GoroutineExit', + 'ogle.NoCurrentGoroutine', 'ogle.NotOnStack', 'ogle.Process', + 'ogle.ProcessNotStopped', 'ogle.ReadOnlyError', 'ogle.RemoteMismatchError', + 'ogle.UnknownArchitecture', 'ogle.UnknownGoroutine', 'ogle.UsageError', + 'os.Errno', 'os.Error', 'os.ErrorString', 'os.File', 'os.FileInfo', + 'os.LinkError', 'os.PathError', 'os.SyscallError', 'os.Waitmsg', 'patch.Diff', + 'patch.File', 'patch.GitBinaryLiteral', 'patch.Op', 'patch.Set', + 'patch.SyntaxError', 'patch.TextChunk', 'patch.Verb', 'path.Visitor', + 'pdp1.HaltError', 'pdp1.LoopError', 'pdp1.Trapper', 'pdp1.UnknownInstrError', + 'pdp1.Word', 'pem.Block', 'png.FormatError', 'png.IDATDecodingError', + 'png.UnsupportedError', 'printer.Config', 'printer.HTMLTag', 'printer.Styler', + 'proc.Breakpoint', 'proc.Cause', 'proc.Process', 'proc.ProcessExited', + 'proc.Regs', 'proc.Signal', 'proc.Stopped', 'proc.Thread', 'proc.ThreadCreate', + 'proc.ThreadExit', 'proc.Word', 'quick.CheckEqualError', 'quick.CheckError', + 'quick.Config', 'quick.Generator', 'quick.SetupError', 'rand.Rand', + 'rand.Source', 'rand.Zipf', 'rc4.Cipher', 'rc4.KeySizeError', + 'reflect.ArrayOrSliceType', 'reflect.ArrayOrSliceValue', 'reflect.ArrayType', + 'reflect.ArrayValue', 'reflect.BoolType', 'reflect.BoolValue', 'reflect.ChanDir', + 'reflect.ChanType', 'reflect.ChanValue', 'reflect.Complex128Type', + 'reflect.Complex128Value', 'reflect.Complex64Type', 'reflect.Complex64Value', + 'reflect.ComplexType', 'reflect.ComplexValue', 'reflect.Float32Type', + 'reflect.Float32Value', 'reflect.Float64Type', 'reflect.Float64Value', + 'reflect.FloatType', 'reflect.FloatValue', 'reflect.FuncType', + 'reflect.FuncValue', 'reflect.Int16Type', 'reflect.Int16Value', + 'reflect.Int32Type', 'reflect.Int32Value', 'reflect.Int64Type', + 'reflect.Int64Value', 'reflect.Int8Type', 'reflect.Int8Value', 'reflect.IntType', + 'reflect.IntValue', 'reflect.InterfaceType', 'reflect.InterfaceValue', + 'reflect.MapType', 'reflect.MapValue', 'reflect.Method', 'reflect.PtrType', + 'reflect.PtrValue', 'reflect.SliceHeader', 'reflect.SliceType', + 'reflect.SliceValue', 'reflect.StringHeader', 'reflect.StringType', + 'reflect.StringValue', 'reflect.StructField', 'reflect.StructType', + 'reflect.StructValue', 'reflect.Type', 'reflect.Uint16Type', + 'reflect.Uint16Value', 'reflect.Uint32Type', 'reflect.Uint32Value', + 'reflect.Uint64Type', 'reflect.Uint64Value', 'reflect.Uint8Type', + 'reflect.Uint8Value', 'reflect.UintType', 'reflect.UintValue', + 'reflect.UintptrType', 'reflect.UintptrValue', 'reflect.UnsafePointerType', + 'reflect.UnsafePointerValue', 'reflect.Value', 'regexp.Error', 'regexp.Regexp', + 'ring.Ring', 'rpc.Call', 'rpc.Client', 'rpc.ClientCodec', 'rpc.InvalidRequest', + 'rpc.Request', 'rpc.Response', 'rpc.ServerCodec', 'rsa.DecryptionError', + 'rsa.MessageTooLongError', 'rsa.PKCS1v15Hash', 'rsa.PrivateKey', 'rsa.PublicKey', + 'rsa.VerificationError', 'runtime.ArrayType', 'runtime.BoolType', + 'runtime.ChanDir', 'runtime.ChanType', 'runtime.Complex128Type', + 'runtime.Complex64Type', 'runtime.ComplexType', 'runtime.Error', + 'runtime.Float32Type', 'runtime.Float64Type', 'runtime.FloatType', + 'runtime.Func', 'runtime.FuncType', 'runtime.Int16Type', 'runtime.Int32Type', + 'runtime.Int64Type', 'runtime.Int8Type', 'runtime.IntType', + 'runtime.InterfaceType', 'runtime.Itable', 'runtime.MapType', + 'runtime.MemProfileRecord', 'runtime.MemStatsType', 'runtime.PtrType', + 'runtime.SliceType', 'runtime.StringType', 'runtime.StructType', 'runtime.Type', + 'runtime.TypeAssertionError', 'runtime.Uint16Type', 'runtime.Uint32Type', + 'runtime.Uint64Type', 'runtime.Uint8Type', 'runtime.UintType', + 'runtime.UintptrType', 'runtime.UnsafePointerType', 'scanner.Error', + 'scanner.ErrorHandler', 'scanner.ErrorVector', 'scanner.Position', + 'scanner.Scanner', 'script.Close', 'script.Closed', 'script.Event', + 'script.ReceivedUnexpected', 'script.Recv', 'script.RecvMatch', 'script.Send', + 'script.SetupError', 'signal.Signal', 'signal.UnixSignal', 'sort.Interface', + 'srpc.Client', 'srpc.Errno', 'srpc.Handler', 'srpc.RPC', 'strconv.NumError', + 'strings.Reader', 'sync.Mutex', 'sync.RWMutex', + 'syscall.ByHandleFileInformation', 'syscall.Cmsghdr', 'syscall.Dirent', + 'syscall.EpollEvent', 'syscall.Fbootstraptransfer_t', 'syscall.FdSet', + 'syscall.Filetime', 'syscall.Flock_t', 'syscall.Fstore_t', 'syscall.Iovec', + 'syscall.Kevent_t', 'syscall.Linger', 'syscall.Log2phys_t', 'syscall.Msghdr', + 'syscall.Overlapped', 'syscall.PtraceRegs', 'syscall.Radvisory_t', + 'syscall.RawSockaddr', 'syscall.RawSockaddrAny', 'syscall.RawSockaddrInet4', + 'syscall.RawSockaddrInet6', 'syscall.RawSockaddrUnix', 'syscall.Rlimit', + 'syscall.Rusage', 'syscall.Sockaddr', 'syscall.SockaddrInet4', + 'syscall.SockaddrInet6', 'syscall.SockaddrUnix', 'syscall.Stat_t', + 'syscall.Statfs_t', 'syscall.Sysinfo_t', 'syscall.Time_t', 'syscall.Timespec', + 'syscall.Timeval', 'syscall.Timex', 'syscall.Tms', 'syscall.Ustat_t', + 'syscall.Utimbuf', 'syscall.Utsname', 'syscall.WaitStatus', + 'syscall.Win32finddata', 'syslog.Priority', 'syslog.Writer', 'tabwriter.Writer', + 'tar.Header', 'tar.Reader', 'tar.Writer', 'template.Error', + 'template.FormatterMap', 'template.Template', 'testing.Benchmark', + 'testing.Regexp', 'testing.Test', 'time.ParseError', 'time.Ticker', 'time.Time', + 'tls.CASet', 'tls.Certificate', 'tls.Config', 'tls.Conn', 'tls.ConnectionState', + 'tls.Listener', 'token.Position', 'token.Token', 'unicode.CaseRange', + 'unicode.Range', 'unsafe.ArbitraryType', 'vector.LessInterface', + 'websocket.Conn', 'websocket.Draft75Handler', 'websocket.Handler', + 'websocket.ProtocolError', 'websocket.WebSocketAddr', 'x509.Certificate', + 'x509.ConstraintViolationError', 'x509.KeyUsage', 'x509.Name', + 'x509.PublicKeyAlgorithm', 'x509.SignatureAlgorithm', + 'x509.UnhandledCriticalExtension', 'x509.UnsupportedAlgorithmError', 'xml.Attr', + 'xml.EndElement', 'xml.Name', 'xml.Parser', 'xml.ProcInst', 'xml.StartElement', + 'xml.SyntaxError', 'xml.Token', 'xml.UnmarshalError', 'xtea.Cipher', + 'xtea.KeySizeError' + ) + ), + 'SYMBOLS' => array( + # delimiters + 1 => array( + '(', ')', '{', '}', '[', ']', ',', ':', ';' + ), + # assignments + 2 => array( + '<<=', '!=', '%=', '&=', '&^=', '*=', '+=', '-=', '/=', ':=', '>>=', + '^=', '|=', '=', '++', '--' + ), + # operators + 3 => array( + '<=', '<', '==', '>', '>=', '&&', '!', '||', '&', '&^', '|', '^', + '>>', '<<', '*', '%', '+', '-', '.', '/', '<-'), + # vararg + 4 => array( + '...' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + # statements + 1 => 'color: #b1b100; font-weight: bold;', + # literals + 2 => 'color: #000000; font-weight: bold;', + # built-in functions + 3 => 'color: #000066;', + # built-in types + 4 => 'color: #993333;', + # library types + 5 => 'color: #003399;' + ), + 'COMMENTS' => array( + # single-line comments + 1 => 'color: #666666; font-style: italic;', + # raw strings + 2 => 'color: #0000ff;', + # multi-line comments + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + # simple escape + 1 => 'color: #000099; font-weight: bold;', + # octal escape + 2 => 'color: #000099;', + # hex escape + 3 => 'color: #000099;', + # unicode escape + 4 => 'color: #000099;', + # long unicode escape + 5 => 'color: #000099;' + ), + 'BRACKETS' => array( + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;', + 0 => 'color: #cc66cc;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + # delimiters + 1 => 'color: #339933;', + # assignments + 2 => 'color: #339933;', + # operators + 3 => 'color: #339933;', + # vararg (highlighted as a keyword) + 4 => 'color: #000000; font-weight: bold;' + ), + 'REGEXPS' => array( + # If CSS classes are enabled, these would be highlighted as numbers (nu0) + # integer literals (possibly imaginary) + //0 => 'color: #cc66cc;', + # real floating point literals + //1 => 'color: #cc66cc;', + # imaginary floating point literals + //2 => 'color: #cc66cc;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => 'http://golang.org/search?q={FNAME}' + ), + 'REGEXPS' => array( + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array(1 => '.'), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, # handled by symbols + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/groovy.php b/inc/geshi/groovy.php index f2a2e9ab5..8a250245a 100644 --- a/inc/geshi/groovy.php +++ b/inc/geshi/groovy.php @@ -4,7 +4,7 @@ * ---------- * Author: Ivan F. Villanueva B. (geshi_groovy@artificialidea.com) * Copyright: (c) 2006 Ivan F. Villanueva B.(http://www.artificialidea.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/04/29 * * Groovy language file for GeSHi. @@ -983,15 +983,15 @@ $language_data = array ( ) ), 'URLS' => array( - 1 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAMEL}', - 2 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAMEL}', + 1 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAMEL}', + 2 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAMEL}', 3 => 'http://www.google.de/search?as_q={FNAME}&num=100&hl=en&as_occt=url&as_sitesearch=java.sun.com%2Fj2se%2F1%2E5%2E0%2Fdocs%2Fapi%2F', - 4 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', - 5 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', - 6 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', - 7 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', - 8 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', - 9 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}' + 4 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}', + 5 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}', + 6 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}', + 7 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}', + 8 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}', + 9 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}' ), 'OOLANG' => true, 'OBJECT_SPLITTERS' => array( diff --git a/inc/geshi/gwbasic.php b/inc/geshi/gwbasic.php index 7b2385de7..e35a322a4 100644 --- a/inc/geshi/gwbasic.php +++ b/inc/geshi/gwbasic.php @@ -4,7 +4,7 @@ * ---------- * Author: José Gabriel Moya Yangüela (josemoya@gmail.com) * Copyright: (c) 2010 José Gabriel Moya Yangüela (http://doc.apagada.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/01/30 * * GwBasic language file for GeSHi. diff --git a/inc/geshi/haskell.php b/inc/geshi/haskell.php index 4997a26c3..ce1b3bf69 100644 --- a/inc/geshi/haskell.php +++ b/inc/geshi/haskell.php @@ -4,7 +4,7 @@ * ---------- * Author: Jason Dagit (dagit@codersbase.com) based on ocaml.php by Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/08/27 * * Haskell language file for GeSHi. diff --git a/inc/geshi/hicest.php b/inc/geshi/hicest.php index 6cb61f87c..67d8d114a 100644 --- a/inc/geshi/hicest.php +++ b/inc/geshi/hicest.php @@ -4,7 +4,7 @@ * -------- * Author: Georg Petrich (spt@hicest.com) * Copyright: (c) 2010 Georg Petrich (http://www.HicEst.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/03/15 * * HicEst language file for GeSHi. diff --git a/inc/geshi/hq9plus.php b/inc/geshi/hq9plus.php index 50a0f80c6..2cce643df 100644 --- a/inc/geshi/hq9plus.php +++ b/inc/geshi/hq9plus.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/10/31 * * HQ9+ language file for GeSHi. diff --git a/inc/geshi/html4strict.php b/inc/geshi/html4strict.php index 301513e4e..68ba72328 100644 --- a/inc/geshi/html4strict.php +++ b/inc/geshi/html4strict.php @@ -4,7 +4,7 @@ * --------------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/10 * * HTML 4.01 strict language file for GeSHi. @@ -59,41 +59,23 @@ $language_data = array ( 'KEYWORDS' => array( 2 => array( 'a', 'abbr', 'acronym', 'address', 'applet', - 'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b', - 'caption', 'center', 'cite', 'code', 'colgroup', 'col', - 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', - 'em', - 'fieldset', 'font', 'form', 'frame', 'frameset', - 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', - 'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i', - 'kbd', - 'label', 'legend', 'link', 'li', - 'map', 'meta', - 'noframes', 'noscript', - 'object', 'ol', 'optgroup', 'option', - 'param', 'pre', 'p', - 'q', - 'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's', - 'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt', - 'ul', 'u', - 'var', ), 3 => array( @@ -151,6 +133,7 @@ $language_data = array ( 0 => 'color: #66cc66;' ), 'SCRIPT' => array( + -2 => 'color: #404040;', // CDATA -1 => 'color: #808080; font-style: italic;', // comments 0 => 'color: #00bbdd;', 1 => 'color: #ddbb00;', @@ -170,6 +153,9 @@ $language_data = array ( ), 'STRICT_MODE_APPLIES' => GESHI_ALWAYS, 'SCRIPT_DELIMITERS' => array( + -2 => array( + '<![CDATA[' => ']]>' + ), -1 => array( '<!--' => '-->' ), @@ -184,6 +170,7 @@ $language_data = array ( ) ), 'HIGHLIGHT_STRICT_BLOCK' => array( + -2 => false, -1 => false, 0 => false, 1 => false, @@ -200,4 +187,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/html5.php b/inc/geshi/html5.php new file mode 100644 index 000000000..7ffd4a05d --- /dev/null +++ b/inc/geshi/html5.php @@ -0,0 +1,212 @@ +<?php +/************************************************************************************* + * html5.php + * --------------- + * Author: Nigel McNie (nigel@geshi.org) + * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.10 + * Date Started: 2004/07/10 + * + * HTML 4.01 strict language file for GeSHi. + * + * CHANGES + * ------- + * 2005/12/28 (1.0.4) + * - Removed escape character for strings + * 2004/11/27 (1.0.3) + * - Added support for multiple object splitters + * 2004/10/27 (1.0.2) + * - Added support for URLs + * 2004/08/05 (1.0.1) + * - Added INS and DEL + * - Removed the background colour from tags' styles + * 2004/07/14 (1.0.0) + * - First Release + * + * TODO (updated 2004/11/27) + * ------------------------- + * * Check that only HTML4 strict attributes are highlighted + * * Eliminate empty tags that aren't allowed in HTML4 strict + * * Split to several files - html4trans, xhtml1 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' => 'HTML', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 2 => array( + 'a', 'abbr', 'address', 'article', 'aside', 'audio'. + + 'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'b', + + 'caption', 'cite', 'code', 'colgroup', 'col', 'canvas', 'command', 'datalist', 'details', + + 'dd', 'del', 'dfn', 'div', 'dl', 'dt', + + 'em', 'embed', + + 'fieldset', 'form', 'figcaption', 'figure', 'footer', + + 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', 'header', 'hgroup', + + 'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i', + + 'kbd', 'keygen', + + 'label', 'legend', 'link', 'li', + + 'map', 'meta', 'mark', 'meter', + + 'noscript', 'nav', + + 'object', 'ol', 'optgroup', 'option', 'output', + + 'param', 'pre', 'p', 'progress', + + 'q', + + 'rp', 'rt', 'ruby', + + 'samp', 'script', 'select', 'small', 'span', 'strong', 'style', 'sub', 'sup', 's', 'section', 'source', 'summary', + + 'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'time', + + 'ul', + + 'var', 'video', + + 'wbr', + ), + 3 => array( + 'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis', 'autocomplete', 'autofocus', + 'background', 'bgcolor', 'border', + 'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords', 'contenteditable', 'contextmenu', + 'data', 'datetime', 'declare', 'defer', 'dir', 'disabled', 'draggable', 'dropzone', + 'enctype', + 'face', 'for', 'frame', 'frameborder', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget', + 'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv', 'hidden', + 'id', 'ismap', + 'label', 'lang', 'language', 'link', 'longdesc', + 'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple', 'min', 'max', + 'name', 'nohref', 'noresize', 'noshade', 'nowrap', 'novalidate', + 'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onselect', 'onsubmit', 'onunload', 'onafterprint', 'onbeforeprint', 'onbeforeonload', 'onerror', 'onhaschange', 'onmessage', 'onoffline', 'ononline', 'onpagehide', 'onpageshow', 'onpopstate', 'onredo', 'onresize', 'onstorage', 'onundo', 'oncontextmenu', 'onformchange', 'onforminput', 'oninput', 'oninvalid', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onmousewheel', 'onscroll', 'oncanplay', 'oncanplaythrough', 'ondurationchange', 'onemptied', 'onended', 'onloadeddata', 'onloadedmetadata', 'onloadstart', 'onpause', 'onplay', 'onplaying', 'onprogress', 'onratechange', 'onreadystatechange', 'onseeked', 'onseeking', 'onstalled', 'onsuspend', 'ontimeupdate', 'onvolumechange', 'onwaiting', + 'profile', 'prompt', 'pattern', 'placeholder', + 'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules', 'required', + 'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary', 'spellcheck', 'step', + 'tabindex', 'target', 'text', 'title', 'type', + 'usemap', + 'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace', + 'width' + ) + ), + 'SYMBOLS' => array( + '/', '=' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #000066;' + ), + 'COMMENTS' => array( + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'SCRIPT' => array( + -2 => 'color: #404040;', // CDATA + -1 => 'color: #808080; font-style: italic;', // comments + 0 => 'color: #00bbdd;', + 1 => 'color: #ddbb00;', + 2 => 'color: #009900;' + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 2 => 'http://december.com/html/4/element/{FNAMEL}.html', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_ALWAYS, + 'SCRIPT_DELIMITERS' => array( + -2 => array( + '<![CDATA[' => ']]>' + ), + -1 => array( + '<!--' => '-->' + ), + 0 => array( + '<!DOCTYPE' => '>' + ), + 1 => array( + '&' => ';' + ), + 2 => array( + '<' => '>' + ) + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + -2 => false, + -1 => false, + 0 => false, + 1 => false, + 2 => true + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 2 => array( + 'DISALLOWED_BEFORE' => '(?<=<|<\/)', + 'DISALLOWED_AFTER' => '(?=\s|\/|>)', + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/icon.php b/inc/geshi/icon.php index 0712c21c3..e68c2f17f 100644 --- a/inc/geshi/icon.php +++ b/inc/geshi/icon.php @@ -4,7 +4,7 @@ * -------- * Author: Matt Oates (mattoates@gmail.com) * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/04/24 * * Icon language file for GeSHi. diff --git a/inc/geshi/idl.php b/inc/geshi/idl.php index d2d9a92fa..84e57f30b 100644 --- a/inc/geshi/idl.php +++ b/inc/geshi/idl.php @@ -4,7 +4,7 @@ * ------- * Author: Cedric Bosdonnat (cedricbosdo@openoffice.org) * Copyright: (c) 2006 Cedric Bosdonnat - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/08/20 * * Unoidl language file for GeSHi. diff --git a/inc/geshi/ini.php b/inc/geshi/ini.php index e48cc045c..2ca7feb0b 100644 --- a/inc/geshi/ini.php +++ b/inc/geshi/ini.php @@ -4,7 +4,7 @@ * -------- * Author: deguix (cevo_deguix@yahoo.com.br) * Copyright: (c) 2005 deguix - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/03/27 * * INI language file for GeSHi. diff --git a/inc/geshi/inno.php b/inc/geshi/inno.php index 9ec8cdfd9..b0878e298 100644 --- a/inc/geshi/inno.php +++ b/inc/geshi/inno.php @@ -4,7 +4,7 @@ * ---------- * Author: Thomas Klingler (hotline@theratech.de) based on delphi.php from J�rja Norbert (jnorbi@vipmail.hu) * Copyright: (c) 2004 J�rja Norbert, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/07/29 * * Inno Script language inkl. Delphi (Object Pascal) language file for GeSHi. diff --git a/inc/geshi/intercal.php b/inc/geshi/intercal.php index cd800a8eb..06fd2b41b 100644 --- a/inc/geshi/intercal.php +++ b/inc/geshi/intercal.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/10/31 * * INTERCAL language file for GeSHi. diff --git a/inc/geshi/io.php b/inc/geshi/io.php index 94c278f03..3d6341fee 100644 --- a/inc/geshi/io.php +++ b/inc/geshi/io.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2006 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/09/23 * * Io language file for GeSHi. Thanks to Johnathan Wright for the suggestion and help diff --git a/inc/geshi/j.php b/inc/geshi/j.php index 61154c7ef..5d464c922 100644 --- a/inc/geshi/j.php +++ b/inc/geshi/j.php @@ -4,13 +4,15 @@ * -------- * Author: Ric Sherlock (tikkanz@gmail.com) * Copyright: (c) 2009 Ric Sherlock - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/11/10 * * J language file for GeSHi. * * CHANGES * ------- + * 2010/07/18 (1.0.8.10) + * - Infinity and negative infinity recognized as numbers * 2010/03/01 (1.0.8.8) * - Add support for label_xyz. and goto_xyz. * - Fix highlighting of for_i. @@ -29,7 +31,6 @@ * 2009/11/12 (1.0.0) * - First Release * - * * TODO (updated 2010/01/27) * ------------------------- * * combine keyword categories by using conditional regex statement in PARSER CONTROL? @@ -53,7 +54,7 @@ * ************************************************************************************/ -$language_data = array ( +$language_data = array( 'LANG_NAME' => 'J', 'COMMENT_SINGLE' => array(), 'COMMENT_MULTI' => array(), @@ -69,12 +70,7 @@ $language_data = array ( 'HARDESCAPE' => array("'"), 'HARDCHAR' => "'", 'NUMBERS' => array( - //Some instances of infinity are not correctly handled by GeSHi NUMBERS currently - //There are two solutions labelled "infinity Method A" and "infinity Method B" - //infinity Method B - requires following adjustment to line 3349 of geshi.php - // preg_match('#\d#' becomes preg_match('#[\d_]#' - 0 => '\b(?:_?\d+(?:\.\d+)?(?:x|[bejprx]_?[\da-z]+(?:\.[\da-z]+)?)?)(?![\w\.\:])', //infinity Method A - //0 => '\b(?:_?\d+(?:\.\d+)?(?:x|[bejprx]_?[\da-z]+(?:\.[\da-z]+)?)?|__?)(?![\w\.\:])', //infinity Method B + 0 => '\b(?:_?\d+(?:\.\d+)?(?:x|[bejprx]_?[\da-z]+(?:\.[\da-z]+)?)?|__?)(?![\w\.\:])', ), 'KEYWORDS' => array( //Control words @@ -87,40 +83,6 @@ $language_data = array ( 2 => array( 'm', 'n', 'u', 'v', 'x', 'y' ), -/* -Commented out for now due to conflicts with Lang Check - //Primitives beginning with a symbol (except . or :) - 6 => array( - '=', '<', '<.', '<:', //verbs - '_:','>', '>.', '>:', - '+', '+.', '+:', '*', '*.', '*:', '-', '-.', '-:', '%', '%.', '%:', - '^', '^.', '$', '$.', '$:', '~.', '~:', '\|', '|.', '|:', - ',', ',.', ',:', ';', ';:', '#', '#.', '#:', '!', '/:', '\:', - '[', '[:', ']', '{', '{.', '{:', '{::', '}.', '}:', - '".', '":', '?', '?.', - '~', '\/;', '\\', '/.', '\\.', '}', //adverbs - '^:', ';.', '!.', '!:', //conj - '"', '`', '`:', '@', '@.', '@:', - '&', '&.', '&:', '&.:', - '_.', //nouns - '=.', '=:', //other - ), - //Primitives beginning with a letter or number - 7 => array( - 'A.', 'c.', 'C.', 'e.', 'E.', //verbs - 'i.', 'i:', 'I.', 'j.', 'L.', 'o.', - 'p.', 'p..', 'p:', 'q:', 'r.', 's:', 'u:', 'x:', - '_9:', '_8:', '_7:', '_6:', '_5:', '_4:', '_3:', '_2:', '_1:', - '0:', '1:', '2:', '3:', '4:', '5:', '6:', '7:', '8:', '9:', - 'b.', 'f.', 'M.', 't.', 't:', //adverbs - 'd.', 'D.', 'D:', 'H.', 'L:', 'S:', 'T.', //conj - 'a.', 'a:', //nouns - ), - //Primitives beginning with symbol . or : - 8 => array( - '..', '.:', '.', ':.', '::', ':', //conj - ), -*/ ), 'SYMBOLS' => array( //Punctuation @@ -132,17 +94,17 @@ Commented out for now due to conflicts with Lang Check GESHI_COMMENTS => false, 1 => true, 2 => true, -// 6 => true, -// 7 => true, -// 8 => true, + //6 => true, + //7 => true, + //8 => true, ), 'STYLES' => array( 'KEYWORDS' => array( 1 => 'color: #0000ff; font-weight: bold;', 2 => 'color: #0000cc; font-weight: bold;', -// 6 => 'color: #000000; font-weight: bold;', -// 7 => 'color: #000000; font-weight: bold;', -// 8 => 'color: #000000; font-weight: bold;', + //6 => 'color: #000000; font-weight: bold;', + //7 => 'color: #000000; font-weight: bold;', + //8 => 'color: #000000; font-weight: bold;', ), 'COMMENTS' => array( 1 => 'color: #666666; font-style: italic;', @@ -171,7 +133,6 @@ Commented out for now due to conflicts with Lang Check ), 'REGEXPS' => array( 0 => 'color: #0000ff; font-weight: bold;', //for_xyz. - same as kw1 - 1 => 'color: #009999; font-weight: bold;' //infinity - same as nu0 ), 'SCRIPT' => array( ) @@ -179,16 +140,15 @@ Commented out for now due to conflicts with Lang Check 'URLS' => array( 1 => '', //'http://www.jsoftware.com/help/dictionary/ctrl.htm', 2 => '', -// 6 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', -// 7 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', -// 8 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', + //6 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', + //7 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', + //8 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', ), 'OOLANG' => false, 'OBJECT_SPLITTERS' => array( ), 'REGEXPS' => array( 0 => '\b(for|goto|label)_[a-zA-Z]\w*\.', //for_xyz. - should be kw1 - 1 => '\b__?(?![\w\.\:])' //infinity - should be nu0 ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( @@ -199,6 +159,9 @@ Commented out for now due to conflicts with Lang Check 'ENABLE_FLAGS' => array( 'BRACKETS' => GESHI_NEVER, ), + 'NUMBERS' => array( + 'PRECHECK_RX' => '#[\d_]#', // underscore is valid number + ), 'KEYWORDS' => array( //Control words 2 => array( @@ -224,4 +187,4 @@ Commented out for now due to conflicts with Lang Check ) ); -?>
\ No newline at end of file +?> diff --git a/inc/geshi/java.php b/inc/geshi/java.php index 3269dffe2..2f3d9fb96 100644 --- a/inc/geshi/java.php +++ b/inc/geshi/java.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/10 * * Java language file for GeSHi. diff --git a/inc/geshi/java5.php b/inc/geshi/java5.php index bc9af739a..6163995f8 100644 --- a/inc/geshi/java5.php +++ b/inc/geshi/java5.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/10 * * Java language file for GeSHi. diff --git a/inc/geshi/javascript.php b/inc/geshi/javascript.php index 429cdd653..93997a70c 100644 --- a/inc/geshi/javascript.php +++ b/inc/geshi/javascript.php @@ -4,7 +4,7 @@ * -------------- * Author: Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2004 Ben Keen (ben.keen@gmail.com), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/20 * * JavaScript language file for GeSHi. @@ -45,8 +45,10 @@ $language_data = array ( 'LANG_NAME' => 'Javascript', 'COMMENT_SINGLE' => array(1 => '//'), 'COMMENT_MULTI' => array('/*' => '*/'), - //Regular Expressions - 'COMMENT_REGEXP' => array(2 => "/(?<=[\\s^])s\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])m?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\,\\;\\)])/iU"), + 'COMMENT_REGEXP' => array( + //Regular Expressions + 2 => "/(?<=[\\s^])(s|tr|y)\\/(?!\*)(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(?<!\s)\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])*(?<!\s)\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?!\*)(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(?<!\s)\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU" + ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'ESCAPE_CHAR' => '\\', @@ -147,4 +149,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/jquery.php b/inc/geshi/jquery.php index 54e653ed1..9374ec1ca 100644 --- a/inc/geshi/jquery.php +++ b/inc/geshi/jquery.php @@ -4,7 +4,7 @@ * -------------- * Author: Rob Loach (http://www.robloach.net) * Copyright: (c) 2009 Rob Loach (http://www.robloach.net) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/07/20 * * jQuery 1.3 language file for GeSHi. diff --git a/inc/geshi/kixtart.php b/inc/geshi/kixtart.php index 62cb54652..f3f29e2e3 100644 --- a/inc/geshi/kixtart.php +++ b/inc/geshi/kixtart.php @@ -4,7 +4,7 @@ * -------- * Author: Riley McArdle (riley@glyff.net) * Copyright: (c) 2007 Riley McArdle (http://www.glyff.net/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/08/31 * * PHP language file for GeSHi. diff --git a/inc/geshi/klonec.php b/inc/geshi/klonec.php index e47e597ef..553763d61 100644 --- a/inc/geshi/klonec.php +++ b/inc/geshi/klonec.php @@ -4,7 +4,7 @@ * -------- * Author: AUGER Mickael * Copyright: Synchronic - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/04/16 * * KLone with C language file for GeSHi. diff --git a/inc/geshi/klonecpp.php b/inc/geshi/klonecpp.php index 1a2d2082b..6fe0df1ef 100644 --- a/inc/geshi/klonecpp.php +++ b/inc/geshi/klonecpp.php @@ -4,7 +4,7 @@ * -------- * Author: AUGER Mickael * Copyright: Synchronic - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/04/16 * * KLone with C++ language file for GeSHi. diff --git a/inc/geshi/latex.php b/inc/geshi/latex.php index 1ba3d409e..91c034236 100644 --- a/inc/geshi/latex.php +++ b/inc/geshi/latex.php @@ -4,7 +4,7 @@ * ----- * Author: efi, Matthias Pospiech (matthias@pospiech.eu) * Copyright: (c) 2006 efi, Matthias Pospiech (matthias@pospiech.eu), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/09/23 * * LaTeX language file for GeSHi. @@ -185,7 +185,7 @@ $language_data = array ( 8 => "\\\\(?:end|begin)(?=[^a-zA-Z])", // {parameters} 9 => array( - GESHI_SEARCH => "(?<=\\{)(?!<\|!REG3XP5!>).*(?=\\})", + GESHI_SEARCH => "(?<=\\{)(?!<\|!REG3XP5!>).*?(?=\\})", GESHI_REPLACE => '\0', GESHI_MODIFIERS => 'Us', GESHI_BEFORE => '', diff --git a/inc/geshi/lb.php b/inc/geshi/lb.php new file mode 100644 index 000000000..390fe19a9 --- /dev/null +++ b/inc/geshi/lb.php @@ -0,0 +1,162 @@ +<?php +/************************************************************************************* + * lb.php + * -------- + * Author: Chris Iverson (cj.no.one@gmail.com) + * Copyright: (c) 2010 Chris Iverson + * Release Version: 1.0.8.10 + * Date Started: 2010/07/18 + * + * Liberty BASIC language file for GeSHi. + * + * CHANGES + * ------- + * 2010/07/22 + * - First Release + * + * 2010/08/23 + * - Added missing default variables + * + * TODO (updated 2010/07/20) + * ------------------------- + * Prevent highlighting numbers in handle names(constants beginning with #) + * Allow number highlighting after a single period(e.g. .9 = 0.9, should be + * highlighted + * Prevent highlighting keywords within branch labels(within brackets) + * + ************************************************************************************* + * + * 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' => 'Liberty BASIC', + 'COMMENT_SINGLE' => array(1 => '\''), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'and', 'append', 'as', 'beep', 'bmpbutton', 'bmpsave', 'boolean', + 'button', 'byref', 'call', 'callback', 'calldll', 'callfn', 'case', + 'checkbox', 'close', 'cls', 'colordialog', 'combobox', 'confirm', + 'cursor', 'data', 'dialog', 'dim', 'dll', 'do', 'double', 'dump', + 'dword', 'else', 'end', 'error', 'exit', 'field', 'filedialog', + 'files', 'fontdialog', 'for', 'function', 'get', 'gettrim', + 'global', 'gosub', 'goto', 'graphicbox', 'graphics', 'groupbox', + 'if', 'input', 'kill', 'let', 'line', 'listbox', 'loadbmp', + 'locate', 'long', 'loop', 'lprint', 'mainwin', 'maphandle', 'menu', + 'mod', 'name', 'next', 'nomainwin', 'none', 'notice', 'on', + 'oncomerror', 'or', 'open', 'out', 'output', 'password', 'playmidi', + 'playwave', 'popupmenu', 'print', 'printerdialog', 'prompt', 'ptr', + 'put', 'radiobutton', 'random', 'randomize', 'read', 'readjoystick', + 'redim', 'rem', 'restore', 'resume', 'return', 'run', 'scan', + 'seek', 'select', 'short', 'sort', 'statictext', 'stop', 'stopmidi', + 'struct', 'stylebits', 'sub', 'text', 'textbox', 'texteditor', + 'then', 'timer', 'titlebar', 'to', 'trace', 'ulong', 'unloadbmp', + 'until', 'ushort', 'void', 'wait', 'window', 'wend', 'while', + 'word', 'xor' + ), + 2 => array( + 'abs', 'acs', 'asc', 'asn', 'atn', 'chr$', 'cos', 'date$', + 'dechex$', 'eof', 'eval', 'eval$', 'exp', 'hbmp', 'hexdec', 'hwnd', + 'inp', 'input$', 'inputto$', 'instr', 'int', 'left$', 'len', 'lof', + 'log', 'lower$', 'max', 'midipos', 'mid$', 'min', 'mkdir', 'not', + 'right$', 'rmdir', 'rnd', 'sin', 'space$', 'sqr', 'str$', 'tab', + 'tan', 'time$', 'trim$', 'txcount', 'upper$', 'using', 'val', + 'winstring', 'word$' + ), + 3 => array( + 'BackgroundColor$', 'Com', 'ComboboxColor$', 'ComError', 'ComErrorNumber', + 'CommandLine$', 'ComPortNumber', 'DefaultDir$', + 'DisplayHeight', 'DisplayWidth', 'Drives$', 'Err', 'Err$', + 'ForegroundColor$', 'Inkey$', 'Joy1x', 'Joy1y', 'Joy1z', + 'Joy1button1', 'Joy1button2', 'Joy2x', 'Joy2y', 'Joy2z', + 'Joy2button1', 'Joy2button2', 'ListboxColor$', 'MouseX', 'MouseY', 'Platform$', + 'PrintCollate', 'PrintCopies', 'PrinterFont$', 'PrinterName$', 'StartupDir$', + 'TextboxColor$', 'TexteditorColor$', 'Version$', 'WindowHeight', + 'WindowWidth', 'UpperLeftX', 'UpperLeftY' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', ':', ',', '#' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000FF;', + 2 => 'color: #AD0080;', + 3 => 'color: #008080;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #008000;' + ), + 'NUMBERS' => array( + 0 => 'color: #FF0000;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 2 => array( + //In LB, the second keyword list is a list of built-in functions, + //and their names should not be highlighted unless being used + //as a function name. + 'DISALLOWED_AFTER' => '(?=\s*\()' + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/lisp.php b/inc/geshi/lisp.php index a8f50691e..82aa7f69b 100644 --- a/inc/geshi/lisp.php +++ b/inc/geshi/lisp.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/30 * * Generic Lisp language file for GeSHi. diff --git a/inc/geshi/llvm.php b/inc/geshi/llvm.php new file mode 100644 index 000000000..f58be2da8 --- /dev/null +++ b/inc/geshi/llvm.php @@ -0,0 +1,385 @@ +<?php +/************************************************************************************* + * llvm.php + * -------- + * Author: Benny Baumann (BenBE@geshi.org), Azriel Fasten (azriel.fasten@gmail.com) + * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/), Azriel Fasten (azriel.fasten@gmail.com) + * Release Version: 1.0.8.10 + * Date Started: 2010/10/14 + * + * LLVM language file for GeSHi. + * + * CHANGES + * ------- + * 2010/10/14 (1.0.8.10) + * - First Release + * + * TODO (updated 2010/10/14) + * ------------------------- + * * Check if all links aren't broken + * + ************************************************************************************* + * + * 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' => 'LLVM Intermediate Representation', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'HARDQUOTE' => array("\"", "\""), + 'HARDESCAPE' => array("\"", "\\"), + 'HARDCHAR' => "\\", + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + // 1 => "#\\\\[nfrtv\$\"\n\\\\]#i", + //Hexadecimal Char Specs + // 2 => "#\\\\x[\da-fA-F]{1,2}#i", + //Octal Char Specs + // 3 => "#\\\\[0-7]{1,3}#", + //String Parsing of Variable Names + // 4 => "#\\$[a-z0-9_]+(?:\\[[a-z0-9_]+\\]|->[a-z0-9_]+)?|(?:\\{\\$|\\$\\{)[a-z0-9_]+(?:\\[('?)[a-z0-9_]*\\1\\]|->[a-z0-9_]+)*\\}#i", + //Experimental extension supporting cascaded {${$var}} syntax + // 5 => "#\$[a-z0-9_]+(?:\[[a-z0-9_]+\]|->[a-z0-9_]+)?|(?:\{\$|\$\{)[a-z0-9_]+(?:\[('?)[a-z0-9_]*\\1\]|->[a-z0-9_]+)*\}|\{\$(?R)\}#i", + //Format String support in ""-Strings + // 6 => "#%(?:%|(?:\d+\\\\\\\$)?\\+?(?:\x20|0|'.)?-?(?:\d+|\\*)?(?:\.\d+)?[bcdefFosuxX])#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 0 => array( + 'to', 'nuw', 'nsw', 'align', 'inbounds', 'entry', 'return' + ), + //Terminator Instructions + 1 => array( + 'ret', 'br', 'switch', 'indirectbr', 'invoke', 'unwind', 'unreachable' + ), + //Binary Operations + 2 => array( + 'add', 'fadd', 'sub', 'fsub', 'mul', 'fmul', 'udiv', 'sdiv', 'fdiv', 'urem', 'frem', 'srem' + ), + //Bitwise Binary Operations + 3 => array( + 'shl', 'lshr', 'ashr', 'and', 'or', 'xor' + ), + //Vector Operations + 4 => array( + 'extractelement', 'insertelement', 'shufflevector' + ), + //Aggregate Operations + 5 => array( + 'extractvalue', 'insertvalue' + ), + //Memory Access and Addressing Operations + 6 => array( + 'alloca', 'load', 'store', 'getelementptr' + ), + //Conversion Operations + 7 => array( + 'trunc', 'zext', 'sext', 'fptrunc', 'fpext', 'fptoui', 'fptosi', + 'uitofp', 'sitofp', 'ptrtoint', 'inttoptr', 'bitcast' + ), + //Other Operations + 8 => array( + 'icmp', 'fcmp', 'phi', 'select', 'call', 'va_arg' + ), + //Linkage Types + 9 => array( + 'private', 'linker_private', 'linker_private_weak', 'linker_private_weak_def_auto', + 'internal', 'available_externally', 'linkonce', 'common', 'weak', 'appending', + 'extern_weak', 'linkonce_odr', 'weak_odr', 'externally visible', 'dllimport', 'dllexport', + ), + //Calling Conventions + 10 => array( + 'ccc', 'fastcc', 'coldcc', 'cc 10' + ), + //Named Types + 11 => array( + 'type' + ), + //Parameter Attributes + 12 => array( + 'zeroext', 'signext', 'inreg', 'byval', 'sret', 'noalias', 'nocapture', 'nest' + ), + //Function Attributes + 13 => array( + 'alignstack', 'alwaysinline', 'inlinehint', 'naked', 'noimplicitfloat', 'noinline', 'noredzone', 'noreturn', + 'nounwind', 'optsize', 'readnone', 'readonly', 'ssp', 'sspreq', + ), + //Module-Level Inline Assembly + 14 => array( + 'module asm' + ), + //Data Layout + 15 => array( + 'target datalayout' + ), + //Primitive Types + 16 => array( + 'x86mmx', + 'void', + 'label', + 'metadata', + 'opaque' + ), + //Floating Point Types + 17 => array( + 'float', 'double', 'fp128', 'x86_fp80', 'ppc_fp128', + ), + //Simple Constants + 18 => array( + 'false', 'true', 'null' + ), + //Global Variable and Function Addresses + 19 => array( + 'global', 'addrspace', 'constant', 'section' + ), + //Functions + 20 => array( + 'declare', 'define' + ), + //Complex Constants + 21 => array( + 'zeroinitializer' + ), + //Undefined Values + 22 => array( + 'undef' + ), + //Addresses of Basic Blocks + 23 => array( + 'blockaddress' + ), + //Visibility Styles + 24 => array( + 'default', 'hidden', 'protected' + ), + 25 => array( + 'volatile' + ), + 26 => array( + 'tail' + ), + ), + 'SYMBOLS' => array( + 0 => array( + '(', ')', '[', ']', '{', '}', + '!', '@', '%', '&', '|', '/', + '<', '>', + '=', '-', '+', '*', + '.', ':', ',', ';' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, + 9 => true, + 10 => true, + 11 => true, + 12 => true, + 13 => true, + 14 => true, + 15 => true, + 16 => true, + 17 => true, + 18 => true, + 19 => true, + 20 => true, + 21 => true, + 22 => true, + 23 => true, + 24 => true, + 25 => true, + 26 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 0 => 'color: #209090;', + 1 => 'color: #0000F0;', + 2 => 'color: #00F000; font-weight: bold;', + 3 => 'color: #F00000;', + 4 => 'color: #00F0F0; font-weight: bold;', + 5 => 'color: #F000F0; font-weight: bold;', + 6 => 'color: #403020; font-weight: bold;', + 7 => 'color: #909090; font-weight: bold;', + 8 => 'color: #009090; font-weight: bold;', + 9 => 'color: #900090; font-weight: bold;', + 10 => 'color: #909000; font-weight: bold;', + 11 => 'color: #000090; font-weight: bold;', + 12 => 'color: #900000; font-weight: bold;', + 13 => 'color: #009000; font-weight: bold;', + 14 => 'color: #F0F090; font-weight: bold;', + 15 => 'color: #F090F0; font-weight: bold;', + 16 => 'color: #90F0F0; font-weight: bold;', + 17 => 'color: #9090F0; font-weight: bold;', + 18 => 'color: #90F090; font-weight: bold;', + 19 => 'color: #F09090; font-weight: bold;', + 20 => 'color: #4040F0; font-weight: bold;', + 21 => 'color: #40F040; font-weight: bold;', + 22 => 'color: #F04040; font-weight: bold;', + 23 => 'color: #F0F040; font-weight: bold;', + 24 => 'color: #F040F0; font-weight: bold;', + 25 => 'color: #40F0F0; font-weight: bold;', + 26 => 'color: #904040; font-weight: bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; 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: #006699; font-weight: bold;', + 5 => 'color: #006699; font-weight: bold; font-style: italic;', + 6 => 'color: #009933; font-weight: bold;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;', + 'HARD' => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + ), + 'METHODS' => array( + 1 => 'color: #004000;', + 2 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;', + ), + 'REGEXPS' => array( + 0 => 'color: #007088;', + 1 => 'color: #007088;', + // 2 => 'color: #000088;', + 3 => 'color: #700088;', + 4 => 'color: #010088;', + // 5 => 'color: #610088;', + // 6 => 'color: #616088;', + // 7 => 'color: #616988;', + // 8 => 'color: #616908;', + 9 => 'color: #6109F8;', + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '' + ) + ), + 'URLS' => array( + 0 => '', + 1 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 2 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 3 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 4 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 5 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 6 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 7 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 8 => 'http://llvm.org/docs/LangRef.html#i_{FNAME}', + 9 => 'http://llvm.org/docs/LangRef.html#linkage_{FNAME}', + 10 => 'http://llvm.org/docs/LangRef.html#callingconv', + 11 => 'http://llvm.org/docs/LangRef.html#namedtypes', + 12 => 'http://llvm.org/docs/LangRef.html#paramattrs', + 13 => 'http://llvm.org/docs/LangRef.html#fnattrs', + 14 => 'http://llvm.org/docs/LangRef.html#moduleasm', + 15 => 'http://llvm.org/docs/LangRef.html#datalayout', + 16 => 'http://llvm.org/docs/LangRef.html#t_{FNAME}', + 17 => 'http://llvm.org/docs/LangRef.html#t_floating', + 18 => 'http://llvm.org/docs/LangRef.html#simpleconstants', + 19 => 'http://llvm.org/docs/LangRef.html#globalvars', + 20 => 'http://llvm.org/docs/LangRef.html#functionstructure', + 21 => 'http://llvm.org/docs/LangRef.html#complexconstants', + 22 => 'http://llvm.org/docs/LangRef.html#undefvalues', + 23 => 'http://llvm.org/docs/LangRef.html#blockaddress', + 24 => 'http://llvm.org/docs/LangRef.html#visibility', + 25 => 'http://llvm.org/docs/LangRef.html#volatile', + 26 => 'http://llvm.org/docs/LangRef.html#i_call', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Variables + 0 => '%[-a-zA-Z$\._][-a-zA-Z$\._0-9]*', + //Labels + // 1 => '[-a-zA-Z$\._0-9]+:', + 1 => '(?<!\w)[\-\w\$\.]+:(?![^">]*<)', + //Strings + // 2 => '"[^"]+"', + //Unnamed variable slots + 3 => '%[-]?[0-9]+', + //Integer Types + 4 => array( + GESHI_SEARCH => '(?<!\w)i\d+(?!\w)', + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '<a href="http://llvm.org/docs/LangRef.html#t_integer">', + GESHI_AFTER => '</a>' + ), + //Comments + // 5 => ';.*', + //Integer literals + // 6 => '\\b[-]?[0-9]+\\b', + //Floating point constants + // 7 => '\\b[-+]?[0-9]+\.[0-9]*\([eE][-+]?[0-9]+\)?\\b', + //Hex constants + // 8 => '\\b0x[0-9A-Fa-f]+\\b', + //Global variables + 9 => array( + GESHI_SEARCH => '@[-a-zA-Z$\._][-a-zA-Z$\._0-9]*', + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '<a href="http://llvm.org/docs/LangRef.html#globalvars">', + GESHI_AFTER => '</a>' + ), + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true + ), + 'SCRIPT_DELIMITERS' => array(), + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/locobasic.php b/inc/geshi/locobasic.php index a3e22a7be..55aacc263 100644 --- a/inc/geshi/locobasic.php +++ b/inc/geshi/locobasic.php @@ -4,7 +4,7 @@ * ------------- * Author: Nacho Cabanes * Copyright: (c) 2009 Nacho Cabanes (http://www.nachocabanes.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/03/22 * * Locomotive Basic (Amstrad CPC series) language file for GeSHi. diff --git a/inc/geshi/logtalk.php b/inc/geshi/logtalk.php index fb77bd6d3..b4eba764c 100644 --- a/inc/geshi/logtalk.php +++ b/inc/geshi/logtalk.php @@ -4,14 +4,25 @@ * ----------- * * Author: Paulo Moura (pmoura@logtalk.org) - * Copyright: (c) 2009 Paulo Moura (http://logtalk.org/) - * Release Version: 1.0.8.8 + * Copyright: (c) 2009-2011 Paulo Moura (http://logtalk.org/) + * Release Version: 1.0.8.10 * Date Started: 2009/10/24 * * Logtalk language file for GeSHi. * * CHANGES * ------- + * 2011/01/18 (1.1.4) + * - Added syntax coloring of ignore/1 + * 2010/11/28 (1.1.3) + * - Added syntax coloring of conforms_to_protocol/2-3 + * 2010/09/14 (1.1.2) + * - Added syntax coloring of coinductive/1 + * 2010/06/23 (1.1.1) + * - Added syntax coloring of e/0 and pi/0 + * - Added syntax coloring of ground/1, numbervars/3, keysort/2, and sort/2 + * 2010/05/15 (1.1.0) + * - Added syntax coloring of callable/1 and compare/3 * 2009/10/28 (1.0.0) * - First Release * @@ -76,7 +87,7 @@ $language_data = array( // entity directives 'calls', 'initialization', 'op', 'uses', // predicate directives - 'alias', 'discontiguous', 'dynamic', 'mode', 'info', 'meta_predicate', 'multifile', 'synchronized', + 'alias', 'coinductive', 'discontiguous', 'dynamic', 'mode', 'info', 'meta_predicate', 'multifile', 'synchronized', // module directives 'export', 'module', 'reexport', 'use_module' ), @@ -111,7 +122,7 @@ $language_data = array( 'current_category', 'current_object', 'current_protocol', 'category_property', 'object_property', 'protocol_property', // entity relations - 'complements_object', + 'complements_object', 'conforms_to_protocol', 'extends_category', 'extends_object', 'extends_protocol', 'implements_protocol', 'imports_category', 'instantiates_class', 'specializes_class', @@ -125,7 +136,7 @@ $language_data = array( // database 'abolish', 'asserta', 'assertz', 'clause', 'retract', 'retractall', // control - 'call', 'catch', 'once', 'throw', + 'call', 'catch', 'ignore', 'once', 'throw', // all solutions predicates 'bagof', 'findall', 'forall', 'setof', // multi-threading meta-predicates @@ -139,9 +150,11 @@ $language_data = array( 'number_chars', 'number_codes', 'char_code', // term creation and decomposition - 'arg', 'copy_term', 'functor', + 'arg', 'copy_term', 'functor', 'numbervars', // term testing - 'atom', 'atomic', 'compound', 'float', 'integer', 'nonvar', 'number', 'sub_atom', 'var', + 'atom', 'atomic', 'callable', 'compound', 'float', 'ground', 'integer', 'nonvar', 'number', 'sub_atom', 'var', + // term comparison + 'compare', // stream selection and control 'current_input', 'current_output', 'set_input', 'set_output', 'open', 'close', 'flush_output', 'stream_property', @@ -156,8 +169,10 @@ $language_data = array( 'write', 'writeq', 'write_canonical', 'write_term', 'read', 'read_term', 'char_conversion', 'current_char_conversion', - // - 'halt' + // hooks + 'halt', + // sorting + 'keysort', 'sort' ), // Built-in predicates (no arguments) 5 => array( @@ -180,7 +195,7 @@ $language_data = array( ), // Evaluable functors (no arguments) 7 => array( - 'mod', 'rem' + 'e', 'pi', 'mod', 'rem' ), ), 'SYMBOLS' => array( diff --git a/inc/geshi/lolcode.php b/inc/geshi/lolcode.php index a804913cc..bcbad11c6 100644 --- a/inc/geshi/lolcode.php +++ b/inc/geshi/lolcode.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/10/31 * * LOLcode language file for GeSHi. diff --git a/inc/geshi/lotusformulas.php b/inc/geshi/lotusformulas.php index 862adbc82..5b755e55a 100644 --- a/inc/geshi/lotusformulas.php +++ b/inc/geshi/lotusformulas.php @@ -4,7 +4,7 @@ * ------------------------ * Author: Richard Civil (info@richardcivil.net) * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/04/12 * * @Formula/@Command language file for GeSHi. diff --git a/inc/geshi/lotusscript.php b/inc/geshi/lotusscript.php index 1ef2f3eee..c2b2f45f5 100644 --- a/inc/geshi/lotusscript.php +++ b/inc/geshi/lotusscript.php @@ -4,7 +4,7 @@ * ------------------------ * Author: Richard Civil (info@richardcivil.net) * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/04/12 * * LotusScript language file for GeSHi. diff --git a/inc/geshi/lscript.php b/inc/geshi/lscript.php index b7e313212..51852414b 100644 --- a/inc/geshi/lscript.php +++ b/inc/geshi/lscript.php @@ -4,7 +4,7 @@ * --------- * Author: Arendedwinter (admin@arendedwinter.com) * Copyright: (c) 2008 Beau McGuigan (http://www.arendedwinter.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 15/11/2008 * * Lightwave Script language file for GeSHi. diff --git a/inc/geshi/lsl2.php b/inc/geshi/lsl2.php index e5f40969b..828e2b91c 100644 --- a/inc/geshi/lsl2.php +++ b/inc/geshi/lsl2.php @@ -4,7 +4,7 @@ * -------- * Author: William Fry (william.fry@nyu.edu) * Copyright: (c) 2009 William Fry - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/02/04 * * Linden Scripting Language (LSL2) language file for GeSHi. diff --git a/inc/geshi/lua.php b/inc/geshi/lua.php index abeaa54ea..2ec6c0b88 100644 --- a/inc/geshi/lua.php +++ b/inc/geshi/lua.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/10 * * LUA language file for GeSHi. @@ -46,13 +46,29 @@ $language_data = array ( 'LANG_NAME' => 'Lua', 'COMMENT_SINGLE' => array(1 => "--"), 'COMMENT_MULTI' => array('--[[' => ']]'), + 'COMMENT_REGEXP' => array(2 => "/\[(=*)\[.*?\]\1\]/s"), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), - 'ESCAPE_CHAR' => '\\', + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\abfnrtv\'\"]#i", + //Octal Char Specs + 2 => "#\\\\\\d{1,3}#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | 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','break','do','else','elseif','end','false','for','function','if', - 'in','local','nil','not','or','repeat','return','then','true','until','while', + 'break','do','else','elseif','end','for','function','if', + 'local','repeat','return','then','until','while' + ), + 2 => array( + 'and','in','not','or' + ), + 3 => array( '_VERSION','assert','collectgarbage','dofile','error','gcinfo','loadfile','loadstring', 'print','tonumber','tostring','type','unpack', '_ALERT','_ERRORMESSAGE','_INPUT','_PROMPT','_OUTPUT', @@ -79,37 +95,57 @@ $language_data = array ( 'os.clock','os.date','os.difftime','os.execute','os.exit','os.getenv','os.remove','os.rename', 'os.setlocale','os.time','os.tmpname', 'string','table','math','coroutine','io','os','debug' + ), + 4 => array( + 'nil', 'false', 'true' + ), + 5 => array( + 'Nil', 'Boolean', 'Number', 'String', 'Userdata', 'Thread', 'Table' ) ), 'SYMBOLS' => array( - '(', ')', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>', '=', ';' + '+', '-', '*', '/', '%', '^', '#', + '==', '~=', '<=', '>=', '<', '>', '=', + '(', ')', '{', '}', '[', ']', + ';', ':', ',', '.', '..', '...' ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, - 1 => true + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true ), 'STYLES' => array( 'KEYWORDS' => array( - 1 => 'color: #b1b100;' + 1 => 'color: #aa9900; font-weight: bold;', + 2 => 'color: #aa9900; font-weight: bold;', + 3 => 'color: #0000aa;', + 4 => 'color: #aa9900;', + 5 => 'color: #aa9900;' ), 'COMMENTS' => array( 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #ff0000;', 'MULTI' => 'color: #808080; font-style: italic;' ), 'ESCAPE_CHAR' => array( - 0 => 'color: #000099; font-weight: bold;' + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #000099; font-weight: bold;' ), 'BRACKETS' => array( 0 => 'color: #66cc66;' ), 'STRINGS' => array( - 0 => 'color: #ff0000;' + 0 => 'color: #ff6666;' ), 'NUMBERS' => array( 0 => 'color: #cc66cc;' ), 'METHODS' => array( - 0 => 'color: #b1b100;' + 0 => 'color: #aa9900;' ), 'SYMBOLS' => array( 0 => 'color: #66cc66;' @@ -120,7 +156,11 @@ $language_data = array ( ) ), 'URLS' => array( - 1 => '' + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '' ), 'OOLANG' => false, 'OBJECT_SPLITTERS' => array( @@ -134,4 +174,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/m68k.php b/inc/geshi/m68k.php index 543b73c8b..081578158 100644 --- a/inc/geshi/m68k.php +++ b/inc/geshi/m68k.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2007 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/02/06 * * Motorola 68000 Assembler language file for GeSHi. diff --git a/inc/geshi/magiksf.php b/inc/geshi/magiksf.php index f3da7fcf2..b6f431ea8 100644 --- a/inc/geshi/magiksf.php +++ b/inc/geshi/magiksf.php @@ -4,7 +4,7 @@ * -------- * Author: Sjoerd van Leent (svanleent@gmail.com) * Copyright: (c) 2010 Sjoerd van Leent - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/02/15 * * MagikSF language file for GeSHi. diff --git a/inc/geshi/make.php b/inc/geshi/make.php index 689552312..2d5d73425 100644 --- a/inc/geshi/make.php +++ b/inc/geshi/make.php @@ -4,7 +4,7 @@ * -------- * Author: Neil Bird <phoenix@fnxweb.com> * Copyright: (c) 2008 Neil Bird - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/08/26 * * make language file for GeSHi. diff --git a/inc/geshi/mapbasic.php b/inc/geshi/mapbasic.php index 0025d4e22..7d365263d 100644 --- a/inc/geshi/mapbasic.php +++ b/inc/geshi/mapbasic.php @@ -4,7 +4,7 @@ * ------ * Author: Tomasz Berus (t.berus@gisodkuchni.pl) * Copyright: (c) 2009 Tomasz Berus (http://sourceforge.net/projects/mbsyntax/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/11/25 * * MapBasic language file for GeSHi. diff --git a/inc/geshi/matlab.php b/inc/geshi/matlab.php index 1f9c12b78..5c64a0d49 100644 --- a/inc/geshi/matlab.php +++ b/inc/geshi/matlab.php @@ -4,7 +4,7 @@ * ----------- * Author: Florian Knorn (floz@gmx.de) * Copyright: (c) 2004 Florian Knorn (http://www.florian-knorn.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/02/09 * * Matlab M-file language file for GeSHi. diff --git a/inc/geshi/mirc.php b/inc/geshi/mirc.php index 1b7df83aa..e9e0346e6 100644 --- a/inc/geshi/mirc.php +++ b/inc/geshi/mirc.php @@ -4,7 +4,7 @@ * ----- * Author: Alberto 'Birckin' de Areba (Birckin@hotmail.com) * Copyright: (c) 2006 Alberto de Areba - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/05/29 * * mIRC Scripting language file for GeSHi. diff --git a/inc/geshi/mmix.php b/inc/geshi/mmix.php index 3e90dce29..8e57ad7b9 100644 --- a/inc/geshi/mmix.php +++ b/inc/geshi/mmix.php @@ -4,7 +4,7 @@ * ------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/10/16 * * MMIX Assembler language file for GeSHi. diff --git a/inc/geshi/modula2.php b/inc/geshi/modula2.php index 042e7404a..131543baa 100644 --- a/inc/geshi/modula2.php +++ b/inc/geshi/modula2.php @@ -4,7 +4,7 @@ * ----------- * Author: Benjamin Kowarsch (benjamin@modula2.net) * Copyright: (c) 2009 Benjamin Kowarsch (benjamin@modula2.net) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/11/05 * * Modula-2 language file for GeSHi. diff --git a/inc/geshi/modula3.php b/inc/geshi/modula3.php index ad827a3e6..21b2e255d 100644 --- a/inc/geshi/modula3.php +++ b/inc/geshi/modula3.php @@ -4,7 +4,7 @@ * ---------- * Author: mbishop (mbishop@esoteriq.org) * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/01/21 * * Modula-3 language file for GeSHi. diff --git a/inc/geshi/mpasm.php b/inc/geshi/mpasm.php index 59247ff69..70f12de48 100644 --- a/inc/geshi/mpasm.php +++ b/inc/geshi/mpasm.php @@ -4,7 +4,7 @@ * --------- * Author: Bakalex (bakalex@gmail.com) * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/12/6 * * Microchip Assembler language file for GeSHi. diff --git a/inc/geshi/mxml.php b/inc/geshi/mxml.php index df4c9d50e..72a071aae 100644 --- a/inc/geshi/mxml.php +++ b/inc/geshi/mxml.php @@ -4,7 +4,7 @@ * ------- * Author: David Spurr * Copyright: (c) 2007 David Spurr (http://www.defusion.org.uk/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/10/04 * * MXML language file for GeSHi. Based on the XML file by Nigel McNie diff --git a/inc/geshi/mysql.php b/inc/geshi/mysql.php index ca171733f..b85377d1c 100644 --- a/inc/geshi/mysql.php +++ b/inc/geshi/mysql.php @@ -4,7 +4,7 @@ * --------- * Author: Marjolein Katsma (marjolein.is.back@gmail.com) * Copyright: (c) 2008 Marjolein Katsma (http://blog.marjoleinkatsma.com/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008-12-12 * * MySQL language file for GeSHi. diff --git a/inc/geshi/newlisp.php b/inc/geshi/newlisp.php index 027e86588..508f116b7 100644 --- a/inc/geshi/newlisp.php +++ b/inc/geshi/newlisp.php @@ -4,7 +4,7 @@ * ---------- * Author: cormullion (cormullion@mac.com) Sept 2009 * Copyright: (c) 2009 Cormullion (http://unbalanced-parentheses.nfshost.com/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/09/30 * * newLISP language file for GeSHi. diff --git a/inc/geshi/nsis.php b/inc/geshi/nsis.php index 5631a8389..ab05ed82b 100644 --- a/inc/geshi/nsis.php +++ b/inc/geshi/nsis.php @@ -4,7 +4,7 @@ * -------- * Author: deguix (cevo_deguix@yahoo.com.br), Tux (http://tux.a4.cz/) * Copyright: (c) 2005 deguix, 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/12/03 * * Nullsoft Scriptable Install System language file for GeSHi. diff --git a/inc/geshi/oberon2.php b/inc/geshi/oberon2.php index 8339f3fb8..33b828df5 100644 --- a/inc/geshi/oberon2.php +++ b/inc/geshi/oberon2.php @@ -4,7 +4,7 @@ * ---------- * Author: mbishop (mbishop@esoteriq.org) * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/02/10 * * Oberon-2 language file for GeSHi. diff --git a/inc/geshi/objc.php b/inc/geshi/objc.php index 5a5c5940f..3b2c593ef 100644 --- a/inc/geshi/objc.php +++ b/inc/geshi/objc.php @@ -5,7 +5,7 @@ * Author: M. Uli Kusterer (witness.of.teachtext@gmx.net) * Contributors: Quinn Taylor (quinntaylor@mac.com) * Copyright: (c) 2008 Quinn Taylor, 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * Objective-C language file for GeSHi. diff --git a/inc/geshi/objeck.php b/inc/geshi/objeck.php new file mode 100644 index 000000000..5ab3642e5 --- /dev/null +++ b/inc/geshi/objeck.php @@ -0,0 +1,116 @@ +<?php +/************************************************************************************* + * objeck.php + * -------- + * Author: Randy Hollines (objeck@gmail.com) + * Copyright: (c) 2010 Randy Hollines (http://code.google.com/p/objeck-lang/) + * Release Version: 1.0.8.10 + * Date Started: 2010/07/01 + * + * Objeck Programming Language language file for GeSHi. + * + * CHANGES + * ------- + * 2010/07/26 (1.0.8.10) + * - Added new and missing keywords and symbols: 'String', 'each', '+=', '-=', '*=' and '/='. + * 2010/07/01 (1.0.8.9) + * - First Release + * + ************************************************************************************* + * + * 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' => 'Objeck Programming Language', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array('#~' => '~#'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'virtual', 'if', 'else', 'do', 'while', 'use', 'bundle', 'native', + 'static', 'public', 'private', 'class', 'function', 'method', + 'select', 'other', 'enum', 'for', 'each', 'label', 'return', 'from' + ), + 2 => array( + 'Byte', 'Int', 'Nil', 'Float', 'Char', 'Bool', 'String' + ), + 3 => array( + 'true', 'false' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', '&', '|', ':', ';', ',', '+=', '-=', '*=', '/=', + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #b1b100;', + 3 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '->' + ), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?>
\ No newline at end of file diff --git a/inc/geshi/ocaml-brief.php b/inc/geshi/ocaml-brief.php index 2e2a82fb2..d988409e8 100644 --- a/inc/geshi/ocaml-brief.php +++ b/inc/geshi/ocaml-brief.php @@ -4,7 +4,7 @@ * ---------- * Author: Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/08/27 * * OCaml (Objective Caml) language file for GeSHi. diff --git a/inc/geshi/ocaml.php b/inc/geshi/ocaml.php index 46e6a22aa..4e36f3c30 100644 --- a/inc/geshi/ocaml.php +++ b/inc/geshi/ocaml.php @@ -4,7 +4,7 @@ * ---------- * Author: Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/08/27 * * OCaml (Objective Caml) language file for GeSHi. diff --git a/inc/geshi/oobas.php b/inc/geshi/oobas.php index 6f6e13fc2..f4e15893a 100644 --- a/inc/geshi/oobas.php +++ b/inc/geshi/oobas.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/30 * * OpenOffice.org Basic language file for GeSHi. diff --git a/inc/geshi/oracle11.php b/inc/geshi/oracle11.php index f57c3f044..bd3d30501 100644 --- a/inc/geshi/oracle11.php +++ b/inc/geshi/oracle11.php @@ -6,7 +6,7 @@ * Contributions: * - Updated for 11i by Simon Redhead * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * Oracle 11i language file for GeSHi. diff --git a/inc/geshi/oracle8.php b/inc/geshi/oracle8.php index e470e0dd4..bc80735c4 100644 --- a/inc/geshi/oracle8.php +++ b/inc/geshi/oracle8.php @@ -4,7 +4,7 @@ * ----------- * Author: Guy Wicks (Guy.Wicks@rbs.co.uk) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * Oracle 8 language file for GeSHi. diff --git a/inc/geshi/oxygene.php b/inc/geshi/oxygene.php index 3af03bfc2..cfab3d34f 100644 --- a/inc/geshi/oxygene.php +++ b/inc/geshi/oxygene.php @@ -4,7 +4,7 @@ * ---------- * Author: Carlo Kok (ck@remobjects.com), J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/01/11 * * Delphi Prism (Oxygene) language file for GeSHi. diff --git a/inc/geshi/oz.php b/inc/geshi/oz.php index cd594d4ca..f371a6457 100644 --- a/inc/geshi/oz.php +++ b/inc/geshi/oz.php @@ -4,7 +4,7 @@ * -------- * Author: Wolfgang Meyer (Wolfgang.Meyer@gmx.net) * Copyright: (c) 2010 Wolfgang Meyer - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/01/03 * * Oz language file for GeSHi. diff --git a/inc/geshi/pascal.php b/inc/geshi/pascal.php index 7ee5729a6..2252a11de 100644 --- a/inc/geshi/pascal.php +++ b/inc/geshi/pascal.php @@ -4,7 +4,7 @@ * ---------- * Author: Tux (tux@inamil.cz) * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/26 * * Pascal language file for GeSHi. diff --git a/inc/geshi/pcre.php b/inc/geshi/pcre.php index a67cf2858..1944bfdb3 100644 --- a/inc/geshi/pcre.php +++ b/inc/geshi/pcre.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/05/22 * * PCRE language file for GeSHi. diff --git a/inc/geshi/per.php b/inc/geshi/per.php index b656c105e..9819c03f5 100644 --- a/inc/geshi/per.php +++ b/inc/geshi/per.php @@ -4,7 +4,7 @@ * -------- * Author: Lars Gersmann (lars.gersmann@gmail.com) * Copyright: (c) 2007 Lars Gersmann - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/06/03 * * Per (forms) (FOURJ's Genero 4GL) language file for GeSHi. diff --git a/inc/geshi/perl.php b/inc/geshi/perl.php index 5d1c4320b..487fd0515 100644 --- a/inc/geshi/perl.php +++ b/inc/geshi/perl.php @@ -4,7 +4,7 @@ * -------- * Author: Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/20 * * Perl language file for GeSHi. diff --git a/inc/geshi/perl6.php b/inc/geshi/perl6.php index 9ea20fc78..701e0b59c 100644 --- a/inc/geshi/perl6.php +++ b/inc/geshi/perl6.php @@ -4,7 +4,7 @@ * --------- * Author: Kodi Arfer (kodiarfer {at} warpmail {period} net); forked from perl.php 1.0.8 by Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2009 Kodi Arfer, (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/11/07 * * Perl 6 language file for GeSHi. diff --git a/inc/geshi/pf.php b/inc/geshi/pf.php index d59a609d5..a89e97ff0 100644 --- a/inc/geshi/pf.php +++ b/inc/geshi/pf.php @@ -4,7 +4,7 @@ * -------- * Author: David Berard (david@nfrance.com) * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/10/16 * Based on bash.php * diff --git a/inc/geshi/php-brief.php b/inc/geshi/php-brief.php index c28d985f4..d47737883 100644 --- a/inc/geshi/php-brief.php +++ b/inc/geshi/php-brief.php @@ -4,7 +4,7 @@ * ------------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/02 * * PHP (brief version) language file for GeSHi. diff --git a/inc/geshi/php.php b/inc/geshi/php.php index ec6981134..b36544213 100644 --- a/inc/geshi/php.php +++ b/inc/geshi/php.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/20 * * PHP language file for GeSHi. diff --git a/inc/geshi/pic16.php b/inc/geshi/pic16.php index 626a768b0..94e098293 100644 --- a/inc/geshi/pic16.php +++ b/inc/geshi/pic16.php @@ -4,7 +4,7 @@ * ------- * Author: Phil Mattison (mattison@ohmikron.com) * Copyright: (c) 2008 Ohmikron Corp. (http://www.ohmikron.com/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/07/30 * * PIC16 Assembler language file for GeSHi. diff --git a/inc/geshi/pike.php b/inc/geshi/pike.php index 2b860ccd6..a3de9082e 100644 --- a/inc/geshi/pike.php +++ b/inc/geshi/pike.php @@ -4,7 +4,7 @@ * -------- * Author: Rick E. (codeblock@eighthbit.net) * Copyright: (c) 2009 Rick E. - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/12/10 * * Pike language file for GeSHi. diff --git a/inc/geshi/pixelbender.php b/inc/geshi/pixelbender.php index 82c64ae52..b9fe1aff2 100644 --- a/inc/geshi/pixelbender.php +++ b/inc/geshi/pixelbender.php @@ -4,7 +4,7 @@ * ---------------- * Author: Richard Olsson (r@richardolsson.se) * Copyright: (c) 2008 Richard Olsson (richardolsson.se) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/11/16 * * Pixel Bender 1.0 language file for GeSHi. diff --git a/inc/geshi/pli.php b/inc/geshi/pli.php new file mode 100644 index 000000000..1d6eefd9b --- /dev/null +++ b/inc/geshi/pli.php @@ -0,0 +1,200 @@ +<?php +/************************************************************************************* + * pli.php + * -------- + * Author: Robert AH Prins (robert@prino.org) + * Copyright: (c) 2011 Robert AH Prins (http://hitchwiki.org/en/User:Prino) + * Release Version: 1.0.8.10 + * Date Started: 2011/02/09 + * + * PL/I language file for GeSHi. + * + * CHANGES + * ------- + * 2011/02/09 (1.0.8.10) + * - First Release - machine(ish) generated by http://rosettacode.org/geshi/ + * + * TODO (updated 2011/02/09) + * ------------------------- + * + * + ************************************************************************************* + * + * 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' => 'PL/I', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', '\''), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'abnormal', 'abs', 'acos', 'acosf', 'add', 'addbuff', 'addr', + 'addrdata', 'alias', 'aligned', 'all', 'alloc', 'allocate', + 'allocation', 'allocn', 'allocsize', 'any', 'anycondition', 'area', + 'ascii', 'asin', 'asinf', 'asm', 'asmtdli', 'assembler', + 'assignable', 'atan', 'atand', 'atanf', 'atanh', 'attach', + 'attention', 'attn', 'auto', 'automatic', 'availablearea', + 'backwards', 'based', 'begin', 'bigendian', 'bin', 'binary', + 'binaryvalue', 'bind', 'binvalue', 'bit', 'bitloc', 'bitlocation', + 'bkwd', 'blksize', 'bool', 'buf', 'buffered', 'buffers', 'bufnd', + 'bufni', 'bufoff', 'bufsp', 'builtin', 'bx', 'by', 'byaddr', 'byte', + 'byvalue', 'b4', 'call', 'cast', 'cds', 'ceil', 'center', + 'centerleft', 'centerright', 'centre', 'centreleft', 'centreright', + 'char', 'character', 'charg', 'chargraphic', 'charval', 'check', + 'checkstg', 'close', 'cmpat', 'cobol', 'col', 'collate', 'column', + 'comment', 'compare', 'compiledate', 'compiletime', 'completion', + 'complex', 'cond', 'condition', 'conjg', 'conn', 'connected', + 'consecutive', 'controlled', 'conv', 'conversion', 'copy', 'cos', + 'cosd', 'cosf', 'cosh', 'count', 'counter', 'cpln', 'cplx', 'cs', + 'cstg', 'ctl', 'ctlasa', 'ctl360', 'currentsize', 'currentstorage', + 'data', 'datafield', 'date', 'datetime', 'days', 'daystodate', + 'daystosecs', 'db', 'dcl', 'dec', 'decimal', 'declare', 'def', + 'default', 'define', 'defined', 'delay', 'delete', 'descriptor', + 'descriptors', 'detach', 'dft', 'dim', 'dimacross', 'dimension', + 'direct', 'display', 'divide', 'do', 'downthru', 'edit', 'else', + 'empty', 'end', 'endfile', 'endpage', 'entry', 'entryaddr', 'env', + 'environment', 'epsilon', 'erf', 'erfc', 'error', 'event', 'excl', + 'exclusive', 'exit', 'exp', 'expf', 'exponent', 'exports', 'ext', + 'external', 'fb', 'fbs', 'fetch', 'file', 'fileddint', 'fileddtest', + 'fileddword', 'fileid', 'fileopen', 'fileread', 'fileseek', + 'filetell', 'filewrite', 'finish', 'first', 'fixed', 'fixedbin', + 'fixeddec', 'fixedoverflow', 'float', 'floatbin', 'floatdec', + 'floor', 'flush', 'fofl', 'format', 'fortran', 'free', 'from', + 'fromalien', 'fs', 'gamma', 'generic', 'genkey', 'get', 'getenv', + 'go', 'goto', 'graphic', 'gx', 'handle', 'hbound', 'hex', 'hexadec', + 'heximage', 'high', 'huge', 'iand', 'ieee', 'ieor', 'if', 'ignore', + 'imag', 'in', 'index', 'indexarea', 'indexed', 'init', 'initial', + 'inline', 'inonly', 'inot', 'inout', 'input', 'int', 'inter', + 'internal', 'into', 'invalidop', 'ior', 'irred', 'irreducible', + 'isfinite', 'isigned', 'isinf', 'isll', 'ismain', 'isnan', + 'isnormal', 'isrl', 'iszero', 'iunsigned', 'key', 'keyed', + 'keyfrom', 'keylength', 'keyloc', 'keyto', 'label', 'last', + 'lbound', 'leave', 'left', 'length', 'like', 'limited', 'line', + 'lineno', 'linesize', 'linkage', 'list', 'littleendian', 'loc', + 'locate', 'location', 'log', 'logf', 'loggamma', 'log10', 'log10f', + 'log2', 'low', 'lowercase', 'lower2', 'maccol', 'maclmar', + 'macname', 'macrmar', 'main', 'max', 'maxexp', 'maxlength', + 'memconvert', 'memcu12', 'memcu14', 'memcu21', 'memcu24', 'memcu41', + 'memcu42', 'memindex', 'memsearch', 'memsearchr', 'memverify', + 'memverifyr', 'min', 'minexp', 'mod', 'mpstr', 'multiply', 'name', + 'native', 'ncp', 'new', 'nocharg', 'nochargraphic', 'nocheck', + 'nocmpat', 'noconv', 'noconversion', 'nodescriptor', 'noexecops', + 'nofixedoverflow', 'nofofl', 'noinline', 'nolock', 'nomap', + 'nomapin', 'nomapout', 'nonasgn', 'nonassignable', 'nonconnected', + 'nonnative', 'noofl', 'nooverflow', 'norescan', 'normal', 'nosize', + 'nostrg', 'nostringrange', 'nostringsize', 'nostrz', 'nosubrg', + 'nosubscriptrange', 'noufl', 'nounderflow', 'nowrite', 'nozdiv', + 'nozerodivide', 'null', 'offset', 'offsetadd', 'offsetdiff', + 'offsetsubtract', 'offsetvalue', 'ofl', 'omitted', 'on', 'onarea', + 'onchar', 'oncode', 'oncondcond', 'oncondid', 'oncount', 'onfile', + 'ongsource', 'onkey', 'online', 'onloc', 'onoffset', 'onsource', + 'onsubcode', 'onwchar', 'onwsource', 'open', 'optional', 'options', + 'order', 'ordinal', 'ordinalname', 'ordinalpred', 'ordinalsucc', + 'other', 'otherwise', 'outonly', 'output', 'overflow', 'package', + 'packagename', 'page', 'pageno', 'pagesize', 'parameter', 'parmset', + 'password', 'pending', 'pic', 'picspec', 'picture', 'places', + 'pliascii', 'plicanc', 'plickpt', 'plidelete', 'plidump', + 'pliebcdic', 'plifill', 'plifree', 'plimove', 'pliover', 'plirest', + 'pliretc', 'pliretv', 'plisaxa', 'plisaxb', 'plisaxc', 'plisaxd', + 'plisrta', 'plisrtb', 'plisrtc', 'plisrtd', 'plitdli', 'plitran11', + 'plitran12', 'plitran21', 'plitran22', 'pointer', 'pointeradd', + 'pointerdiff', 'pointersubtract', 'pointervalue', 'poly', 'pos', + 'position', 'prec', 'precision', 'pred', 'present', 'print', + 'priority', 'proc', 'procedure', 'procedurename', 'procname', + 'prod', 'ptr', 'ptradd', 'ptrdiff', 'ptrsubtract', 'ptrvalue', + 'put', 'putenv', 'quote', 'radix', 'raise2', 'random', 'range', + 'rank', 'read', 'real', 'record', 'recsize', 'recursive', 'red', + 'reducible', 'reentrant', 'refer', 'regional', 'reg12', 'release', + 'rem', 'reorder', 'repattern', 'repeat', 'replaceby2', 'reply', + 'reread', 'rescan', 'reserved', 'reserves', 'resignal', 'respec', + 'retcode', 'return', 'returns', 'reuse', 'reverse', 'revert', + 'rewrite', 'right', 'round', 'rounddec', 'samekey', 'scalarvarying', + 'scale', 'search', 'searchr', 'secs', 'secstodate', 'secstodays', + 'select', 'seql', 'sequential', 'serialize4', 'set', 'sign', + 'signal', 'signed', 'sin', 'sind', 'sinf', 'sinh', 'sis', 'size', + 'skip', 'snap', 'sourcefile', 'sourceline', 'sqrt', 'sqrtf', + 'stackaddr', 'statement', 'static', 'status', 'stg', 'stmt', 'stop', + 'storage', 'stream', 'strg', 'string', 'stringrange', 'stringsize', + 'structure', 'strz', 'subrg', 'subscriptrange', 'substr', + 'subtract', 'succ', 'sum', 'suppress', 'sysin', 'sysnull', + 'sysparm', 'sysprint', 'system', 'sysversion', 'tally', 'tan', + 'tand', 'tanf', 'tanh', 'task', 'then', 'thread', 'threadid', + 'time', 'tiny', 'title', 'to', 'total', 'tpk', 'tpm', 'transient', + 'translate', 'transmit', 'trim', 'trkofl', 'trunc', 'type', 'ufl', + 'ulength', 'ulength16', 'ulength8', 'unal', 'unaligned', + 'unallocated', 'unbuf', 'unbuffered', 'undefinedfile', 'underflow', + 'undf', 'unlock', 'unsigned', 'unspec', 'until', 'update', 'upos', + 'uppercase', 'upthru', 'usubstr', 'usurrogate', 'uvalid', 'uwidth', + 'valid', 'validdate', 'value', 'var', 'varglist', 'vargsize', + 'variable', 'varying', 'varyingz', 'vb', 'vbs', 'verify', 'verifyr', + 'vs', 'vsam', 'wait', 'wchar', 'wcharval', 'weekday', 'when', + 'whigh', 'while', 'widechar', 'wlow', 'write', 'xmlchar', 'y4date', + 'y4julian', 'y4year', 'zdiv', 'zerodivide' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '+', '-', '*', '/', '=', '<', '>', '&', '^', '|', ':', '(', ')', ';', ',' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array(1 => ''), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array(1 => '.'), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?>
\ No newline at end of file diff --git a/inc/geshi/plsql.php b/inc/geshi/plsql.php index e0145362c..8428ff4b6 100644 --- a/inc/geshi/plsql.php +++ b/inc/geshi/plsql.php @@ -4,7 +4,7 @@ * ------- * Author: Victor Engmark <victor.engmark@gmail.com> * Copyright: (c) 2006 Victor Engmark (http://l0b0.net/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/10/26 * * Oracle 9.2 PL/SQL language file for GeSHi. diff --git a/inc/geshi/postgresql.php b/inc/geshi/postgresql.php index 7f89fe2a4..0245b33ad 100644 --- a/inc/geshi/postgresql.php +++ b/inc/geshi/postgresql.php @@ -5,7 +5,7 @@ * Author: Christophe Chauvet (christophe_at_kryskool_dot_org) * Contributors: Leif Biberg Kristensen <leif_at_solumslekt_dot_org> 2010-05-03 * Copyright: (c) 2007 Christophe Chauvet (http://kryskool.org/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/07/20 * * PostgreSQL language file for GeSHi. diff --git a/inc/geshi/povray.php b/inc/geshi/povray.php index c987a013e..eeda49f49 100644 --- a/inc/geshi/povray.php +++ b/inc/geshi/povray.php @@ -4,7 +4,7 @@ * -------- * Author: Carl Fürstenberg (azatoth@gmail.com) * Copyright: © 2007 Carl Fürstenberg - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/07/11 * * Povray language file for GeSHi. diff --git a/inc/geshi/powerbuilder.php b/inc/geshi/powerbuilder.php index ef86c242c..f978f3f5b 100644 --- a/inc/geshi/powerbuilder.php +++ b/inc/geshi/powerbuilder.php @@ -4,7 +4,7 @@ * ------ * Author: Doug Porter (powerbuilder.geshi@gmail.com) * Copyright: (c) 2009 Doug Porter - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/07/13 * * PowerBuilder (PowerScript) language file for GeSHi. diff --git a/inc/geshi/powershell.php b/inc/geshi/powershell.php index c90538809..1d9003030 100644 --- a/inc/geshi/powershell.php +++ b/inc/geshi/powershell.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Frode Aarebrot (frode@aarebrot.net) * Copyright: (c) 2008 Frode Aarebrot (http://www.aarebrot.net) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/06/20 * * PowerShell language file for GeSHi. diff --git a/inc/geshi/proftpd.php b/inc/geshi/proftpd.php new file mode 100644 index 000000000..dd57d9b0a --- /dev/null +++ b/inc/geshi/proftpd.php @@ -0,0 +1,374 @@ +<?php +/************************************************************************************* + * proftpd.php + * ---------- + * Author: Benny Baumann (BenBE@geshi.org) + * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter) + * Release Version: 1.0.8.10 + * Date Started: 2011/01/25 + * + * ProFTPd language file for GeSHi. + * Words are scraped from their documentation + * + * CHANGES + * ------- + * 2004/08/05 (1.0.8.10) + * - First Release + * + * TODO (updated 2011/01/25) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'ProFTPd configuration', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + /*keywords*/ + 1 => array( + //mod_auth + 'AccessDenyMsg', 'AccessGrantMsg', 'AnonRejectePasswords', + 'AnonRequirePassword', 'AuthAliasOnly', 'AuthUsingAlias', + 'CreateHome', 'DefaultChdir', 'DefaultRoot', 'GroupPassword', + 'LoginPasswordPrompt', 'MaxClients', 'MaxClientsPerClass', + 'MaxClientsPerHost', 'MaxClientsPerUser', 'MaxConnectionsPerHost', + 'MaxHostsPerUser', 'MaxLoginAttempts', 'RequireValidShell', + 'RootLogin', 'RootRevoke', 'TimeoutLogin', 'TimeoutSession', + 'UseFtpUsers', 'UserAlias', 'UserDirRoot', 'UserPassword', + + //mod_auth_file + 'AuthGroupFile', 'AuthUserFile', + + //mod_auth_pam + 'AuthPAM', 'AuthPAMConfig', + + //mod_auth_unix + 'PersistentPasswd', + + //mod_ban + 'BanControlsACLs', 'BanEngine', 'BanLog', 'BanMessage', 'BanOnEvent', + 'BanTable', + + //mod_cap + 'CapabilitiesEngine', 'CapabilitiesSet', + + //mod_core + 'Allow', 'AllowAll', 'AllowClass', 'AllowFilter', + 'AllowForeignAddress', 'AllowGroup', 'AllowOverride', + 'AllowRetrieveRestart', 'AllowStoreRestart', 'AllowUser', + 'AnonymousGroup', 'AuthOrder', 'Bind', 'CDPath', 'Class', 'Classes', + 'CommandBufferSize', 'DebugLevel', 'DefaultAddress', + 'DefaultServer', 'DefaultTransferMode', 'DeferWelcome', 'Define', + 'Deny', 'DenyAll', 'DenyClass', 'DenyFilter', 'DenyGroup', + 'DenyUser', 'DisplayChdir', 'DisplayConnect', 'DisplayFirstChdir', + 'DisplayGoAway', 'DisplayLogin', 'DisplayQuit', 'From', 'Group', + 'GroupOwner', 'HideFiles', 'HideGroup', 'HideNoAccess', 'HideUser', + 'IdentLookups', 'IgnoreHidden', 'Include', 'MasqueradeAddress', + 'MaxConnectionRate', 'MaxInstances', 'MultilineRFC2228', 'Order', + 'PassivePorts', 'PathAllowFilter', 'PathDenyFilter', 'PidFile', + 'Port', 'RLimitCPU', 'RLimitMemory', 'RLimitOpenFiles', 'Satisfy', + 'ScoreboardFile', 'ServerAdmin', 'ServerIdent', 'ServerName', + 'ServerType', 'SetEnv', 'SocketBindTight', 'SocketOptions', + 'SyslogFacility', 'SyslogLevel', 'tcpBackLog', 'tcpNoDelay', + 'TimeoutIdle', 'TimeoutLinger', 'TimesGMT', 'TransferLog', 'Umask', + 'UnsetEnv', 'UseIPv6', 'User', 'UseReverseDNS', 'UserOwner', + 'UseUTF8', 'WtmpLog', + + //mod_ctrls_admin + 'AdminControlsACLs', 'AdminControlsEngine', + + //mod_delay + 'DelayEngine', 'DelayTable', + + //mod_dynmasq + 'DynMasqRefresh', + + //mod_exec + 'ExecBeforeCommand', 'ExecEngine', 'ExecEnviron', 'ExecLog', + 'ExecOnCommand', 'ExecOnConnect', 'ExecOnError', 'ExecOnEvent', + 'ExecOnExit', 'ExecOnRestart', 'ExecOptions', 'ExecTimeout', + + //mod_ldap + 'LDAPAliasDereference', 'LDAPAttr', 'LDAPAuthBinds', + 'LDAPDefaultAuthScheme', 'LDAPDefaultGID', 'LDAPDefaultUID', + 'LDAPDNInfo', 'LDAPDoAuth', 'LDAPDoGIDLookups', + 'LDAPDoQuotaLookups', 'LDAPDoUIDLookups', + 'LDAPForceGeneratedHomedir', 'LDAPForceHomedirOnDemand', + 'LDAPGenerateHomedir', 'LDAPGenerateHomedirPrefix', + 'LDAPGenerateHomedirPrefixNoUsername', 'LDAPHomedirOnDemand', + 'LDAPHomedirOnDemandPrefix', 'LDAPHomedirOnDemandPrefixNoUsername', + 'LDAPHomedirOnDemandSuffix', 'LDAPNegativeCache', + 'LDAPProtocolVersion', 'LDAPQueryTimeout', 'LDAPSearchScope', + 'LDAPServer', + + //mod_load + 'MaxLoad', + + //mod_log + 'AllowLogSymlinks', 'ExtendedLog', 'LogFormat', 'ServerLog', + 'SystemLog', + + //mod_ls' + 'DirFakeGroup', 'DirFakeMode', 'DirFakeUser', 'ListOptions', + 'ShowSymlinks', 'UseGlobbing', + + //mod_quotatab + 'QuotaDirectoryTally', 'QuotaDisplayUnits', 'QuotaEngine', + 'QuotaExcludeFilter', 'QuotaLimitTable', 'QuotaLock', 'QuotaLog', + 'QuotaOptions', 'QuotaShowQuotas', 'QuotaTallyTable', + + //mod_quotatab_file + + //mod_quotatab_ldap + + //mod_quotatab_sql + + //mod_radius + 'RadiusAcctServer', 'RadiusAuthServer', 'RadiusEngine', + 'RadiusGroupInfo', 'RadiusLog', 'RadiusNASIdentifier', + 'RadiusQuotaInfo', 'RadiusRealm', 'RadiusUserInfo', 'RadiusVendor', + + //mod_ratio + 'AnonRatio', 'ByteRatioErrMsg', 'CwdRatioMsg', 'FileRatioErrMsg', + 'GroupRatio', 'HostRatio', 'LeechRatioMsg', 'RatioFile', 'Ratios', + 'RatioTempFile', 'SaveRatios', 'UserRatio', + + //mod_readme + 'DisplayReadme', + + //mod_rewrite + 'RewriteCondition', 'RewriteEngine', 'RewriteLock', 'RewriteLog', + 'RewriteMap', 'RewriteRule', + + //mod_sftp + 'SFTPAcceptEnv', 'SFTPAuthMethods', 'SFTPAuthorizedHostKeys', + 'SFTPAuthorizedUserKeys', 'SFTPCiphers', 'SFTPClientMatch', + 'SFTPCompression', 'SFTPCryptoDevice', 'SFTPDHParamFile', + 'SFTPDigests', 'SFTPDisplayBanner', 'SFTPEngine', 'SFTPExtensions', + 'SFTPHostKey', 'SFTPKeyBlacklist', 'SFTPKeyExchanges', 'SFTPLog', + 'SFTPMaxChannels', 'SFTPOptions', 'SFTPPassPhraseProvider', + 'SFTPRekey', 'SFTPTrafficPolicy', + + //mod_sftp_pam + 'SFTPPAMEngine', 'SFTPPAMOptions', 'SFTPPAMServiceName', + + //mod_sftp_sql + + //mod_shaper + 'ShaperAll', 'ShaperControlsACLs', 'ShaperEngine', 'ShaperLog', + 'ShaperSession', 'ShaperTable', + + //mod_sql + 'SQLAuthenticate', 'SQLAuthTypes', 'SQLBackend', 'SQLConnectInfo', + 'SQLDefaultGID', 'SQLDefaultHomedir', 'SQLDefaultUID', 'SQLEngine', + 'SQLGroupInfo', 'SQLGroupWhereClause', 'SQLHomedirOnDemand', + 'SQLLog', 'SQLLogFile', 'SQLMinID', 'SQLMinUserGID', + 'SQLMinUserUID', 'SQLNamedQuery', 'SQLNegativeCache', 'SQLOptions', + 'SQLRatios', 'SQLRatioStats', 'SQLShowInfo', 'SQLUserInfo', + 'SQLUserWhereClause', + + //mod_sql_passwd + 'SQLPasswordEncoding', 'SQLPasswordEngine', 'SQLPasswordSaltFile', + 'SQLPasswordUserSalt', + + //mod_tls + 'TLSCACertificateFile', 'TLSCACertificatePath', + 'TLSCARevocationFile', 'TLSCARevocationPath', + 'TLSCertificateChainFile', 'TLSCipherSuite', 'TLSControlsACLs', + 'TLSCryptoDevice', 'TLSDHParamFile', 'TLSDSACertificateFile', + 'TLSDSACertificateKeyFile', 'TLSEngine', 'TLSLog', 'TLSOptions', + 'TLSPKCS12File', 'TLSPassPhraseProvider', 'TLSProtocol', + 'TLSRandomSeed', 'TLSRenegotiate', 'TLSRequired', + 'TLSRSACertificateFile', 'TLSRSACertificateKeyFile', + 'TLSSessionCache', 'TLSTimeoutHandshake', 'TLSVerifyClient', + 'TLSVerifyDepth', 'TLSVerifyOrder', + + //mod_tls_shmcache + + //mod_unique_id + 'UniqueIDEngine', + + //mod_wrap + 'TCPAccessFiles', 'TCPAccessSyslogLevels', 'TCPGroupAccessFiles', + 'TCPServiceName', 'TCPUserAccessFiles', + + //mod_wrap2 + 'WrapAllowMsg', 'WrapDenyMsg', 'WrapEngine', 'WrapGroupTables', + 'WrapLog', 'WrapServiceName', 'WrapTables', 'WrapUserTables', + + //mod_wrap2_file + + //mod_wrap2_sql + + //mod_xfer + 'AllowOverwrite', 'DeleteAbortedStores', 'DisplayFileTransfer', + 'HiddenStor', 'HiddenStores', 'MaxRetrieveFileSize', + 'MaxStoreFileSize', 'StoreUniquePrefix', 'TimeoutNoTransfer', + 'TimeoutStalled', 'TransferRate', 'UseSendfile', + + //unknown + 'ScoreboardPath', 'ScoreboardScrub' + ), + /*keywords 3*/ + 3 => array( + //mod_core + 'Anonymous', + 'Class', + 'Directory', + 'IfDefine', + 'IfModule', + 'Limit', + 'VirtualHost', + + //mod_ifsession + 'IfClass', 'IfGroup', 'IfUser', + + //mod_version + 'IfVersion' + ), + /*permissions*/ + 4 => array( + //mod_core + 'ALL', + 'CDUP', + 'CMD', + 'CWD', + 'DELE', + 'DIRS', + 'LOGIN', + 'MKD', + 'READ', + 'RETR', + 'RMD', + 'RNFR', + 'RNTO', + 'STOR', + 'WRITE', + 'XCWD', + 'XMKD', + 'XRMD', + + //mod_copy + 'SITE_CPFR', 'SITE_CPTO', + + //mod_quotatab + 'SITE_QUOTA', + + //mod_site + 'SITE_HELP', 'SITE_CHMOD', 'SITE_CHGRP', + + //mod_site_misc + 'SITE_MKDIR', 'SITE_RMDIR', 'SITE_SYMLINK', 'SITE_UTIME', + ), + /*keywords 2*/ + 2 => array( + 'all','on','off','yes','no', + 'standalone', 'inetd', + 'default', 'auth', 'write', + 'internet', 'local', 'limit', 'ip', + 'from' + ), + ), + 'SYMBOLS' => array( + '+', '-' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f;', + 2 => 'color: #0000ff;', + 3 => 'color: #000000; font-weight:bold;', + 4 => 'color: #000080; font-weight:bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #adadad; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #339933;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:www.proftpd.org+inurl:docs&btnI=I%27m%20Feeling%20Lucky', + 2 => '', + 3 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:www.proftpd.org+inurl:docs&btnI=I%27m%20Feeling%20Lucky', + 4 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, + 'SYMBOLS' => GESHI_NEVER + ), + 'KEYWORDS' => array( + 2 => array( + 'DISALLOWED_BEFORE' => '(?<=\s)(?<!=)', + 'DISALLOWED_AFTER' => '(?!\+)(?!\w)', + ), + 3 => array( + 'DISALLOWED_BEFORE' => '(?<=<|<\/)', + 'DISALLOWED_AFTER' => '(?=\s|\/|>)', + ), + 4 => array( + 'DISALLOWED_BEFORE' => '(?<=\s)(?<!=)', + 'DISALLOWED_AFTER' => '(?!\+)(?=\/|(?:\s+\w+)*\s*>)', + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/progress.php b/inc/geshi/progress.php index 90c3bf0fa..affb62000 100644 --- a/inc/geshi/progress.php +++ b/inc/geshi/progress.php @@ -4,7 +4,7 @@ * -------- * Author: Marco Aurelio de Pasqual (marcop@hdi.com.br) * Copyright: (c) 2008 Marco Aurelio de Pasqual, Benny Baumann (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/07/11 * * Progress language file for GeSHi. diff --git a/inc/geshi/prolog.php b/inc/geshi/prolog.php index 4dd01ff7e..74d03374c 100644 --- a/inc/geshi/prolog.php +++ b/inc/geshi/prolog.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/10/02 * * Prolog language file for GeSHi. diff --git a/inc/geshi/properties.php b/inc/geshi/properties.php index 9fc8b8da4..08ba9a419 100644 --- a/inc/geshi/properties.php +++ b/inc/geshi/properties.php @@ -4,7 +4,7 @@ * -------- * Author: Edy Hinzen * Copyright: (c) 2009 Edy Hinzen - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/04/03 * * Property language file for GeSHi. diff --git a/inc/geshi/providex.php b/inc/geshi/providex.php index 0352ac2a1..b7232873a 100644 --- a/inc/geshi/providex.php +++ b/inc/geshi/providex.php @@ -4,7 +4,7 @@ * ---------- * Author: Jeff Wilder (jeff@coastallogix.com) * Copyright: (c) 2008 Coastal Logix (http://www.coastallogix.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/10/18 * * ProvideX language file for GeSHi. diff --git a/inc/geshi/purebasic.php b/inc/geshi/purebasic.php index b24986f57..213868d74 100644 --- a/inc/geshi/purebasic.php +++ b/inc/geshi/purebasic.php @@ -4,7 +4,7 @@ * ------- * Author: GuShH * Copyright: (c) 2009 Gustavo Julio Fiorenza - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 13/06/2009 * * PureBasic language file for GeSHi. diff --git a/inc/geshi/pycon.php b/inc/geshi/pycon.php new file mode 100644 index 000000000..141d521f9 --- /dev/null +++ b/inc/geshi/pycon.php @@ -0,0 +1,64 @@ +<?php +/************************************************************************************* + * python.php + * ---------- + * 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 + * Date Started: 2004/08/30 + * + * Python language file for GeSHi. + * + * CHANGES + * ------- + * 2008/12/18 + * - Added missing functions and keywords. Also added two new Python 3.0 types. SF#2441839 + * 2005/05/26 + * - Modifications by Tim (tim@skreak.com): added more keyword categories, tweaked colors + * 2004/11/27 (1.0.1) + * - Added support for multiple object splitters + * 2004/08/30 (1.0.0) + * - First Release + * + * TODO (updated 2004/11/27) + * ------------------------- + * + ************************************************************************************* + * + * 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 + * + ************************************************************************************/ + +//This +require(dirname(__FILE__).'/python.php'); + +$language_data['LANG_NAME'] = 'Python (console mode)'; + +$language_data['STRICT_MODE_APPLIES'] = GESHI_ALWAYS; +$language_data['SCRIPT_DELIMITERS'][-1] = '/^(>>>).*?$(?:\n\.\.\..*?$)*($)/m'; +$language_data['HIGHLIGHT_STRICT_BLOCK'][-1] = true; + +$language_data['STYLES']['SCRIPT'][-1] = 'color: #222222;'; + +if(!isset($language_data['COMMENT_REGEXP'])) { + $language_data['COMMENT_REGEXP'] = array(); +} + +$language_data['COMMENT_REGEXP'][-1] = '/(?:^|\A\s)(?:>>>|\.\.\.)/m'; +$language_data['STYLES']['COMMENTS'][-1] = 'color: #444444;'; + +?>
\ No newline at end of file diff --git a/inc/geshi/python.php b/inc/geshi/python.php index 1be7e2953..38d9a0b02 100644 --- a/inc/geshi/python.php +++ b/inc/geshi/python.php @@ -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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/30 * * Python language file for GeSHi. @@ -49,8 +49,13 @@ $language_data = array ( 'COMMENT_MULTI' => array(), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, //Longest quotemarks ALWAYS first - 'QUOTEMARKS' => array('"""', '"', "'"), + 'QUOTEMARKS' => array('"""', "'''", '"', "'"), 'ESCAPE_CHAR' => '\\', + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX_0O | 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( /* @@ -60,7 +65,7 @@ $language_data = array ( 1 => array( 'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break', 'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec', - 'import', 'pass', 'yield', 'def', 'finally', 'in', 'print', 'with', 'as' + 'import', 'pass', 'yield', 'def', 'finally', 'in', 'print', 'with', 'as', 'nonlocal' ), /* @@ -172,7 +177,9 @@ $language_data = array ( ) ), 'SYMBOLS' => array( - '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '`' + '<', '>', '=', '!', '<=', '>=', //·comparison·operators + '~', '@', //·unary·operators + ';', ',' //·statement·separator ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -234,4 +241,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/q.php b/inc/geshi/q.php index 9629ded4a..e4bb92da8 100644 --- a/inc/geshi/q.php +++ b/inc/geshi/q.php @@ -4,7 +4,7 @@ * ----- * Author: Ian Roddis (ian.roddis@proteanmind.net) * Copyright: (c) 2008 Ian Roddis (http://proteanmind.net) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/01/21 * * q/kdb+ language file for GeSHi. diff --git a/inc/geshi/qbasic.php b/inc/geshi/qbasic.php index da4372258..ff61449d0 100644 --- a/inc/geshi/qbasic.php +++ b/inc/geshi/qbasic.php @@ -4,7 +4,7 @@ * ---------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/20 * * QBasic/QuickBASIC language file for GeSHi. diff --git a/inc/geshi/rails.php b/inc/geshi/rails.php index 64d83ea16..0e825040e 100644 --- a/inc/geshi/rails.php +++ b/inc/geshi/rails.php @@ -4,7 +4,7 @@ * --------- * Author: Moises Deniz * Copyright: (c) 2005 Moises Deniz - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/03/21 * * Ruby (with Ruby on Rails Framework) language file for GeSHi. diff --git a/inc/geshi/rebol.php b/inc/geshi/rebol.php index a3889eec9..1e5dff626 100644 --- a/inc/geshi/rebol.php +++ b/inc/geshi/rebol.php @@ -4,7 +4,7 @@ * -------- * Author: Lecanu Guillaume (Guillaume@LyA.fr) * Copyright: (c) 2004-2005 Lecanu Guillaume (Guillaume@LyA.fr) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/12/22 * * Rebol language file for GeSHi. diff --git a/inc/geshi/reg.php b/inc/geshi/reg.php index bb2e845f3..9878f42f6 100644 --- a/inc/geshi/reg.php +++ b/inc/geshi/reg.php @@ -4,7 +4,7 @@ * ------- * Author: Sean Hanna (smokingrope@gmail.com) * Copyright: (c) 2006 Sean Hanna - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 03/15/2006 * * Microsoft Registry Editor language file for GeSHi. diff --git a/inc/geshi/robots.php b/inc/geshi/robots.php index baf286b7f..c0713a64c 100644 --- a/inc/geshi/robots.php +++ b/inc/geshi/robots.php @@ -4,7 +4,7 @@ * -------- * Author: Christian Lescuyer (cl@goelette.net) * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/02/17 * * robots.txt language file for GeSHi. diff --git a/inc/geshi/rpmspec.php b/inc/geshi/rpmspec.php index 96dc9556f..243df94c7 100644 --- a/inc/geshi/rpmspec.php +++ b/inc/geshi/rpmspec.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Paul Grinberg (gri6507 TA unity-linux TOD org) * Copyright: (c) 2010 Paul Grinberg - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/04/27 * * RPM Spec language file for GeSHi. diff --git a/inc/geshi/rsplus.php b/inc/geshi/rsplus.php index b73f5ea77..41cdd158b 100644 --- a/inc/geshi/rsplus.php +++ b/inc/geshi/rsplus.php @@ -6,7 +6,7 @@ * Contributors: * - Benilton Carvalho (beniltoncarvalho@gmail.com) * Copyright: (c) 2009 Ron Fredericks (http://www.LectureMaker.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/03/28 * * R language file for GeSHi. diff --git a/inc/geshi/ruby.php b/inc/geshi/ruby.php index 47ecbb2e2..c38d5a218 100644 --- a/inc/geshi/ruby.php +++ b/inc/geshi/ruby.php @@ -4,7 +4,7 @@ * -------- * Author: Moises Deniz * Copyright: (c) 2007 Moises Deniz - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/03/21 * * Ruby language file for GeSHi. diff --git a/inc/geshi/sas.php b/inc/geshi/sas.php index c4d426fa0..6f4ce285e 100644 --- a/inc/geshi/sas.php +++ b/inc/geshi/sas.php @@ -4,7 +4,7 @@ * ------- * Author: Galen Johnson (solitaryr@gmail.com) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/12/27 * * SAS language file for GeSHi. Based on the sas vim file. @@ -44,7 +44,7 @@ $language_data = array ( 'LANG_NAME' => 'SAS', 'COMMENT_SINGLE' => array(), - 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_MULTI' => array('/*' => '*/', '*' => ';'), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'ESCAPE_CHAR' => '\\', @@ -287,4 +287,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/scala.php b/inc/geshi/scala.php index 202c06c83..12462cf3b 100644 --- a/inc/geshi/scala.php +++ b/inc/geshi/scala.php @@ -4,7 +4,7 @@ * ---------- * Author: Franco Lombardo (franco@francolombardo.net) * Copyright: (c) 2008 Franco Lombardo, Benny Baumann - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/02/08 * * Scala language file for GeSHi. diff --git a/inc/geshi/scheme.php b/inc/geshi/scheme.php index 2e2430bff..f687e79a7 100644 --- a/inc/geshi/scheme.php +++ b/inc/geshi/scheme.php @@ -4,7 +4,7 @@ * ---------- * Author: Jon Raphaelson (jonraphaelson@gmail.com) * Copyright: (c) 2005 Jon Raphaelson, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/30 * * Scheme language file for GeSHi. diff --git a/inc/geshi/scilab.php b/inc/geshi/scilab.php index d1ff6fc16..cd1ca70f1 100644 --- a/inc/geshi/scilab.php +++ b/inc/geshi/scilab.php @@ -4,7 +4,7 @@ * -------- * Author: Christophe David (geshi@christophedavid.org) * Copyright: (c) 2008 Christophe David (geshi@christophedavid.org) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/08/04 * * SciLab language file for GeSHi. diff --git a/inc/geshi/sdlbasic.php b/inc/geshi/sdlbasic.php index 876dc09a6..27aaf522b 100644 --- a/inc/geshi/sdlbasic.php +++ b/inc/geshi/sdlbasic.php @@ -4,7 +4,7 @@ * ------------ * Author: Roberto Rossi * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/08/19 * * sdlBasic (http://sdlbasic.sf.net) language file for GeSHi. diff --git a/inc/geshi/smalltalk.php b/inc/geshi/smalltalk.php index b475ad711..008bfcd1d 100644 --- a/inc/geshi/smalltalk.php +++ b/inc/geshi/smalltalk.php @@ -4,7 +4,7 @@ * -------- * Author: Bananeweizen (Bananeweizen@gmx.de) * Copyright: (c) 2005 Bananeweizen (www.bananeweizen.de) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/03/27 * * Smalltalk language file for GeSHi. diff --git a/inc/geshi/smarty.php b/inc/geshi/smarty.php index 7f4489289..1d8199936 100644 --- a/inc/geshi/smarty.php +++ b/inc/geshi/smarty.php @@ -4,7 +4,7 @@ * ---------- * Author: Alan Juden (alan@judenware.org) * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/07/10 * * Smarty template language file for GeSHi. diff --git a/inc/geshi/sql.php b/inc/geshi/sql.php index 9e45e850d..6f7870196 100644 --- a/inc/geshi/sql.php +++ b/inc/geshi/sql.php @@ -3,14 +3,18 @@ * sql.php * ------- * Author: Nigel McNie (nigel@geshi.org) + * Contributors: + * - Jürgen Thomas (Juergen.Thomas@vs-polis.de) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * SQL language file for GeSHi. * * CHANGES * ------- + * 2010/07/19 (1.0.8.9) + * - Added many more keywords * 2008/05/23 (1.0.7.22) * - Added additional symbols for highlighting * 2004/11/27 (1.0.3) @@ -58,30 +62,51 @@ $language_data = array ( 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( 1 => array( - 'ADD', 'ALL', 'ALTER', 'AND', 'AS', 'ASC', - 'AUTO_INCREMENT', 'BETWEEN', 'BINARY', 'BOOLEAN', - 'BOTH', 'BY', 'CHANGE', 'CHECK', 'COLUMN', 'COLUMNS', - 'CREATE', 'CROSS', 'DATA', 'DATABASE', 'DATABASES', - 'DEFAULT', 'DELAYED', 'DELETE', 'DESC', 'DESCRIBE', - 'DISTINCT', 'DROP', 'ENCLOSED', 'ESCAPED', 'EXISTS', - 'EXPLAIN', 'FIELD', 'FIELDS', 'FLUSH', 'FOR', - 'FOREIGN', 'FROM', 'FULL', 'FUNCTION', 'GRANT', - 'GROUP', 'HAVING', 'IDENTIFIED', 'IF', 'IGNORE', - 'IN', 'INDEX', 'INFILE', 'INNER', 'INSERT', 'INTO', - 'IS', 'JOIN', 'KEY', 'KEYS', 'KILL', 'LANGUAGE', - 'LEADING', 'LEFT', 'LIKE', 'LIMIT', 'LINES', 'LOAD', - 'LOCAL', 'LOCK', 'LOW_PRIORITY', 'MODIFY', 'NATURAL', - 'NEXTVAL', 'NOT', 'NULL', 'ON', 'OPTIMIZE', 'OPTION', - 'OPTIONALLY', 'OR', 'ORDER', 'OUTER', 'OUTFILE', - 'PRIMARY', 'PROCEDURAL', 'PROCEEDURE', 'READ', - 'REFERENCES', 'REGEXP', 'RENAME', 'REPLACE', - 'RETURN', 'REVOKE', 'RIGHT', 'RLIKE', 'SELECT', - 'SET', 'SETVAL', 'SHOW', 'SONAME', 'STATUS', - 'STRAIGHT_JOIN', 'TABLE', 'TABLES', 'TEMINATED', - 'TEMPORARY', 'TO', 'TRAILING', 'TRIGGER', 'TRUNCATE', - 'TRUSTED', 'UNION', 'UNIQUE', 'UNLOCK', 'UNSIGNED', - 'UPDATE', 'USE', 'USING', 'VALUES', 'VARIABLES', - 'VIEW', 'WHERE', 'WITH', 'WRITE', 'XOR', 'ZEROFILL' + 'ADD', 'ALL', 'ALTER', 'AND', 'AS', 'ASC', 'AUTO_INCREMENT', + 'BEFORE', 'BEGIN', 'BETWEEN', 'BIGINT', 'BINARY', 'BLOB', 'BOOLEAN', 'BOTH', 'BY', + 'CALL', 'CASE', 'CAST', 'CEIL', 'CEILING', 'CHANGE', 'CHAR', 'CHAR_LENGTH', 'CHARACTER', + 'CHARACTER_LENGTH', 'CHECK', 'CLOB', 'COALESCE', 'COLLATE', 'COLUMN', 'COLUMNS', + 'CONNECT', 'CONSTRAINT', 'CONVERT', 'COUNT', 'CREATE', 'CROSS', 'CURRENT', + 'CURRENT_DATE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER', + 'DATA', 'DATABASE', 'DATABASES', 'DATE', 'DAY', 'DEC', 'DECIMAL', 'DECLARE', + 'DEFAULT', 'DELAYED', 'DELETE', 'DESC', 'DESCRIBE', 'DISTINCT', 'DOUBLE', + 'DOMAIN', 'DROP', + 'ELSE', 'ENCLOSED', 'END', 'ESCAPED', 'EXCEPT', 'EXEC', 'EXECUTE', 'EXISTS', 'EXP', + 'EXPLAIN', 'EXTRACT', + 'FALSE', 'FIELD', 'FIELDS', 'FILTER', 'FIRST', 'FLOAT', 'FLOOR', 'FLUSH', 'FOR', + 'FOREIGN', 'FROM', 'FULL', 'FUNCTION', + 'GET', 'GROUP', 'GROUPING', 'GO', 'GOTO', 'GRANT', 'GRANTED', + 'HAVING', 'HOUR', + 'IDENTIFIED', 'IDENTITY', 'IF', 'IGNORE', 'IN', 'INCREMENT', 'INDEX', 'INFILE', 'INNER', + 'INOUT', 'INPUT', 'INSERT', 'INT', 'INTEGER', 'INTERSECT', 'INTERSECTION', 'INTERVAL', + 'INTO', 'IS', + 'JOIN', + 'KEY', 'KEYS', 'KILL', + 'LANGUAGE', 'LARGE', 'LAST', 'LEADING', 'LEFT', 'LENGTH', 'LIKE', 'LIMIT', 'LINES', 'LOAD', + 'LOCAL', 'LOCK', 'LOW_PRIORITY', 'LOWER', + 'MATCH', 'MAX', 'MERGE', 'MIN', 'MINUTE', 'MOD', 'MODIFIES', 'MODIFY', 'MONTH', + 'NATIONAL', 'NATURAL', 'NCHAR', 'NEW', 'NEXT', 'NEXTVAL', 'NONE', 'NOT', + 'NULL', 'NULLABLE', 'NULLIF', 'NULLS', 'NUMBER', 'NUMERIC', + 'OF', 'OLD', 'ON', 'ONLY', 'OPEN', 'OPTIMIZE', 'OPTION', + 'OPTIONALLY', 'OR', 'ORDER', 'OUT', 'OUTER', 'OUTFILE', 'OVER', + 'POSITION', 'POWER', 'PRECISION', 'PREPARE', 'PRIMARY', 'PROCEDURAL', 'PROCEDURE', + 'READ', 'REAL', 'REF', 'REFERENCES', 'REFERENCING', 'REGEXP', 'RENAME', 'REPLACE', + 'RESULT', 'RETURN', 'RETURNS', 'REVOKE', 'RIGHT', 'RLIKE', 'ROLLBACK', 'ROW', + 'ROW_NUMBER', 'ROWS', 'RESTRICT', 'ROLE', 'ROUTINE', 'ROW_COUNT', + 'SAVEPOINT', 'SEARCH', 'SECOND', 'SECTION', 'SELECT', 'SELF', 'SEQUENCE', + 'SESSION', 'SET', 'SETVAL', 'SHOW', 'SIMILAR', 'SIZE', 'SMALLINT', 'SOME', + 'SONAME', 'SOURCE', 'SPACE', 'SQL', 'SQRT', 'START', 'STATUS', + 'STRAIGHT_JOIN', 'STRUCTURE', 'STYLE', 'SUBSTRING', 'SUM', + 'TABLE', 'TABLE_NAME', 'TABLES', 'TERMINATED', 'TEMPORARY', 'THEN', 'TIME', + 'TIMESTAMP', 'TO', 'TRAILING', 'TRANSACTION', 'TRIGGER', 'TRIM', 'TRUE', 'TRUNCATE', + 'TRUSTED', 'TYPE', + 'UNDER', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNLOCK', 'UNSIGNED', + 'UPDATE', 'UPPER', 'USE', 'USER', 'USING', + 'VALUE', 'VALUES', 'VARCHAR', 'VARIABLES', 'VARYING', 'VIEW', + 'WHEN', 'WHERE', 'WITH', 'WITHIN', 'WITHOUT', 'WORK', 'WRITE', + 'XOR', + 'YEAR', + 'ZEROFILL' ) ), 'SYMBOLS' => array( diff --git a/inc/geshi/systemverilog.php b/inc/geshi/systemverilog.php index 19405c097..142fd117b 100644 --- a/inc/geshi/systemverilog.php +++ b/inc/geshi/systemverilog.php @@ -4,7 +4,7 @@ * ------- * Author: Sean O'Boyle * Copyright: (C) 2008 IntelligentDV - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/06/25 * * SystemVerilog IEEE 1800-2009(draft8) language file for GeSHi. @@ -52,9 +52,9 @@ * Project: SyntaxFiles * * File: systemverilog.php - * $LastChangedBy: seanoboyle $ - * $LastChangedDate: 2009-07-22 22:20:25 -0700 (Wed, 22 Jul 2009) $ - * $LastChangedRevision: 17 $ + * $LastChangedBy: benbe $ + * $LastChangedDate: 2011-02-11 20:31:50 +0100 (Fr, 11. Feb 2011) $ + * $LastChangedRevision: 2430 $ * ************************************************************************/ diff --git a/inc/geshi/tcl.php b/inc/geshi/tcl.php index 2a07ccd46..c948ff261 100644 --- a/inc/geshi/tcl.php +++ b/inc/geshi/tcl.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Reid van Melle (rvanmelle@gmail.com) * Copyright: (c) 2004 Reid van Melle (sorry@nowhere) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/05/05 * * TCL/iTCL language file for GeSHi. diff --git a/inc/geshi/teraterm.php b/inc/geshi/teraterm.php index 443bf7b4c..510ad04c4 100644 --- a/inc/geshi/teraterm.php +++ b/inc/geshi/teraterm.php @@ -4,23 +4,29 @@ * -------- * Author: Boris Maisuradze (boris at logmett.com) * Copyright: (c) 2008 Boris Maisuradze (http://logmett.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/09/26 * * Tera Term Macro language file for GeSHi. * * - * This version of ttl.php was created for Tera Term 4.60 and LogMeTT 2.9.4. + * This version of teraterm.php was created for Tera Term 4.62 and LogMeTT 2.9.4. * Newer versions of these application can contain additional Macro commands - * and/or keywords that are not listed here. The latest release of ttl.php + * and/or keywords that are not listed here. The latest release of teraterm.php * can be downloaded from Download section of LogMeTT.com * * CHANGES * ------- - * 2008/09/26 (1.0.8) + * 2008/09/26 (1.0.0) * - First Release for Tera Term 4.60 and below. + * 2009/03/22 (1.1.0) + * - First Release for Tera Term 4.62 and below. + * 2009/04/25 (1.1.1) + * - Second Release for Tera Term 4.62 and below. + * 2010/09/12 (1.1.2) + * - Second Release for Tera Term 4.67, LogMeTT 2.97, TTLEditor 1.2.1 and below. * - * TODO (updated 2008/09/26) + * TODO (updated 2010/09/12) * ------------------------- * * * @@ -57,27 +63,29 @@ $language_data = array ( 'Beep', 'BplusRecv', 'BplusSend', - 'Break', // (version 4.53 or later) + 'Break', 'Call', - 'CallMenu', // (version 4.56 or later) + 'CallMenu', 'ChangeDir', 'ClearScreen', - 'Clipb2Var', //(version 4.46 or later) + 'Clipb2Var', 'ClosesBox', 'CloseTT', 'Code2Str', 'Connect', - 'CRC32', // (version 4.60 or later) - 'CRC32File', // (version 4.60 or later) - 'CygConnect', // (version 4.57 or later) + 'CRC32', + 'CRC32File', + 'CygConnect', 'DelPassword', 'Disconnect', - 'Do', // (version 4.56 or later) + 'DispStr', + 'Do', 'Else', + 'ElseIf', 'EnableKeyb', 'End', 'EndIf', - 'EndUntil', // (version 4.56 or later) + 'EndUntil', 'EndWhile', 'Exec', 'ExecCmnd', @@ -88,32 +96,37 @@ $language_data = array ( 'FileCreate', 'FileDelete', 'FileMarkPtr', - 'FilenameBox', //(version 4.54 or later) + 'FileNameBox', 'FileOpen', 'FileRead', - 'FileReadln', // (version 4.48 or later) + 'FileReadln', 'FileRename', 'FileSearch', 'FileSeek', 'FileSeekBack', + 'FileStat', 'FileStrSeek', 'FileStrSeek2', + 'FileTruncate', 'FileWrite', - 'FileWriteln', - 'FindOperations', + 'FileWriteLn', + 'FindClose', + 'FindFirst', + 'FindNext', 'FlushRecv', - 'ForNext', + 'For', 'GetDate', - 'GetDir', //(version 4.46 or later) + 'GetDir', 'GetEnv', + 'GetHostname', 'GetPassword', 'GetTime', 'GetTitle', - 'GetVer', //(version 4.58 or later) + 'GetTTDir', + 'Getver', 'GoTo', 'If', - 'IfDefined', // (version 4.46 or later) - 'IfThenElseIf', + 'IfDefined', 'Include', 'InputBox', 'Int2Str', @@ -121,73 +134,91 @@ $language_data = array ( 'KmtGet', 'KmtRecv', 'KmtSend', - 'LoadKeyMap', + 'LoadKeymap', 'LogClose', 'LogOpen', 'LogPause', 'LogStart', 'LogWrite', - 'Loop', // (version 4.56 or later) + 'Loop', 'MakePath', 'MessageBox', - 'MPause', // (version 4.27 or later) + 'MPause', + 'Next', 'PasswordBox', 'Pause', - 'QuickvanRecv', - 'QuickvanSend', - 'Random', //(version 4.27 or later) - 'Recvln', + 'QuickVANRecv', + 'QuickVANSend', + 'Random', + 'RecvLn', 'RestoreSetup', 'Return', - 'RotateLeft', //(version 4.54 or later) - 'RotateRight', //(version 4.54 or later) - 'ScpRecv', // (version 4.57 or later) - 'ScpSend', // (version 4.57 or later) + 'RotateLeft', + 'RotateRight', + 'ScpRecv', + 'ScpSend', 'Send', 'SendBreak', + 'SendBroadcast', 'SendFile', - 'SendKcode', - 'Sendln', - 'SetBaud', // (version 4.58 or later) + 'SendKCode', + 'SendLn', + 'SendLnBroadcast', + 'SendMulticast', + 'SetBaud', 'SetDate', + 'SetDebug', 'SetDir', 'SetDlgPos', - 'SetDTR', // (version 4.59 or later) - 'SetRTS', // (version 4.59 or later) - 'SetEnv', // (version 4.54 or later) + 'SetDTR', 'SetEcho', + 'SetEnv', 'SetExitCode', + 'SetMulticastName', + 'SetRTS', 'SetSync', 'SetTime', 'SetTitle', 'Show', 'ShowTT', - 'Sprintf', // (version 4.52 or later) + 'SPrintF', + 'SPrintF2', 'StatusBox', 'Str2Code', 'Str2Int', 'StrCompare', 'StrConcat', 'StrCopy', + 'StrInsert', + 'StrJoin', 'StrLen', - 'StrMatch', // (version 4.59 or later) + 'StrMatch', + 'StrRemove', + 'StrReplace', 'StrScan', - 'Testlink', + 'StrSpecial', + 'StrSplit', + 'StrTrim', + 'TestLink', 'Then', - 'ToLower', //(version 4.53 or later) - 'ToUpper', //(version 4.53 or later) - 'Unlink', - 'Until', // (version 4.56 or later) - 'Var2Clipb', //(version 4.46 or later) + 'ToLower', + 'ToUpper', + 'UnLink', + 'Until', + 'Var2Clipb', 'Wait', + 'Wait4All', 'WaitEvent', - 'Waitln', + 'WaitLn', + 'WaitN', 'WaitRecv', - 'WaitRegex', // (version 4.21 or later) + 'WaitRegEx', 'While', 'XmodemRecv', 'XmodemSend', 'YesNoBox', + 'YmodemRecv', + 'YmodemSend', 'ZmodemRecv', 'ZmodemSend' ), @@ -204,6 +235,7 @@ $language_data = array ( 'groupmatchstr9', 'inputstr', 'matchstr', + 'mtimeout', 'param2', 'param3', 'param4', @@ -225,11 +257,14 @@ $language_data = array ( '$[6]', '$[7]', '$[8]', + '$[9]', + '$branch$', + '$computername$', '$connection$', '$email$', '$logdir$', '$logfilename$', - '$logit$', + '$lttfilename$', '$mobile$', '$name$', '$pager$', @@ -239,7 +274,7 @@ $language_data = array ( '$ttdir$', '$user$', '$windir$', - ), + ), /* Keyword Symbols */ 4 => array( 'and', @@ -249,9 +284,11 @@ $language_data = array ( ) ), 'SYMBOLS' => array( - '(', ')', '[', ']', - '~', '!', '+', '-', '*', '/', '%', '>>', '<<', '<<<', '>>>', '&', '^', '|', - '<>', '<=', '>=', '=', '==', '<>', '!=', '&&', '||' + '(', ')', '[', ']', '{', '}', + '+', '-', '*', '/', '%', + '!', '&', '|', '^', + '<', '>', '=', + '?', ':', ';', ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -314,4 +351,4 @@ $language_data = array ( 'TAB_WIDTH' => 4 ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/text.php b/inc/geshi/text.php index 66f459293..dd219f599 100644 --- a/inc/geshi/text.php +++ b/inc/geshi/text.php @@ -4,7 +4,7 @@ * -------- * Author: Sean Hanna (smokingrope@gmail.com) * Copyright: (c) 2006 Sean Hanna - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 04/23/2006 * * Standard Text File (No Syntax Highlighting). diff --git a/inc/geshi/thinbasic.php b/inc/geshi/thinbasic.php index 693c698d6..c496cea6f 100644 --- a/inc/geshi/thinbasic.php +++ b/inc/geshi/thinbasic.php @@ -4,7 +4,7 @@ * ------ * Author: Eros Olmi (eros.olmi@thinbasic.com) * Copyright: (c) 2006 Eros Olmi (http://www.thinbasic.com), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/05/12 * * thinBasic language file for GeSHi. diff --git a/inc/geshi/tsql.php b/inc/geshi/tsql.php index b915b087d..dddf51934 100644 --- a/inc/geshi/tsql.php +++ b/inc/geshi/tsql.php @@ -4,7 +4,7 @@ * -------- * Author: Duncan Lock (dunc@dflock.co.uk) * Copyright: (c) 2006 Duncan Lock (http://dflock.co.uk/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/11/22 * * T-SQL language file for GeSHi. diff --git a/inc/geshi/typoscript.php b/inc/geshi/typoscript.php index 525271428..c1e380689 100644 --- a/inc/geshi/typoscript.php +++ b/inc/geshi/typoscript.php @@ -4,7 +4,7 @@ * -------- * Author: Jan-Philipp Halle (typo3@jphalle.de) * Copyright: (c) 2005 Jan-Philipp Halle (http://www.jphalle.de/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.9 * Date Started: 2005/07/29 * * TypoScript language file for GeSHi. diff --git a/inc/geshi/unicon.php b/inc/geshi/unicon.php index edad62df3..42fffc886 100644 --- a/inc/geshi/unicon.php +++ b/inc/geshi/unicon.php @@ -4,7 +4,7 @@ * -------- * Author: Matt Oates (mattoates@gmail.com) * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2010/04/20 * * Unicon the Unified Extended Dialect of Icon language file for GeSHi. diff --git a/inc/geshi/uscript.php b/inc/geshi/uscript.php new file mode 100644 index 000000000..e06aa8ca7 --- /dev/null +++ b/inc/geshi/uscript.php @@ -0,0 +1,299 @@ +<?php +/************************************************************************************* + * uscript.php + * --------------------------------- + * Author: pospi (pospi@spadgos.com) + * Copyright: (c) 2007 pospi (http://pospi.spadgos.com) + * Release Version: 1.0.8.10 + * Date Started: 2007/05/21 + * + * UnrealScript language file for GeSHi. + * + * Comments: + * * Main purpose at this time is for Unreal Engine 2 / 2.5 + * * Mostly taken from UltraEdit unrealScript wordfile. + * + * CHANGES + * ------- + * 2007/05/21 (1.0.8.10) + * - First Release + * + * TODO (updated 2007/05/21) + * ------------------------- + * * Update to feature any UE3 classes / keywords when UT3 comes out + * + ************************************************************************************* + * + * 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' => 'Unreal Script', + 'COMMENT_SINGLE' => array( + 1 => '//', + 2 => '#' + ), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( //declaration keywords + 'simulated', 'state', 'class', 'function', 'event', 'var', 'local', + 'ignores', 'globalconfig', 'config', 'abstract', 'nativereplication', 'native', + 'auto', 'coerce', 'const', 'default', + 'defaultproperties', + 'enum', 'extends', 'expands', 'final', 'guid', 'latent', 'localized', + 'new', 'noexport', 'operator', 'preoperator', 'optional', 'out', + 'private', 'public', 'protected', 'reliable', 'replication', + 'singular', 'static', 'struct', 'transient', 'unreliable', + 'hidedropdown', 'cacheexempt', 'exec', 'delegate', 'import', 'placeable', 'exportstructs' + ), + 2 => array( //control flow keywords + 'for', 'while', 'do', 'if', 'else', 'switch', 'case', 'return', 'break', 'continue', + 'begin', 'loop', 'assert', + 'foreach', 'AllActors', 'DynamicActors', 'ChildActors', 'BasedActors', 'TouchingActors', + 'TraceActors', 'RadiusActors', 'VisibleActors', 'CollidingActors', 'VisibleCollidingActors' + ), + 3 => array( //global (object) functions + 'log', 'warn', 'rot', 'vect', 'Rand', 'Min', 'Max', 'Clamp', 'Abs', 'Sin', 'ASin', + 'Cos', 'ACos', 'Tan', 'ATan', 'Exp', 'Loge', 'Sqrt', 'Square', 'FRand', 'FMin', 'FMax', 'FClamp', + 'Lerp', 'Smerp', 'Ceil', 'Round', 'VSize', 'Normal', 'Invert', 'VRand', 'MirrorVectorByNormal', + 'GetAxes', 'GetUnAxes', 'RotRand', 'OrthoRotation', 'Normalize', 'ClockwiseFrom', + 'Len', 'InStr', 'Mid', 'Left', 'Right', 'Caps', 'Chr', 'Asc', 'Locs', + 'Divide', 'Split', 'StrCmp', 'Repl', 'Eval', + 'InterpCurveEval', 'InterpCurveGetOutputRange', 'InterpCurveGetInputDomain', + 'QuatProduct', 'QuatInvert', 'QuatRotateVector', 'QuatFindBetween', 'QuatFromAxisAndAngle', + 'QuatFromRotator', 'QuatToRotator', 'QuatSlerp', + 'Localize', 'GotoState', 'IsInState', 'GetStateName', + 'ClassIsChildOf', 'IsA', 'Enable', 'Disable', + 'GetPropertyText', 'SetPropertyText', 'GetEnum', 'DynamicLoadObject', 'FindObject', + 'SaveConfig', 'ClearConfig', 'StaticSaveConfig', 'ResetConfig', 'StaticClearConfig', + 'GetPerObjectNames', 'RandRange', 'StopWatch', 'IsOnConsole', 'IsSoaking', + 'PlatformIsMacOS', 'PlatformIsUnix', 'PlatformIsWindows', 'PlatformIs64Bit', + 'BeginState', 'EndState', 'Created', 'AllObjects', 'GetReferencers', 'GetItemName', + 'ReplaceText', 'EatStr' + ), + 4 => array( //common almost-global (actor) functions + 'ClientMessage', 'ConsoleCommand', 'CopyObjectToClipboard', 'TextToSpeech', + 'Error', 'Sleep', 'SetCollision', 'SetCollisionSize', 'SetDrawScale', 'SetDrawScale3D', + 'SetStaticMesh', 'SetDrawType', 'Move', 'SetLocation', 'SetRotation', + 'SetRelativeLocation', 'SetRelativeRotation', 'MoveSmooth', 'AutonomousPhysics', + 'SetBase', 'SetOwner', 'IsJoinedTo', 'GetMeshName', 'PlayAnim', 'LoopAnim', 'TweenAnim', + 'IsAnimating', 'FinishAnim', 'HasAnim', 'StopAnimating', 'FreezeFrameAt', 'SetAnimFrame', + 'IsTweening', 'AnimStopLooping', 'AnimEnd', 'LinkSkelAnim', 'LinkMesh', 'BoneRefresh', + 'GetBoneCoords', 'GetBoneRotation', 'GetRootLocation', 'GetRootRotation', 'AttachToBone', + 'DetachFromBone', 'SetBoneScale', 'UpdateURL', 'GetURLOption', 'SetPhysics', 'KAddImpulse', + 'KImpact', 'KApplyForce', 'Clock', 'UnClock', 'Destroyed', 'GainedChild', 'LostChild', + 'Tick', 'PostNetReceive', 'ClientTrigger', 'Trigger', 'UnTrigger', 'BeginEvent', 'EndEvent', + 'Timer', 'HitWall', 'Falling', 'Landed', 'ZoneChange', 'PhysicsVolumeChange', 'Touch', + 'PostTouch', 'UnTouch', 'Bump', 'BaseChange', 'Attach', 'Detach', 'SpecialHandling', + 'EncroachingOn', 'EncroachedBy', 'RanInto', 'FinishedInterpolation', 'EndedRotation', + 'UsedBy', 'FellOutOfWorld', 'KilledBy', 'TakeDamage', 'HealDamage', 'Trace', 'FastTrace', + 'TraceThisActor', 'spawn', 'Destroy', 'TornOff', 'SetTimer', 'PlaySound', 'PlayOwnedSound', + 'GetSoundDuration', 'MakeNoise', 'BeginPlay', 'GetAllInt', 'RenderOverlays', 'RenderTexture', + 'PreBeginPlay', 'PostBeginPlay', 'PostNetBeginPlay', 'HurtRadius', 'Reset', 'Crash' + ), + 5 => array( //data types + 'none', 'null', + 'float', 'int', 'bool', 'byte', 'char', 'double', 'iterator', 'name', 'string', //primitive + 'plane', 'rotator', 'vector', 'spline', 'coords', 'Quat', 'Range', 'RangeVector', //structs + 'Scale', 'Color', 'Box', 'IntBox', 'FloatBox', 'BoundingVolume', 'Matrix', 'InterpCurvePoint', + 'InterpCurve', 'CompressedPosition', 'TMultiMap', 'PointRegion', + 'KRigidBodyState', 'KSimParams', 'AnimRep', 'FireProperties', + 'lodmesh', 'skeletalmesh', 'mesh', 'StaticMesh', 'MeshInstance', //3d resources + 'sound', //sound resources + 'material', 'texture', 'combiner', 'modifier', 'ColorModifier', 'FinalBlend', //2d resources + 'MaterialSequence', 'MaterialSwitch', 'OpacityModifier', 'TexModifier', 'TexEnvMap', + 'TexCoordSource', 'TexMatrix', 'TexOscillator', 'TexPanner', 'TexRotator', 'TexScaler', + 'RenderedMaterial', 'BitmapMaterial', 'ScriptedTexture', 'ShadowBitmapMaterial', 'Cubemap', + 'FractalTexture', 'FireTexture', 'IceTexture', 'WaterTexture', 'FluidTexture', 'WaveTexture', + 'WetTexture', 'ConstantMaterial', 'ConstantColor', 'FadeColor', 'ParticleMaterial', + 'ProjectorMaterial', 'Shader', 'TerrainMaterial', 'VertexColor' + ), + 6 => array( //misc keywords + 'false', 'true', 'self', 'super', 'MaxInt', 'Pi' + ), + 7 => array( //common actor enums & variables + 'DT_None', 'DT_Sprite', 'DT_Mesh', 'DT_Brush', 'DT_RopeSprite', + 'DT_VerticalSprite', 'DT_TerraForm', 'DT_SpriteAnimOnce', 'DT_StaticMesh', 'DT_DrawType', + 'DT_Particle', 'DT_AntiPortal', 'DT_FluidSurface', + 'PHYS_None', 'PHYS_Walking', 'PHYS_Falling', 'PHYS_Swimming', 'PHYS_Flying', + 'PHYS_Rotating', 'PHYS_Projectile', 'PHYS_Interpolating', 'PHYS_MovingBrush', 'PHYS_Spider', + 'PHYS_Trailer', 'PHYS_Ladder', 'PHYS_RootMotion', 'PHYS_Karma', 'PHYS_KarmaRagDoll', + 'PHYS_Hovering', 'PHYS_CinMotion', + 'ROLE_None', 'ROLE_DumbProxy', 'ROLE_SimulatedProxy', + 'ROLE_AutonomousProxy', 'ROLE_Authority', + 'STY_None', 'STY_Normal', 'STY_Masked', 'STY_Translucent', 'STY_Modulated', 'STY_Alpha', + 'STY_Additive', 'STY_Subtractive', 'STY_Particle', 'STY_AlphaZ', + 'OCCLUSION_None', 'OCCLUSION_BSP', 'OCCLUSION_Default', 'OCCLUSION_StaticMeshes', + 'SLOT_None', 'SLOT_Misc', 'SLOT_Pain', 'SLOT_Interact', 'SLOT_Ambient', 'SLOT_Talk', + 'SLOT_Interface', 'MTRAN_None', 'MTRAN_Instant', 'MTRAN_Segue', 'MTRAN_Fade', + 'MTRAN_FastFade', 'MTRAN_SlowFade', + + 'DrawType', 'Physics', 'Owner', 'Base', 'Level', 'Game', 'Instigator', 'RemoteRole', 'Role', + 'LifeSpan', 'Tag', 'Event', 'Location', 'Rotation', 'Velocity', 'Acceleration', + 'RelativeLocation', 'RelativeRotation', 'DrawScale', 'DrawScale3D', 'Skins', 'Style', + 'SoundVolume', 'SoundPitch', 'SoundRadius', 'TransientSoundVolume', 'TransientSoundRadius', + 'CollisionRadius', 'CollisionHeight', 'Mass', 'Buoyancy', 'RotationRate', 'DesiredRotation' + ), + 8 => array( //common non-actor uscript classes + 'Object', + 'CacheManager', 'CameraEffect', 'Canvas', 'CheatManager', 'Commandlet', 'DecoText', 'GUI', + 'InteractionMaster', 'Interactions', 'Interaction', 'KarmaParamsCollision', 'KarmaParamsRBFull', + 'KarmaParamsSkel', 'KarmaParams', 'LevelSummary', 'Locale', 'Manifest', 'MaterialFactory', + 'MeshObject', 'ObjectPool', 'Pallete', + 'ParticleEmitter', 'MeshEmitter', 'BeamEmitter', 'SpriteEmitter', 'SparkEmitter', 'TrailEmitter', + 'Player', 'PlayerInput', 'PlayInfo', 'ReachSpec', 'Resource', 'LatentScriptedAction', 'ScriptedAction', + 'speciesType', 'StreamBase', 'Stream', 'EditorEngine', 'Engine', 'Time', 'WeaponFire', + 'WebApplication', 'WebRequest', 'WebResponse', 'WebSkin', 'xPawnGibGroup', 'xPawnSoundGroup', + 'xUtil' + ), + 9 => array( //common actor-based uscript classes + 'Actor', + 'Controller', 'AIController', 'ScriptedController', 'Bot', 'xBot', + 'PlayerController', 'UnrealPlayer', 'xPlayer', + 'DamageType', 'WeaponDamageType', 'Effects', 'Emitter', 'NetworkEmitter', + 'Gib', 'HUD', 'HudBase', 'Info', 'FluidSurfaceInfo', 'Combo', + 'GameInfo', 'UnrealMPGameInfo', 'DeathMatch', 'TeamGame', 'CTFGame', + 'xCTFGame', 'xBombingRun', 'xDoubleDom', 'xTeamGame', + 'ASGameInfo', 'Invasion', 'ONSOnslaughtGame', 'xDeathmatch', + 'Mutator', 'Inventory', 'Ammunition', 'KeyInventory', 'Powerups', 'Armor', 'Weapon', + 'InventoryAttachment', 'WeaponAttachment', + 'KActor', 'KConstraint', 'KBSJoint', 'KCarWheelJoint', 'KConeLimit', 'KHinge', 'KTire', + 'KVehicleFactory', 'Keypoint', 'AIScript', 'ScriptedSequence', 'ScriptedTrigger', + 'AmbientSound', 'Light', 'SpotLight', 'SunLight', 'TriggerLight', + 'MeshEffect', 'NavigationPoint', 'GameObjective', 'DestroyableObjective', + 'PathNode', 'FlyingPathNode', 'RoadPathNode', 'InventorySpot', 'PlayerStart', + 'Pawn', 'Vehicle', 'UnrealPawn', 'xPawn', 'Monster', 'ASVehicle', 'KVehicle', 'KCar', + 'ONSWeaponPawn', 'SVehicle', 'ONSVehicle', 'ONSChopperCraft', 'ONSHoverCraft', + 'ONSPlaneCraft', 'ONSTreadCraft', 'ONSWheeledCraft', + 'Pickup', 'Ammo', 'UTAmmoPickup', 'ArmorPickup', 'KeyPickup', 'TournamentPickup', + 'Projectile', 'Projector', 'DynamicProjector', 'ShadowProjector', 'xScorch', + 'xEmitter', 'xPickupBase', 'xProcMesh', 'xWeatherEffect', 'PhysicsVolume', 'Volume' + ), + 10 => array( //symbol-like operators + 'dot','cross' + ) + ), + 'SYMBOLS' => array( + '+','-','=','/','*','-','%','>','<','&','^','!','|','`','(',')','[',']','{','}', + '<<','>>','$','@' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000FF;', + 2 => 'color: #0000FF;', + 3 => 'color: #0066AA;', + 4 => 'color: #0088FF;', + 5 => 'color: #E000E0;', + 6 => 'color: #900000;', + 7 => 'color: #888800;', + 8 => 'color: #AA6600;', + 9 => 'color: #FF8800;', + 10 => 'color: #0000FF;' + ), + 'COMMENTS' => array( + 1 => 'color: #008080; font-style: italic;', + 2 => 'color: #000000; font-weight: bold;', + 'MULTI' => 'color: #008080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #999999;' + ), + 'NUMBERS' => array( + 0 => 'color: #FF0000;' + ), + 'METHODS' => array( + 0 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #669966;' + ), + 'REGEXPS' => array( + 0 => 'color: #E000E0;', + 1 => 'color: #E000E0;' + ), + 'SCRIPT' => array( + 0 => '' + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => 'http://wiki.beyondunreal.com/wiki?search={FNAME}', + 9 => 'http://wiki.beyondunreal.com/wiki?search={FNAME}', + 10 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array('.'), + 'REGEXPS' => array( //handle template-style variable definitions + 0 => array( + GESHI_SEARCH => '(class\s*)<(\s*(\w+)\s*)>', + GESHI_REPLACE => "\${1}", + GESHI_MODIFIERS => 'i', + GESHI_BEFORE => '', + GESHI_AFTER => "< \${3} >" + ), + 1 => array( + GESHI_SEARCH => '(array\s*)<(\s*(\w+)\s*)>', + GESHI_REPLACE => "\${1}", + GESHI_MODIFIERS => 'i', + GESHI_BEFORE => '', + GESHI_AFTER => "< \${3} >" + ) + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 10 => array( + 'DISALLOWED_BEFORE' => '(?<!<)(?=DOT>)' + ) + ) + ) +); + +?> diff --git a/inc/geshi/vala.php b/inc/geshi/vala.php index 334398a87..a9d6b0745 100644 --- a/inc/geshi/vala.php +++ b/inc/geshi/vala.php @@ -4,7 +4,7 @@ * ---------- * Author: Nicolas Joseph (nicolas.joseph@valaide.org) * Copyright: (c) 2009 Nicolas Joseph - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/04/29 * * Vala language file for GeSHi. diff --git a/inc/geshi/vb.php b/inc/geshi/vb.php index f24d86505..dd6545eb5 100644 --- a/inc/geshi/vb.php +++ b/inc/geshi/vb.php @@ -5,7 +5,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.8 + * Release Version: 1.0.8.10 * Date Started: 2004/08/30 * * Visual Basic language file for GeSHi. diff --git a/inc/geshi/vbnet.php b/inc/geshi/vbnet.php index f74775214..563bb993a 100644 --- a/inc/geshi/vbnet.php +++ b/inc/geshi/vbnet.php @@ -4,7 +4,7 @@ * --------- * Author: Alan Juden (alan@judenware.org) * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/06/04 * * VB.NET language file for GeSHi. diff --git a/inc/geshi/verilog.php b/inc/geshi/verilog.php index 14c1d7172..9e4211eb9 100644 --- a/inc/geshi/verilog.php +++ b/inc/geshi/verilog.php @@ -4,7 +4,7 @@ * ----------- * Author: G�nter Dannoritzer <dannoritzer@web.de> * Copyright: (C) 2008 Guenter Dannoritzer - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/05/28 * * Verilog language file for GeSHi. diff --git a/inc/geshi/vhdl.php b/inc/geshi/vhdl.php index 6856933c7..f6ce941d4 100644 --- a/inc/geshi/vhdl.php +++ b/inc/geshi/vhdl.php @@ -4,7 +4,7 @@ * -------- * Author: Alexander 'E-Razor' Krause (admin@erazor-zone.de) * Copyright: (c) 2005 Alexander Krause - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/06/15 * * VHDL (VHSICADL, very high speed integrated circuit HDL) language file for GeSHi. diff --git a/inc/geshi/vim.php b/inc/geshi/vim.php index f4f93ad2e..68abc272e 100644 --- a/inc/geshi/vim.php +++ b/inc/geshi/vim.php @@ -6,7 +6,7 @@ * Contributors: * - Laurent Peuch (psycojoker@gmail.com) * Copyright: (c) 2008 Swaroop C H (http://www.swaroopch.com) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/10/19 * * Vim scripting language file for GeSHi. diff --git a/inc/geshi/visualfoxpro.php b/inc/geshi/visualfoxpro.php index 7d804257f..322f34bae 100644 --- a/inc/geshi/visualfoxpro.php +++ b/inc/geshi/visualfoxpro.php @@ -4,7 +4,7 @@ * ---------------- * Author: Roberto Armellin (r.armellin@tin.it) * Copyright: (c) 2004 Roberto Armellin, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/09/17 * * Visual FoxPro language file for GeSHi. diff --git a/inc/geshi/visualprolog.php b/inc/geshi/visualprolog.php index 5afd7de8d..a51466dcd 100644 --- a/inc/geshi/visualprolog.php +++ b/inc/geshi/visualprolog.php @@ -4,7 +4,7 @@ * ---------- * Author: Thomas Linder Puls (puls@pdc.dk) * Copyright: (c) 2008 Thomas Linder Puls (puls@pdc.dk) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/11/20 * * Visual Prolog language file for GeSHi. diff --git a/inc/geshi/whitespace.php b/inc/geshi/whitespace.php index c47775d44..3e19b60ce 100644 --- a/inc/geshi/whitespace.php +++ b/inc/geshi/whitespace.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2009/10/31 * * Whitespace language file for GeSHi. diff --git a/inc/geshi/whois.php b/inc/geshi/whois.php index 9b4b24179..ae851cd08 100644 --- a/inc/geshi/whois.php +++ b/inc/geshi/whois.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/09/14 * * Whois response (RPSL format) language file for GeSHi. diff --git a/inc/geshi/winbatch.php b/inc/geshi/winbatch.php index 949e61c14..d27fe070f 100644 --- a/inc/geshi/winbatch.php +++ b/inc/geshi/winbatch.php @@ -4,7 +4,7 @@ * ------------ * Author: Craig Storey (storey.craig@gmail.com) * Copyright: (c) 2004 Craig Storey (craig.xcottawa.ca) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2006/05/19 * * WinBatch language file for GeSHi. diff --git a/inc/geshi/xbasic.php b/inc/geshi/xbasic.php index a2d85a6df..94a2debf1 100644 --- a/inc/geshi/xbasic.php +++ b/inc/geshi/xbasic.php @@ -4,9 +4,8 @@ * ---------- * Author: Jos Gabriel Moya Yangela (josemoya@gmail.com) * Copyright: (c) 2005 Jos Gabriel Moya Yangela (http://aprenderadesaprender.6te.net) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2005/11/23 - * Last Modified: $Date: 2010/01/30 00:42:00 $ * * XBasic language file for GeSHi. * diff --git a/inc/geshi/xml.php b/inc/geshi/xml.php index efd3e6c33..4a420d1b7 100644 --- a/inc/geshi/xml.php +++ b/inc/geshi/xml.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2004/09/01 * * XML language file for GeSHi. Based on the idea/file by Christian Weiske diff --git a/inc/geshi/xorg_conf.php b/inc/geshi/xorg_conf.php index 5cde8e171..e1fff61b5 100644 --- a/inc/geshi/xorg_conf.php +++ b/inc/geshi/xorg_conf.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2008/06/18 * * xorg.conf language file for GeSHi. diff --git a/inc/geshi/xpp.php b/inc/geshi/xpp.php index 216c46eaf..d4d7b457d 100644 --- a/inc/geshi/xpp.php +++ b/inc/geshi/xpp.php @@ -4,7 +4,7 @@ * ------- * Author: Simon Butcher (simon@butcher.name) * Copyright: (c) 2007 Simon Butcher (http://simon.butcher.name/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/02/27 * * Axapta/Dynamics Ax X++ language file for GeSHi. diff --git a/inc/geshi/yaml.php b/inc/geshi/yaml.php new file mode 100644 index 000000000..1b3ce96f2 --- /dev/null +++ b/inc/geshi/yaml.php @@ -0,0 +1,150 @@ +<?php +/************************************************************************************* + * yaml.php + * -------- + * Author: Josh Ventura (JoshV10@gmail.com) + * Copyright: (c) 2010 Josh Ventura + * Release Version: 1.0.8.10 + * Date Started: 2010/12/14 + * + * YAML language file for GeSHi. + * + * YAML gets hairy sometimes. If anything needs fixed, drop me an email and + * I'll probably spit up on it. This is, in general, not a long format. + * + * CHANGES + * --------- + * 2010/12/14 + * - Started project in rage over GML support but not YAML support. WTFH? + * 2010/12/15 + * - Submitted to Ben. + * + * TODO (not updated since release) + * ---------------------------------- + * - Field testing and necessary corrections: this grammar file is usable, but not + * completely accurate. There are, in fact, multiple cases in which it will mess + * up, and some of it may need moved around. It is the most temperamental parser + * I have ever associated my name with. Points of interest follow: + * * Improvised support for | and >: since PHP offers no variable-width lookbehind, + * these blocks will still be highlighted even when commented out. As it happens, + * any line ending with | or > could result in the unintentional highlighting of + * all remaining lines in the file, just because I couldn't check for this regex + * as a lookbehind: '/:(\s+)(!!(\w+)(\s+))?/' + * If there is a workaround for that, it needs implemented. + * * I may be missing some operators. I deliberately omitted inline array notation + * as, in general, it's ugly and tends to conflict with plain-text. Ensuring all + * highlighted list delimiters are not plain text would be as simple as checking + * that they follow a colon directly. Alas, without variable-length lookbehinds, + * if there is a way to do so in GeSHi I am unaware of it. + * * I kind of whored the comment regexp array. It seemed like a safe bet, so it's + * where I crammed everything. Some of it may need moved elsewhere for neatness. + * * The !!typename highlight needs not to interfere with ": |" and ": >": Pairing + * key: !!type | value is perfectly legal, but again due to lookbehind issues, I + * can't add a case for that. Also, it is likely that multiple spaces can be put + * between the colon and pipe symbol, which would also break it. + * + ************************************************************************************* + * + * 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' => 'YAML', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array(), + //Keys + 'COMMENT_REGEXP' => array( // ENTRY ZERO SHOULD CHECK FOR (\n(\s*)([^#%]+?):(\s+)(!!(\w+)(\s+))?) AS A LOOKBEHIND, BUT IT CAN'T. + 0 => '/(?<=\s[\|>]\n)(\s+)(.*)((?=[\n$])(([\n^](\1(.*)|(?=[\n$])))*)|$)/', // Pipe blocks and > blocks. + 1 => '/#(.*)/', // Blue # comments + 2 => '/%(.*)/', // Red % comments + 3 => '/(^|\n)([^#%^\n]+?)(?=: )/', // Key-value names + 4 => '/(^|\n)([^#%^\n]+?)(?=:\n)/',// Key-group names + 5 => '/(?<=^---)(\s*)!(\S+)/', // Comments after --- + 6 => '/(?<=: )(\s*)\&(\S+)/', // References + 7 => '/(?<=: )(\s*)\*(\S+)/', // Dereferences + 8 => '/!!(\w+)/', // Types + //9 => '/(?<=\n)(\s*)-(?!-)/', // List items: This needs to search within comments 3 and 4, but I don't know how. + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'all','any','none', "yes", "no" + ), + ), + 'SYMBOLS' => array( + 1 => array('---', '...'), + 2 => array(': ', ">\n", "|\n", '<<:', ":\n") // It'd be nice if I could specify that the colon must + // follow comment 3 or 4 to be considered, and the > and | + // must follow such a colon. + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'font-weight: bold;' + ), + 'COMMENTS' => array( + 0 => 'color: #303050;background-color: #F5F5F5', + 1 => 'color: blue;', + 2 => 'font-weight: bold; color: red;', + 3 => 'color: green;', + 4 => 'color: #007F45;', + 5 => 'color: #7f7fFF;', + 6 => 'color: #FF7000;', + 7 => 'color: #FF45C0;', + 8 => 'font-weight: bold; color: #005F5F;', + //9 => 'font-weight: bold; color: #000000;', + ), + 'ESCAPE_CHAR' => array( + ), + 'BRACKETS' => array( + ), + 'STRINGS' => array( + 0 => 'color: #CF00CF;' + ), + 'NUMBERS' => array( + // 0 => 'color: #33f;' // Don't highlight numbers, really... + ), + 'METHODS' => array( + 1 => '', + 2 => '' + ), + 'SYMBOLS' => array( + 1 => 'color: cyan;', + 2 => 'font-weight: bold; color: brown;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '' + ) + ), + 'URLS' => array(1 => ''), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( ), + 'REGEXPS' => array( ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( ), + 'HIGHLIGHT_STRICT_BLOCK' => array( ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/z80.php b/inc/geshi/z80.php index f28593cd2..cb92e9692 100644 --- a/inc/geshi/z80.php +++ b/inc/geshi/z80.php @@ -4,7 +4,7 @@ * ------- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2007-2008 Benny Baumann (http://www.omorphia.de/) - * Release Version: 1.0.8.8 + * Release Version: 1.0.8.10 * Date Started: 2007/02/06 * * ZiLOG Z80 Assembler language file for GeSHi. diff --git a/inc/geshi/zxbasic.php b/inc/geshi/zxbasic.php new file mode 100644 index 000000000..b32b8950a --- /dev/null +++ b/inc/geshi/zxbasic.php @@ -0,0 +1,150 @@ +<?php +/************************************************************************************* + * zxbasic.php + * ------------- + * Author: Jose Rodriguez (a.k.a. Boriel) + * Based on Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) Freebasic template + * Release Version: 1.0.8.10 + * Date Started: 2010/06/19 + * + * ZXBasic language file for GeSHi. + * + * More details at http://www.zxbasic.net/ + * + * CHANGES + * ------- + * 2010/06/19 (1.0.0) + * - First Release + * + * TODO (updated 2007/02/06) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'ZXBasic', + 'COMMENT_SINGLE' => array( + 1 => "'", + 2 => '#', + 3 => 'REM' + ), + 'COMMENT_MULTI' => array("/'" => "'/"), + 'CASE_KEYWORDS' => GESHI_CAPS_UPPER, //GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + "ASM", "BEEP", "BOLD", "BORDER", "BRIGHT", "ByRef", "ByVal", "CAST", + "CIRCLE", "CLS", "CONST", "CONTINUE", "DECLARE", "DIM", "DO", + "DRAW", "ELSE", "ELSEIF", "END", "EXIT", "FastCall", "FLASH", "FOR", + "FUNCTION", "GOTO", "GOSUB", "GO", "IF", "INK", "INVERSE", "ITALIC", + "LET", "LOAD", "LOOP", "NEXT", "OVER", "PAPER", "PAUSE", "PI", + "PLOT", "POKE", "PRINT", "RANDOMIZE", "REM", "RETURN", "SAVE", + "StdCall", "Sub", "THEN", "TO", "UNTIL", "VERIFY", "WEND", "WHILE", + ), + + // types + 2 => array( + 'byte', 'ubyte', 'integer', 'uinteger', 'long', 'ulong', 'fixed', + 'float', 'string' + ), + + // Functions + 3 => array( + "ABS", "ACS", "ASN", "ATN", "CHR", "CODE", "COS", "CSRLIN", "EXP", + "HEX", "HEX16", "INKEY", "INT", "LEN", "LN", "PEEK", "POS", "RND", + "SCREEN$", "SGN", "SIN", "SQR", "STR", "TAN", "VAL", + ), + + // Operators and modifiers + 4 => array( + "AT", "AS", "AND", "MOD", "NOT", "OR", "SHL", "SHR", "STEP", "XOR" + ) + ), + 'SYMBOLS' => array( + '(', ')' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000080; font-weight: bold;', // Commands + 2 => 'color: #800080; font-weight: bold;', // Types + 3 => 'color: #006000; font-weight: bold;', // Functions + 4 => 'color: #801010; font-weight: bold;' // Operators and Modifiers + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #339933;', + 3 => 'color: #808080; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'BRACKETS' => array( + //0 => 'color: #66cc66;' + 0 => 'color: #007676;' + ), + 'STRINGS' => array( + //0 => 'color: #ff0000;' + 0 => 'color: #A00000; font-style: italic;' + ), + 'NUMBERS' => array( + //0 => 'color: #cc66cc;' + 0 => 'color: #b05103;'// font-weight: bold;' + ), + 'METHODS' => array( + 0 => 'color: #66cc66;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/html.php b/inc/html.php index 0b297a347..a20ee5c39 100644 --- a/inc/html.php +++ b/inc/html.php @@ -280,8 +280,11 @@ function html_draft(){ * @author Harry Fuecks <hfuecks@gmail.com> */ function html_hilight($html,$phrases){ - $phrases = array_filter((array) $phrases); - $regex = join('|',array_map('ft_snippet_re_preprocess', array_map('preg_quote_cb',$phrases))); + $phrases = (array) $phrases; + $phrases = array_map('preg_quote_cb', $phrases); + $phrases = array_map('ft_snippet_re_preprocess', $phrases); + $phrases = array_filter($phrases); + $regex = join('|',$phrases); if ($regex === '') return $html; if (!utf8_check($regex)) return $html; @@ -1441,7 +1444,7 @@ function html_edit_form($param) { global $TEXT; if ($param['target'] !== 'section') { - msg('No editor for edit target ' . $param['target'] . ' found.', -1); + msg('No editor for edit target ' . hsc($param['target']) . ' found.', -1); } $attr = array('tabindex'=>'1'); diff --git a/inc/infoutils.php b/inc/infoutils.php index 2b8486906..ff752cd0f 100644 --- a/inc/infoutils.php +++ b/inc/infoutils.php @@ -25,11 +25,14 @@ function checkUpdateMessages(){ // check if new messages needs to be fetched if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_INC.DOKU_SCRIPT)){ + dbglog("checkUpdatesMessages(): downloading messages.txt"); $http = new DokuHTTPClient(); $http->timeout = 8; $data = $http->get(DOKU_MESSAGEURL.$updateVersion); io_saveFile($cf,$data); + @touch($cf); }else{ + dbglog("checkUpdatesMessages(): messages.txt up to date"); $data = io_readFile($cf); } diff --git a/inc/init.php b/inc/init.php index d57e12d7b..a28050736 100644 --- a/inc/init.php +++ b/inc/init.php @@ -3,7 +3,9 @@ * Initialize some defaults needed for DokuWiki */ -// start timing Dokuwiki execution +/** + * timing Dokuwiki execution + */ function delta_time($start=0) { return microtime(true)-((float)$start); } @@ -197,6 +199,10 @@ if (empty($plugin_controller_class)) $plugin_controller_class = 'Doku_Plugin_Con // load libraries require_once(DOKU_INC.'inc/load.php'); +// input handle class +global $INPUT; +$INPUT = new Input(); + // initialize plugin controller $plugin_controller = new $plugin_controller_class(); @@ -233,10 +239,11 @@ function init_paths(){ 'lockdir' => 'locks', 'tmpdir' => 'tmp'); - foreach($paths as $c => $p){ - if(empty($conf[$c])) $conf[$c] = $conf['savedir'].'/'.$p; - $conf[$c] = init_path($conf[$c]); - if(empty($conf[$c])) nice_die("The $c ('$p') does not exist, isn't accessible or writable. + foreach($paths as $c => $p) { + $path = empty($conf[$c]) ? $conf['savedir'].'/'.$p : $conf[$c]; + $conf[$c] = init_path($path); + if(empty($conf[$c])) + nice_die("The $c ('$p') at $path is not found, isn't accessible or writable. You should check your config and permission settings. Or maybe you want to <a href=\"install.php\">run the installer</a>?"); @@ -265,7 +272,7 @@ function init_lang($langCode) { } /** - * Checks the existance of certain files and creates them if missing. + * Checks the existence of certain files and creates them if missing. */ function init_files(){ global $conf; @@ -307,12 +314,12 @@ function init_files(){ * Returns absolute path * * This tries the given path first, then checks in DOKU_INC. - * Check for accessability on directories as well. + * Check for accessibility on directories as well. * * @author Andreas Gohr <andi@splitbrain.org> */ function init_path($path){ - // check existance + // check existence $p = fullpath($path); if(!@file_exists($p)){ $p = fullpath(DOKU_INC.$path); @@ -560,7 +567,7 @@ function fullpath($path,$exists=false){ } $finalpath = $root.implode('/', $newpath); - // check for existance when needed (except when unit testing) + // check for existence when needed (except when unit testing) if($exists && !defined('DOKU_UNITTEST') && !@file_exists($finalpath)) { return false; } diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php index af92243c9..350e26695 100644 --- a/inc/lang/ar/lang.php +++ b/inc/lang/ar/lang.php @@ -42,11 +42,14 @@ $lang['btn_backtomedia'] = 'ارجع إلى اختيار ملف الوسا $lang['btn_subscribe'] = 'ادر الاشتراكات'; $lang['btn_profile'] = 'حدث الملف الشخصي'; $lang['btn_reset'] = 'صفّر'; +$lang['btn_resendpwd'] = 'اضبط كلمة سر جديدة'; $lang['btn_draft'] = 'حرر المسودة'; $lang['btn_recover'] = 'استرجع المسودة'; $lang['btn_draftdel'] = 'احذف المسوّدة'; $lang['btn_revert'] = 'استعد'; $lang['btn_register'] = 'سجّل'; +$lang['btn_apply'] = 'طبق'; +$lang['btn_media'] = 'مدير الوسائط'; $lang['loggedinas'] = 'داخل باسم'; $lang['user'] = 'اسم المستخدم'; $lang['pass'] = 'كلمة السر'; @@ -76,6 +79,7 @@ $lang['profnoempty'] = 'غير مسموح باسم مستخدم أو $lang['profchanged'] = 'حُدث الملف الشخصي للمستخدم بنجاح.'; $lang['pwdforget'] = 'أنسيت كلمة السر؟ احصل على واحدة جديدة'; $lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور.'; +$lang['resendpwd'] = 'اضبط كلمة سر جديدة لـ'; $lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ كل الحقول.'; $lang['resendpwdnouser'] = 'عذراً، لم نجد المستخدم هذا في قاعدة بياناتنا.'; $lang['resendpwdbadauth'] = 'عذراً، رمز التفعيل هذا غير صحيح. نأكد من استخدامك كامل وصلة التأكيد.'; @@ -90,7 +94,7 @@ $lang['txt_filename'] = 'رفع كـ (اختياري)'; $lang['txt_overwrt'] = 'اكتب على ملف موجود'; $lang['lockedby'] = 'مقفلة حاليا لـ'; $lang['lockexpire'] = 'ينتهي القفل في'; -$lang['js']['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.'; +$lang['js']['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.'; $lang['js']['notsavedyet'] = 'التعديلات غير المحفوظة ستفقد.'; $lang['js']['searchmedia'] = 'ابحث عن ملفات'; $lang['js']['keepopen'] = 'أبقي النافذة مفتوحة أثناء الاختيار'; @@ -121,6 +125,17 @@ $lang['js']['nosmblinks'] = 'الروابط لمجلدات مشاركة و $lang['js']['linkwiz'] = 'مرشد الروابط'; $lang['js']['linkto'] = 'الرابط إلى :'; $lang['js']['del_confirm'] = 'هل حقاً تريد حذف البنود المختارة؟'; +$lang['js']['restore_confirm'] = 'أمتأكد من استرجاع هذه النسخة؟'; +$lang['js']['media_diff'] = 'عرض الفروق:'; +$lang['js']['media_diff_both'] = 'جنبا إلى جنب'; +$lang['js']['media_diff_opacity'] = 'Shine-through'; +$lang['js']['media_diff_portions'] = 'Swipe'; +$lang['js']['media_select'] = 'اختر ملفا...'; +$lang['js']['media_upload_btn'] = 'ارفع'; +$lang['js']['media_done_btn'] = 'تم'; +$lang['js']['media_drop'] = 'اسقط الملف هنا لرفعه'; +$lang['js']['media_cancel'] = 'أزل'; +$lang['js']['media_overwrt'] = 'أكتب فوق الملفات الموجودة'; $lang['rssfailed'] = 'خطأ ما حدث أثناء جلب ملف التغذية:'; $lang['nothingfound'] = 'لا يوجد شيء'; $lang['mediaselect'] = 'ملفات الوسائط'; @@ -170,11 +185,20 @@ $lang['external_edit'] = 'تحرير خارجي'; $lang['summary'] = 'ملخص التحرير'; $lang['noflash'] = 'تحتاج إلى<a href="http://www.adobe.com/products/flashplayer/">ملحق فلاش أدوبي</a> لعرض هذا المحتوى.'; $lang['download'] = 'نزل Snippet'; +$lang['tools'] = 'أدوات'; +$lang['user_tools'] = 'أدوات المستخدم'; +$lang['site_tools'] = 'أدوات الموقع'; +$lang['page_tools'] = 'أدوات الصفحة'; +$lang['skip_to_content'] = 'تجاوز إلى المحتوى'; $lang['mail_newpage'] = 'إضافة صفحة:'; $lang['mail_changed'] = 'تعديل صفحة:'; $lang['mail_subscribe_list'] = 'صفحات غيرت في النطاق:'; $lang['mail_new_user'] = 'مشترك جديد:'; $lang['mail_upload'] = 'رفع ملف:'; +$lang['changes_type'] = 'أظهر تغييرات الـ'; +$lang['pages_changes'] = 'صفحات'; +$lang['media_changes'] = 'ملفات الوسائط'; +$lang['both_changes'] = 'كلا من الصفحات وملفات الوسائط'; $lang['qb_bold'] = 'نص عريض'; $lang['qb_italic'] = 'نص مائل'; $lang['qb_underl'] = 'نص مسطر'; @@ -215,6 +239,9 @@ $lang['img_copyr'] = 'حقوق النسخ'; $lang['img_format'] = 'الهيئة'; $lang['img_camera'] = 'الكمرا'; $lang['img_keywords'] = 'كلمات مفتاحية'; +$lang['img_width'] = 'العرض'; +$lang['img_height'] = 'الإرتفاع'; +$lang['img_manager'] = 'اعرض في مدير الوسائط'; $lang['subscr_subscribe_success'] = 'اضيف %s لقائمة اشتراك %s'; $lang['subscr_subscribe_error'] = 'خطأ في إضافة %s لقائمة اشتراك %s'; $lang['subscr_subscribe_noaddress'] = 'ليس هناك عنوان مرتبط بولوجك، لا يمكن اضافتك لقائمة الاشتراك'; @@ -233,6 +260,7 @@ $lang['subscr_style_digest'] = 'بريد ملخص عن تغييرات كل ص $lang['subscr_style_list'] = 'قائمة بالصفحات المتغيرة منذ آخر بريد'; $lang['authmodfailed'] = 'إعدادات تصريح فاسدة، يرجى مراسلة المدير.'; $lang['authtempfail'] = 'تصريح المشترك غير متوفر مؤقتاً، إن استمرت هذه الحالة يرجى مراسلة المدير'; +$lang['authpwdexpire'] = 'ستنتهي صلاحية كلمة السر في %d . عليك بتغييرها سريعا.'; $lang['i_chooselang'] = 'اختر لغتك'; $lang['i_installer'] = 'برنامج تنصيب دوكو ويكي'; $lang['i_wikiname'] = 'اسم الويكي'; @@ -273,3 +301,27 @@ $lang['hours'] = '%d ساعة مضت'; $lang['minutes'] = '%d دقيقة مضت'; $lang['seconds'] = '%d ثانية مضت'; $lang['wordblock'] = 'لم تحفظ تغييراتك لاحتوائها على نص ممنوع )غثاء('; +$lang['media_uploadtab'] = 'ارفع'; +$lang['media_searchtab'] = 'ابحث'; +$lang['media_file'] = 'ملف'; +$lang['media_viewtab'] = 'عرض'; +$lang['media_edittab'] = 'تحرير'; +$lang['media_historytab'] = 'التاريخ'; +$lang['media_list_thumbs'] = 'المصغرات'; +$lang['media_list_rows'] = 'صفوف'; +$lang['media_sort_name'] = 'الاسم'; +$lang['media_sort_date'] = 'التاريخ'; +$lang['media_namespaces'] = 'اختر نطاقا'; +$lang['media_files'] = 'الملفات في %s'; +$lang['media_upload'] = 'ارفع إلى %s'; +$lang['media_search'] = 'ابحث في %s'; +$lang['media_view'] = '%s'; +$lang['media_viewold'] = '%s في %s'; +$lang['media_edit'] = 'حرر %s'; +$lang['media_history'] = 'تاريخ %s'; +$lang['media_meta_edited'] = 'عُدلت الميتاداتا'; +$lang['media_perm_read'] = 'عفوا، لست مخولا بقراءة الملفات.'; +$lang['media_perm_upload'] = 'عفوا، لست مخولا برفع الملفات.'; +$lang['media_update'] = 'ارفع إصدارا أحدث'; +$lang['media_restore'] = 'استرجع هذه النسخة'; +$lang['plugin_install_err'] = 'ثبتت الإضافة بشكل خاطئ. أعد تسمية دليل الإضافة \'%s\' إلى \'%s\'.'; diff --git a/inc/lang/ar/resetpwd.txt b/inc/lang/ar/resetpwd.txt new file mode 100644 index 000000000..2bbd4a21a --- /dev/null +++ b/inc/lang/ar/resetpwd.txt @@ -0,0 +1,3 @@ +====== اضبط كلمة سر جديدة ====== + +أدخل كلمة سر جديدة لحسابك في هذه الويكي. diff --git a/inc/lang/cs/subscr_digest.txt b/inc/lang/cs/subscr_digest.txt index 57b7240c5..1b1770965 100644 --- a/inc/lang/cs/subscr_digest.txt +++ b/inc/lang/cs/subscr_digest.txt @@ -12,7 +12,7 @@ Nová revize: @NEWPAGE@ Pro odhlášení z odebírání změn na této webové stránce se prosím příhlašte do wiki na adrese -@DOKUWIKIURL@,pak navštivte +@DOKUWIKIURL@, pak navštivte @SUBSCRIBE@ a odhlaště se z odebírání změn na stránce či ve jmenném prostoru. diff --git a/inc/lang/cs/subscr_list.txt b/inc/lang/cs/subscr_list.txt index 82683c57f..f85be8a9f 100644 --- a/inc/lang/cs/subscr_list.txt +++ b/inc/lang/cs/subscr_list.txt @@ -9,7 +9,7 @@ Zde jsou: Pro odhlášení z odebírání změn se prosím příhlašte do wiki na adrese -@DOKUWIKIURL@,pak navštivte +@DOKUWIKIURL@, pak navštivte @SUBSCRIBE@ a odhlaště se z odebírání změn na stránce či ve jmenném prostoru. diff --git a/inc/lang/cs/subscr_single.txt b/inc/lang/cs/subscr_single.txt index c0089c1b7..1ee33da09 100644 --- a/inc/lang/cs/subscr_single.txt +++ b/inc/lang/cs/subscr_single.txt @@ -15,7 +15,7 @@ Nová revize: @NEWPAGE@ Pro odhlášení z odebírání změn na této webové stránce se prosím příhlašte do wiki na adrese -@DOKUWIKIURL@,pak navštivte +@DOKUWIKIURL@, pak navštivte @SUBSCRIBE@ a odhlaště se z odebírání změn na stránce či ve jmenném prostoru. diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php index 093125aa6..61e5ef3d8 100644 --- a/inc/lang/de-informal/lang.php +++ b/inc/lang/de-informal/lang.php @@ -191,7 +191,7 @@ $lang['lastmod'] = 'Zuletzt geändert'; $lang['by'] = 'von'; $lang['deleted'] = 'gelöscht'; $lang['created'] = 'angelegt'; -$lang['restored'] = 'alte Version wiederhergestellt'; +$lang['restored'] = 'alte Version wiederhergestellt (%s)'; $lang['external_edit'] = 'Externe Bearbeitung'; $lang['summary'] = 'Zusammenfassung'; $lang['noflash'] = 'Das <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> wird benötigt, um diesen Inhalt anzuzeigen.'; diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php index 63ffd3008..cfbe04396 100644 --- a/inc/lang/de/lang.php +++ b/inc/lang/de/lang.php @@ -193,7 +193,7 @@ $lang['lastmod'] = 'Zuletzt geändert'; $lang['by'] = 'von'; $lang['deleted'] = 'gelöscht'; $lang['created'] = 'angelegt'; -$lang['restored'] = 'alte Version wieder hergestellt'; +$lang['restored'] = 'alte Version wieder hergestellt (%s)'; $lang['external_edit'] = 'Externe Bearbeitung'; $lang['summary'] = 'Zusammenfassung'; $lang['noflash'] = 'Das <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> wird benötigt, um diesen Inhalt anzuzeigen.'; diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php index 2ba220e64..7f0bf05e9 100644 --- a/inc/lang/en/lang.php +++ b/inc/lang/en/lang.php @@ -99,6 +99,7 @@ $lang['searchmedia_in'] = 'Search in %s'; $lang['txt_upload'] = 'Select file to upload'; $lang['txt_filename'] = 'Upload as (optional)'; $lang['txt_overwrt'] = 'Overwrite existing file'; +$lang['maxuploadsize'] = 'Upload max. %s per file.'; $lang['lockedby'] = 'Currently locked by'; $lang['lockexpire'] = 'Lock expires at'; @@ -190,7 +191,7 @@ $lang['lastmod'] = 'Last modified'; $lang['by'] = 'by'; $lang['deleted'] = 'removed'; $lang['created'] = 'created'; -$lang['restored'] = 'old revision restored'; +$lang['restored'] = 'old revision restored (%s)'; $lang['external_edit'] = 'external edit'; $lang['summary'] = 'Edit summary'; $lang['noflash'] = 'The <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> is needed to display this content.'; diff --git a/inc/lang/en/mailwrap.html b/inc/lang/en/mailwrap.html new file mode 100644 index 000000000..f9f80fd80 --- /dev/null +++ b/inc/lang/en/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> + <title>@TITLE@</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>This mail was generated by DokuWiki at @DOKUWIKIURL@.</small> +</body> +</html> diff --git a/inc/lang/en/subscr_digest.txt b/inc/lang/en/subscr_digest.txt index fac8564bd..35011b6e6 100644 --- a/inc/lang/en/subscr_digest.txt +++ b/inc/lang/en/subscr_digest.txt @@ -15,6 +15,6 @@ To cancel the page notifications, log into the wiki at @SUBSCRIBE@ and unsubscribe page and/or namespace changes. --- +-- This mail was generated by DokuWiki at @DOKUWIKIURL@ diff --git a/inc/lang/en/subscr_list.txt b/inc/lang/en/subscr_list.txt index efe27d866..4c38b9326 100644 --- a/inc/lang/en/subscr_list.txt +++ b/inc/lang/en/subscr_list.txt @@ -12,6 +12,6 @@ To cancel the page notifications, log into the wiki at @SUBSCRIBE@ and unsubscribe page and/or namespace changes. --- +-- This mail was generated by DokuWiki at @DOKUWIKIURL@ diff --git a/inc/lang/en/subscr_single.txt b/inc/lang/en/subscr_single.txt index f2abe6d77..673c4c32a 100644 --- a/inc/lang/en/subscr_single.txt +++ b/inc/lang/en/subscr_single.txt @@ -18,6 +18,6 @@ To cancel the page notifications, log into the wiki at @NEWPAGE@ and unsubscribe page and/or namespace changes. --- +-- This mail was generated by DokuWiki at @DOKUWIKIURL@ diff --git a/inc/lang/eo/conflict.txt b/inc/lang/eo/conflict.txt index 603af39e1..cd0192942 100644 --- a/inc/lang/eo/conflict.txt +++ b/inc/lang/eo/conflict.txt @@ -1,5 +1,5 @@ ====== Pli nova versio ekzistas ====== -Ekzistas pli nova versio de la dokumento. Tio okazas kiam iu alia uzanto ŝanĝigis enhavon de la dokumento dum vi redaktis ĝin. +Ekzistas pli nova versio de la dokumento. Tio okazas kiam iu alia uzanto ŝanĝis enhavon de la dokumento dum vi redaktis ĝin. -Atente esploru distingojn kaj decidu kiun version vi tenigos. Se vi premos '"Konservi'", do via versio estos konservita. Presonte butonon '"Rezigni" vi tenos la kurantan version. +Atente esploru distingojn kaj decidu kiun version vi tenos. Se vi premos '"Konservi'", do via versio estos konservita. Presonte butonon '"Rezigni" vi tenos la kurantan version. diff --git a/inc/lang/eo/denied.txt b/inc/lang/eo/denied.txt index b35fe0412..3cd6c76bf 100644 --- a/inc/lang/eo/denied.txt +++ b/inc/lang/eo/denied.txt @@ -1,4 +1,4 @@ ====== Aliro malpermesita ====== -Vi ne havas sufiĉe da rajtoj por rigardi ĉi tiujn paĝojn. Eble vi forgesis identiĝi. +Vi ne havas sufiĉajn rajtojn rigardi ĉi tiujn paĝojn. Eble vi forgesis identiĝi. diff --git a/inc/lang/eo/diff.txt b/inc/lang/eo/diff.txt index ac5474ef1..5829a7db1 100644 --- a/inc/lang/eo/diff.txt +++ b/inc/lang/eo/diff.txt @@ -1,4 +1,4 @@ ====== Diferencoj ====== -Ĉi tie vi povas ekvidi diferencojn inter la aktuala versio kaj la elektita revizio de la paĝo. +Ĉi tie vi povas vidi diferencojn inter la aktuala versio kaj la elektita revizio de la paĝo. diff --git a/inc/lang/eo/draft.txt b/inc/lang/eo/draft.txt index fa43ecb74..32ddc83f6 100644 --- a/inc/lang/eo/draft.txt +++ b/inc/lang/eo/draft.txt @@ -1,5 +1,5 @@ -====== Skiza dosiero estis trovata ====== +====== Skiza dosiero troviĝis ====== -Via lasta sekcio de redakto en tiu ĉi paĝo ne estis korekte kompletita. DokuWiki aŭtomate konservis skizon dum vi laboris, kiun vi nun povas uzi por daŭrigi vian redaktadon. Sube vi povas vidi la datenaron, kiu estis konservata el via lasta sekcio. +Via lasta sekcio de redakto en tiu ĉi paĝo ne korekte kompletiĝis. DokuWiki aŭtomate konservis skizon dum vi laboris, kiun vi nun povas uzi por daŭrigi vian redaktadon. Sube vi povas vidi la datumaron, kiu konserviĝis el via lasta sekcio. Bonvolu decidi ĉu vi volas //restarigi// vian perditan redakton, //forigi// la aŭtomate konservitan skizon aŭ //rezigni// pri la redakta procezo. diff --git a/inc/lang/eo/edit.txt b/inc/lang/eo/edit.txt index 9239c7fe6..29b3382c5 100644 --- a/inc/lang/eo/edit.txt +++ b/inc/lang/eo/edit.txt @@ -1 +1 @@ -Redaktu paĝon kaj poste premu butonon titolitan '"Konservi'". Bonvolu tralegi la [[vikio:sintakso|vikian sintakson]] por kompreni kiel vi povas krei paĝojn. Bonvolu redakti nur se vi planas **plibonigi** la enhavon de la paĝo. Se vi volas nur testi ion, do bonvolu uzi specialan paĝon: [[vikio:ludejo|ludejo]]. +Redaktu paĝon kaj poste premu butonon titolitan '"Konservi'". Bonvolu tralegi la [[wiki:syntax|vikian sintakson]] por kompreni kiel vi povas krei paĝojn. Bonvolu redakti nur se vi planas **plibonigi** la enhavon de la paĝo. Se vi volas nur testi ion, bonvolu uzi specialan paĝon: [[wiki:playground|ludejo]]. diff --git a/inc/lang/eo/editrev.txt b/inc/lang/eo/editrev.txt index 4bab50b93..1640baa91 100644 --- a/inc/lang/eo/editrev.txt +++ b/inc/lang/eo/editrev.txt @@ -1,2 +1,2 @@ -**Vi laboras kun malnova revizio de la dokumento!** Se vi konservos ĝin, tiel kreiĝos nova kuranta versio kun la sama enhavo. +**Vi laboras kun malnova revizio de la dokumento!** Se vi konservos ĝin, kreiĝos nova kuranta versio kun la sama enhavo. ---- diff --git a/inc/lang/eo/index.txt b/inc/lang/eo/index.txt index 4ef720cb2..ac1f32cba 100644 --- a/inc/lang/eo/index.txt +++ b/inc/lang/eo/index.txt @@ -1,3 +1,3 @@ ====== Enhavo ====== -Tio ĉi estas indekso pri ĉiuj disponeblaj paĝoj ordigitaj laŭ [[doku>namespaces|nomspacoj]].
\ No newline at end of file +Tio ĉi estas indekso pri ĉiuj disponeblaj paĝoj ordigitaj laŭ [[doku>namespaces|nomspacoj]]. diff --git a/inc/lang/eo/install.html b/inc/lang/eo/install.html index 9f43ae82e..2e741e7c2 100644 --- a/inc/lang/eo/install.html +++ b/inc/lang/eo/install.html @@ -1,9 +1,9 @@ -<p>Tiu ĉi paĝo helpas en la unua instalo kaj agordado de <a href="http://dokuwiki.org">DokuWiki</a>. Pli da informo pri tiu instalilo estas disponebla en ĝia propra <a href="http://dokuwiki.org/installer">dokumentada paĝo</a>.</p> +<p>Tiu ĉi paĝo helpas en la unua instalo kaj agordado de <a href="http://dokuwiki.org">DokuWiki</a>. Pli da informo pri tiu instalilo disponeblas en ĝia propra <a href="http://dokuwiki.org/installer">dokumentada paĝo</a>.</p> -<p>DokuWiki uzas ordinarajn dosierojn por konservi vikiajn paĝojn kaj aliajn informojn asociitaj al tiuj paĝoj (ekz. bildoj, serĉindeksoj, malnovaj revizioj, ktp). Por bone funkcii, DokuWiki <strong>devas</strong> havi registran rajton sur la subdosierujoj, kiuj entenas tiujn dosierojn. Tiu ĉi instalilo ne kapablas difini permes-atributojn de dosierujoj. Ordinare, tio devas esti senpere farita de iu komando en konzolo aŭ, se vi abonas retprovizanton, per FTP aŭ kontrola panelo de tiu retprovidanto (ekz. cPanel).</p> +<p>DokuWiki uzas ordinarajn dosierojn por konservi vikiajn paĝojn kaj aliajn informojn asociitaj al tiuj paĝoj (ekz. bildoj, serĉindeksoj, malnovaj revizioj, ktp). Por bone funkcii, DokuWiki <strong>devas</strong> havi registran rajton sur la subdosierujoj, kiuj entenas tiujn dosierojn. Tiu ĉi instalilo ne kapablas difini permes-atributojn de dosierujoj. Ordinare, tio devas esti senpere farita de iu komando en konzolo aŭ, se vi abonas retprovizanton, per FTP aŭ kontrola panelo de tiu retprovidanto (ekz. cPanel).</p> -<p>Tiu ĉi instalilo difinos vian DokuWiki-an agordadon por <acronym title="alir-kontrola listo">ACL</acronym>, kiu ebligas al administranto identiĝi kaj aliri taŭgan interfacon por instali kromaĵojn, administri uzantojn kaj alireblon al vikipaĝoj, kaj difini agordojn ĝeneralajn. -Ĝi ne estas nepra por ke DokuWiki funkciu, tamen ĝi multe faciligos administradon.</p> +<p>Tiu ĉi instalilo difinos vian DokuWiki-an agordadon por <acronym title="alir-kontrola listo">ACL</acronym>, kiu ebligas al administranto identiĝi kaj aliri taŭgan interfacon por instali kromaĵojn, administri uzantojn kaj alireblon al vikipaĝoj, kaj difini agordojn ĝeneralajn. +Ĝi ne estas nepra por ke DokuWiki funkciu, tamen ĝi multe faciligos administradon.</p> -<p>Spertuloj aŭ uzantoj kiuj bezonas specialajn agordrimedojn devus uzi tiujn ligilojn por havi pli detalojn pri <a href="http://dokuwiki.org/install">instaladaj instrukcioj</a> -kaj <a href="http://dokuwiki.org/config">agordadaj difinoj</a>.</p>
\ No newline at end of file +<p>Spertuloj aŭ uzantoj kiuj bezonas specialajn agordrimedojn uzu tiujn ligilojn por havi pli detalojn pri <a href="http://dokuwiki.org/install">instaladaj instrukcioj</a> +kaj <a href="http://dokuwiki.org/config">agordadaj difinoj</a>.</p> diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php index 41c6b80d1..b2c64b2a6 100644 --- a/inc/lang/eo/lang.php +++ b/inc/lang/eo/lang.php @@ -9,7 +9,7 @@ * @author Felipe Castro <fefcas@gmail.com> * @author Robert Bogenschneider <robog@gmx.de> * @author Erik Pedersen <erik.pedersen@shaw.ca> - * @author Robert BOGENSCHNEIDER <bogi@UEA.org> + * @author Robert Bogenschneider <bogi@uea.org> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -45,6 +45,7 @@ $lang['btn_backtomedia'] = 'Retroiri al elekto de dosiero'; $lang['btn_subscribe'] = 'Aliĝi al paĝaj modifoj'; $lang['btn_profile'] = 'Ĝisdatigi profilon'; $lang['btn_reset'] = 'Rekomenci'; +$lang['btn_resendpwd'] = 'Sendi novan pasvorton'; $lang['btn_draft'] = 'Redakti skizon'; $lang['btn_recover'] = 'Restarigi skizon'; $lang['btn_draftdel'] = 'Forigi skizon'; @@ -68,38 +69,39 @@ $lang['draftdate'] = 'Lasta konservo de la skizo:'; $lang['nosecedit'] = 'La paĝo ŝanĝiĝis intertempe, sekcio-informo estis malĝisdata, tial la tuta paĝo estas reŝargita.'; $lang['regmissing'] = 'Pardonu, vi devas plenigi ĉiujn kampojn.'; $lang['reguexists'] = 'Pardonu, ĉi tiu uzanto-nomo jam ekzistas.'; -$lang['regsuccess'] = 'La uzanto estas kreita kaj la pasvorto estis elsendita per retpoŝto.'; -$lang['regsuccess2'] = 'La uzanto estas kreita.'; +$lang['regsuccess'] = 'La uzanto kreiĝis kaj la pasvorto sendiĝis per retpoŝto.'; +$lang['regsuccess2'] = 'La uzanto kreiĝis.'; $lang['regmailfail'] = 'Ŝajne okazis eraro dum elsendo de la pasvorto. Bonvolu informi administranton pri tio!'; -$lang['regbadmail'] = 'Entajpita retpoŝta adreso ne ŝajnas valida. Se vi pensas, ke tio estas eraro, kontaktu la administranton.'; +$lang['regbadmail'] = 'Entajpita retpoŝta adreso ŝajnas ne valida. Se vi pensas, ke tio estas eraro, kontaktu la administranton.'; $lang['regbadpass'] = 'La du pasvortoj ne samas, bonvolu provi refoje.'; $lang['regpwmail'] = 'Via DokuWiki-pasvorto'; $lang['reghere'] = 'Se vi ne havas konton, vi povas akiri ĝin'; $lang['profna'] = 'Tiu ĉi vikio ne ebligas modifon en la profiloj.'; $lang['profnochange'] = 'Neniu ŝanĝo, nenio farinda.'; -$lang['profnoempty'] = 'Malplena nomo aŭ retadreso ne estas permesataj.'; -$lang['profchanged'] = 'La profilo de la uzanto estas sukcese ĝisdatigita.'; +$lang['profnoempty'] = 'Malplena nomo aŭ retadreso ne estas permesata.'; +$lang['profchanged'] = 'La profilo de la uzanto sukcese ĝisdatiĝis.'; $lang['pwdforget'] = 'Ĉu vi forgesis vian pasvorton? Prenu novan'; $lang['resendna'] = 'Tiu ĉi vikio ne ebligas resendon de la pasvortoj.'; +$lang['resendpwd'] = 'Sendi novan pasvorton al'; $lang['resendpwdmissing'] = 'Pardonu, vi devas plenigi ĉiujn kampojn.'; -$lang['resendpwdnouser'] = 'Pardonu, ni ne trovas tiun uzanton en nia datenbazo.'; +$lang['resendpwdnouser'] = 'Pardonu, tiu uzanto ne troveblas en nia datumbazo.'; $lang['resendpwdbadauth'] = 'Pardonu, tiu aŭtentiga kodo ne validas. Certiĝu, ke vi uzis la kompletan konfirmigan ligilon.'; -$lang['resendpwdconfirm'] = 'Konfirmiga ligilo estas sendita per retpoŝto.'; -$lang['resendpwdsuccess'] = 'Via nova pasvorto estas sendita per retpoŝto.'; +$lang['resendpwdconfirm'] = 'Konfirmiga ligilo sendiĝis per retpoŝto.'; +$lang['resendpwdsuccess'] = 'Via nova pasvorto sendiĝis per retpoŝto.'; $lang['license'] = 'Krom kie rekte indikite, enhavo de tiu ĉi vikio estas publikigita laŭ la jena permesilo:'; $lang['licenseok'] = 'Rimarku: redaktante tiun ĉi paĝon vi konsentas publikigi vian enhavon laŭ la jena permesilo:'; $lang['searchmedia'] = 'Serĉi dosiernomon:'; $lang['searchmedia_in'] = 'Serĉi en %s'; -$lang['txt_upload'] = 'Elektu dosieron por alŝuto'; +$lang['txt_upload'] = 'Elektu dosieron por alŝuti'; $lang['txt_filename'] = 'Alŝuti kiel (laŭvole)'; $lang['txt_overwrt'] = 'Anstataŭigi ekzistantan dosieron'; $lang['lockedby'] = 'Nune ŝlosita de'; $lang['lockexpire'] = 'Ŝlosado ĉesos en'; -$lang['js']['willexpire'] = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempkontrolon de la ŝlosado, do premu butonon "Antaŭrigardi".'; +$lang['js']['willexpire'] = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempokontrolon de la ŝlosado, premu la butonon "Antaŭrigardi".'; $lang['js']['notsavedyet'] = 'Ne konservitaj modifoj perdiĝos. Ĉu vi certe volas daŭrigi la procezon?'; $lang['js']['searchmedia'] = 'Serĉi dosierojn'; -$lang['js']['keepopen'] = 'Tenu la fenestron malfermata dum elekto'; +$lang['js']['keepopen'] = 'Tenu la fenestron malferma dum elekto'; $lang['js']['hidedetails'] = 'Kaŝi detalojn'; $lang['js']['mediatitle'] = 'Ligilaj agordoj'; $lang['js']['mediadisplay'] = 'Ligila tipo'; @@ -122,10 +124,10 @@ $lang['js']['medialeft'] = 'Meti la bildon maldekstren.'; $lang['js']['mediaright'] = 'Meti la bildon dekstren.'; $lang['js']['mediacenter'] = 'Meti la bildon mezen.'; $lang['js']['medianoalign'] = 'Ne uzi poziciigon.'; -$lang['js']['nosmblinks'] = 'Tio ĉi nur funkcias en la Vindozaĉa "Microsoft Internet Explorer".\nVi ankoraŭ povas kopii kaj almeti la ligilon.'; +$lang['js']['nosmblinks'] = 'Tio ĉi nur funkcias en "Microsoft Internet Explorer".\nVi ankoraŭ povas kopii kaj almeti la ligilon.'; $lang['js']['linkwiz'] = 'Ligil-Asistanto'; $lang['js']['linkto'] = 'Ligilo al:'; -$lang['js']['del_confirm'] = 'Ĉu vere forigi elektitajn ero(j)n?'; +$lang['js']['del_confirm'] = 'Ĉu vere forigi elektita(j)n ero(j)n?'; $lang['js']['restore_confirm'] = 'Ĉu vere restarigi ĉi tiun version?'; $lang['js']['media_diff'] = 'Rigardu la diferencojn:'; $lang['js']['media_diff_both'] = 'Flankon apud flanko'; @@ -141,27 +143,27 @@ $lang['rssfailed'] = 'Okazis eraro dum ricevado de la novaĵ-fluo: ' $lang['nothingfound'] = 'Ankoraŭ nenio troviĝas tie ĉi.'; $lang['mediaselect'] = 'Elekto de aŭdvidaĵa dosiero'; $lang['fileupload'] = 'Alŝuto de aŭdvidaĵa dosiero'; -$lang['uploadsucc'] = 'Alŝuto estis sukcesa'; -$lang['uploadfail'] = 'Alŝuto estis malsukcesa. Eble ĉu estas problemoj pro permes-atributoj?'; +$lang['uploadsucc'] = 'Alŝuto sukcesis'; +$lang['uploadfail'] = 'Alŝuto malsukcesis. Ĉu eble estas problemoj pro permes-atributoj?'; $lang['uploadwrong'] = 'Rifuzita alŝuto. Tiu ĉi dosiersufikso estas malpermesata!'; $lang['uploadexist'] = 'La dosiero jam ekzistas. Nenio estas farita.'; $lang['uploadbadcontent'] = 'La alŝutita enhavo ne kongruas al la sufikso %s.'; -$lang['uploadspam'] = 'La alŝutaĵo estis blokita de kontraŭspama vortlisto.'; -$lang['uploadxss'] = 'La alŝutajo estis blokita pro ebla malica enhavo.'; +$lang['uploadspam'] = 'La alŝutaĵo blokiĝis de kontraŭspama vortlisto.'; +$lang['uploadxss'] = 'La alŝutajo blokiĝis pro ebla malica enhavo.'; $lang['uploadsize'] = 'La alŝutita dosiero estis tro granda. (maks. %s)'; -$lang['deletesucc'] = 'La dosiero "%s" estas forigita.'; +$lang['deletesucc'] = 'La dosiero "%s" forigiĝis.'; $lang['deletefail'] = '"%s" ne povis esti forigita - kontrolu permes-atributojn.'; -$lang['mediainuse'] = 'La dosiero "%s" ne estis forigita - ĝi ankoraŭ estas uzata.'; +$lang['mediainuse'] = 'La dosiero "%s" ne forigiĝis - ĝi ankoraŭ estas uzata.'; $lang['namespaces'] = 'Nomspacoj'; $lang['mediafiles'] = 'Disponeblaj dosieroj'; $lang['accessdenied'] = 'Vi ne rajtas vidi tiun paĝon.'; -$lang['mediausage'] = 'Uzu la jenan sintakson por referenci tiun ĉi dosieron:'; +$lang['mediausage'] = 'Uzu jenan sintakson por referenci tiun ĉi dosieron:'; $lang['mediaview'] = 'Rigardi originalan dosieron'; $lang['mediaroot'] = 'ĉefo (root)'; -$lang['mediaupload'] = 'Alŝutu dosieron al la kuranta nomspaco tien ĉi. Por krei subnomspacojn, antaŭmetu ilin al via "Alŝuti kiel" dosiernomo, apartigante per dupunktoj (:).'; +$lang['mediaupload'] = 'Alŝutu dosieron al la kuranta nomspaco tien ĉi. Por krei subnomspacojn, antaŭmetu ilin al via "Alŝuti kiel" dosiernomo, disigigante per dupunktoj (:).'; $lang['mediaextchange'] = 'La dosiersufikso ŝanĝis de .%s al .%s!'; $lang['reference'] = 'Referencoj por'; -$lang['ref_inuse'] = 'La dosiero ne povas esti forigita, ĉar ĝi ankoraŭ estas uzata de la jenaj paĝoj:'; +$lang['ref_inuse'] = 'La dosiero ne povas esti forigita, ĉar ĝi ankoraŭ estas uzata de jenaj paĝoj:'; $lang['ref_hidden'] = 'Kelkaj referencoj estas en paĝoj, kiujn vi ne rajtas legi'; $lang['hits'] = 'Trafoj'; $lang['quickhits'] = 'Trafoj trovitaj en paĝnomoj'; @@ -184,8 +186,13 @@ $lang['created'] = 'kreita'; $lang['restored'] = 'malnova revizio restarigita'; $lang['external_edit'] = 'ekstera redakto'; $lang['summary'] = 'Bulteno de ŝanĝoj'; -$lang['noflash'] = 'La <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> estas bezonata por montrigi tiun ĉi enhavon.'; +$lang['noflash'] = 'La <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> necesas por montri tiun ĉi enhavon.'; $lang['download'] = 'Elŝuti eltiraĵon'; +$lang['tools'] = 'Iloj'; +$lang['user_tools'] = 'Uzantaj iloj'; +$lang['site_tools'] = 'Retejaj iloj'; +$lang['page_tools'] = 'Paĝaj iloj'; +$lang['skip_to_content'] = 'al la enhavo'; $lang['mail_newpage'] = 'paĝo aldonita:'; $lang['mail_changed'] = 'paĝo modifita:'; $lang['mail_subscribe_list'] = 'ŝanĝitaj paĝoj en nomspaco:'; @@ -221,10 +228,10 @@ $lang['qb_smileys'] = 'Ridetuloj'; $lang['qb_chars'] = 'Specialaj signaĵoj'; $lang['upperns'] = 'saltu al la parenca nomspaco'; $lang['admin_register'] = 'Aldoni novan uzanton'; -$lang['metaedit'] = 'Redakti metadatenaron'; -$lang['metasaveerr'] = 'La konservo de metadatenaro malsukcesis'; -$lang['metasaveok'] = 'La metadatenaro estis konservita'; -$lang['img_backto'] = 'Retroiri al'; +$lang['metaedit'] = 'Redakti metadatumaron'; +$lang['metasaveerr'] = 'La konservo de metadatumaro malsukcesis'; +$lang['metasaveok'] = 'La metadatumaro konserviĝis'; +$lang['img_backto'] = 'Iri reen al'; $lang['img_title'] = 'Titolo'; $lang['img_caption'] = 'Priskribo'; $lang['img_date'] = 'Dato'; @@ -237,7 +244,7 @@ $lang['img_camera'] = 'Kamerao'; $lang['img_keywords'] = 'Ŝlosilvortoj'; $lang['img_width'] = 'Larĝeco'; $lang['img_height'] = 'Alteco'; -$lang['img_manager'] = 'Rigardi en media-administrilo'; +$lang['img_manager'] = 'Rigardi en aŭdvidaĵ-administrilo'; $lang['subscr_subscribe_success'] = 'Aldonis %s al la abonlisto por %s'; $lang['subscr_subscribe_error'] = 'Eraro dum aldono de %s al la abonlisto por %s'; $lang['subscr_subscribe_noaddress'] = 'Ne estas adreso ligita al via ensaluto, ne eblas aldoni vin al la abonlisto'; @@ -271,7 +278,7 @@ $lang['i_confexists'] = '<code>%s</code> jam ekzistas'; $lang['i_writeerr'] = 'Ne eblas krei "<code>%s</code>". Vi bezonas kontroli la permesojn de la dosier(uj)oj kaj mem krej la dosieron.'; $lang['i_badhash'] = 'dokuwiki.php ne estas rekonebla aŭ ĝi estas modifita (hash=<code>%s</code>)'; $lang['i_badval'] = '<code>%s</code> - malvalida aŭ malplena valoro'; -$lang['i_success'] = 'La agordado estas sukcese kompletita. Vi povas forigi la dosieron nun. Pluiru al <a href="doku.php">via nova DokuWiki</a>.'; +$lang['i_success'] = 'La agordado sukcese kompletiĝis. Vi povas forigi la dosieron nun. Pluiru al <a href="doku.php">via nova DokuWiki</a>.'; $lang['i_failure'] = 'Kelkaj eraroj okazis dum la konservo de la agordaj dosieroj. Vi devas senpere korekti ilin antaŭ ol vi povos uzi <a href="doku.php">vian novan DokuWiki-on</a>. '; $lang['i_policy'] = 'Komenca ACL-a agordo'; $lang['i_pol0'] = 'Malferma Vikio (legi, skribi, alŝuti povas ĉiuj)'; @@ -287,7 +294,7 @@ $lang['days'] = 'antaŭ %d tagoj'; $lang['hours'] = 'antaŭ %d horoj'; $lang['minutes'] = 'antaŭ %d minutoj'; $lang['seconds'] = 'antaŭ %d sekundoj'; -$lang['wordblock'] = 'Via ŝanĝo ne estis savita, ĉar ĝi enhavas blokitan tekston (spamon).'; +$lang['wordblock'] = 'Via ŝanĝo ne konserviĝis, ĉar ĝi enhavas blokitan tekston (spamon).'; $lang['media_uploadtab'] = 'Alŝuto'; $lang['media_searchtab'] = 'Serĉo'; $lang['media_file'] = 'Dosiero'; diff --git a/inc/lang/eo/locked.txt b/inc/lang/eo/locked.txt index 68963da75..abdc05916 100644 --- a/inc/lang/eo/locked.txt +++ b/inc/lang/eo/locked.txt @@ -1,3 +1,3 @@ ====== La paĝo estas ŝlosita ====== -Tiu ĉi paĝo nun estas blokita pro redaktado de iu alia uzanto. Bonvole atendu ke ŝi/li finu redakti aŭ ke la ŝlosada tempolimo finiĝu. +Tiu ĉi paĝo nun blokiĝis pro redaktado de iu alia uzanto. Bonvolu atendi ke ŝi/li finu redakti aŭ ke la ŝlosada tempolimo finiĝu. diff --git a/inc/lang/eo/mailtext.txt b/inc/lang/eo/mailtext.txt index b2cb3b49d..2765301ea 100644 --- a/inc/lang/eo/mailtext.txt +++ b/inc/lang/eo/mailtext.txt @@ -1,4 +1,4 @@ -Paĝo en via DokuVikio estis ŝanĝita aŭ aldonita. Jen detaloj: +Paĝo en via DokuVikio ŝanĝiĝis aŭ aldoniĝis. Jen detaloj: Dato: @DATE@ Foliumilo: @BROWSER@ @@ -7,10 +7,9 @@ RetNodo: @HOSTNAME@ Antaŭa revizio: @OLDPAGE@ Nova revizio: @NEWPAGE@ Bulteno de ŝanĝoj: @SUMMARY@ -Uzulo: @USER@ +Uzanto: @USER@ @DIFF@ -- -Tiu ĉi mesaĝo estis kreita de DokuWiki, kiu lokiĝas tie: -@DOKUWIKIURL@
\ No newline at end of file +Tiu ĉi mesaĝo kreiĝis de DokuWiki, kiu lokiĝas ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/newpage.txt b/inc/lang/eo/newpage.txt index 486f61f5a..53ab6209d 100644 --- a/inc/lang/eo/newpage.txt +++ b/inc/lang/eo/newpage.txt @@ -1,4 +1,4 @@ ====== Ĉi tiu paĝo ankoraŭ ne ekzistas ====== -Vi sekvis ligilon, kiu kondukas al artikolo ankoraŭ ne ekzistanta. Se vi rajtas, tiel vi povas krei tiun ĉi paĝon ekpremante la butonon "Krei paĝon". +Vi sekvis ligilon, kiu kondukas al artikolo ankoraŭ ne ekzistanta. Se vi rajtas, tiam vi povas krei tiun ĉi paĝon premante la butonon "Krei paĝon". diff --git a/inc/lang/eo/norev.txt b/inc/lang/eo/norev.txt index dc44d194b..e951a551b 100644 --- a/inc/lang/eo/norev.txt +++ b/inc/lang/eo/norev.txt @@ -1,3 +1,3 @@ ====== Tiu revizio ne ekzistas ====== -La elektita revizio ne ekzistas. Premu butonon "Malnovaj revizioj" por vidi liston de malnovaj revizioj de la dokumento.
\ No newline at end of file +La elektita revizio ne ekzistas. Premu butonon "Malnovaj revizioj" por vidi liston de malnovaj revizioj de la dokumento. diff --git a/inc/lang/eo/password.txt b/inc/lang/eo/password.txt index ef744059e..6dc42a9de 100644 --- a/inc/lang/eo/password.txt +++ b/inc/lang/eo/password.txt @@ -1,10 +1,9 @@ -Saluton @FULLNAME@! +Saluton, @FULLNAME@! -Jen via uzantodatenoj por @TITLE@ ĉe @DOKUWIKIURL@ +Jen viaj uzantodatumoj por @TITLE@ ĉe @DOKUWIKIURL@ Ensalutnomo: @LOGIN@ Pasvorto: @PASSWORD@ -- -Tiu ĉi mesaĝo estis kreita de DokuWiki ĉe -@DOKUWIKIURL@ +Tiu ĉi mesaĝo kreiĝis de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/preview.txt b/inc/lang/eo/preview.txt index ac2e75d00..b3faef69e 100644 --- a/inc/lang/eo/preview.txt +++ b/inc/lang/eo/preview.txt @@ -1,3 +1,3 @@ ====== Antaŭrigardo ====== -Tiu ĉi estas antaŭrigardo de redaktita teksto. Memoru: ĝi ankoraŭ **ne estas konservita**!
\ No newline at end of file +Tiu ĉi estas antaŭrigardo de redaktita teksto. Memoru: ĝi ankoraŭ **ne konserviĝis**! diff --git a/inc/lang/eo/pwconfirm.txt b/inc/lang/eo/pwconfirm.txt index f227752b1..5abc3d13e 100644 --- a/inc/lang/eo/pwconfirm.txt +++ b/inc/lang/eo/pwconfirm.txt @@ -1,14 +1,13 @@ -Saluton @FULLNAME@! +Saluton, @FULLNAME@! Iu petis novan pasvorton por via @TITLE@ ensalutnomo ĉe @DOKUWIKIURL@ -Se ne estas vi, kiu petis tion, do preterlasu tiun ĉi mesaĝon. +Se ne vi petis tion, ignoru tiun ĉi mesaĝon. -Por konfirmi, ke la peto estis vere via, bonvolu musklaki la jenan ligilon. +Por konfirmi, ke la peto estis vere via, bonvolu musklaki jenan ligilon: @CONFIRM@ -- -Tiu ĉi mesaĝo estis kreita de DokuWiki ĉe -@DOKUWIKIURL@
\ No newline at end of file +Tiu ĉi mesaĝo kreiĝis de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/read.txt b/inc/lang/eo/read.txt index 734eb1654..b8c642f43 100644 --- a/inc/lang/eo/read.txt +++ b/inc/lang/eo/read.txt @@ -1,2 +1,2 @@ -Tiu ĉi paĝo estas disponigata nur por legado (vi ne povas redakti ĝin). Sciigu administranton, se vi opinias ke tio estas ne ĝusta malpermeso. +Tiu ĉi paĝo disponiĝas nur por legado (vi ne povas redakti ĝin). Sciigu administranton, se vi opinias ke tio estas falsa malpermeso. diff --git a/inc/lang/eo/recent.txt b/inc/lang/eo/recent.txt index ffd9936e2..2454ea630 100644 --- a/inc/lang/eo/recent.txt +++ b/inc/lang/eo/recent.txt @@ -1,3 +1,3 @@ ====== Freŝaj Ŝanĝoj ====== -La jenaj paĝoj estis ŝanĝitaj antaŭ nelonga tempo.
\ No newline at end of file +Jenaj paĝoj ŝanĝiĝis antaŭ nelonge: diff --git a/inc/lang/eo/register.txt b/inc/lang/eo/register.txt index 57d5ca1f4..10b303d3b 100644 --- a/inc/lang/eo/register.txt +++ b/inc/lang/eo/register.txt @@ -1,4 +1,4 @@ ====== Registriĝi ====== -Entajpu necesajn informojn por enregistriĝi. Certiĝu ke via retpoŝta adreso estas vera ĉar ni sendos al ĝi vian pasvorton. +Entajpu necesajn informojn por enregistriĝi. Certiĝu ke via retpoŝta adreso estas vera, ĉar ni sendos al ĝi vian pasvorton. diff --git a/inc/lang/eo/registermail.txt b/inc/lang/eo/registermail.txt index 8b9ea8501..9ef6013c0 100644 --- a/inc/lang/eo/registermail.txt +++ b/inc/lang/eo/registermail.txt @@ -1,4 +1,4 @@ -Nova uzanto estis registrata. Jen la detaloj: +Nova uzanto registriĝis. Jen la detaloj: Uzantonomo: @NEWUSER@ Kompleta nomo: @NEWNAME@ @@ -10,5 +10,4 @@ IP-Adreso: @IPADDRESS@ Provizanto: @HOSTNAME@ -- -Tiu ĉi mesaĝo estis kreita de DokuWiki ĉe -@DOKUWIKIURL@
\ No newline at end of file +Tiu ĉi mesaĝo kreiĝis de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/resendpwd.txt b/inc/lang/eo/resendpwd.txt index 57b4b0408..556477a07 100644 --- a/inc/lang/eo/resendpwd.txt +++ b/inc/lang/eo/resendpwd.txt @@ -1,3 +1,3 @@ ====== Sendi novan pasvorton ====== -Bonvolu meti vian uzantonomon en la suban formularon petante novan pasvorton por via aliĝo en tiu ĉi vikio. Konfirma ligilo estos sendata al via registrita retadreso. +Bonvolu meti vian uzantonomon en la suban formularon petante novan pasvorton por via aliĝo en tiu ĉi vikio. Konfirma ligilo sendaiĝos al via registrita retadreso. diff --git a/inc/lang/eo/showrev.txt b/inc/lang/eo/showrev.txt index e3a8a1747..3ece4f2fb 100644 --- a/inc/lang/eo/showrev.txt +++ b/inc/lang/eo/showrev.txt @@ -1,2 +1,2 @@ -**Tiu estas malnova revizio de la dokumento**. Klaku sur titolo por ricevi kurantan version. +**Tiu estas malnova revizio de la dokumento**. Klaku sur titolon por ricevi kurantan version. ---- diff --git a/inc/lang/eo/stopwords.txt b/inc/lang/eo/stopwords.txt index 38757ae04..d27c569a2 100644 --- a/inc/lang/eo/stopwords.txt +++ b/inc/lang/eo/stopwords.txt @@ -1,6 +1,6 @@ # Jen listo de vortoj, kiujn la indeksilo ignoras, unu vorton po linio # Kiam vi modifas la dosieron, estu certa ke vi uzas UNIX-stilajn linifinaĵojn (unuopa novlinio) -# Ne enmetu vortojn malpli longajn ol 3 literoj - tiuj ĉiukaze estas ignorataj +# Ne enmetu vortojn malpli longajn ol 3 literoj - tiuj ĉiukaze ignoriĝas pri estas kaj @@ -17,4 +17,4 @@ kio kiam kie kiu -www
\ No newline at end of file +www diff --git a/inc/lang/eo/subscr_digest.txt b/inc/lang/eo/subscr_digest.txt index d6bc69887..42fc79ad1 100644 --- a/inc/lang/eo/subscr_digest.txt +++ b/inc/lang/eo/subscr_digest.txt @@ -16,5 +16,4 @@ Por nuligi la paĝinformojn, ensalutu la vikion ĉe kaj malabonu la paĝajn kaj/aŭ nomspacajn ŝanĝojn. -- -Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe -@DOKUWIKIURL@
\ No newline at end of file +Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/subscr_list.txt b/inc/lang/eo/subscr_list.txt index 175e3f3d2..1957e85e0 100644 --- a/inc/lang/eo/subscr_list.txt +++ b/inc/lang/eo/subscr_list.txt @@ -13,5 +13,4 @@ Por nuligi la paĝinformojn, ensalutu la vikion ĉe kaj malabonu la paĝajn kaj/aŭ nomspacajn ŝanĝojn. -- -Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe -@DOKUWIKIURL@
\ No newline at end of file +Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/subscr_single.txt b/inc/lang/eo/subscr_single.txt index d51c5ca15..431fd0251 100644 --- a/inc/lang/eo/subscr_single.txt +++ b/inc/lang/eo/subscr_single.txt @@ -19,5 +19,4 @@ Por nuligi la paĝinformojn, ensalutu la vikion ĉe kaj malabonu la paĝajn kaj/aŭ nomspacajn ŝanĝojn. -- -Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe -@DOKUWIKIURL@
\ No newline at end of file +Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/updateprofile.txt b/inc/lang/eo/updateprofile.txt index a3de0c840..4b52ff20a 100644 --- a/inc/lang/eo/updateprofile.txt +++ b/inc/lang/eo/updateprofile.txt @@ -1,3 +1,3 @@ ====== Ĝisdatigi vian profilon ====== -Vi nur bezonas kompletigi tiujn kampojn, kiujn vi deziras ŝanĝi. Vi ne povas ŝanĝi vian uzantonomon.
\ No newline at end of file +Vi nur kompletigu tiujn kampojn, kiujn vi deziras ŝanĝi. Vi ne povas ŝanĝi vian uzantonomon. diff --git a/inc/lang/eo/uploadmail.txt b/inc/lang/eo/uploadmail.txt index e7c327a60..1cb48ade6 100644 --- a/inc/lang/eo/uploadmail.txt +++ b/inc/lang/eo/uploadmail.txt @@ -1,4 +1,4 @@ -Dosiero estis alŝutita al via DokuVikio. Jen detaloj: +Dosiero alŝutiĝis al via DokuVikio. Jen detaloj: Dosiero: @MEDIA@ Dato: @DATE@ @@ -10,5 +10,4 @@ Dosier-tipo: @MIME@ Uzanto: @USER@ -- -Tiu ĉi mesaĝo estis kreita de DokuWiki ĉe -@DOKUWIKIURL@
\ No newline at end of file +Tiu ĉi mesaĝo kreiĝis de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php index 140c584c3..a77be6965 100644 --- a/inc/lang/fr/lang.php +++ b/inc/lang/fr/lang.php @@ -23,6 +23,7 @@ * @author Johan Guilbaud <guilbaud.johan@gmail.com> * @author schplurtz@laposte.net * @author skimpax@gmail.com + * @author Yannick Aure <yannick.aure@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -58,6 +59,7 @@ $lang['btn_backtomedia'] = 'Retour à la sélection du fichier média'; $lang['btn_subscribe'] = 'S\'abonner à la page'; $lang['btn_profile'] = 'Mettre à jour le profil'; $lang['btn_reset'] = 'Réinitialiser'; +$lang['btn_resendpwd'] = 'Définir un nouveau mot de passe'; $lang['btn_draft'] = 'Modifier le brouillon'; $lang['btn_recover'] = 'Récupérer le brouillon'; $lang['btn_draftdel'] = 'Effacer le brouillon'; @@ -94,6 +96,7 @@ $lang['profnoempty'] = 'Un nom ou une adresse de courriel vide n\'est $lang['profchanged'] = 'Mise à jour du profil réussie.'; $lang['pwdforget'] = 'Mot de passe oublié ? Faites-vous envoyer votre mot de passe '; $lang['resendna'] = 'Ce wiki ne permet pas le renvoi de mot de passe.'; +$lang['resendpwd'] = 'Définir un nouveau mot de passe pour'; $lang['resendpwdmissing'] = 'Désolé, vous devez remplir tous les champs.'; $lang['resendpwdnouser'] = 'Désolé, cet utilisateur est introuvable dans notre base.'; $lang['resendpwdbadauth'] = 'Désolé, ce code d\'authentification est invalide. Assurez-vous d\'avoir utilisé le lien de confirmation.'; @@ -198,6 +201,11 @@ $lang['external_edit'] = 'modification externe'; $lang['summary'] = 'Résumé'; $lang['noflash'] = 'Le greffon <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash</a> est nécessaire pour afficher ce contenu.'; $lang['download'] = 'Télécharger un extrait'; +$lang['tools'] = 'Outils'; +$lang['user_tools'] = 'Outils d\'utilisateurs'; +$lang['site_tools'] = 'Outils du Site'; +$lang['page_tools'] = 'Outils de la Page'; +$lang['skip_to_content'] = 'Aller au contenu'; $lang['mail_newpage'] = 'page ajoutée :'; $lang['mail_changed'] = 'page modifiée :'; $lang['mail_subscribe_list'] = 'pages modifiées dans la catégorie :'; @@ -268,6 +276,7 @@ $lang['subscr_style_digest'] = 'Courriel, tous les %.2f jours, résumant les m $lang['subscr_style_list'] = 'Liste des pages modifiées depuis le dernier courriel (tous les %.2f jours)'; $lang['authmodfailed'] = 'Mauvais paramétrage de l\'authentification. Merci d\'informer l\'administrateur du Wiki.'; $lang['authtempfail'] = 'L\'authentification est temporairement indisponible. Si cela perdure, merci d\'informer l\'administrateur du Wiki.'; +$lang['authpwdexpire'] = 'Votre mot de passe expirera dans %d jours, vous devriez le changer bientôt.'; $lang['i_chooselang'] = 'Choisissez votre langue'; $lang['i_installer'] = 'Installeur DokuWiki'; $lang['i_wikiname'] = 'Nom du wiki'; diff --git a/inc/lang/fr/resetpwd.txt b/inc/lang/fr/resetpwd.txt new file mode 100644 index 000000000..7b1990ca0 --- /dev/null +++ b/inc/lang/fr/resetpwd.txt @@ -0,0 +1,3 @@ +====== Définir un nouveau mot de passe ====== + +Merci d'entrer un nouveau mot de passe pour votre compte sur ce wiki.
\ No newline at end of file diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php index eda33898b..70082caae 100644 --- a/inc/lang/it/lang.php +++ b/inc/lang/it/lang.php @@ -13,6 +13,7 @@ * @author Matteo Carnevali <rekstorm@gmail.com> * @author Osman Tekin <osman.tekin93@hotmail.it> * @author Jacopo Corbetta <jacopo.corbetta@gmail.com> + * @author Matteo Pasotti <matteo@xquiet.eu> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -48,11 +49,14 @@ $lang['btn_backtomedia'] = 'Torna alla selezione file'; $lang['btn_subscribe'] = 'Sottoscrivi modifiche'; $lang['btn_profile'] = 'Aggiorna profilo'; $lang['btn_reset'] = 'Annulla'; +$lang['btn_resendpwd'] = 'Imposta nuova password'; $lang['btn_draft'] = 'Modifica bozza'; $lang['btn_recover'] = 'Ripristina bozza'; $lang['btn_draftdel'] = 'Elimina bozza'; $lang['btn_revert'] = 'Ripristina'; $lang['btn_register'] = 'Registrazione'; +$lang['btn_apply'] = 'Applica'; +$lang['btn_media'] = 'Gestore Media'; $lang['loggedinas'] = 'Collegato come'; $lang['user'] = 'Nome utente'; $lang['pass'] = 'Password'; @@ -82,6 +86,7 @@ $lang['profnoempty'] = 'Nome o indirizzo email vuoti non sono consenti $lang['profchanged'] = 'Aggiornamento del profilo utente riuscito.'; $lang['pwdforget'] = 'Hai dimenticato la password? Richiedine una nuova'; $lang['resendna'] = 'Questo wiki non supporta l\'invio di nuove password.'; +$lang['resendpwd'] = 'Imposta nuova password per'; $lang['resendpwdmissing'] = 'Devi riempire tutti i campi.'; $lang['resendpwdnouser'] = 'Impossibile trovare questo utente nel database.'; $lang['resendpwdbadauth'] = 'Spiacenti, questo codice di autorizzazione non è valido. Assicurati di aver usato il link completo di conferma.'; @@ -94,9 +99,10 @@ $lang['searchmedia_in'] = 'Cerca in %s'; $lang['txt_upload'] = 'Seleziona un file da caricare'; $lang['txt_filename'] = 'Carica come (opzionale)'; $lang['txt_overwrt'] = 'Sovrascrivi file esistente'; +$lang['maxuploadsize'] = 'Upload max. %s per ogni file.'; $lang['lockedby'] = 'Attualmente bloccato da'; $lang['lockexpire'] = 'Il blocco scade alle'; -$lang['js']['willexpire'] = 'Il tuo blocco su questa pagina scadrà tra circa un minuto.\nPer evitare incongruenze usa il pulsante di anteprima per prolungare il periodo di blocco.'; +$lang['js']['willexpire'] = 'Il tuo blocco su questa pagina scadrà tra circa un minuto.\nPer evitare incongruenze usa il pulsante di anteprima per prolungare il periodo di blocco.'; $lang['js']['notsavedyet'] = 'Le modifiche non salvate andranno perse.'; $lang['js']['searchmedia'] = 'Cerca file'; $lang['js']['keepopen'] = 'Tieni la finestra aperta durante la selezione'; @@ -127,6 +133,15 @@ $lang['js']['nosmblinks'] = 'I collegamenti con le risorse condivise di Win $lang['js']['linkwiz'] = 'Collegamento guidato'; $lang['js']['linkto'] = 'Collega a:'; $lang['js']['del_confirm'] = 'Eliminare veramente questa voce?'; +$lang['js']['restore_confirm'] = 'Vuoi davvero ripristinare questa versione?'; +$lang['js']['media_diff'] = 'Guarda le differenze:'; +$lang['js']['media_diff_both'] = 'Fianco a Fianco'; +$lang['js']['media_select'] = 'Seleziona files..'; +$lang['js']['media_upload_btn'] = 'Upload'; +$lang['js']['media_done_btn'] = 'Fatto'; +$lang['js']['media_drop'] = 'Sgancia i files qui per caricarli'; +$lang['js']['media_cancel'] = 'rimuovi'; +$lang['js']['media_overwrt'] = 'Sovrascrivi i file esistenti'; $lang['rssfailed'] = 'Si è verificato un errore cercando questo feed: '; $lang['nothingfound'] = 'Nessun risultato trovato.'; $lang['mediaselect'] = 'Selezione dei file'; @@ -161,6 +176,8 @@ $lang['yours'] = 'la tua versione'; $lang['diff'] = 'differenze con la versione attuale'; $lang['diff2'] = 'differenze tra le versioni selezionate'; $lang['difflink'] = 'Link a questa pagina di confronto'; +$lang['diff_type'] = 'Guarda le differenze:'; +$lang['diff_side'] = 'Fianco a Fianco'; $lang['line'] = 'Linea'; $lang['breadcrumb'] = 'Traccia'; $lang['youarehere'] = 'Ti trovi qui'; @@ -173,11 +190,19 @@ $lang['external_edit'] = 'modifica esterna'; $lang['summary'] = 'Oggetto della modifica'; $lang['noflash'] = 'E\' necessario <a href="http://www.adobe.com/products/flashplayer/">il plugin Adobe Flash</a> per visualizzare questo contenuto.'; $lang['download'] = 'Scarica lo "snippet"'; +$lang['tools'] = 'Strumenti'; +$lang['user_tools'] = 'Strumenti Utente'; +$lang['site_tools'] = 'Strumenti Sito'; +$lang['page_tools'] = 'Strumenti Pagina'; +$lang['skip_to_content'] = 'salta al contenuto'; $lang['mail_newpage'] = 'pagina aggiunta:'; $lang['mail_changed'] = 'pagina modificata:'; $lang['mail_subscribe_list'] = 'pagine modificate nella categoria:'; $lang['mail_new_user'] = 'nuovo utente:'; $lang['mail_upload'] = 'file caricato:'; +$lang['changes_type'] = 'Guarda cambiamenti di'; +$lang['pages_changes'] = 'Pagine'; +$lang['both_changes'] = 'Sia pagine che media files'; $lang['qb_bold'] = 'Grassetto'; $lang['qb_italic'] = 'Corsivo'; $lang['qb_underl'] = 'Sottolineato'; @@ -218,6 +243,9 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Formato'; $lang['img_camera'] = 'Camera'; $lang['img_keywords'] = 'Parole chiave'; +$lang['img_width'] = 'Larghezza'; +$lang['img_height'] = 'Altezza'; +$lang['img_manager'] = 'Guarda nel gestore media'; $lang['subscr_subscribe_success'] = 'Aggiunto %s alla lista di sottoscrizioni %s'; $lang['subscr_subscribe_error'] = 'Impossibile aggiungere %s alla lista di sottoscrizioni %s'; $lang['subscr_subscribe_noaddress'] = 'Non esiste alcun indirizzo associato al tuo account, non puoi essere aggiunto alla lista di sottoscrizioni'; @@ -236,6 +264,7 @@ $lang['subscr_style_digest'] = 'email riassuntiva delle modifiche di ogni pagi $lang['subscr_style_list'] = 'elenco delle pagine modificate dall\'ultima email'; $lang['authmodfailed'] = 'La configurazione dell\'autenticazione non è corretta. Informa l\'amministratore di questo wiki.'; $lang['authtempfail'] = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, informa l\'amministratore di questo wiki.'; +$lang['authpwdexpire'] = 'La tua password scadrà in %d giorni, dovresti cambiarla quanto prima.'; $lang['i_chooselang'] = 'Scegli la lingua'; $lang['i_installer'] = 'Installazione di DokuWiki'; $lang['i_wikiname'] = 'Nome Wiki'; @@ -269,3 +298,20 @@ $lang['hours'] = '%d ore fa'; $lang['minutes'] = '%d minuti fa'; $lang['seconds'] = '%d secondi fa'; $lang['wordblock'] = 'La modifica non è stata salvata perché contiene testo bloccato (spam).'; +$lang['media_searchtab'] = 'Cerca'; +$lang['media_viewtab'] = 'Guarda'; +$lang['media_edittab'] = 'Modifica'; +$lang['media_historytab'] = 'Storia'; +$lang['media_list_rows'] = 'Righe'; +$lang['media_sort_name'] = 'Nome'; +$lang['media_sort_date'] = 'Data'; +$lang['media_namespaces'] = 'Scegli il namespace'; +$lang['media_files'] = 'File in %s'; +$lang['media_search'] = 'Cerca in %s'; +$lang['media_edit'] = 'Modifica %s'; +$lang['media_history'] = 'Storia di %s'; +$lang['media_perm_read'] = 'Spiacente, non hai abbastanza privilegi per leggere i files.'; +$lang['media_perm_upload'] = 'Spiacente, non hai abbastanza privilegi per caricare files.'; +$lang['media_update'] = 'Carica nuova versione'; +$lang['media_restore'] = 'Ripristina questa versione'; +$lang['plugin_install_err'] = 'Plugin installato non correttamente. Rinomino la cartella del plugin \'%s\' in \'%s\'.'; diff --git a/inc/lang/it/mailwrap.html b/inc/lang/it/mailwrap.html new file mode 100644 index 000000000..24a2bc8a9 --- /dev/null +++ b/inc/lang/it/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Questa email è stata generata da DokuWiki presso @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/it/resetpwd.txt b/inc/lang/it/resetpwd.txt new file mode 100644 index 000000000..450dd8301 --- /dev/null +++ b/inc/lang/it/resetpwd.txt @@ -0,0 +1 @@ +Inserisci perfavore una nuova password per il tuo account su questo wiki.
\ No newline at end of file diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php index 057fa5a54..490c84cc9 100644 --- a/inc/lang/ja/lang.php +++ b/inc/lang/ja/lang.php @@ -261,6 +261,7 @@ $lang['subscr_style_digest'] = 'それぞれのページへの変更の要約 $lang['subscr_style_list'] = '前回のメールから変更されたページをリスト(%.2f 日毎)'; $lang['authmodfailed'] = 'ユーザー認証の設定が正しくありません。Wikiの管理者に連絡して下さい。'; $lang['authtempfail'] = 'ユーザー認証が一時的に使用できなくなっています。この状態が続いているようであれば、Wikiの管理者に連絡して下さい。'; +$lang['authpwdexpire'] = 'あなたのパスワードは、あと%d日で有効期限が切れます。パスワードを変更してください。'; $lang['i_chooselang'] = '使用言語を選択してください'; $lang['i_installer'] = 'DokuWiki インストーラー'; $lang['i_wikiname'] = 'Wiki名'; diff --git a/inc/lang/ko/admin.txt b/inc/lang/ko/admin.txt index 7dd0f58b3..c61db1a42 100644 --- a/inc/lang/ko/admin.txt +++ b/inc/lang/ko/admin.txt @@ -1,4 +1,3 @@ ====== 관리 작업 ====== -DokuWiki에서 사용가능한 관리 작업 목록을 아래에서 찾을 수 있습니다. - +DokuWiki에서 사용 가능한 관리 작업 목록을 아래에서 찾을 수 있습니다.
\ No newline at end of file diff --git a/inc/lang/ko/backlinks.txt b/inc/lang/ko/backlinks.txt index 1711945e4..ce77ca5a7 100644 --- a/inc/lang/ko/backlinks.txt +++ b/inc/lang/ko/backlinks.txt @@ -1,4 +1,3 @@ -====== 백링크 ====== - -현재 페이지로 백링크되는 페이지 목록입니다. +====== 가리키는 링크 ====== +현재 문서를 가리키는 링크가 있는 문서 목록입니다. diff --git a/inc/lang/ko/conflict.txt b/inc/lang/ko/conflict.txt index 529296359..43988a62b 100644 --- a/inc/lang/ko/conflict.txt +++ b/inc/lang/ko/conflict.txt @@ -1,6 +1,5 @@ ====== 새 버전 있음 ====== -편집하신 문서의 새 버전이 있습니다. 당신이 편집하고 있는 동안 다른 사람이 동일한 파일을 편집하였을 경우 이런 일이 생길 수 있습니다. - -아래의 차이점을 면밀히 검토하시고, 어떤 버전을 저장하실지 결정하십시오. **저장**을 선택하시면, 당신의 버전이 저장됩니다. **취소** 를 선택하시면 현재 버전이 유지됩니다. +편집한 문서의 새 버전이 있습니다. 당신이 편집하고 있는 동안 다른 사람이 같은 파일을 편집하였을 경우 이런 일이 생길 수 있습니다. +아래의 차이를 철저하게 검토하고 어떤 버전을 저장하실지 결정하십시오. **저장**을 선택하면, 당신의 버전이 저장됩니다. **취소**를 선택하면 현재 버전이 유지됩니다.
\ No newline at end of file diff --git a/inc/lang/ko/denied.txt b/inc/lang/ko/denied.txt index 316a660c0..f384a0a8c 100644 --- a/inc/lang/ko/denied.txt +++ b/inc/lang/ko/denied.txt @@ -1,4 +1,3 @@ ====== 권한 거절 ====== -계속할 수 있는 권한이 없습니다. 로그인하십시오. - +계속할 수 있는 권한이 없습니다. 로그인하십시오.
\ No newline at end of file diff --git a/inc/lang/ko/diff.txt b/inc/lang/ko/diff.txt index 8cfb1da43..76b488d90 100644 --- a/inc/lang/ko/diff.txt +++ b/inc/lang/ko/diff.txt @@ -1,5 +1,3 @@ -====== 차이점 ====== - -이 페이지의 선택한 이전 버전과 현재 버전 사이의 차이점을 보여줍니다. - +====== 차이 ====== +이 문서의 선택한 이전 버전과 현재 버전 사이의 차이를 보여줍니다.
\ No newline at end of file diff --git a/inc/lang/ko/draft.txt b/inc/lang/ko/draft.txt index 3df8a5e86..861834e5d 100644 --- a/inc/lang/ko/draft.txt +++ b/inc/lang/ko/draft.txt @@ -1,6 +1,5 @@ -====== 문서 초안이 있습니다. ====== +====== 문서 초안 있음 ====== -이 페이지의 마지막 편집 세션은 정상적으로 끝나지 않았습니다. DokuWiki는 작업 도중 자동으로 저장된 문서 초안을 사용하여 편집을 계속 할 수 있습니다. 마지막 세션동안 저장된 문서 초안을 아래에서 볼 수 있습니다. - -확실하게 비정상적으로 종료된 세션을 //복구//할지 여부를 결정하고, 자동으로 저장되었던 초안을 //삭제//하거나 편집 과정을 취소하기 바랍니다. +이 문서의 마지막 편집 세션은 정상적으로 끝나지 않았습니다. DokuWiki는 작업 도중 자동으로 저장된 문서 초안을 사용하여 편집을 계속 할 수 있습니다. 마지막 세션 동안 저장된 문서 초안을 아래에서 볼 수 있습니다. +비정상적으로 끝난 편집 세션을 **복구**할지 여부를 결정하고, 자동으로 저장되었던 초안을 **삭제**하거나 편집 과정을 **취소**하기 바랍니다.
\ No newline at end of file diff --git a/inc/lang/ko/edit.txt b/inc/lang/ko/edit.txt index 9b59524f7..f52326a33 100644 --- a/inc/lang/ko/edit.txt +++ b/inc/lang/ko/edit.txt @@ -1,2 +1 @@ -페이지를 편집하고 **저장**을 누르십시오. 위키 구문은 [[wiki:syntax]] 혹은 [[wiki:ko_syntax|(한글) 구문]]을 참고하십시오. 이 페이지를 **더 낫게 만들 자신이 있을** 때에만 편집하십시오. 실험을 하고 싶을 때에는, 먼저 [[playground:playground|연습장]] 에 가서 연습해 보십시오. - +문서를 편집하고 **저장**을 누르세요. 위키 구문은 [[wiki:syntax]] 또는 [[wiki:ko_syntax|(한국어) 구문]]을 참고하세요. 이 문서를 **더 좋게 만들 자신이 있을 때**에만 편집하세요. 연습을 하고 싶다면 먼저 [[playground:playground|연습장]]에 가서 연습하세요. diff --git a/inc/lang/ko/editrev.txt b/inc/lang/ko/editrev.txt index 2715448d3..136eef733 100644 --- a/inc/lang/ko/editrev.txt +++ b/inc/lang/ko/editrev.txt @@ -1,2 +1,2 @@ -**문서의 이전 버전을 선택하였습니다!** 저장할 경우 이 자료의 새 버전을 만듭니다. +**문서의 이전 버전을 선택하였습니다!** 저장할 경우 이 데이터로 새 버전을 만듭니다. ----
\ No newline at end of file diff --git a/inc/lang/ko/index.txt b/inc/lang/ko/index.txt index 7ca9488e0..24eb9450c 100644 --- a/inc/lang/ko/index.txt +++ b/inc/lang/ko/index.txt @@ -1,4 +1,3 @@ -====== Index ====== - -이 페이지는 [[doku>namespaces|네임스페이스]] 에서 정렬한 모든 페이지의 목록입니다. +====== 사이트맵 ====== +이 페이지는 [[doku>namespaces|이름공간]]에서 정렬한 모든 문서의 목록입니다.
\ No newline at end of file diff --git a/inc/lang/ko/install.html b/inc/lang/ko/install.html index 6b1bfaf75..f73b91294 100644 --- a/inc/lang/ko/install.html +++ b/inc/lang/ko/install.html @@ -1,17 +1,15 @@ <p>이 페이지는 <a href="http://dokuwiki.org">Dokuwiki</a> 설치와 환경 설정을 도와줍니다. -. 설치 과정에 대한 더 자세한 정보는 <a href="http://dokuwiki.org/ko:install">한글 설치문서</a>와 -<a href="http://dokuwiki.org/install">영문 설치문서</a>를 참고하기 바랍니다. -</p> +설치 과정에 대한 더 자세한 정보는 <a href="http://dokuwiki.org/ko:install">(한국어) 설치 문서</a>와 +<a href="http://dokuwiki.org/install">(영어) 설치 문서</a>를 참고하기 바랍니다.</p> -<p>DokuWiki는 위키 페이지와 페이지와 관련된 정보(그림,색인, 이전 버전 문서 등등)를 저장하기 위해 일반적인 텍스트 파일들을 사용합니다. 정상적으로 DokuWiki를 사용하려면 이 파일들을 담고 있는 디렉토리들에 대한 쓰기 권한을 가지고 있어야 합니다. -현재 설치 과정 중에는 디렉토리 권한 설정이 불가능합니다. 보통 직접 쉘 명령어를 사용하거나, 호스팅을 사용한다면 FTP나 호스팅 제어판(예. CPanel)을 사용해서 설정해야 합니다.</p> +<p>DokuWiki는 위키 문서와 문서와 관련된 정보(예를 들어 그림, 검색 색인, 이전 버전 문서)를 저장하기 위해 일반적인 텍스트 파일을 사용합니다. 정상적으로 DokuWiki를 사용하려면 이 파일을 담고 있는 디렉토리에 대한 쓰기 권한을 가지고 있어야 합니다. +현재 설치 과정 중에는 디렉토리 권한 설정이 불가능합니다. 보통 직접 쉘 명령어를 사용하거나, 호스팅을 사용한다면 FTP나 호스팅 제어판(예를 들어 CPanel)을 사용해서 설정해야 합니다.</p> -<p>현재 설치 과정중에 관리자로 로그인 후 DokuWiki의 관리 메뉴(플러그인 설치, 사용자 관리, 위키 페이지 접근 권한 관리, 옵션 설정)를 가능하게 <acronym title="접근 제어 목록">ACL</acronym>에 대한 환경 설정을 수행합니다. -이 것은 DokuWiki가 동작하는데 필요한 사항은 아니지만, 어찌되었든 더 쉽게 관리자가 관리할 수 있도록 해줍니다.</p> +<p>현재 설치 과정중에 관리자로 로그인 후 DokuWiki의 관리 메뉴(플러그인 설치, 사용자 관리, 위키 문서 접근 권한 관리, 옵션 설정)를 가능하게 <acronym title="접근 제어 목록">ACL</acronym>에 대한 환경 설정을 수행합니다. +이 것은 DokuWiki가 동작하는데 필요한 사항은 아니지만, 어쨌든 더 쉽게 관리자가 관리할 수 있도록 해줍니다.</p> -<p>숙련된 사용자들이나 특별한 설치 과정이 필요한 경우에 다음 링크들을 참조하기 바랍니다: -<a href="http://dokuwiki.org/ko:install">설치 과정(한글)</a> -과 <a href="http://dokuwiki.org/ko:config">환경 설정(한글),</a> -<a href="http://dokuwiki.org/install">설치 과정(영문)</a> -과 <a href="http://dokuwiki.org/config">환경 설정(영문)</a> -</p> +<p>숙련된 사용자나 특별한 설치 과정이 필요한 경우에 다음 링크를 참고하기 바랍니다: +<a href="http://dokuwiki.org/ko:install">설치 과정 (한국어)</a> +과 <a href="http://dokuwiki.org/ko:config">환경 설정 (한국어),</a> +<a href="http://dokuwiki.org/install">설치 과정 (영어)</a> +과 <a href="http://dokuwiki.org/config">환경 설정 (영어)</a></p> diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php index 84fdb3c48..7b4e30a49 100644 --- a/inc/lang/ko/lang.php +++ b/inc/lang/ko/lang.php @@ -9,6 +9,7 @@ * @author Song Younghwan <purluno@gmail.com> * @author Seung-Chul Yoo <dryoo@live.com> * @author erial2@gmail.com + * @author Myeongjin <aranet100@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -17,21 +18,21 @@ $lang['doublequoteclosing'] = '”'; $lang['singlequoteopening'] = '‘'; $lang['singlequoteclosing'] = '’'; $lang['apostrophe'] = '’'; -$lang['btn_edit'] = '페이지 편집'; -$lang['btn_source'] = '소스 보기'; -$lang['btn_show'] = '페이지 보기'; -$lang['btn_create'] = '페이지 만들기'; +$lang['btn_edit'] = '문서 편집'; +$lang['btn_source'] = '내용 보기'; +$lang['btn_show'] = '문서 보기'; +$lang['btn_create'] = '문서 만들기'; $lang['btn_search'] = '찾기'; $lang['btn_save'] = '저장'; -$lang['btn_preview'] = '미리보기'; -$lang['btn_top'] = '맨위로'; +$lang['btn_preview'] = '미리 보기'; +$lang['btn_top'] = '맨 위로'; $lang['btn_newer'] = '<< 최근'; $lang['btn_older'] = '이전 >>'; -$lang['btn_revs'] = '이전 버전들'; -$lang['btn_recent'] = '최근 변경 목록'; -$lang['btn_upload'] = '업로드'; +$lang['btn_revs'] = '이전 버전'; +$lang['btn_recent'] = '최근 바뀜'; +$lang['btn_upload'] = '올리기'; $lang['btn_cancel'] = '취소'; -$lang['btn_index'] = '색인'; +$lang['btn_index'] = '사이트맵'; $lang['btn_secedit'] = '편집'; $lang['btn_login'] = '로그인'; $lang['btn_logout'] = '로그아웃'; @@ -39,69 +40,69 @@ $lang['btn_admin'] = '관리'; $lang['btn_update'] = '변경'; $lang['btn_delete'] = '삭제'; $lang['btn_back'] = '뒤로'; -$lang['btn_backlink'] = '이전 링크'; +$lang['btn_backlink'] = '가리키는 링크'; $lang['btn_backtomedia'] = '미디어 파일 선택으로 돌아가기'; -$lang['btn_subscribe'] = '구독 신청'; -$lang['btn_profile'] = '개인정보 변경'; +$lang['btn_subscribe'] = '구독 관리'; +$lang['btn_profile'] = '개인 정보 변경'; $lang['btn_reset'] = '초기화'; -$lang['btn_resendpwd'] = '새 암호 설정'; -$lang['btn_draft'] = '문서초안 편집'; -$lang['btn_recover'] = '문서초안 복구'; -$lang['btn_draftdel'] = '문서초안 삭제'; +$lang['btn_resendpwd'] = '새 비밀번호 설정'; +$lang['btn_draft'] = '문서 초안 편집'; +$lang['btn_recover'] = '문서 초안 복구'; +$lang['btn_draftdel'] = '문서 초안 삭제'; $lang['btn_revert'] = '복원'; $lang['btn_register'] = '등록'; $lang['btn_apply'] = '적용'; $lang['btn_media'] = '미디어 관리'; $lang['loggedinas'] = '다른 사용자로 로그인'; -$lang['user'] = '사용자'; -$lang['pass'] = '패스워드'; -$lang['newpass'] = '새로운 패스워드'; -$lang['oldpass'] = '현재 패스워드 확인'; -$lang['passchk'] = '패스워드 다시 확인'; +$lang['user'] = '사용자 이름'; +$lang['pass'] = '비밀번호'; +$lang['newpass'] = '새 비밀번호'; +$lang['oldpass'] = '현재 비밀번호 확인'; +$lang['passchk'] = '비밀번호 다시 확인'; $lang['remember'] = '기억하기'; $lang['fullname'] = '실제 이름'; $lang['email'] = '이메일'; $lang['profile'] = '개인 정보'; -$lang['badlogin'] = '잘못된 사용자 이름이거나 패스워드입니다.'; -$lang['minoredit'] = '일부 내용 변경'; -$lang['draftdate'] = '문서 초안 자동저장 시간'; -$lang['nosecedit'] = '페이지가 수정되어 섹션정보가 달라져 페이지 전부를 다시 읽습니다.'; +$lang['badlogin'] = '잘못된 사용자 이름이거나 비밀번호입니다.'; +$lang['minoredit'] = '사소한 바뀜'; +$lang['draftdate'] = '문서 초안 자동 저장 시간'; +$lang['nosecedit'] = '문서가 수정되어 세션 정보의 유효 시간이 지나 문서 전부를 다시 읽습니다.'; $lang['regmissing'] = '모든 항목을 입력해야 합니다.'; $lang['reguexists'] = '같은 이름을 사용하는 사용자가 있습니다.'; -$lang['regsuccess'] = '사용자를 만들었습니다. 패스워드는 이메일로 보냈습니다.'; +$lang['regsuccess'] = '사용자를 만들었으며 비밀번호는 이메일로 보냈습니다.'; $lang['regsuccess2'] = '사용자를 만들었습니다.'; -$lang['regmailfail'] = '패스워드를 이메일로 전송할 때 오류가 발생했습니다. 관리자에게 문의하기 바랍니다!'; -$lang['regbadmail'] = '이메일 주소가 틀렸습니다. - 오류라고 생각되면 관리자에게 문의하기 바랍니다.'; -$lang['regbadpass'] = '새로운 패스워드들이 일치하지 않습니다. 다시 입력하기 바랍니다.'; -$lang['regpwmail'] = 'DokuWiki 패스워드'; -$lang['reghere'] = '아직 등록하지 않았다면 등록하기 바랍니다.'; -$lang['profna'] = '이 위키는 개인 정보 수정을 허용하지 않습니다.'; -$lang['profnochange'] = '변경사항이 없습니다.'; +$lang['regmailfail'] = '비밀번호를 이메일로 전송할 때 오류가 발생했습니다. 관리자에게 문의하기 바랍니다!'; +$lang['regbadmail'] = '이메일 주소가 잘못됐습니다 - 오류라고 생각하면 관리자에게 문의하기 바랍니다.'; +$lang['regbadpass'] = '새 비밀번호가 일치하지 않습니다. 다시 입력하기 바랍니다.'; +$lang['regpwmail'] = 'DokuWiki 비밀번호'; +$lang['reghere'] = '계정이 없나요? 계정을 등록할 수 있습니다'; +$lang['profna'] = '이 위키는 개인 정보 수정을 허용하지 않습니다'; +$lang['profnochange'] = '바뀐 사항이 없습니다.'; $lang['profnoempty'] = '이름이나 이메일 주소가 비었습니다.'; -$lang['profchanged'] = '개인정보 변경이 성공했습니다.'; -$lang['pwdforget'] = '패스워드를 잊어버린 경우 새로 발급받을 수 있습니다.'; -$lang['resendna'] = '이 위키는 패스워드 재발급을 지원하지 않습니다.'; -$lang['resendpwd'] = '새 암호 다음으로 전송 : '; -$lang['resendpwdmissing'] = '새로운 패스워드를 입력해야햡니다.'; -$lang['resendpwdnouser'] = '등록된 사용자가 아닙니다. 다시 확인 바랍니다.'; -$lang['resendpwdbadauth'] = '인증 코드가 틀립니다. 잘못된 링크인지 확인 바랍니다.'; +$lang['profchanged'] = '개인 정보가 성공적으로 바뀌었습니다.'; +$lang['pwdforget'] = '비밀번호를 잊으셨나요? 새로 발급받을 수 있습니다'; +$lang['resendna'] = '이 위키는 비밀번호 재발급을 지원하지 않습니다.'; +$lang['resendpwd'] = '다음으로 새 비밀번호 전송'; +$lang['resendpwdmissing'] = '모든 비밀번호를 입력해야 합니다.'; +$lang['resendpwdnouser'] = '등록된 사용자가 아닙니다.'; +$lang['resendpwdbadauth'] = '인증 코드가 잘못됐습니다. 잘못된 링크인지 확인 바랍니다.'; $lang['resendpwdconfirm'] = '확인 링크를 이메일로 보냈습니다.'; -$lang['resendpwdsuccess'] = '새로운 패스워드는 이메일로 보내드립니다.'; -$lang['license'] = '이 위키의 내용은 다음의 라이센스에 따릅니다 :'; -$lang['licenseok'] = '주의 : 이 페이지를 수정한다는 다음의 라이센스에 동의함을 의미합니다 :'; -$lang['searchmedia'] = '파일이름 찾기:'; -$lang['searchmedia_in'] = ' %s에서 검색'; -$lang['txt_upload'] = '업로드 파일을 선택합니다.'; -$lang['txt_filename'] = '업로드 파일 이름을 입력합니다.(선택 사항)'; -$lang['txt_overwrt'] = '새로운 파일로 이전 파일을 교체합니다.'; -$lang['lockedby'] = '현재 잠금 사용자'; +$lang['resendpwdsuccess'] = '새로운 비밀번호를 이메일로 보냈습니다.'; +$lang['license'] = '별도로 라이선스를 알리지 않을 경우, 이 위키의 내용은 다음의 라이선스에 따릅니다:'; +$lang['licenseok'] = '참고: 이 문서를 편집할 경우 다음의 라이선스에 동의함을 의미합니다:'; +$lang['searchmedia'] = '파일 이름 찾기:'; +$lang['searchmedia_in'] = '%s에서 찾기'; +$lang['txt_upload'] = '올릴 파일 선택'; +$lang['txt_filename'] = '올릴 파일 이름 입력 (선택 사항)'; +$lang['txt_overwrt'] = '이전 파일을 새로운 파일로 덮어쓰기'; +$lang['maxuploadsize'] = '최대 올리기 용량. 파일당 %s'; +$lang['lockedby'] = '현재 잠겨진 사용자'; $lang['lockexpire'] = '잠금 해제 시간'; -$lang['js']['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리보기를 눌러 잠금 시간을 다시 설정하기 바랍니다.'; -$lang['js']['notsavedyet'] = '저장하지 않은 변경은 지워집니다. -계속하시겠습니까?'; +$lang['js']['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리 보기를 눌러 잠금 시간을 다시 설정하기 바랍니다.'; +$lang['js']['notsavedyet'] = '저장하지 않은 바뀜이 지워집니다.'; $lang['js']['searchmedia'] = '파일 찾기'; -$lang['js']['keepopen'] = '선택할 때 윈도우를 열어놓으시기 바랍니다.'; -$lang['js']['hidedetails'] = '자세한 정보 감추기'; +$lang['js']['keepopen'] = '선택할 때 창을 열어놓기'; +$lang['js']['hidedetails'] = '자세한 정보 숨기기'; $lang['js']['mediatitle'] = '링크 설정'; $lang['js']['mediadisplay'] = '링크 형태'; $lang['js']['mediaalign'] = '배치'; @@ -109,73 +110,72 @@ $lang['js']['mediasize'] = '그림 크기'; $lang['js']['mediatarget'] = '링크 목표'; $lang['js']['mediaclose'] = '닫기'; $lang['js']['mediainsert'] = '삽입'; -$lang['js']['mediadisplayimg'] = '그림보기'; +$lang['js']['mediadisplayimg'] = '그림을 보여줍니다.'; $lang['js']['mediadisplaylnk'] = '링크만 보여줍니다.'; $lang['js']['mediasmall'] = '작게'; $lang['js']['mediamedium'] = '중간'; $lang['js']['medialarge'] = '크게'; $lang['js']['mediaoriginal'] = '원본'; -$lang['js']['medialnk'] = '세부정보페이지로 링크'; +$lang['js']['medialnk'] = '자세한 정보 문서로 링크'; $lang['js']['mediadirect'] = '원본으로 직접 링크'; -$lang['js']['medianolnk'] = '링크 없슴'; +$lang['js']['medianolnk'] = '링크 없음'; $lang['js']['medianolink'] = '그림을 링크하지 않음'; $lang['js']['medialeft'] = '왼쪽 배치'; $lang['js']['mediaright'] = '오른쪽 배치'; -$lang['js']['mediacenter'] = '중앙 배치'; -$lang['js']['medianoalign'] = '배치 없슴'; -$lang['js']['nosmblinks'] = '윈도우 공유 파일과의 연결은 MS 인터넷 익스플로러에서만 동작합니다. -그러나 링크를 복사하거나 붙여넣기를 할 수 있습니다.'; +$lang['js']['mediacenter'] = '가운데 배치'; +$lang['js']['medianoalign'] = '배치 없음'; +$lang['js']['nosmblinks'] = '윈도우 공유 파일과의 연결은 마이크로소프트 인터넷 익스플로러에서만 동작합니다.\n그러나 링크를 복사하거나 붙여넣기를 할 수 있습니다.'; $lang['js']['linkwiz'] = '링크 마법사'; $lang['js']['linkto'] = '다음으로 연결:'; -$lang['js']['del_confirm'] = '정말로 선택된 항목(들)을 삭제하시겠습니까?'; -$lang['js']['restore_confirm'] = '정말 이 버전으로 되돌리시겠습니까?'; -$lang['js']['media_diff'] = '차이점 보기 :'; +$lang['js']['del_confirm'] = '정말 선택된 항목을 삭제하겠습니까?'; +$lang['js']['restore_confirm'] = '정말 이 버전으로 되돌리겠습니까?'; +$lang['js']['media_diff'] = '차이 보기:'; $lang['js']['media_diff_both'] = '나란히 보기'; $lang['js']['media_diff_opacity'] = '겹쳐 보기'; $lang['js']['media_diff_portions'] = '쪼개 보기'; -$lang['js']['media_select'] = '파일 선택'; -$lang['js']['media_upload_btn'] = '업로드'; +$lang['js']['media_select'] = '파일 선택…'; +$lang['js']['media_upload_btn'] = '올리기'; $lang['js']['media_done_btn'] = '완료'; -$lang['js']['media_drop'] = '업로드할 파일을 끌어넣으세요'; +$lang['js']['media_drop'] = '올릴 파일을 끌어넣으세요'; $lang['js']['media_cancel'] = '삭제'; -$lang['js']['media_overwrt'] = '이미있는 파일 덮어쓰기'; -$lang['rssfailed'] = 'feed 가져오기 실패: '; +$lang['js']['media_overwrt'] = '이미 있는 파일 덮어쓰기'; +$lang['rssfailed'] = '이 피드를 가져오는 동안 오류 발생:'; $lang['nothingfound'] = '아무 것도 없습니다.'; $lang['mediaselect'] = '미디어 파일 선택'; -$lang['fileupload'] = '미디어 파일 업로드'; -$lang['uploadsucc'] = '업로드 성공'; -$lang['uploadfail'] = '업로드 실패. 잘못된 권한 때문일지도 모릅니다.'; -$lang['uploadwrong'] = '업로드 거부. 금지된 확장자입니다!'; -$lang['uploadexist'] = '이미 파일이 존재합니다.'; -$lang['uploadbadcontent'] = '업로드된 파일이 파일 확장자 %s와 일치하지 않습니다.'; -$lang['uploadspam'] = '스팸 차단기가 업로드를 취소하였습니다.'; -$lang['uploadxss'] = '악성 코드의 가능성이 있어 업로드를 취소하였습니다.'; -$lang['uploadsize'] = '업로드한 파일이 너무 큽니다. (최대 %s)'; +$lang['fileupload'] = '미디어 파일 올리기'; +$lang['uploadsucc'] = '올리기 성공'; +$lang['uploadfail'] = '올리기 실패. 잘못된 권한 때문일지도 모릅니다.'; +$lang['uploadwrong'] = '올리기 거부. 금지된 확장자입니다!'; +$lang['uploadexist'] = '파일이 이미 존재합니다.'; +$lang['uploadbadcontent'] = '올린 파일이 %s 파일 확장자와 일치하지 않습니다.'; +$lang['uploadspam'] = '스팸 차단 목록이 올리기를 취소했습니다.'; +$lang['uploadxss'] = '악성 코드의 가능성이 있어 올리기를 취소했습니다.'; +$lang['uploadsize'] = '올린 파일이 너무 큽니다. (최대 %s)'; $lang['deletesucc'] = '"%s" 파일이 삭제되었습니다.'; -$lang['deletefail'] = '"%s" 파일을 삭제할 수 없습니다. - 삭제 권한이 있는지 확인하기 바랍니다.'; -$lang['mediainuse'] = '"%s" 파일을 삭제할 수 없습니다. - 아직 사용 중입니다.'; -$lang['namespaces'] = '네임스페이스'; +$lang['deletefail'] = '"%s" 파일을 삭제할 수 없습니다 - 삭제 권한이 있는지 확인하기 바랍니다.'; +$lang['mediainuse'] = '"%s" 파일을 삭제할 수 없습니다 - 아직 사용 중입니다.'; +$lang['namespaces'] = '이름공간'; $lang['mediafiles'] = '사용 가능한 파일 목록'; -$lang['accessdenied'] = '이 페이지를 볼 권한이 없습니다.'; -$lang['mediausage'] = '이 파일을 참조하려면 다음 문법을 사용하기 바랍니다:'; +$lang['accessdenied'] = '이 문서를 볼 권한이 없습니다.'; +$lang['mediausage'] = '이 파일을 참고하려면 다음 문법을 사용하기 바랍니다:'; $lang['mediaview'] = '원본 파일 보기'; -$lang['mediaroot'] = '루트(root)'; -$lang['mediaupload'] = '파일을 현재 네임스페이스로 업로드합니다. 하위 네임스페이스를 만들려면 파일 이름 앞에 콜론(:)으로 구분되는 이름을 붙이면 됩니다.'; -$lang['mediaextchange'] = '파일 확장자가 .%s에서 .%s으로 변경됐습니다!'; -$lang['reference'] = '참조'; -$lang['ref_inuse'] = '다음 페이지들에서 아직 사용 중이므로 파일을 삭제할 수 없습니다:'; -$lang['ref_hidden'] = '페이지들의 몇몇 참조는 읽을 수 있는 권한이 없습니다.'; -$lang['hits'] = '히트 수'; -$lang['quickhits'] = '일치하는 페이지 이름'; +$lang['mediaroot'] = '루트 (root)'; +$lang['mediaupload'] = '파일을 현재 이름공간으로 올립니다. 하위 이름공간으로 만들려면 선택한 파일 이름 앞에 콜론(:)으로 구분되는 이름을 붙이면 됩니다. 파일을 드래그 앤 드롭하여 선택할 수 있습니다.'; +$lang['mediaextchange'] = '파일 확장자가 .%s에서 .%s(으)로 바뀌었습니다!'; +$lang['reference'] = '참고'; +$lang['ref_inuse'] = '다음 문서에서 아직 사용 중이므로 파일을 삭제할 수 없습니다:'; +$lang['ref_hidden'] = '문서의 일부 참고는 읽을 수 있는 권한이 없습니다'; +$lang['hits'] = '조회 수'; +$lang['quickhits'] = '일치하는 문서 이름'; $lang['toc'] = '목차'; $lang['current'] = '현재'; $lang['yours'] = '버전'; $lang['diff'] = '현재 버전과의 차이 보기'; -$lang['diff2'] = '선택된 버전들 간 차이 보기'; +$lang['diff2'] = '선택한 버전 간 차이 보기'; $lang['difflink'] = '차이 보기로 연결'; -$lang['diff_type'] = '버전간 차이 표시:'; +$lang['diff_type'] = '버전간 차이 보기:'; $lang['diff_inline'] = '인라인 방식'; -$lang['diff_side'] = '다중창 방식'; +$lang['diff_side'] = '다중 창 방식'; $lang['line'] = '줄'; $lang['breadcrumb'] = '추적'; $lang['youarehere'] = '현재 위치'; @@ -183,54 +183,54 @@ $lang['lastmod'] = '마지막 수정'; $lang['by'] = '작성자'; $lang['deleted'] = '삭제'; $lang['created'] = '새로 만듦'; -$lang['restored'] = '옛 버전 복구'; +$lang['restored'] = '이전 버전 복구 (%s)'; $lang['external_edit'] = '외부 편집기'; $lang['summary'] = '편집 요약'; -$lang['noflash'] = '이 컨텐츠를 표시하기 위해서 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>이 필요합니다.'; +$lang['noflash'] = '이 콘텐츠를 표시하기 위해서 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash 플러그인</a>이 필요합니다.'; $lang['download'] = '조각 다운로드'; $lang['tools'] = '도구'; $lang['user_tools'] = '사용자 도구'; $lang['site_tools'] = '사이트 도구'; -$lang['page_tools'] = '페이지 도구'; -$lang['skip_to_content'] = '컨텐츠 넘기기'; -$lang['mail_newpage'] = '페이지 추가:'; -$lang['mail_changed'] = '페이지 변경:'; -$lang['mail_subscribe_list'] = '네임스페이스에서 변경된 페이지:'; +$lang['page_tools'] = '문서 도구'; +$lang['skip_to_content'] = '콘텐츠 넘기기'; +$lang['mail_newpage'] = '문서 추가:'; +$lang['mail_changed'] = '문서 바뀜:'; +$lang['mail_subscribe_list'] = '이름공간에서 바뀐 문서:'; $lang['mail_new_user'] = '새로운 사용자:'; $lang['mail_upload'] = '파일 첨부:'; -$lang['changes_type'] = '차이점 보기'; -$lang['pages_changes'] = '페이지'; +$lang['changes_type'] = '차이 보기'; +$lang['pages_changes'] = '문서'; $lang['media_changes'] = '미디어 파일'; -$lang['both_changes'] = '미디어 파일과 페이지 양쪽'; -$lang['qb_bold'] = '굵은 글'; -$lang['qb_italic'] = '이탤릭체 글'; -$lang['qb_underl'] = '밑줄 그어진 글'; -$lang['qb_code'] = '코드로 표시된 글'; -$lang['qb_strike'] = '취소 표시된 글'; -$lang['qb_h1'] = '1단계 헤드라인'; -$lang['qb_h2'] = '2단계 헤드라인'; -$lang['qb_h3'] = '3단계 헤드라인'; -$lang['qb_h4'] = '4단계 헤드라인'; -$lang['qb_h5'] = '5단계 헤드라인'; -$lang['qb_h'] = '표제'; -$lang['qb_hs'] = '표제 선택'; -$lang['qb_hplus'] = '상위 표제'; -$lang['qb_hminus'] = '하위 표제'; -$lang['qb_hequal'] = '동급 표제'; +$lang['both_changes'] = '미디어 파일과 문서 모두'; +$lang['qb_bold'] = '굵은 글씨'; +$lang['qb_italic'] = '기울인 글씨'; +$lang['qb_underl'] = '밑줄 그어진 글씨'; +$lang['qb_code'] = '코드 글씨'; +$lang['qb_strike'] = '취소선 글씨'; +$lang['qb_h1'] = '1단계 문단 제목'; +$lang['qb_h2'] = '2단계 문단 제목'; +$lang['qb_h3'] = '3단계 문단 제목'; +$lang['qb_h4'] = '4단계 문단 제목'; +$lang['qb_h5'] = '5단계 문단 제목'; +$lang['qb_h'] = '문단 제목'; +$lang['qb_hs'] = '문단 제목 선택'; +$lang['qb_hplus'] = '상위 문단 제목'; +$lang['qb_hminus'] = '하위 문단 제목'; +$lang['qb_hequal'] = '동급 문단 제목'; $lang['qb_link'] = '내부 링크'; $lang['qb_extlink'] = '외부 링크'; -$lang['qb_hr'] = '수평선'; -$lang['qb_ol'] = '숫자 목록'; -$lang['qb_ul'] = '목록'; -$lang['qb_media'] = '이미지와 기타 파일 추가'; -$lang['qb_sig'] = '서명 추가'; +$lang['qb_hr'] = '가로줄'; +$lang['qb_ol'] = '순서 있는 목록'; +$lang['qb_ul'] = '순서 없는 목록'; +$lang['qb_media'] = '그림과 기타 파일 추가'; +$lang['qb_sig'] = '서명 넣기'; $lang['qb_smileys'] = '이모티콘'; -$lang['qb_chars'] = '특수문자'; -$lang['upperns'] = '상위 네임스페이스로 이동'; -$lang['admin_register'] = '새로운 사용자 추가'; -$lang['metaedit'] = '메타 데이타를 편집합니다.'; -$lang['metasaveerr'] = '메타 데이타 쓰기가 실패했습니다.'; -$lang['metasaveok'] = '메타 데이타가 저장되었습니다.'; +$lang['qb_chars'] = '특수 문자'; +$lang['upperns'] = '상위 이름공간으로 이동'; +$lang['admin_register'] = '새 사용자 추가'; +$lang['metaedit'] = '메타 데이터 편집'; +$lang['metasaveerr'] = '메타 데이터 쓰기 실패'; +$lang['metasaveok'] = '메타 데이타 저장됨'; $lang['img_backto'] = '뒤로'; $lang['img_title'] = '이름'; $lang['img_caption'] = '설명'; @@ -245,80 +245,78 @@ $lang['img_keywords'] = '키워드'; $lang['img_width'] = '너비'; $lang['img_height'] = '높이'; $lang['img_manager'] = '미디어 관리자에서 보기'; -$lang['subscr_subscribe_success'] = '%s을(를) 구독목록 %s에 추가하였습니다'; -$lang['subscr_subscribe_error'] = '%s을(를) 구독목록 %s에 추가하는데 실패했습니다'; -$lang['subscr_subscribe_noaddress'] = '등록된 주소가 없기 때문에 구독목록에 등록되지 않았습니다'; -$lang['subscr_unsubscribe_success'] = '%s을(를) 구독목록 %s에서 제거하였습니다'; -$lang['subscr_unsubscribe_error'] = '%s을(를) 구독목록 %s에서 제거하는데 실패했습니다'; +$lang['subscr_subscribe_success'] = '%s을(를) 구독 목록 %s에 추가하였습니다'; +$lang['subscr_subscribe_error'] = '%s을(를) 구독 목록 %s에 추가하는데 실패했습니다'; +$lang['subscr_subscribe_noaddress'] = '등록된 주소가 없기 때문에 구독 목록에 등록되지 않았습니다'; +$lang['subscr_unsubscribe_success'] = '%s을(를) 구독 목록 %s에서 삭제하였습니다'; +$lang['subscr_unsubscribe_error'] = '%s을(를) 구독 목록 %s에서 삭제하는데 실패했습니다'; $lang['subscr_already_subscribed'] = '%s은(는) 이미 %s에 구독되고 있습니다'; $lang['subscr_not_subscribed'] = '%s은(는) 이미 %s에 구독되어 있지 않습니다'; -$lang['subscr_m_not_subscribed'] = '현재의 페이지나 네임스페이스에 구독등록이 되어있지 않습니다.'; +$lang['subscr_m_not_subscribed'] = '현재의 문서나 이름공간에 구독 등록이 되어있지 않습니다.'; $lang['subscr_m_new_header'] = '구독 추가'; -$lang['subscr_m_current_header'] = '현재 구독중인 것들'; +$lang['subscr_m_current_header'] = '현재 구독 중인 것'; $lang['subscr_m_unsubscribe'] = '구독 취소'; $lang['subscr_m_subscribe'] = '구독'; $lang['subscr_m_receive'] = '받기'; -$lang['subscr_style_every'] = '모든 변화를 이메일로 받기'; -$lang['subscr_style_digest'] = '각 페이지의 변화를 요약 (매 %.2f 일 마다)'; -$lang['subscr_style_list'] = '마지막 이메일 이후 변화된 페이지의 목록 (매 %.2f 일 마다)'; +$lang['subscr_style_every'] = '모든 바뀜을 이메일로 받기'; +$lang['subscr_style_digest'] = '각 문서의 바뀜을 요약 (매 %.2f일 마다)'; +$lang['subscr_style_list'] = '마지막 이메일 이후 바뀐 문서의 목록 (매 %.2f일 마다)'; $lang['authmodfailed'] = '잘못된 사용자 인증 설정입니다. 관리자에게 문의하기 바랍니다.'; $lang['authtempfail'] = '사용자 인증이 일시적으로 불가능합니다. 만일 계속해서 문제가 발생하면 관리자에게 문의하기 바랍니다.'; -$lang['authpwdexpire'] = '현재 암호를 설정하신지 %d 일이 지났습니다. 새로 설정해주시기 바랍니다.'; -$lang['i_chooselang'] = '사용하는 언어를 선택합니다.'; +$lang['authpwdexpire'] = '현재 비밀번호를 설정한지 %d일이 지났습니다. 새로 설정해주시기 바랍니다.'; +$lang['i_chooselang'] = '사용할 언어를 선택하세요'; $lang['i_installer'] = 'DokuWiki 설치'; $lang['i_wikiname'] = '위키 이름'; -$lang['i_enableacl'] = 'ACL기능 사용(권장 사항)'; +$lang['i_enableacl'] = 'ACL 기능 사용 (권장)'; $lang['i_superuser'] = '슈퍼 유저'; $lang['i_problems'] = '설치 중 아래와 같은 문제가 발생했습니다. 문제를 해결한 후 설치를 계속하기 바랍니다.'; -$lang['i_modified'] = '보안 상의 이유로 아래 스크립트는 수정되지 않은 새 Dokuwiki설치에서만 동작됩니다. -다운로드된 압축 패키지를 다시 설치하거나 <a href="http://dokuwiki.org/install"> DokuWiki 설치 과정</a>을 참고해서 설치하기 바랍니다.'; -$lang['i_funcna'] = 'PHP함수 <code>%s</code> 사용이 불가능합니다. 호스트 제공자가 어떤 이유에서인지 막아 놓았을지 모릅니다.'; -$lang['i_phpver'] = 'PHP <code>%s</code>버전은 필요한 <code>%s</code>버전보다 오래되었습니다.PHP를 업그레이드할 필요가 있습니다.'; +$lang['i_modified'] = '보안 상의 이유로 이 스크립트는 수정되지 않은 새 Dokuwiki 설치에서만 동작됩니다. +다운로드한 압축 패키지를 다시 설치하거나 <a href="http://dokuwiki.org/install">DokuWiki 설치 과정</a>을 참고해서 설치하기 바랍니다.'; +$lang['i_funcna'] = '<code>%s</code> PHP 함수의 사용이 불가능합니다. 호스트 제공자가 어떤 이유에서인지 막아 놓았을지 모릅니다.'; +$lang['i_phpver'] = 'PHP <code>%s</code> 버전은 필요한 <code>%s</code> 버전보다 오래되었습니다. PHP를 업그레이드할 필요가 있습니다.'; $lang['i_permfail'] = 'DokuWiki는 <code>%s</code>에 쓰기 가능 권한이 없습니다. 먼저 이 디렉토리에 쓰기 권한이 설정되어야 합니다!'; -$lang['i_confexists'] = '<code>%s</code>는 이미 존재합니다.'; -$lang['i_writeerr'] = '<code>%s</code>을 만들 수 없습니다. 먼저 디렉토리/파일 권한을 확인하고 파일을 수동으로 만들기 바랍니다.'; -$lang['i_badhash'] = 'dokuwiki.php를 인식할 수 없거나 원본 파일이 아닙니다. (hash=<code>%s</code>)'; +$lang['i_confexists'] = '<code>%s</code>(은)는 이미 존재합니다.'; +$lang['i_writeerr'] = '<code>%s</code>(을)를 만들 수 없습니다. 먼저 디렉토리/파일 권한을 확인하고 파일을 수동으로 만들기 바랍니다.'; +$lang['i_badhash'] = 'dokuwiki.php를 인식할 수 없거나 원본 파일이 아닙니다. (해시=<code>%s</code>)'; $lang['i_badval'] = '<code>%s</code> - 유효하지 않거나 빈 값입니다.'; -$lang['i_success'] = '환경 설정이 성공적으로 끝났습니다. install.php를 지워도 상관없습니다. - <a href="doku.php">새로운 DokuWiki</a>.'; -$lang['i_failure'] = '환경 설정 파일에 쓰는 도중 에러가 발생했습니다. -새로운 <a href="doku.php"> DokuWiki</a>를 사용하기 전에 수동으로 문제를 해결할 필요가 있습니다.'; +$lang['i_success'] = '환경 설정이 성공적으로 끝났습니다. 지금 install.php를 지워도 상관없습니다. <a href="doku.php">새 DokuWiki</a>로 들어갑니다.'; +$lang['i_failure'] = '환경 설정 파일에 쓰는 도중에 오류가 발생했습니다. <a href="doku.php">새 DokuWiki</a>를 사용하기 전에 수동으로 문제를 해결할 필요가 있습니다.'; $lang['i_policy'] = '초기 ACL 정책'; -$lang['i_pol0'] = '개방형 위키 (누구나 읽기/쓰기/업로드가 가능합니다.)'; -$lang['i_pol1'] = '공개형 위키 (누구나 읽을 수 있지만, 등록된 사용자만 쓰기/업로드가 가능합니다.)'; -$lang['i_pol2'] = '폐쇄형 위키 (등록된 사용자만 읽기/쓰기/업로드가 가능합니다.)'; +$lang['i_pol0'] = '열린 위키 (누구나 읽기, 쓰기, 올리기가 가능합니다.)'; +$lang['i_pol1'] = '공개 위키 (누구나 읽을 수 있지만, 등록된 사용자만 쓰기와 올리기가 가능합니다.)'; +$lang['i_pol2'] = '닫힌 위키 (등록된 사용자만 읽기, 쓰기, 업로드가 가능합니다.)'; $lang['i_retry'] = '다시 시도'; -$lang['i_license'] = '내용의 배포를 위한 라이센스를 선택하세요.'; -$lang['recent_global'] = '<b>%s</b> 네임스페이스를 구독중입니다. <a href="%s">전체위키 변경사항 </a>도 보실수 있습니다.'; -$lang['years'] = '%d 년 전'; -$lang['months'] = '%d 개월 전'; -$lang['weeks'] = '%d 주 전'; -$lang['days'] = '%d 일 전'; -$lang['hours'] = '%d 시간 전'; -$lang['minutes'] = '%d 분 전'; -$lang['seconds'] = '%d 초 전'; +$lang['i_license'] = '내용을 배포하기 위한 라이선스를 선택하세요:'; +$lang['recent_global'] = '<b>%s</b> 이름공간을 구독 중입니다. <a href="%s">전체 위키의 최근 바뀜도 볼 수</a> 있습니다.'; +$lang['years'] = '%d년 전'; +$lang['months'] = '%d개월 전'; +$lang['weeks'] = '%d주 전'; +$lang['days'] = '%d일 전'; +$lang['hours'] = '%d시간 전'; +$lang['minutes'] = '%d분 전'; +$lang['seconds'] = '%d초 전'; $lang['wordblock'] = '스팸 문구를 포함하고 있어서 저장되지 않았습니다.'; -$lang['media_uploadtab'] = '업로드'; -$lang['media_searchtab'] = '검색'; +$lang['media_uploadtab'] = '올리기'; +$lang['media_searchtab'] = '찾기'; $lang['media_file'] = '파일'; $lang['media_viewtab'] = '보기'; $lang['media_edittab'] = '수정'; -$lang['media_historytab'] = '변경사항'; -$lang['media_list_thumbs'] = '썸네일'; +$lang['media_historytab'] = '역사'; +$lang['media_list_thumbs'] = '섬네일'; $lang['media_list_rows'] = '목록'; $lang['media_sort_name'] = '이름'; $lang['media_sort_date'] = '날짜'; -$lang['media_namespaces'] = '네임스페이스 선택'; -$lang['media_files'] = '%s 의 파일'; -$lang['media_upload'] = '%s 에 업로드'; -$lang['media_search'] = '%s 를 검색'; +$lang['media_namespaces'] = '이름공간 선택'; +$lang['media_files'] = '%s의 파일'; +$lang['media_upload'] = '%s에 올리기'; +$lang['media_search'] = '%s 찾기'; $lang['media_view'] = '%s'; -$lang['media_viewold'] = '%s 의 %s'; +$lang['media_viewold'] = '%s의 %s'; $lang['media_edit'] = '%s 수정'; -$lang['media_history'] = '%s 변경사항'; -$lang['media_meta_edited'] = '메타데이터 수정됨'; -$lang['media_perm_read'] = '죄송합니다, 이 파일을 읽을 권한이 없습니다.'; -$lang['media_perm_upload'] = '죄송합니다. 파일을 업로드할 권한이 없습니다.'; +$lang['media_history'] = '%s 변경 내력'; +$lang['media_meta_edited'] = '메타데이터가 수정됨'; +$lang['media_perm_read'] = '이 파일을 읽을 권한이 없습니다.'; +$lang['media_perm_upload'] = '파일을 올릴 권한이 없습니다.'; $lang['media_update'] = '새 버전 올리기'; $lang['media_restore'] = '이 버전으로 되돌리기'; -$lang['plugin_install_err'] = '플러그인 설치가 비정상적으로 이뤄졌습니다. 플러그인 디렉토리 \'%s\'를 \'%s\'로 변경하십시오.'; +$lang['plugin_install_err'] = '플러그인 설치가 잘못되었습니다. 플러그인 디렉토리 \'%s\'(을)를 \'%s\'(으)로 바꾸십시오.'; diff --git a/inc/lang/ko/locked.txt b/inc/lang/ko/locked.txt index 24525fc46..176a792d6 100644 --- a/inc/lang/ko/locked.txt +++ b/inc/lang/ko/locked.txt @@ -1,3 +1,3 @@ -====== 페이지 잠금 ====== +====== 문서 잠금 ====== -다른 사용자가 이 페이지 편집을 위해 잠금을 실행하였습니다. 해당 사용자가 편집을 끝내거나 잠금이 해제될 때까지 기다리십시오. +다른 사용자가 이 문서를 편집하기 위해 잠금을 실행하였습니다. 해당 사용자가 편집을 끝내거나 잠금이 해제될 때까지 기다리십시오.
\ No newline at end of file diff --git a/inc/lang/ko/login.txt b/inc/lang/ko/login.txt index 1aae449df..160b899d3 100644 --- a/inc/lang/ko/login.txt +++ b/inc/lang/ko/login.txt @@ -1,4 +1,3 @@ ====== 로그인 ====== -로그인하지 않았습니다! 아래에서 로그인하십시오. 로그인하려면 쿠키를 받도록 설정하여야 합니다. - +로그인하지 않았습니다! 아래에서 로그인하세요. 로그인하려면 쿠키를 받도록 설정하여야 합니다.
\ No newline at end of file diff --git a/inc/lang/ko/mailtext.txt b/inc/lang/ko/mailtext.txt index 5c496435e..219fe6e0b 100644 --- a/inc/lang/ko/mailtext.txt +++ b/inc/lang/ko/mailtext.txt @@ -1,17 +1,16 @@ -DokuWiki 페이지가 수정 혹은 추가되었습니다. 상세한 정보는 다음과 같습니다. +DokuWiki 문서가 추가 또는 변경되었습니다. 자세한 정보는 다음과 같습니다: -날짜 : @DATE@ -브라우저 : @BROWSER@ -IP 주소 : @IPADDRESS@ -호스트명 : @HOSTNAME@ -옛날버전 : @OLDPAGE@ -새버전 : @NEWPAGE@ -편집 요약 : @SUMMARY@ -사용자 : @USER@ +날짜 : @DATE@ +브라우저 : @BROWSER@ +IP 주소 : @IPADDRESS@ +호스트 이름 : @HOSTNAME@ +이전 버전 : @OLDPAGE@ +새 버전 : @NEWPAGE@ +편집 요약 : @SUMMARY@ +사용자 : @USER@ @DIFF@ --- -이 메일은 @DOKUWIKIURL@ 의 DokuWiki 가 생성한 -이메일입니다. +-- +@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/mailwrap.html b/inc/lang/ko/mailwrap.html new file mode 100644 index 000000000..885730428 --- /dev/null +++ b/inc/lang/ko/mailwrap.html @@ -0,0 +1,13 @@ +<html> + <head> + <title>@TITLE@</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + </head> + <body> + + @HTMLBODY@ + + <br /><hr /> + <small>@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.</small> + </body> + </html>
\ No newline at end of file diff --git a/inc/lang/ko/newpage.txt b/inc/lang/ko/newpage.txt index f8380bd84..87ac969d2 100644 --- a/inc/lang/ko/newpage.txt +++ b/inc/lang/ko/newpage.txt @@ -1,3 +1,3 @@ -====== 이 토픽은 아직 없습니다 ====== +====== 이 주제는 아직 없습니다 ====== -아직 없는 토픽 링크를 따라오셨습니다. **페이지 만들기** 버튼을 이용하여 새로 만들 수 있습니다. +아직 없는 주제에 대한 링크를 따라왔습니다. **문서 만들기** 버튼을 이용하여 새로 만들 수 있습니다.
\ No newline at end of file diff --git a/inc/lang/ko/norev.txt b/inc/lang/ko/norev.txt index e1b4093b4..6758ce4ec 100644 --- a/inc/lang/ko/norev.txt +++ b/inc/lang/ko/norev.txt @@ -1,3 +1,3 @@ ====== 지정한 버전 없음 ====== -지정한 버전이 없습니다. **과거 버전** 버튼을 사용하여 이 문서의 버전 목록을 보십시오. +지정한 버전이 존재하지 않습니다. **이전 버전** 버튼을 사용하여 이 문서의 이전 버전 목록을 보세요.
\ No newline at end of file diff --git a/inc/lang/ko/password.txt b/inc/lang/ko/password.txt index e0a22c59a..02b23d17c 100644 --- a/inc/lang/ko/password.txt +++ b/inc/lang/ko/password.txt @@ -1,10 +1,9 @@ -안녕하세요, @FULLNAME@! +@FULLNAME@ 안녕하세요! -@DOKUWIKIURL@ 의 @TITLE@ 의 사용자 정보입니다. +@DOKUWIKIURL@의 @TITLE@의 사용자 정보입니다. -사용자명 : @LOGIN@ -패스워드 : @PASSWORD@ +사용자 이름 : @LOGIN@ +비밀번호 : @PASSWORD@ -- -이 이메일은 @DOKUWIKIURL@ 의 DokuWiki 가 -생성한 것입니다. +@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/preview.txt b/inc/lang/ko/preview.txt index 8bcc6a1eb..6563874ee 100644 --- a/inc/lang/ko/preview.txt +++ b/inc/lang/ko/preview.txt @@ -1,4 +1,3 @@ -====== 미리보기 ====== - -이것은 입력하신 내용이 어떻게 보일지 미리보기하는 곳입니다. 아직은 **저장되지 않았다**는 점을 기억하십시오. +====== 미리 보기 ====== +이것은 입력한 내용이 어떻게 보일지 미리 보여줍니다. 아직 **저장되지 않았다**는 점을 기억해두십시오!
\ No newline at end of file diff --git a/inc/lang/ko/pwconfirm.txt b/inc/lang/ko/pwconfirm.txt index c022a52a9..1920f4a20 100644 --- a/inc/lang/ko/pwconfirm.txt +++ b/inc/lang/ko/pwconfirm.txt @@ -1,11 +1,13 @@ -안녕하세요. @FULLNAME@! +@FULLNAME@ 안녕하세요! -@DOKUWIKIURL@에 작성하신 @TITLE@을 보려면 새 패스워드가 필요하다는 요청을 누군가 받았다고 합니다. +누군가가 @DOKUWIKIURL@에 @TITLE@에 대해 +새 비밀번호가 필요하다고 요청했습니다. -새로운 패스워드를 요청한 적이 없다면 이 이메일을 무시해버리세요. +새로운 비밀번호 요청한 적이 없다면 이 이메일을 무시해버리세요. -@CONFIRM@에서 정말로 본인이 그런 요청을 했었는지 확인해 보기 바랍니다. +정말로 당신이 그러한 요청을 했는지 다음 링크에서 확인하기 바랍니다. --- +@CONFIRM@ -@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다. +-- +@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/read.txt b/inc/lang/ko/read.txt index 6b5d7b3db..9b2ec822f 100644 --- a/inc/lang/ko/read.txt +++ b/inc/lang/ko/read.txt @@ -1,2 +1,2 @@ -이 페이지는 읽기 전용입니다. 소스를 볼 수는 있지만, 수정할 수는 없습니다. 연습은 [[public:playground|연습장]]에서 하십시오. 문제가 있다고 생각하시면 관리자에게 문의하십시오. +이 문서는 읽기 전용입니다. 내용을 볼 수는 있지만, 수정할 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하십시오. diff --git a/inc/lang/ko/recent.txt b/inc/lang/ko/recent.txt index f693c4bf1..f2ffb8c6f 100644 --- a/inc/lang/ko/recent.txt +++ b/inc/lang/ko/recent.txt @@ -1,5 +1,3 @@ -====== 최근 변경 ====== - -아래의 페이지는 최근에 변경된 것입니다. - +====== 최근 바뀜 ====== +아래의 문서는 최근에 바뀐 것입니다.
\ No newline at end of file diff --git a/inc/lang/ko/register.txt b/inc/lang/ko/register.txt index 24105efeb..6509bed91 100644 --- a/inc/lang/ko/register.txt +++ b/inc/lang/ko/register.txt @@ -1,4 +1,3 @@ ====== 새 사용자 등록 ====== -이 위키에 새 계정을 만들려면 아래의 모든 내용을 입력하세요. **제대로 된 이메일 주소**를 사용하세요. 암호를 입력하는 곳이 없다면 암호는 이 이메일로 보내집니다. 사용자명은 올바른 [[doku>pagename|pagename]] 이어야 합니다. - +이 위키에 새 계정을 만드려면 아래의 모든 내용을 입력하세요. **올바른 이메일 주소**를 사용하세요. 비밀번호를 입력하는 곳이 없다면 비밀번호는 이 이메일로 보내집니다. 사용자 이름은 올바른 [[doku>pagename|pagename]]이어야 합니다.
\ No newline at end of file diff --git a/inc/lang/ko/registermail.txt b/inc/lang/ko/registermail.txt index 4b1aa20a5..d06f93047 100644 --- a/inc/lang/ko/registermail.txt +++ b/inc/lang/ko/registermail.txt @@ -1,14 +1,13 @@ -새로운 사용자가 등록되었습니다: +새 사용자가 등록되었습니다: -사용자 이름 : @NEWUSER@ +사용자 이름 : @NEWUSER@ 사용자 실제 이름 : @NEWNAME@ -이메일 : @NEWEMAIL@ +이메일 : @NEWEMAIL@ -날짜 : @DATE@ -브라우저 : @BROWSER@ -IP주소 : @IPADDRESS@ -호스트 이름 : @HOSTNAME@ +날짜 : @DATE@ +브라우저 : @BROWSER@ +IP 주소 : @IPADDRESS@ +호스트 이름 : @HOSTNAME@ -- - @DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다. diff --git a/inc/lang/ko/resendpwd.txt b/inc/lang/ko/resendpwd.txt index b06163e92..0ad46eb1e 100644 --- a/inc/lang/ko/resendpwd.txt +++ b/inc/lang/ko/resendpwd.txt @@ -1,4 +1,3 @@ -====== 새로운 패스워드 전송 ====== - -이 위키 계정에 대한 새 패스워드를 요구하기 위해 아래 폼에서 사용자 이름을 입력하세요. 확인 링크는 새로 등록된 이메일 주소로 발송됩니다. +====== 새로운 비밀번호 전송 ====== +이 위키 계정에 대한 새 비밀번호를 요구하기 위해 아래 양식에서 사용자 이름을 입력하세요. 확인 링크는 새로 등록한 이메일 주소로 발송됩니다.
\ No newline at end of file diff --git a/inc/lang/ko/resetpwd.txt b/inc/lang/ko/resetpwd.txt index b84674b82..ed909456f 100644 --- a/inc/lang/ko/resetpwd.txt +++ b/inc/lang/ko/resetpwd.txt @@ -1,3 +1,3 @@ -====== 새 암호 설정 ====== +====== 새 비밀번호 설정 ====== -이 위키의 계정의 새 암호를 입력해주세요.
\ No newline at end of file +이 위키 계정의 새 비밀번호를 입력하세요.
\ No newline at end of file diff --git a/inc/lang/ko/revisions.txt b/inc/lang/ko/revisions.txt index 12d11894d..64733d86d 100644 --- a/inc/lang/ko/revisions.txt +++ b/inc/lang/ko/revisions.txt @@ -1,4 +1,3 @@ ====== 이전 버전 ====== -이 문서의 옛날 버전은 다음과 같습니다. 이전 버전으로 돌아가려면, 아래에서 선택한 다음, **페이지 편집**을 클릭한 아후 저장하십시오. - +이 문서의 이전 버전은 다음과 같습니다. 이전 버전으로 돌아가려면, 아래에서 선택한 다음 **문서 편집**을 클릭하고 나서 저장하세요.
\ No newline at end of file diff --git a/inc/lang/ko/searchpage.txt b/inc/lang/ko/searchpage.txt index 198d9a428..2e8502b13 100644 --- a/inc/lang/ko/searchpage.txt +++ b/inc/lang/ko/searchpage.txt @@ -1,5 +1,5 @@ ====== 찾기 ====== -찾기 결과를 아래에서 볼 수 있습니다. 만일 원하는 것을 찾지 못하였다면, **페이지 편집** 버튼을 이용하여 질의 내용과 같은 이름의 페이지를 만들 수 있습니다. +아래에서 찾기 결과를 볼 수 있습니다. 만일 원하는 것을 찾지 못하였다면, **문서 만들기**나 **문서 편집** 버튼을 사용하여 쿼리 내용과 같은 이름의 문서를 만들거나 편집할 수 있습니다. -===== 결과 ===== +===== 결과 =====
\ No newline at end of file diff --git a/inc/lang/ko/stopwords.txt b/inc/lang/ko/stopwords.txt index bdb41deba..4b5551ce5 100644 --- a/inc/lang/ko/stopwords.txt +++ b/inc/lang/ko/stopwords.txt @@ -1,9 +1,11 @@ -# 색인이 만들어 지지 않는 단어 목록입니다.(한줄에 한단어) -# 이 파일을 편집한다면 UNIX줄 종료문자를 사용해야합니다.(단일 개행문자) -# 3문자이하 단어는 자동으로 무시되므로 3문자보다 짧은 단어는 포함시킬 필요가 없습니다. +# 색인이 만들어지지 않는 단어 목록입니다. (한줄에 한 단어) +# 이 파일을 편집한다면 UNIX 줄 종료 문자를 사용해야합니다.(단일 개행 문자) +# 3문자 이하 단어는 자동으로 무시되므로 3문자보다 짧은 단어는 포함시킬 필요가 없습니다. # http://www.ranks.nl/stopwords/을 기준으로 만들어진 목록입니다. about are +as +an and you your @@ -13,10 +15,18 @@ com for from into +if +in +is +it how +of +on +or that the this +to was what when @@ -26,4 +36,4 @@ will with und the -www +www
\ No newline at end of file diff --git a/inc/lang/ko/subscr_digest.txt b/inc/lang/ko/subscr_digest.txt index 2e9c87848..13459428f 100644 --- a/inc/lang/ko/subscr_digest.txt +++ b/inc/lang/ko/subscr_digest.txt @@ -1,18 +1,18 @@ 안녕하세요! -@TITLE@ 라는 제목의 페이지 @PAGE@ 가 변경되었습니다. - -변경사항은 다음과 같습니다: +@TITLE@ 위키의 @PAGE@ 문서가 바뀌었습니다. +바뀐 점은 다음과 같습니다: -------------------------------------------------------- @DIFF@ -------------------------------------------------------- -옛날 것: @OLDPAGE@ -새 것: @NEWPAGE@ +이전 버전 : @OLDPAGE@ +새 버전 : @NEWPAGE@ + -이 페이지 변경알림의 설정을 바구려면, @DOKUWIKIURL@에 로그인한 뒤 -@SUBSCRIBE@ 를 방문하여 페이지나 이름공간의 구독을 취소하세요. +이 문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤 +@SUBSCRIBE@ 문서를 방문하여 문서나 이름공간의 구독을 취소하세요. -- @DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/subscr_form.txt b/inc/lang/ko/subscr_form.txt index 31470f372..ed380ccee 100644 --- a/inc/lang/ko/subscr_form.txt +++ b/inc/lang/ko/subscr_form.txt @@ -1,3 +1,3 @@ ====== 구독 관리 ====== -이 페이지는 현재의 페이지와 네임스페이스의 구독을 관리할 수있도록 해줍니다.
\ No newline at end of file +이 페이지는 현재의 문서와 이름공간의 구독을 관리할 수 있도록 해줍니다.
\ No newline at end of file diff --git a/inc/lang/ko/subscr_list.txt b/inc/lang/ko/subscr_list.txt index 2661a6a15..68adf0de9 100644 --- a/inc/lang/ko/subscr_list.txt +++ b/inc/lang/ko/subscr_list.txt @@ -1,15 +1,14 @@ 안녕하세요! -@TITLE@ 라는 제목의 페이지 @PAGE@ 가 변경되었습니다. - -변경사항은 다음과 같습니다: +@TITLE@ 위키의 @PAGE@ 문서가 바뀌었습니다. +바뀐 점은 다음과 같습니다: -------------------------------------------------------- @DIFF@ -------------------------------------------------------- -이 페이지 변경알림의 설정을 바구려면, @DOKUWIKIURL@에 로그인한 뒤 -@SUBSCRIBE@ 를 방문하여 페이지나 이름공간의 구독을 취소하세요. +이 문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤 +@SUBSCRIBE@ 문서를 방문하여 문서나 이름공간의 구독을 취소하세요. -- @DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/subscr_single.txt b/inc/lang/ko/subscr_single.txt index 1aa4d7efa..6bd1885e6 100644 --- a/inc/lang/ko/subscr_single.txt +++ b/inc/lang/ko/subscr_single.txt @@ -1,8 +1,7 @@ 안녕하세요! -@TITLE@ 라는 제목의 페이지 @PAGE@ 가 변경되었습니다. - -변경사항은 다음과 같습니다: +@TITLE@ 위키의 @PAGE@ 문서가 바뀌었습니다. +바뀐 점은 다음과 같습니다: -------------------------------------------------------- @DIFF@ @@ -11,11 +10,11 @@ 날짜 : @DATE@ 사용자 : @USER@ 편집 요약 : @SUMMARY@ -구 버전 : @OLDPAGE@ +이전 버전 : @OLDPAGE@ 새 버전 : @NEWPAGE@ -이 페이지 변경알림의 설정을 바구려면, @DOKUWIKIURL@에 로그인한 뒤 t -@NEWPAGE@ 를 방문하여 페이지나 이름공간의 구독을 취소하세요. +이 문서의 알림을 취소하려면, @DOKUWIKIURL@에 로그인한 뒤 +@NEWPAGE@ 문서를 방문하여 문서나 이름공간의 구독을 취소하세요. -- @DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/ko/updateprofile.txt b/inc/lang/ko/updateprofile.txt index 5ea331c05..ebf19d8ab 100644 --- a/inc/lang/ko/updateprofile.txt +++ b/inc/lang/ko/updateprofile.txt @@ -1,5 +1,3 @@ ====== 개인 정보 수정 ====== -변경하고 싶은 항목을 입력하기 바랍니다. 사용자 이름은 바꾸고 싶지 않겠지요? - - +바꾸고 싶은 항목을 입력하기 바랍니다. 사용자 이름은 바꿀 수 없습니다.
\ No newline at end of file diff --git a/inc/lang/ko/uploadmail.txt b/inc/lang/ko/uploadmail.txt index 46c66a66b..675c0bd3f 100644 --- a/inc/lang/ko/uploadmail.txt +++ b/inc/lang/ko/uploadmail.txt @@ -1,15 +1,14 @@ -DokuWiki가 파일을 업로드하였습니다. +DokuWiki가 파일을 올렸습니다. 자세한 정보는 다음과 같습니다: -자세한 정보: - -파일 : @MEDIA@ -날짜 : @DATE@ -웹 브라우저 : @BROWSER@ -IP 주소 : @IPADDRESS@ -호스트명 : @HOSTNAME@ -크기 : @SIZE@ -파일 종류 : @MIME@ -사용자 : @USER@ +파일 : @MEDIA@ +이전 버전 : @OLD@ +날짜 : @DATE@ +브라우저 : @BROWSER@ +IP 주소 : @IPADDRESS@ +호스트 이름 : @HOSTNAME@ +크기 : @SIZE@ +MIME 종류 : @MIME@ +사용자 : @USER@ -- -이 메일은 @DOKUWIKIURL@의 DokuWiki가 생성한 메일입니다.
\ No newline at end of file +@DOKUWIKIURL@의 DokuWiki가 자동으로 만들어낸 메일입니다.
\ No newline at end of file diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php index 96323394d..32781e6d4 100644 --- a/inc/lang/mr/lang.php +++ b/inc/lang/mr/lang.php @@ -44,13 +44,16 @@ $lang['btn_back'] = 'मागॆ'; $lang['btn_backlink'] = 'येथे काय जोडले आहे'; $lang['btn_backtomedia'] = 'परत माध्यम फाइल निवडीकड़े'; $lang['btn_subscribe'] = 'पृष्ठाच्या बदलांची पुरवणी (फीड) लावा '; -$lang['btn_unsubscribe'] = 'पृष्ठाच्या बदलांची पुरवणी (फीड) बंद करा'; $lang['btn_profile'] = 'प्रोफाइल अद्ययावत करा'; $lang['btn_reset'] = 'रिसेट'; +$lang['btn_resendpwd'] = 'नवीन पासवर्ड'; $lang['btn_draft'] = 'प्रत संपादन'; $lang['btn_recover'] = 'प्रत परत मिळवा'; $lang['btn_draftdel'] = 'प्रत रद्द'; +$lang['btn_revert'] = 'पुनर्स्थापन'; $lang['btn_register'] = 'नोंदणी'; +$lang['btn_apply'] = 'लागू'; +$lang['btn_media'] = 'मिडिया व्यवस्थापक'; $lang['loggedinas'] = 'लॉगिन नाव'; $lang['user'] = 'वापरकर्ता'; $lang['pass'] = 'परवलीचा शब्द'; @@ -81,19 +84,58 @@ $lang['profchanged'] = 'सदस्याची प्रोफाइ $lang['pwdforget'] = 'परवलीचा शब्द विसरला आहे का? नविन मागवा.'; $lang['resendna'] = 'ह्या विकी मधे परवलीचा शब्द परत पाथाव्न्याची सुविधा नाही.'; $lang['resendpwd'] = 'नविन परवली इच्छुक'; +$lang['resendpwdmissing'] = 'माफ करा, पण सर्व जागा भरल्या पाहिजेत.'; $lang['resendpwdnouser'] = 'माफ़ करा, हा सदस्य आमच्या माहितिसंग्रहात सापडला नाही.'; $lang['resendpwdbadauth'] = 'माफ़ करा, हा अधिकार कोड बरोबर नाही. कृपया आपण पूर्ण शिकामोर्तबाची लिंक वापरल्याची खात्री करा.'; $lang['resendpwdconfirm'] = 'शिक्कामोर्तबाची लिंक ईमेल द्वारा पाठवली आहे.'; $lang['resendpwdsuccess'] = 'शिक्कामोर्तबाची लिंक ईमेल द्वारा पाठवली आहे.'; $lang['license'] = 'विशिष्ठ नोंद केलि नसल्यास ह्या विकी वरील सर्व मजकूर खालील लायसन्स मधे मोडतो : '; $lang['licenseok'] = 'नोंद : हे पृष्ठ संपादित केल्यास तुम्ही तुमचे योगदान खालील लायसन्स अंतर्गत येइल : '; +$lang['searchmedia'] = 'फाईल शोधा:'; +$lang['searchmedia_in'] = '%s मधे शोधा'; $lang['txt_upload'] = 'अपलोड करण्याची फाइल निवडा'; $lang['txt_filename'] = 'अपलोड उर्फ़ ( वैकल्पिक )'; $lang['txt_overwrt'] = 'अस्तित्वात असलेल्या फाइलवरच सुरक्षित करा.'; $lang['lockedby'] = 'सध्या लॉक करणारा :'; $lang['lockexpire'] = 'सध्या लॉक करणारा :'; -$lang['js']['willexpire'] = 'हे पृष्ठ संपादित करण्यासाठी मिळालेले लॉक एखाद्या मिनिटात संपणार आहे.\n चुका होऊ नयेत म्हणुन कृपया प्रीव्यू बटन दाबुन लॉक ची वेळ पुन्हा चालू करा.'; -$lang['js']['notsavedyet'] = "सुरक्षित न केलेले बदल नष्ट होतील. नक्की करू का ?"; +$lang['js']['willexpire'] = 'हे पृष्ठ संपादित करण्यासाठी मिळालेले लॉक एखाद्या मिनिटात संपणार आहे.\n चुका होऊ नयेत म्हणुन कृपया प्रीव्यू बटन दाबुन लॉक ची वेळ पुन्हा चालू करा.'; +$lang['js']['notsavedyet'] = 'सुरक्षित न केलेले बदल नष्ट होतील. नक्की करू का ?'; +$lang['js']['searchmedia'] = 'फाईल्ससाठी शोधा'; +$lang['js']['keepopen'] = 'निवड केल्यावर विण्डो उघडी ठेवा'; +$lang['js']['hidedetails'] = 'सविस्तर मजकूर लपवा'; +$lang['js']['mediatitle'] = 'लिंक सेटिंग'; +$lang['js']['mediadisplay'] = 'लिंकचा प्रकार'; +$lang['js']['mediaalign'] = 'जुळवणी'; +$lang['js']['mediasize'] = 'प्रतिमेचा आकार'; +$lang['js']['mediatarget'] = 'लिंकचे लक्ष्य'; +$lang['js']['mediaclose'] = 'बंद'; +$lang['js']['mediadisplayimg'] = 'प्रतिमा दाखवा.'; +$lang['js']['mediadisplaylnk'] = 'फक्त लिंक दाखवा.'; +$lang['js']['mediasmall'] = 'लहान आवृत्ती'; +$lang['js']['mediamedium'] = 'माध्यम आवृत्ती'; +$lang['js']['medialarge'] = 'मोठी आवृत्ती'; +$lang['js']['mediaoriginal'] = 'मूळ आवृत्ती'; +$lang['js']['medialnk'] = 'सविस्तर माहितीकडेची लिंक'; +$lang['js']['mediadirect'] = 'मूळ मजकुराकडे थेट लिंक'; +$lang['js']['medianolnk'] = 'लिंक नको'; +$lang['js']['medianolink'] = 'प्रतिमा लिंक करू नका'; +$lang['js']['medialeft'] = 'प्रतिमा डाव्या बाजूला जुळवून घ्या.'; +$lang['js']['mediaright'] = 'प्रतिमा उजव्या बाजूला जुळवून घ्या.'; +$lang['js']['mediacenter'] = 'प्रतिमा मध्यभागी जुळवून घ्या.'; +$lang['js']['medianoalign'] = 'जुळवाजुळव वापरू नका.'; +$lang['js']['nosmblinks'] = 'विन्डोज़ शेअर ला लिंक केल्यास ते फक्त मायक्रोसॉफ़्ट इन्टरनेट एक्स्प्लोरर वरच चालते. तरी तुम्ही लिंक कॉपी करू शकता.'; +$lang['js']['linkwiz'] = 'लिंक जादूगार'; +$lang['js']['linkto'] = 'याला लिंक करा:'; +$lang['js']['del_confirm'] = 'निवडलेल्या गोष्टी नक्की नष्ट करू का ?'; +$lang['js']['restore_confirm'] = 'हि आवृत्ती खरोखर पुनर्स्थापित करू का?'; +$lang['js']['media_diff'] = 'फरक बघू:'; +$lang['js']['media_diff_both'] = 'बाजूबाजूला'; +$lang['js']['media_diff_portions'] = 'स्वाईप'; +$lang['js']['media_select'] = 'फाईल निवड...'; +$lang['js']['media_upload_btn'] = 'अपलोड'; +$lang['js']['media_done_btn'] = 'झालं'; +$lang['js']['media_drop'] = 'अपलोड करण्यासाठी इथे फाईल टाका'; +$lang['js']['media_cancel'] = 'काढा'; $lang['rssfailed'] = 'ही पुरवणी आणण्यात काही चूक झाली:'; $lang['nothingfound'] = 'काही सापडला नाही.'; $lang['mediaselect'] = 'दृकश्राव्य फाइल'; @@ -111,9 +153,7 @@ $lang['deletefail'] = '%s ही फाइल नष्ट करू $lang['mediainuse'] = '%s ही फाइल नष्ट केली नाही - ती अजुन वापरात आहे.'; $lang['namespaces'] = 'नेमस्पेस'; $lang['mediafiles'] = 'मध्ये उपलब्ध असलेल्या फाइल'; -$lang['js']['keepopen'] = 'निवड केल्यावर विण्डो उघडी ठेवा'; -$lang['js']['hidedetails'] = 'सविस्तर मजकूर लपवा'; -$lang['js']['nosmblinks'] = 'विन्डोज़ शेअर ला लिंक केल्यास ते फक्त मायक्रोसॉफ़्ट इन्टरनेट एक्स्प्लोरर वरच चालते. तरी तुम्ही लिंक कॉपी करू शकता.'; +$lang['accessdenied'] = 'तुम्हाला हे पान बघायची परवानगी नाही.'; $lang['mediausage'] = 'ह्या फाइलचा संदर्भ देण्यासाठी खालील सिन्टॅक्स वापरा :'; $lang['mediaview'] = 'मूळ फाइल बघू '; $lang['mediaroot'] = 'रूट'; @@ -129,6 +169,10 @@ $lang['current'] = 'चालू'; $lang['yours'] = 'तुमची आवृत्ति'; $lang['diff'] = 'सध्याच्या आवृत्तिंशी फरक दाखवा'; $lang['diff2'] = 'निवडलेल्या आवृत्तिंमधील फरक दाखवा'; +$lang['difflink'] = 'ह्या तुलना दृष्टीकोनाला लिंक करा'; +$lang['diff_type'] = 'फरक बघू:'; +$lang['diff_inline'] = 'एका ओळीत'; +$lang['diff_side'] = 'बाजूबाजूला'; $lang['line'] = 'ओळ'; $lang['breadcrumb'] = 'मागमूस'; $lang['youarehere'] = 'तुम्ही इथे आहात'; @@ -140,10 +184,21 @@ $lang['restored'] = 'जुनी आवृत्ति पुन $lang['external_edit'] = 'बाहेरून संपादित'; $lang['summary'] = 'सारांश बदला'; $lang['noflash'] = 'ही माहिती दाखवण्यासाठी <a href="http://www.adobe.com/products/flashplayer/">अडोब फ्लॅश प्लेअर</a> ची गरज आहे.'; +$lang['download'] = 'तुकडा डाउनलोड करा'; +$lang['tools'] = 'साधने'; +$lang['user_tools'] = 'युजरची साधने'; +$lang['site_tools'] = 'साईटची साधने'; +$lang['page_tools'] = 'पानाची साधने'; +$lang['skip_to_content'] = 'सरळ मजकुराकडे '; $lang['mail_newpage'] = 'पृष्ठ जोडले : '; $lang['mail_changed'] = 'पृष्ठ बदलले : '; +$lang['mail_subscribe_list'] = 'ह्या नेमस्पेस नाढे बदललेली पाने:'; $lang['mail_new_user'] = 'नवीन सदस्य : '; $lang['mail_upload'] = 'फाइल अपलोड केली : '; +$lang['changes_type'] = 'ह्याचे बदल बघू'; +$lang['pages_changes'] = 'पाने'; +$lang['media_changes'] = 'मिडिया फाईल'; +$lang['both_changes'] = 'पाने आणि मिडिया फाईल दोन्ही'; $lang['qb_bold'] = 'ठळक मजकूर'; $lang['qb_italic'] = 'तिरका मजकूर'; $lang['qb_underl'] = 'अधोरेखित मजकूर'; @@ -154,6 +209,11 @@ $lang['qb_h2'] = 'दुसर्या पातळीचे $lang['qb_h3'] = 'तिसर्या पातळीचे शीर्षक'; $lang['qb_h4'] = 'चवथ्या पातळीचे शीर्षक'; $lang['qb_h5'] = 'पाचव्या पातळीचे शीर्षक'; +$lang['qb_h'] = 'शीर्षक'; +$lang['qb_hs'] = 'शीर्षक निवड'; +$lang['qb_hplus'] = 'उंच शीर्षक'; +$lang['qb_hminus'] = 'खालचं शीर्षक'; +$lang['qb_hequal'] = 'समान लेवलचे शीर्षक'; $lang['qb_link'] = 'अंतर्गत लिंक'; $lang['qb_extlink'] = 'बाह्य लिंक'; $lang['qb_hr'] = 'आडवी पट्टी'; @@ -163,7 +223,7 @@ $lang['qb_media'] = 'प्रतिमा आणि इतर फ $lang['qb_sig'] = 'स्वाक्षरी टाका'; $lang['qb_smileys'] = 'स्माइली'; $lang['qb_chars'] = 'ख़ास चिन्ह'; -$lang['js']['del_confirm'] = 'निवडलेल्या गोष्टी नक्की नष्ट करू का ?'; +$lang['upperns'] = 'ह्यावरच्या नेमस्पेसकडे उडी मारा'; $lang['admin_register'] = 'नवीन सदस्य'; $lang['metaedit'] = 'मेटाडेटा बदला'; $lang['metasaveerr'] = 'मेटाडेटा सुरक्षित झाला नाही'; @@ -179,11 +239,9 @@ $lang['img_copyr'] = 'कॉपीराइट'; $lang['img_format'] = 'प्रकार'; $lang['img_camera'] = 'कॅमेरा'; $lang['img_keywords'] = 'मुख्य शब्द'; -$lang['subscribe_success'] = '%s ला %s च्या पुरवणिसाठि नोंदवले'; -$lang['subscribe_error'] = '%s ला %s च्या पुरवणिसाठि नोंदवताना चूक झाली'; -$lang['subscribe_noaddress'] = 'तुमच्या लॉगिनशी सम्बंधित कुठलाही पत्ता नाही , त्यामुळे पुरवणिसाठि नोंद केली जाऊ शकत नाही'; -$lang['unsubscribe_success'] = '%s ला %s च्या पुरवणी यादी मधून काढून टाकले'; -$lang['unsubscribe_error'] = '%s ला %s च्या पुरवणी यादी मधून काढून टाकण्यात चूक झाली'; +$lang['img_width'] = 'रुंदी'; +$lang['img_height'] = 'उंची'; +$lang['img_manager'] = 'मिडिया व्यवस्थापकात बघू'; $lang['authmodfailed'] = 'सदस्य अधिकृत करण्याची व्यवस्था चुकीची आहे. कृपया तुमच्या विकीच्या व्यवस्थापकाशी सम्पर्क साधा.'; $lang['authtempfail'] = 'सदस्य अधिकृत करण्याची सुविधा सध्या चालू नाही. सतत हा मजकूर दिसल्यास कृपया तुमच्या विकीच्या व्यवस्थापकाशी सम्पर्क साधा.'; $lang['i_chooselang'] = 'तुमची भाषा निवडा'; diff --git a/inc/lang/nl/edit.txt b/inc/lang/nl/edit.txt index e539050bc..9718d0900 100644 --- a/inc/lang/nl/edit.txt +++ b/inc/lang/nl/edit.txt @@ -1 +1 @@ -Pas de pagina aan en klik op ''Opslaan''. Zie [[wiki:syntax]] voor de Wiki syntax. Pas de pagina allen aan als hij **verbeterd** kan worden. Als je iets wilt uitproberen kun je spelen in de [[playground:playground|zandbak]]. +Pas de pagina aan en klik op ''Opslaan''. Zie [[wiki:syntax]] voor de Wiki-syntax. Pas de pagina allen aan als hij **verbeterd** kan worden. Als je iets wilt uitproberen kun je spelen in de [[playground:playground|zandbak]]. diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php index 4644f5e5d..911ffdc10 100644 --- a/inc/lang/nl/lang.php +++ b/inc/lang/nl/lang.php @@ -51,6 +51,7 @@ $lang['btn_backtomedia'] = 'Terug naar Bestandsselectie'; $lang['btn_subscribe'] = 'Inschrijven wijzigingen'; $lang['btn_profile'] = 'Profiel aanpassen'; $lang['btn_reset'] = 'Wissen'; +$lang['btn_resendpwd'] = 'Nieuw wachtwoord bepalen'; $lang['btn_draft'] = 'Bewerk concept'; $lang['btn_recover'] = 'Herstel concept'; $lang['btn_draftdel'] = 'Verwijder concept'; @@ -87,6 +88,7 @@ $lang['profnoempty'] = 'Een lege gebruikersnaam of e-mailadres is niet $lang['profchanged'] = 'Gebruikersprofiel succesvol aangepast'; $lang['pwdforget'] = 'Je wachtwoord vergeten? Vraag een nieuw wachtwoord aan'; $lang['resendna'] = 'Deze wiki ondersteunt het verzenden van wachtwoorden niet'; +$lang['resendpwd'] = 'Nieuw wachtwoord bepalen voor'; $lang['resendpwdmissing'] = 'Sorry, je moet alle velden invullen.'; $lang['resendpwdnouser'] = 'Sorry, we kunnen deze gebruikersnaam niet vinden in onze database.'; $lang['resendpwdbadauth'] = 'Sorry, deze authentiecatiecode is niet geldig. Controleer of je de volledige bevestigings-link hebt gebruikt.'; @@ -99,6 +101,7 @@ $lang['searchmedia_in'] = 'Zoek in %s'; $lang['txt_upload'] = 'Selecteer een bestand om te uploaden'; $lang['txt_filename'] = 'Vul nieuwe naam in (optioneel)'; $lang['txt_overwrt'] = 'Overschrijf bestaand bestand'; +$lang['maxuploadsize'] = 'Max %s per bestand'; $lang['lockedby'] = 'Momenteel in gebruik door'; $lang['lockexpire'] = 'Exclusief gebruiksrecht vervalt op'; $lang['js']['willexpire'] = 'Je exclusieve gebruiksrecht voor het aanpassen van deze pagina verloopt over een minuut.\nKlik op de Voorbeeld-knop om het exclusieve gebruiksrecht te verlengen.'; @@ -193,6 +196,11 @@ $lang['external_edit'] = 'Externe bewerking'; $lang['summary'] = 'Samenvatting wijziging'; $lang['noflash'] = 'De <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> is vereist om de pagina te kunnen weergeven.'; $lang['download'] = 'Download fragment'; +$lang['tools'] = 'Hulpmiddelen'; +$lang['user_tools'] = 'Gebruikershulpmiddelen'; +$lang['site_tools'] = 'Site-hulpmiddelen'; +$lang['page_tools'] = 'Paginahulpmiddelen'; +$lang['skip_to_content'] = 'spring naar tekst'; $lang['mail_newpage'] = 'pagina toegevoegd:'; $lang['mail_changed'] = 'pagina aangepast:'; $lang['mail_subscribe_list'] = 'Pagina\'s veranderd in namespace:'; @@ -200,8 +208,8 @@ $lang['mail_new_user'] = 'nieuwe gebruiker:'; $lang['mail_upload'] = 'bestand geüpload:'; $lang['changes_type'] = 'Bekijk wijzigingen van'; $lang['pages_changes'] = 'Pagina\'s'; -$lang['media_changes'] = 'Media bestanden'; -$lang['both_changes'] = 'Zowel pagina\'s als media bestanden'; +$lang['media_changes'] = 'Mediabestanden'; +$lang['both_changes'] = 'Zowel pagina\'s als mediabestanden'; $lang['qb_bold'] = 'Vette tekst'; $lang['qb_italic'] = 'Cursieve tekst'; $lang['qb_underl'] = 'Onderstreepte tekst'; @@ -244,7 +252,7 @@ $lang['img_camera'] = 'Camera'; $lang['img_keywords'] = 'Trefwoorden'; $lang['img_width'] = 'Breedte'; $lang['img_height'] = 'Hoogte'; -$lang['img_manager'] = 'In media beheerder bekijken'; +$lang['img_manager'] = 'In mediabeheerder bekijken'; $lang['subscr_subscribe_success'] = '%s is ingeschreven voor %s'; $lang['subscr_subscribe_error'] = 'Fout bij inschrijven van %s voor %s'; $lang['subscr_subscribe_noaddress'] = 'Er is geen emailadres geassocieerd met uw account, u kunt daardoor niet worden ingeschreven.'; @@ -263,6 +271,7 @@ $lang['subscr_style_digest'] = 'Samenvattings-email met wijzigingen per pagina $lang['subscr_style_list'] = 'Lijst van veranderde pagina\'s sinds laatste email (elke %.2f dagen)'; $lang['authmodfailed'] = 'Ongeldige gebruikersauthenticatie-configuratie. Informeer de wikibeheerder.'; $lang['authtempfail'] = 'Gebruikersauthenticatie is tijdelijk niet beschikbaar. Als deze situatie zich blijft voordoen, informeer dan de wikibeheerder.'; +$lang['authpwdexpire'] = 'Je wachtwoord verloopt in %d dagen, je moet het binnenkort veranderen'; $lang['i_chooselang'] = 'Kies je taal'; $lang['i_installer'] = 'DokuWiki Installer'; $lang['i_wikiname'] = 'Wikinaam'; @@ -304,7 +313,7 @@ $lang['media_list_thumbs'] = 'Miniatuurweergaven'; $lang['media_list_rows'] = 'Regels'; $lang['media_sort_name'] = 'Naam'; $lang['media_sort_date'] = 'Datum'; -$lang['media_namespaces'] = 'Kies naamruimte'; +$lang['media_namespaces'] = 'Kies namespace'; $lang['media_files'] = 'Bestanden in %s'; $lang['media_upload'] = 'Upload naar %s'; $lang['media_search'] = 'Zoeken in %s'; diff --git a/inc/lang/nl/mailwrap.html b/inc/lang/nl/mailwrap.html new file mode 100644 index 000000000..2ffe19a88 --- /dev/null +++ b/inc/lang/nl/mailwrap.html @@ -0,0 +1,13 @@ +<html> + <head> + <title>@TITLE@</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + </head> + <body> + + @HTMLBODY@ + + <br /><hr /> + <small>Deze mail is gegenereerd door DokuWiki op @DOKUWIKIURL@.</small> + </body> + </html>
\ No newline at end of file diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php index 3bde240d9..79d18bbf5 100644 --- a/inc/lang/pl/lang.php +++ b/inc/lang/pl/lang.php @@ -13,6 +13,7 @@ * @author Grzegorz Widła <dzesdzes@gmail.com> * @author Łukasz Chmaj <teachmeter@gmail.com> * @author Begina Felicysym <begina.felicysym@wp.eu> + * @author Aoi Karasu <aoikarasu@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -48,6 +49,7 @@ $lang['btn_backtomedia'] = 'Powrót do wyboru pliku'; $lang['btn_subscribe'] = 'Subskrybuj zmiany'; $lang['btn_profile'] = 'Aktualizuj profil'; $lang['btn_reset'] = 'Resetuj'; +$lang['btn_resendpwd'] = 'Podaj nowe hasło'; $lang['btn_draft'] = 'Edytuj szkic'; $lang['btn_recover'] = 'Przywróć szkic'; $lang['btn_draftdel'] = 'Usuń szkic'; @@ -84,6 +86,7 @@ $lang['profnoempty'] = 'Pusta nazwa lub adres e-mail nie dozwolone.'; $lang['profchanged'] = 'Zaktualizowano profil użytkownika.'; $lang['pwdforget'] = 'Nie pamiętasz hasła? Zdobądź nowe!'; $lang['resendna'] = 'To wiki nie pozwala na powtórne przesyłanie hasła.'; +$lang['resendpwd'] = 'Podaj nowe hasło dla'; $lang['resendpwdmissing'] = 'Wypełnij wszystkie pola.'; $lang['resendpwdnouser'] = 'Nie można znaleźć tego użytkownika w bazie danych.'; $lang['resendpwdbadauth'] = 'Błędny kod autoryzacji! Upewnij się, że użyłeś(aś) właściwego odnośnika.'; @@ -96,6 +99,7 @@ $lang['searchmedia_in'] = 'Szukaj w %s'; $lang['txt_upload'] = 'Wybierz plik do wysłania'; $lang['txt_filename'] = 'Nazwa pliku (opcjonalnie)'; $lang['txt_overwrt'] = 'Nadpisać istniejący plik?'; +$lang['maxuploadsize'] = 'Maksymalny rozmiar wysyłanych danych wynosi %s dla jednego pliku.'; $lang['lockedby'] = 'Aktualnie zablokowane przez'; $lang['lockexpire'] = 'Blokada wygasa'; $lang['js']['willexpire'] = 'Twoja blokada edycji tej strony wygaśnie w ciągu minuty. \nW celu uniknięcia konfliktów użyj przycisku podglądu aby odnowić blokadę.'; @@ -265,6 +269,7 @@ $lang['subscr_style_digest'] = 'email ze streszczeniem zmian dla każdej ze st $lang['subscr_style_list'] = 'lista zmienionych stron od czasu ostatniego emaila'; $lang['authmodfailed'] = 'Błąd uwierzytelnienia. Powiadom administratora tego wiki.'; $lang['authtempfail'] = 'Uwierzytelnienie użytkownika jest w tej chwili niemożliwe. Jeśli ta sytuacja się powtórzy, powiadom administratora tego wiki.'; +$lang['authpwdexpire'] = 'Twoje hasło wygaśnie za %d dni. Należy je zmienić w krótkim czasie.'; $lang['i_chooselang'] = 'Wybierz język'; $lang['i_installer'] = 'Instalator DokuWiki'; $lang['i_wikiname'] = 'Nazwa Wiki'; diff --git a/inc/lang/pl/mailwrap.html b/inc/lang/pl/mailwrap.html new file mode 100644 index 000000000..61772866e --- /dev/null +++ b/inc/lang/pl/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Ta wiadomość została wygenerowana przez DokuWiki na @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/pl/resetpwd.txt b/inc/lang/pl/resetpwd.txt new file mode 100644 index 000000000..64d2d7d47 --- /dev/null +++ b/inc/lang/pl/resetpwd.txt @@ -0,0 +1,3 @@ +====== Ustalenie nowego hasła ====== + +Podaj, proszę, nowe hasło do Twojego konta w tym wiki.
\ No newline at end of file diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php index 21a6ecef4..41727e521 100644 --- a/inc/lang/ro/lang.php +++ b/inc/lang/ro/lang.php @@ -9,6 +9,7 @@ * @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro> * @author Marius OLAR <olarmariusalex@gmail.com> * @author Marius Olar <olarmariusalex@yahoo.com> + * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -44,6 +45,7 @@ $lang['btn_backtomedia'] = 'Înapoi la Selecţia Mediafile'; $lang['btn_subscribe'] = 'Subscrie Modificarea Paginii'; $lang['btn_profile'] = 'Actualizează Profil'; $lang['btn_reset'] = 'Resetează'; +$lang['btn_resendpwd'] = 'Setează o parolă nouă'; $lang['btn_draft'] = 'Editează schiţă'; $lang['btn_recover'] = 'Recuperează schiţă'; $lang['btn_draftdel'] = 'Şterge schiţă'; @@ -80,6 +82,7 @@ $lang['profnoempty'] = 'Nu sunt admise numele sau adresa de email neco $lang['profchanged'] = 'Profilul de utilizator a fost actualizat succes.'; $lang['pwdforget'] = 'Parola uitată? Luaţi una nouă'; $lang['resendna'] = 'Această wiki nu suportă retrimiterea parolei.'; +$lang['resendpwd'] = 'Setează o parolă nouă pentru'; $lang['resendpwdmissing'] = 'Ne pare rău, trebuie completate toate câmpurile.'; $lang['resendpwdnouser'] = 'Ne pare rău, acest utilizator nu poate fi găsit în baza de date.'; $lang['resendpwdbadauth'] = 'Ne pare rău, acest cod de autorizare nu este corect. Verificaţi dacă aţi folosit tot link-ul de confirmare.'; @@ -186,6 +189,11 @@ $lang['external_edit'] = 'editare externă'; $lang['summary'] = 'Editează sumarul'; $lang['noflash'] = 'Plugin-ul <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> este necesar pentru afişarea corectă a conţinutului.'; $lang['download'] = 'Bloc descărcări'; +$lang['tools'] = 'Unelte'; +$lang['user_tools'] = 'Unelte utilizator'; +$lang['site_tools'] = 'Unelte Site'; +$lang['page_tools'] = 'Unelte Pagină'; +$lang['skip_to_content'] = 'sari la conținut'; $lang['mail_newpage'] = 'pagina adăugată:'; $lang['mail_changed'] = 'page schimbată:'; $lang['mail_subscribe_list'] = 'pagini modificate în spaţiul de nume:'; @@ -256,6 +264,7 @@ $lang['subscr_style_digest'] = 'digerează email la schimbări pentru fiecare $lang['subscr_style_list'] = 'lista paginilor schimbate de la ultimul email (la fiecare %.2f zile)'; $lang['authmodfailed'] = 'Configuraţia autentificării utilizatorului este eronată. Anunţaţi Wiki Admin-ul.'; $lang['authtempfail'] = 'Autentificarea utilizatorului este temporar indisponibilă. Anunţaţi Wiki Admin-ul.'; +$lang['authpwdexpire'] = 'Parola vă va expira în %d zile, ar trebui să o schimbați curând.'; $lang['i_chooselang'] = 'Alegeţi limba'; $lang['i_installer'] = 'DokuWiki Installer'; $lang['i_wikiname'] = 'Numele Wiki'; diff --git a/inc/lang/ro/resetpwd.txt b/inc/lang/ro/resetpwd.txt new file mode 100644 index 000000000..2eb8052f1 --- /dev/null +++ b/inc/lang/ro/resetpwd.txt @@ -0,0 +1,3 @@ +====== Setează parolă nouă ====== + +Vă rugăm să introduceți o nouă parolă pentru contul dvs. pe acest wiki.
\ No newline at end of file diff --git a/inc/lang/uk/install.html b/inc/lang/uk/install.html index 084da8662..0c4a32544 100644 --- a/inc/lang/uk/install.html +++ b/inc/lang/uk/install.html @@ -1,4 +1,4 @@ -<p>Ця сторінка допомагає при першій установці та настройці <a href="http://dokuwiki.org">ДокуВікі</a>. +<p>Ця сторінка допомагає при першій установці та налаштуванні <a href="http://dokuwiki.org">ДокуВікі</a>. Більше інформації про програму установки можна знайти на <a href="http://dokuwiki.org/installer">сторінці документації</a>.</p> <p>ДокуВікі використовую звичайні файли для зберігання сторінок вікі та іншої інформації, diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php index 28756e2a1..b06cb9158 100644 --- a/inc/lang/uk/lang.php +++ b/inc/lang/uk/lang.php @@ -28,7 +28,7 @@ $lang['btn_top'] = 'Повернутися наверх'; $lang['btn_newer'] = '<< більш нові'; $lang['btn_older'] = 'більш старі >>'; $lang['btn_revs'] = 'Старі ревізії'; -$lang['btn_recent'] = 'Недавні зміни'; +$lang['btn_recent'] = 'Останні зміни'; $lang['btn_upload'] = 'Завантажити'; $lang['btn_cancel'] = 'Скасувати'; $lang['btn_index'] = 'Зміст'; @@ -37,7 +37,7 @@ $lang['btn_login'] = 'Увійти'; $lang['btn_logout'] = 'Вийти'; $lang['btn_admin'] = 'Керування'; $lang['btn_update'] = 'Оновити'; -$lang['btn_delete'] = 'Знищити'; +$lang['btn_delete'] = 'Видалити'; $lang['btn_back'] = 'Назад'; $lang['btn_backlink'] = 'Посилання сюди'; $lang['btn_backtomedia'] = 'Назад до вибору медіа-файлу'; @@ -49,6 +49,7 @@ $lang['btn_recover'] = 'Відновити чернетку'; $lang['btn_draftdel'] = 'Знищити чернетку'; $lang['btn_revert'] = 'Відновити'; $lang['btn_register'] = 'Реєстрація'; +$lang['btn_apply'] = 'Застосувати'; $lang['loggedinas'] = 'Ви'; $lang['user'] = 'Користувач'; $lang['pass'] = 'Пароль'; @@ -92,7 +93,7 @@ $lang['txt_filename'] = 'Завантажити як (не обов\'я $lang['txt_overwrt'] = 'Перезаписати існуючий файл'; $lang['lockedby'] = 'Заблоковано'; $lang['lockexpire'] = 'Блокування завершується в'; -$lang['js']['willexpire'] = 'Блокування редагування цієї сторінки закінчується через хвилину.\n Щоб уникнути конфліктів використовуйте кнопку перегляду для продовження блокування.'; +$lang['js']['willexpire'] = 'Блокування редагування цієї сторінки закінчується через хвилину.\n Щоб уникнути конфліктів використовуйте кнопку перегляду для продовження блокування.'; $lang['js']['notsavedyet'] = 'Незбережені зміни будуть втрачені. Дійсно продовжити?'; $lang['js']['searchmedia'] = 'Шукати файли'; @@ -234,7 +235,7 @@ $lang['subscr_m_receive'] = 'Отримувати'; $lang['subscr_style_every'] = 'повідомляти на пошту про кожну зміну'; $lang['subscr_style_digest'] = 'лист з дайджестом для зміни кожної сторінки (кожні %.2f днів)'; $lang['subscr_style_list'] = 'список змінених сторінок від часу отримання останнього листа (кожні %.2f днів)'; -$lang['authmodfailed'] = 'Неправильна настройка автентифікації користувача. Будь ласка, повідомте про це адміністратора.'; +$lang['authmodfailed'] = 'Неправильні налаштування автентифікації користувача. Будь ласка, повідомте про це адміністратора.'; $lang['authtempfail'] = 'Автентифікація користувача тимчасово не доступна. Якщо це буде продовжуватись, будь ласка, повідомте адміністратора.'; $lang['i_chooselang'] = 'Виберіть мову'; $lang['i_installer'] = 'Програма установки ДокуВікі'; @@ -251,7 +252,7 @@ $lang['i_confexists'] = '<code>%s</code> вже існує'; $lang['i_writeerr'] = 'Неможливо створити <code>%s</code>. Необхідно перевірити права доступа для файлу/папки та створити файл вручну.'; $lang['i_badhash'] = 'Невпізнаний або модифікований dokuwiki.php (hash=<code>%s</code>)'; $lang['i_badval'] = '<code>%s</code> - невірне або пусте значення.'; -$lang['i_success'] = 'Настройку завершено. Ми можете знищити файл install.php. +$lang['i_success'] = 'Налаштування завершено. Ви можете знищити файл install.php. Перейдіть до <a href="doku.php">вашої нової ДокуВікі</a>'; $lang['i_failure'] = 'При збереженні файлу конфігурації виникли помилки. Можливо вам доведеться виправити їх самостійно до початку використання <a href="doku.php">вашої нової ДокуВікі</a>.'; diff --git a/inc/lang/vi/backlinks.txt b/inc/lang/vi/backlinks.txt index 231ab5d8c..eee624d96 100644 --- a/inc/lang/vi/backlinks.txt +++ b/inc/lang/vi/backlinks.txt @@ -1,3 +1,3 @@ -====== Nối về trước ====== +====== Liên kết đến trang vừa xem ====== -Đây là danh sách các trang hình như đã nối vào trang này. +Đây là danh sách các trang có liên kết đến trang vừa xem. diff --git a/inc/lang/vi/conflict.txt b/inc/lang/vi/conflict.txt index 0df1ddbe4..646dcbc45 100644 --- a/inc/lang/vi/conflict.txt +++ b/inc/lang/vi/conflict.txt @@ -2,4 +2,4 @@ Trang bạn đang biên soạn có một phiên bản mới hơn. Việc này xảy ra khi một bạn đổi trang ấy khi bạn đang biên soạn trang này. -Xem kỹ những thay đổi dưới đây, rồi quyết định giữ phiên bản nào. Nếu chọn ''bảo lưu'', phiên bản của bạn được giữ lại. Bấm ''huỷ'' để giữ phiên bản kia. +Xem kỹ những thay đổi dưới đây, rồi quyết định giữ phiên bản nào. Nếu chọn ''Lưu'', phiên bản của bạn được giữ lại. Bấm ''huỷ'' để giữ phiên bản kia. diff --git a/inc/lang/vi/denied.txt b/inc/lang/vi/denied.txt index e70ed5d5f..35acaeb62 100644 --- a/inc/lang/vi/denied.txt +++ b/inc/lang/vi/denied.txt @@ -1,3 +1,3 @@ ====== Không được phép vào ====== -Rất tiếc là bạn không được phép để tiếp tục. Bạn quen đăng nhập hay sao? +Rất tiếc là bạn không được phép để tiếp tục. Bạn quên đăng nhập hay sao? diff --git a/inc/lang/vi/edit.txt b/inc/lang/vi/edit.txt index b00316a7c..1c16f903c 100644 --- a/inc/lang/vi/edit.txt +++ b/inc/lang/vi/edit.txt @@ -1 +1 @@ -Biên soạn trang này và bấm ''Bảo lưu''. Xem [[wiki:syntax]] về cú pháp của Wiki. Xin bạn biên soạn trang này nếu bạn có thể **cải tiến** nó. Nếu bạn muốn thí nghiệm, bạn có thể tập những bước đầu ở [[playground:playground]]. +Biên soạn trang này và bấm ''Lưu''. Xem [[wiki:syntax:vi|cú pháp của Wiki]] để biết cách soạn thảo. Xin bạn biên soạn trang này nếu bạn có thể **cải tiến** nó. Nếu bạn muốn thử nghiệm, bạn có thể thử ở [[playground:playground| chỗ thử]]. diff --git a/inc/lang/vi/editrev.txt b/inc/lang/vi/editrev.txt index 076466c06..8a2031c4d 100644 --- a/inc/lang/vi/editrev.txt +++ b/inc/lang/vi/editrev.txt @@ -1,2 +1,2 @@ -**Bạn đã nạp một phiên bản cũ của văn kiện!** Nếu bảo lưu, bạn sẽ tạo phiên bản với dữ kiện này. +**Bạn đã nạp một phiên bản cũ của văn bản!** Nếu lưu nó, bạn sẽ tạo phiên bản mới với dữ kiện này. ---- diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php index 361e51e84..c9179f6b3 100644 --- a/inc/lang/vi/lang.php +++ b/inc/lang/vi/lang.php @@ -5,8 +5,16 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author James Do <jdo@myrealbox.com> */ -$lang['encoding'] = 'utf-8'; -$lang['direction'] = 'ltr'; + + + +$lang['encoding'] = 'utf-8'; +$lang['direction'] = 'ltr'; +$lang['doublequoteopening'] = '“'; //“ +$lang['doublequoteclosing'] = '”'; //” +$lang['singlequoteopening'] = '‘'; //‘ +$lang['singlequoteclosing'] = '’'; //’ +$lang['apostrophe'] = '’'; //’ $lang['btn_edit'] = 'Biên soạn trang này'; $lang['btn_source'] = 'Xem mã nguồn'; @@ -16,6 +24,8 @@ $lang['btn_search'] = 'Tìm'; $lang['btn_save'] = 'Lưu'; $lang['btn_preview']= 'Duyệt trước'; $lang['btn_top'] = 'Trở lên trên'; +$lang['btn_newer'] = '<< mới hơn'; +$lang['btn_older'] = 'cũ hơn >>'; $lang['btn_revs'] = 'Các phiên bản cũ'; $lang['btn_recent'] = 'Thay đổi gần đây'; $lang['btn_upload'] = 'Tải lên'; @@ -27,41 +37,126 @@ $lang['btn_logout'] = 'Thoát'; $lang['btn_admin'] = 'Quản lý'; $lang['btn_update'] = 'Cập nhật'; $lang['btn_delete'] = 'Xoá'; +$lang['btn_back'] = 'Quay lại'; +$lang['btn_backlink'] = "Liên kết tới đây"; +$lang['btn_profile'] = 'Cập nhật hồ sơ'; +$lang['btn_reset'] = 'Làm lại'; +$lang['btn_resendpwd'] = 'Gửi mật khẩu mới'; +$lang['btn_draft'] = 'Sửa bản nháp'; +$lang['btn_recover'] = 'Phục hồi bản nháp'; +$lang['btn_draftdel'] = 'Xóa bản nháp'; +$lang['btn_revert'] = 'Phục hồi'; $lang['btn_register'] = 'Đăng ký'; +$lang['btn_apply'] = 'Chấp nhận'; +$lang['btn_media'] = 'Quản lý tệp tin'; $lang['loggedinas'] = 'Username đang dùng'; $lang['user'] = 'Username'; -$lang['pass'] = 'Password'; +$lang['pass'] = 'Mật khẩu'; +$lang['newpass'] = 'Mật khẩu mới'; +$lang['oldpass'] = 'Nhập lại mật khẩu hiện tại'; +$lang['passchk'] = 'lần nữa'; $lang['remember'] = 'Lưu username/password lại'; $lang['fullname'] = 'Họ và tên'; $lang['email'] = 'E-Mail'; +$lang['profile'] = 'Hồ sơ thành viên'; $lang['badlogin'] = 'Username hoặc password không đúng.'; +$lang['minoredit'] = 'Minor Changes'; +$lang['draftdate'] = 'Bản nháp được tự động lưu lúc'; // full dformat date will be added +$lang['nosecedit'] = 'Các trang web đã được thay đổi trong khi chờ đợi, phần thông tin quá hạn đã được thay thế bằng trang đầy đủ.'; $lang['regmissing'] = 'Bạn cần điền vào tất cả các trường'; $lang['reguexists'] = 'Bạn khác đã dùng username này rồi.'; $lang['regsuccess'] = 'Đã tạo username, và đã gởi password.'; +$lang['regsuccess2'] = 'Thành viên vừa được tạo.'; $lang['regmailfail']= 'Không gởi password được. Xin bạn liên hệ với người quản lý.'; $lang['regbadmail'] = 'Email hình như không đúng. Xin bạn liên hệ với người quản lý.'; +$lang['regbadpass'] = 'Hai mật khẩu đưa ra là không giống nhau, xin vui lòng thử lại.'; $lang['regpwmail'] = 'Password DokuWiki của bạn là'; -$lang['reghere'] = 'Xin bạn đăng ký username nếu chưa có.'; +$lang['reghere'] = 'Xin bạn đăng ký username nếu chưa có'; + +$lang['profna'] = 'Wiki này không hỗ trợ sửa đổi hồ sơ cá nhân'; +$lang['profnochange'] = 'Không có thay đổi, không có gì để làm.'; +$lang['profnoempty'] = 'Không được để trống tên hoặc địa chỉ email.'; +$lang['profchanged'] = 'Cập nhật hồ sơ thành viên thành công.'; +$lang['pwdforget'] = 'Bạn quên mật khẩu? Tạo lại mật khẩu mới'; +$lang['resendna'] = 'Wiki này không hỗ trợ gửi lại mật khẩu.'; +$lang['resendpwd'] = 'Gửi mật khẩu mới cho'; +$lang['resendpwdmissing'] = 'Xin lỗi, bạn phải điền vào tất cả các trường.'; +$lang['resendpwdnouser'] = 'Xin lỗi, chúng tôi không thể tìm thấy thành viên này trong cơ sở dữ liệu của chúng tôi.'; +$lang['resendpwdbadauth'] = 'Xin lỗi, mã này xác thực không hợp lệ. Hãy chắc chắn rằng bạn sử dụng liên kết xác nhận đầy đủ.'; +$lang['resendpwdconfirm'] = 'Một liên kết xác nhận đã được gửi bằng email.'; +$lang['resendpwdsuccess'] = 'Mật khẩu mới của bạn đã được gửi bằng email.'; + +$lang['license'] = 'Trừ khi có ghi chú khác, nội dung trên wiki này được cấp phép theo giấy phép sau đây:'; +$lang['licenseok'] = 'Lưu ý: Bằng cách chỉnh sửa trang này, bạn đồng ý cấp giấy phép nội dung của bạn theo giấy phép sau:'; + +$lang['searchmedia'] = 'Tìm tên file:'; +$lang['searchmedia_in'] = 'Tìm ở %s'; $lang['txt_upload'] = 'Chọn tệp để tải lên'; $lang['txt_filename'] = 'Điền wikiname (tuỳ ý)'; +$lang['txt_overwrt'] = 'Ghi đè file trùng'; $lang['lockedby'] = 'Đang khoá bởi'; -$lang['lockexpire'] = 'Khoá sẽ hết hạn vào lúc'; -$lang['js']['willexpire'] = 'Khoá của bạn để biên soạn trang này sẽ hết hạn trong vòng 1 phút.\nĐể tránh xung đột, bạn nên bấm nút xem trước để lập lại thời gian khoá'; +$lang['lockexpire'] = 'Sẽ được mở khóa vào lúc'; +$lang['js']['willexpire'] = 'Trong một phút nữa bài viết sẽ được mở khóa để cho phép người khác chỉnh sửa.\nĐể tránh xung đột, bạn nên bấm nút Duyệt trước để lập lại thời gian khoá bài'; $lang['js']['notsavedyet'] = "Hiện có những thay đổi chưa được bảo lưu, và sẽ mất.\nBạn thật sự muốn tiếp tục?"; -$lang['rssfailed'] = 'Rút nguồn này gặp phải lỗi'; +$lang['js']['searchmedia'] = 'Tìm kiếm tập tin'; +$lang['js']['keepopen'] = 'Giữ cửa sổ đang mở trên lựa chọn'; +$lang['js']['hidedetails'] = 'Ẩn thông tin chi tiết'; +$lang['js']['mediatitle'] = 'Thiết lập liên kết'; +$lang['js']['mediadisplay'] = 'Kiểu liên kết'; +$lang['js']['mediaalign'] = 'Sắp hàng'; +$lang['js']['mediasize'] = 'Cỡ ảnh'; +$lang['js']['mediatarget'] = 'Đích của liên kết'; +$lang['js']['mediaclose'] = 'Đóng'; +$lang['js']['mediainsert'] = 'Chèn'; +$lang['js']['mediadisplayimg'] = 'Hiển thị ảnh.'; +$lang['js']['mediadisplaylnk'] = 'Chỉ hiển thị liên kết.'; +$lang['js']['mediasmall'] = 'Nhỏ'; +$lang['js']['mediamedium'] = 'Vừa'; +$lang['js']['medialarge'] = 'To'; +$lang['js']['mediaoriginal'] = 'Kích cỡ gốc'; +$lang['js']['medialnk'] = 'Liên kết tới trang chi tiết'; +$lang['js']['mediadirect'] = 'Liên kết trực tiếp tới ảnh gốc'; +$lang['js']['medianolnk'] = 'Không liên kết'; +$lang['js']['medianolink'] = 'Không liên kết tới ảnh'; +$lang['js']['medialeft'] = 'Căn ảnh sang trái.'; +$lang['js']['mediaright'] = 'Căn ảnh sang phải.'; +$lang['js']['mediacenter'] = 'Cản ảnh ra giữa.'; +$lang['js']['medianoalign'] = 'Không căn.'; +$lang['js']['nosmblinks'] = "Nối với các Windows shares chỉ có hiệu lực với Microsoft Internet Explorer.\nBạn vẫn có thể sao và chép các mốc nối."; +$lang['js']['linkwiz'] = 'Hộp thoại liên kết'; +$lang['js']['linkto'] = 'Liên kết tới:'; +$lang['js']['del_confirm']= 'Xoá mục này?'; +$lang['js']['restore_confirm'] = 'Sẵn sàng phục hồi phiên bản này?'; +$lang['js']['media_diff'] = 'So sánh:'; +$lang['js']['media_select'] = 'Chọn nhiều file…'; +$lang['js']['media_upload_btn'] = 'Tải lên'; +$lang['js']['media_done_btn'] = 'Xong'; +$lang['js']['media_drop'] = 'Kéo các file vào đây để tải lên'; +$lang['js']['media_overwrt'] = 'Ghi đè các file trùng'; + +$lang['rssfailed'] = 'Nguồn này gặp phải lỗi'; $lang['nothingfound']= 'Không tìm được gì'; -$lang['mediaselect'] = 'Chọn tệp media'; +$lang['mediaselect'] = 'Xem'; $lang['fileupload'] = 'Tải lên tệp media'; $lang['uploadsucc'] = 'Tải lên thành công'; -$lang['uploadfail'] = 'Tải lên thất bại. Có thể vì không đủ phép?'; +$lang['uploadfail'] = 'Tải lên thất bại. Có thể vì không đủ quyền?'; $lang['uploadwrong'] = 'Tải lên bị từ chối. Cấm tải loại tệp này'; -$lang['namespaces'] = 'Đề tài'; +$lang['uploadexist'] = 'Tệp tin bị trùng. Chưa có gì xảy ra.'; +$lang['namespaces'] = 'Thư mục'; $lang['mediafiles'] = 'Tệp có sẵn ở'; +$lang['accessdenied'] = 'Bạn không được phép xem trang này.'; +$lang['mediausage'] = 'Sử dụng cú pháp sau đây để dẫn đến tập tin này:'; +$lang['mediaview'] = 'Xem tệp gốc'; +$lang['mediaroot'] = 'thư mục gốc'; +$lang['mediaupload'] = 'Tải một tập tin lên thư mục hiện tại ở đây. Để tạo thư mục con, thêm nó vào trước tên tập tin của bạn, phân cách bằng dấu hai chấm sau khi bạn chọn các tập tin. File còn có thể được lựa chọn bằng cách kéo và thả.'; +$lang['mediaextchange'] = 'Phần mở rộng thay đổi từ .%s thành .%s!'; +$lang['ref_inuse'] = 'Không thể xóa tập tin vì nó đang được sử dụng cho các trang sau:'; +$lang['ref_hidden'] = 'Một số tài liệu sử dụng cho trang này bạn không được cấp phép truy cập.'; $lang['hits'] = 'Trùng'; $lang['quickhits'] = 'Trang trùng hợp'; @@ -69,24 +164,36 @@ $lang['toc'] = 'Nội dung'; $lang['current'] = 'hiện tại'; $lang['yours'] = 'Phiên bản hiện tại'; $lang['diff'] = 'cho xem khác biệt với phiên bản hiện tại'; +$lang['diff2'] = 'Sự khác biệt giữa các bản được lựa chọn'; +$lang['difflink'] = 'Liên kết để xem bản so sánh này'; +$lang['diff_type'] = 'Xem sự khác biệt:'; +$lang['diff_inline'] = 'Nội tuyến'; +$lang['diff_side'] = 'Xếp cạnh nhau'; $lang['line'] = 'Dòng'; $lang['breadcrumb'] = 'Trang đã xem'; +$lang['youarehere'] = 'Bạn đang ở đây'; $lang['lastmod'] = 'Thời điểm thay đổi'; $lang['by'] = 'do'; $lang['deleted'] = 'bị xoá'; $lang['created'] = 'được tạo ra'; $lang['restored'] = 'phiên bản cũ đã được khôi phục'; +$lang['external_edit'] = 'external edit'; $lang['summary'] = 'Tóm tắt biên soạn'; +$lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> cần được cài để có thể xem nội dung này.'; $lang['mail_newpage'] = 'Trang được thêm:'; $lang['mail_changed'] = 'Trang thay đổi:'; -$lang['js']['nosmblinks'] = "Nối với các Windows shares chỉ có hiệu lực với Microsoft Internet Explorer.\nBạn vẫn có thể sao và chép các mốc nối."; +$lang['changes_type'] = 'Xem thay đổi của'; +$lang['pages_changes'] = 'Trang'; +$lang['media_changes'] = 'Tệp media'; +$lang['both_changes'] = 'Cả trang và các tập tin media'; $lang['qb_bold'] = 'Chữ đậm'; $lang['qb_italic'] = 'Chữ nghiêng'; $lang['qb_underl'] = 'Chữ gạch dưới'; $lang['qb_code'] = 'Chữ mã nguồn'; +$lang['qb_strike'] = 'Strike-through Text'; $lang['qb_h1'] = 'Đầu đề cấp 1'; $lang['qb_h2'] = 'Đầu đề cấp 2'; $lang['qb_h3'] = 'Đầu đề cấp 3'; @@ -100,7 +207,62 @@ $lang['qb_ul'] = 'Điểm trong danh sách không đánh số'; $lang['qb_media'] = 'Thêm ảnh và tệp khác'; $lang['qb_sig'] = 'Đặt chữ ký'; -$lang['js']['del_confirm']= 'Xoá mục này?'; +$lang['metaedit'] = 'Sửa Metadata'; +$lang['metasaveerr'] = 'Thất bại khi viết metadata'; +$lang['metasaveok'] = 'Metadata đã được lưu'; +$lang['img_backto'] = 'Quay lại'; +$lang['img_title'] = 'Tiêu đề'; +$lang['img_caption'] = 'Ghi chú'; +$lang['img_date'] = 'Ngày'; +$lang['img_fname'] = 'Tên file'; +$lang['img_fsize'] = 'Kích cỡ'; +$lang['img_artist'] = 'Người chụp'; +$lang['img_copyr'] = 'Bản quyền'; +$lang['img_format'] = 'Định dạng'; +$lang['img_camera'] = 'Camera'; +$lang['img_keywords'] = 'Từ khóa'; +$lang['img_width'] = 'Rộng'; +$lang['img_height'] = 'Cao'; +$lang['img_manager'] = 'Xem trong trình quản lý tệp media'; + +/* installer strings */ +$lang['i_chooselang'] = 'Chọn ngôn ngữ'; +$lang['i_retry'] = 'Thử lại'; + +$lang['years'] = 'cách đây %d năm'; +$lang['months'] = 'cách đây %d tháng'; +$lang['weeks'] = 'cách đây %d tuần'; +$lang['days'] = 'cách đây %d ngày'; +$lang['hours'] = 'cách đây %d giờ'; +$lang['minutes'] = 'cách đây %d phút'; +$lang['seconds'] = 'cách đây %d giây'; + +$lang['wordblock'] = 'Thay đổi của bạn đã không được lưu lại bởi vì nó có chứa văn bản bị chặn (spam).'; + +$lang['media_uploadtab'] = 'Tải lên'; +$lang['media_searchtab'] = 'Tìm'; +$lang['media_file'] = 'Tệp'; +$lang['media_viewtab'] = 'Xem'; +$lang['media_edittab'] = 'Sửa'; +$lang['media_historytab'] = 'Lịch sử'; +$lang['media_list_thumbs'] = 'Ảnh thu nhỏ'; +$lang['media_list_rows'] = 'Dòng'; +$lang['media_sort_name'] = 'Tên'; +$lang['media_sort_date'] = 'Ngày'; +$lang['media_namespaces'] = 'Chọn thư mục'; +$lang['media_files'] = 'Các tệp trong %s'; +$lang['media_upload'] = 'Tải lên %s'; +$lang['media_search'] = 'Tìm ở %s'; +$lang['media_view'] = '%s'; +$lang['media_viewold'] = '%s ở %s'; +$lang['media_edit'] = 'Sửa %s'; +$lang['media_history'] = 'Lịch sử của %s'; +$lang['media_meta_edited'] = 'đã sửa metadata'; +$lang['media_perm_read'] = 'Sorry, bạn không đủ quyền truy cập.'; +$lang['media_perm_upload'] = 'Xin lỗi, bạn không đủ quyền để upload file lên.'; +$lang['media_update'] = 'Tải lên phiên bản mới'; +$lang['media_restore'] = 'Phục hồi phiên bản này'; +$lang['plugin_install_err'] = "Plugin không được cài đặt chính xác.Đổi tên thư mục plugin '%s' thành '%s'."; //Setup VIM: ex: et ts=2 : diff --git a/inc/lang/vi/login.txt b/inc/lang/vi/login.txt index 4265a79df..71a8b1a01 100644 --- a/inc/lang/vi/login.txt +++ b/inc/lang/vi/login.txt @@ -1,3 +1,3 @@ ====== Đăng nhập ====== -Hiện bạn chưa đăng nhập! Điền vào những chi tiết chứng minh ở phía dưới. Máy của bạn cần đặt chế độ nhận cookies để đăng nhập. +Hiện bạn chưa đăng nhập! Hãy khai báo thông tin đăng nhập vào ô ở phía dưới. Máy của bạn cần đặt chế độ nhận cookies để đăng nhập. diff --git a/inc/lang/vi/mailtext.txt b/inc/lang/vi/mailtext.txt index 3fcdf5595..836e02d24 100644 --- a/inc/lang/vi/mailtext.txt +++ b/inc/lang/vi/mailtext.txt @@ -12,5 +12,5 @@ User : @USER@ @DIFF@ -- -This mail was generated by DokuWiki at +Điện thư này tạo bởi DokuWiki ở @DOKUWIKIURL@ diff --git a/inc/lang/vi/newpage.txt b/inc/lang/vi/newpage.txt index b03bb5224..93f474b18 100644 --- a/inc/lang/vi/newpage.txt +++ b/inc/lang/vi/newpage.txt @@ -1,3 +1,3 @@ ====== Chưa có đề tài này ====== -Bạn vừa nối vào một đề tài chưa có. Bạn có tạo đề tài này bằng cách bấm vào nút ''Tạo trang này''. +Bạn kết nối vào một đề tài chưa có. Bạn có tạo đề tài này bằng cách bấm vào nút ''Tạo trang này'' ở góc trên, bên trái cửa sổ này. Nếu bạn không thấy nút này, thay vào đó là nút ''Xem mã nguồn'' chứng tỏ bạn không có quyền biên tập trang này, hãy đăng nhập thử xem bạn có quyền biên tập trang không. Nếu bạn nghĩ đây là một lỗi, hãy báo cho người quản trị. diff --git a/inc/lang/vi/norev.txt b/inc/lang/vi/norev.txt index 0fa27d898..224bd1db0 100644 --- a/inc/lang/vi/norev.txt +++ b/inc/lang/vi/norev.txt @@ -1,3 +1,3 @@ ====== Phiên bản chưa có ====== -Chưa có phiên bản được chỉ định. Xin bấm nút ''Phiên bản cũ'' để xem danh sách các phiên bản của văn kiện này. +Chưa có phiên bản được chỉ định. Xin bấm nút ''Phiên bản cũ'' để xem danh sách các phiên bản của văn bản này. diff --git a/inc/lang/vi/password.txt b/inc/lang/vi/password.txt index 589bbf067..798a20d33 100644 --- a/inc/lang/vi/password.txt +++ b/inc/lang/vi/password.txt @@ -6,4 +6,4 @@ Username: @LOGIN@ Password: @PASSWORD@ -- -Điện thư này xuất phát từ DokuWiki tại @DOKUWIKIURL@. +Điện thư này xuất phát từ @DOKUWIKIURL@. diff --git a/inc/lang/vi/preview.txt b/inc/lang/vi/preview.txt index 81069a2c4..f02a25142 100644 --- a/inc/lang/vi/preview.txt +++ b/inc/lang/vi/preview.txt @@ -1,3 +1,3 @@ ====== Xem trước ====== -Văn kiện của bạn sẽ thể hiện như sau. Nên nhớ: Văn kiện này **chưa được bảo lưu**! +Văn bản của bạn sẽ thể hiện như sau. Nên nhớ: Văn bản này **chưa được lưu**! diff --git a/inc/lang/vi/read.txt b/inc/lang/vi/read.txt index ffeffc7bf..eec69966b 100644 --- a/inc/lang/vi/read.txt +++ b/inc/lang/vi/read.txt @@ -1 +1 @@ -Trang này chỉ được đọc thôi. Bạn có thể xem mã nguồn, nhưng không được thay đổi. Xin bạn hỏi người quản lý nếu không đúng. +Trang này chỉ được đọc thôi. Bạn có thể xem mã nguồn, nhưng không được thay đổi. Hãy báo lại người quản lý nếu hệ thống hoạt động không đúng. diff --git a/inc/lang/vi/revisions.txt b/inc/lang/vi/revisions.txt index 943e3fff1..b9e9779ee 100644 --- a/inc/lang/vi/revisions.txt +++ b/inc/lang/vi/revisions.txt @@ -1,3 +1,3 @@ ====== Phiên bản cũ ====== -Sau đây là các phiên bản cũ của văn kiện này. Để quây về một phiên bản cũ, chọn ở phía dưới, bấm vào ''Biên soạn trang này'' để bảo lưu. +Sau đây là các phiên bản cũ của văn bản này. Để quay về một phiên bản cũ, bạn hãy chọn nó từ danh sách dưới đây, sau đó bấm vào nút ''Phục hồi'' hoặc nhấp nút ''Biên soạn trang này'' và lưu nó lại. diff --git a/inc/lang/vi/searchpage.txt b/inc/lang/vi/searchpage.txt index 821ca9f7b..7ded7a808 100644 --- a/inc/lang/vi/searchpage.txt +++ b/inc/lang/vi/searchpage.txt @@ -1,5 +1,5 @@ ====== Tìm ====== -Sau đây là kết quả của câu hỏi của bạn. Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể một trang mới, cùng tên câu hỏi của bạn, bằng cách bấm vào nút ''Biên soạn trang này''. +Sau đây là kết quả mà bạn đã tìm. Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể tạo một trang mới bằng cách bấm vào nút ''Biên soạn trang này'', khi đó bạn sẽ có 1 trang mới với tên trang chính là tuwfw khóa bạn đã tìm kiếm. ===== Kết quả ===== diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php index 9d125ce44..9ea0f5e7f 100644 --- a/inc/lang/zh/lang.php +++ b/inc/lang/zh/lang.php @@ -50,6 +50,7 @@ $lang['btn_backtomedia'] = '返回到媒体文件选择工具'; $lang['btn_subscribe'] = '订阅本页更改'; $lang['btn_profile'] = '更新个人信息'; $lang['btn_reset'] = '重设'; +$lang['btn_resendpwd'] = '设置新密码'; $lang['btn_draft'] = '编辑草稿'; $lang['btn_recover'] = '恢复草稿'; $lang['btn_draftdel'] = '删除草稿'; @@ -86,6 +87,7 @@ $lang['profnoempty'] = '不允许使用空的用户名或邮件地址 $lang['profchanged'] = '用户信息更新成功。'; $lang['pwdforget'] = '忘记密码?立即获取新密码'; $lang['resendna'] = '本维基不支持二次发送密码。'; +$lang['resendpwd'] = '设置新密码用于'; $lang['resendpwdmissing'] = '对不起,您必须填写所有的区域。'; $lang['resendpwdnouser'] = '对不起,在我们的用户数据中找不到该用户。'; $lang['resendpwdbadauth'] = '对不起,该认证码错误。请使用完整的确认链接。'; @@ -98,6 +100,7 @@ $lang['searchmedia_in'] = '在%s中查找'; $lang['txt_upload'] = '选择要上传的文件'; $lang['txt_filename'] = '上传并重命名为(可选)'; $lang['txt_overwrt'] = '覆盖已存在的同名文件'; +$lang['maxuploadsize'] = '上传限制。每个文件 %s'; $lang['lockedby'] = '目前已被下列人员锁定'; $lang['lockexpire'] = '预计锁定解除于'; $lang['js']['willexpire'] = '您对本页的独有编辑权将于一分钟之后解除。\n为了防止与其他人的编辑冲突,请使用预览按钮重设计时器。'; @@ -192,6 +195,11 @@ $lang['external_edit'] = '外部编辑'; $lang['summary'] = '编辑摘要'; $lang['noflash'] = '需要 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash 插件</a> 来播放本内容。 '; $lang['download'] = '下载片段'; +$lang['tools'] = '工具'; +$lang['user_tools'] = '用户工具'; +$lang['site_tools'] = '站点工具'; +$lang['page_tools'] = '页面工具'; +$lang['skip_to_content'] = '跳至内容'; $lang['mail_newpage'] = '添加页面:'; $lang['mail_changed'] = '更改页面:'; $lang['mail_subscribe_list'] = '命名空间中改变的页面:'; @@ -262,6 +270,7 @@ $lang['subscr_style_digest'] = '对每个页面发送更改的摘要邮件( $lang['subscr_style_list'] = '自上封邮件以来更改的页面的列表(每 %.2f 天)'; $lang['authmodfailed'] = '错误的用户认证设置。请通知维基管理员。'; $lang['authtempfail'] = '用户认证暂时无法使用。如果该状态一直存在,请通知维基管理员。'; +$lang['authpwdexpire'] = '您的密码将在 %d 天内过期,请尽快更改'; $lang['i_chooselang'] = '选择您的语言'; $lang['i_installer'] = 'DokuWiki 安装工具'; $lang['i_wikiname'] = '维基名称'; @@ -288,7 +297,6 @@ $lang['i_pol1'] = '公共的维基(任何人都有读的权限 $lang['i_pol2'] = '关闭的维基(只有注册用户才有读、写、上传的权限)'; $lang['i_retry'] = '重试'; $lang['i_license'] = '请选择您希望的内容发布许可协议:'; - $lang['recent_global'] = '您当前看到的是<b>%s</b> 名称空间的变动。你还可以在<a href="%s">查看整个维基的近期变动</a>。'; $lang['years'] = '%d年前'; $lang['months'] = '%d月前'; @@ -312,8 +320,8 @@ $lang['media_namespaces'] = '选择命名空间'; $lang['media_files'] = '在 %s 中的文件'; $lang['media_upload'] = '上传到 <strong>%s</strong> 命名空间。'; $lang['media_search'] = '在 <strong>%s</strong> 命名空间中搜索。'; -$lang['media_view'] = '%s 在 %s'; -$lang['media_viewold'] = '%s '; +$lang['media_view'] = '%s'; +$lang['media_viewold'] = '%s 在 %s'; $lang['media_edit'] = '编辑 %s'; $lang['media_history'] = '%s 的历史纪录'; $lang['media_meta_edited'] = '元数据已编辑'; diff --git a/inc/lang/zh/mailwrap.html b/inc/lang/zh/mailwrap.html new file mode 100644 index 000000000..0f00d95b1 --- /dev/null +++ b/inc/lang/zh/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>本邮件由位于 @DOKUWIKIURL@ 的 Dokuwiki 自动创建。</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/zh/resetpwd.txt b/inc/lang/zh/resetpwd.txt new file mode 100644 index 000000000..a9d59fdd3 --- /dev/null +++ b/inc/lang/zh/resetpwd.txt @@ -0,0 +1,3 @@ +====== 设置新密码 ====== + +请为您在本维基上的账户设置一个新密码。
\ No newline at end of file diff --git a/inc/load.php b/inc/load.php index f3ab5bcdd..b676518e7 100644 --- a/inc/load.php +++ b/inc/load.php @@ -49,6 +49,7 @@ function load_autoload($name){ static $classes = null; if(is_null($classes)) $classes = array( 'DokuHTTPClient' => DOKU_INC.'inc/HTTPClient.php', + 'HTTPClient' => DOKU_INC.'inc/HTTPClient.php', 'JSON' => DOKU_INC.'inc/JSON.php', 'adLDAP' => DOKU_INC.'inc/adLDAP.php', 'Diff' => DOKU_INC.'inc/DifferenceEngine.php', @@ -61,6 +62,7 @@ function load_autoload($name){ 'Doku_Event' => DOKU_INC.'inc/events.php', 'Doku_Event_Handler' => DOKU_INC.'inc/events.php', 'EmailAddressValidator' => DOKU_INC.'inc/EmailAddressValidator.php', + 'Input' => DOKU_INC.'inc/Input.class.php', 'JpegMeta' => DOKU_INC.'inc/JpegMeta.php', 'SimplePie' => DOKU_INC.'inc/SimplePie.php', 'FeedParser' => DOKU_INC.'inc/FeedParser.php', @@ -76,8 +78,9 @@ function load_autoload($name){ 'SafeFN' => DOKU_INC.'inc/SafeFN.class.php', 'Sitemapper' => DOKU_INC.'inc/Sitemapper.php', 'PassHash' => DOKU_INC.'inc/PassHash.class.php', + 'Mailer' => DOKU_INC.'inc/Mailer.class.php', 'RemoteAPI' => DOKU_INC.'inc/remote.php', - 'RemoteAPICore' => DOKU_INC.'inc/RemoteAPICore.php', + 'RemoteAPICore' => DOKU_INC.'inc/RemoteAPICore.php', 'DokuWiki_Action_Plugin' => DOKU_PLUGIN.'action.php', 'DokuWiki_Admin_Plugin' => DOKU_PLUGIN.'admin.php', @@ -94,11 +97,12 @@ function load_autoload($name){ // Plugin loading if(preg_match('/^(helper|syntax|action|admin|renderer|remote)_plugin_([^_]+)(?:_([^_]+))?$/', $name, $m)) { - //try to load the wanted plugin file - // include, but be silent. Maybe some other autoloader has an idea - // how to load this class. + // try to load the wanted plugin file $c = ((count($m) === 4) ? "/{$m[3]}" : ''); - @include DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php"; + $plg = DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php"; + if(@file_exists($plg)){ + include DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php"; + } return; } } diff --git a/inc/media.php b/inc/media.php index dd0193fa0..2462a1deb 100644 --- a/inc/media.php +++ b/inc/media.php @@ -420,7 +420,7 @@ function media_upload_finish($fn_tmp, $fn, $id, $imime, $overwrite, $move = 'mov media_notify($id,$fn,$imime,$old); // add a log entry to the media changelog if ($REV){ - addMediaLogEntry($new, $id, DOKU_CHANGE_TYPE_REVERT, $lang['restored'], $REV); + addMediaLogEntry($new, $id, DOKU_CHANGE_TYPE_REVERT, sprintf($lang['restored'], dformat($REV)), $REV); } elseif ($overwrite) { addMediaLogEntry($new, $id, DOKU_CHANGE_TYPE_EDIT); } else { @@ -516,6 +516,7 @@ function media_contentcheck($file,$mime){ * Send a notify mail on uploads * * @author Andreas Gohr <andi@splitbrain.org> + * @fixme this should embed thumbnails of images in HTML version */ function media_notify($id,$file,$mime,$old_rev=false){ global $lang; @@ -523,31 +524,24 @@ function media_notify($id,$file,$mime,$old_rev=false){ global $INFO; if(empty($conf['notify'])) return; //notify enabled? - $ip = clientIP(); - $text = rawLocale('uploadmail'); - $text = str_replace('@DATE@',dformat(),$text); - $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text); - $text = str_replace('@IPADDRESS@',$ip,$text); - $text = str_replace('@HOSTNAME@',gethostsbyaddrs($ip),$text); - $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text); - $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text); - $text = str_replace('@MIME@',$mime,$text); - $text = str_replace('@MEDIA@',ml($id,'',true,'&',true),$text); - $text = str_replace('@SIZE@',filesize_h(filesize($file)),$text); - if ($old_rev && $conf['mediarevisions']) { - $text = str_replace('@OLD@', ml($id, "rev=$old_rev", true, '&', true), $text); - } else { - $text = str_replace('@OLD@', '', $text); - } + $trep = array( + 'MIME' => $mime, + 'MEDIA' => ml($id,'',true,'&',true), + 'SIZE' => filesize_h(filesize($file)), + ); - if(empty($conf['mailprefix'])) { - $subject = '['.$conf['title'].'] '.$lang['mail_upload'].' '.$id; + if ($old_rev && $conf['mediarevisions']) { + $trep['OLD'] = ml($id, "rev=$old_rev", true, '&', true); } else { - $subject = '['.$conf['mailprefix'].'] '.$lang['mail_upload'].' '.$id; + $trep['OLD'] = '---'; } - mail_send($conf['notify'],$subject,$text,$conf['mailfrom']); + $mail = new Mailer(); + $mail->to($conf['notify']); + $mail->subject($lang['mail_upload'].' '.$id); + $mail->setBody($text,$trep); + return $mail->send(); } /** @@ -1608,7 +1602,35 @@ function media_uploadform($ns, $auth, $fullscreen = false){ echo NL.'<div id="mediamanager__uploader">'.NL; html_form('upload', $form); + echo '</div>'.NL; + + echo '<p class="maxsize">'; + printf($lang['maxuploadsize'],filesize_h(media_getuploadsize())); + echo '</p>'.NL; + +} + +/** + * Returns the size uploaded files may have + * + * This uses a conservative approach using the lowest number found + * in any of the limiting ini settings + * + * @returns int size in bytes + */ +function media_getuploadsize(){ + $okay = 0; + + $post = (int) php_to_byte(@ini_get('post_max_size')); + $suho = (int) php_to_byte(@ini_get('suhosin.post.max_value_length')); + $upld = (int) php_to_byte(@ini_get('upload_max_filesize')); + + if($post && ($post < $okay || $okay == 0)) $okay = $post; + if($suho && ($suho < $okay || $okay == 0)) $okay = $suho; + if($upld && ($upld < $okay || $okay == 0)) $okay = $upld; + + return $okay; } /** diff --git a/inc/pageutils.php b/inc/pageutils.php index db00258e2..c94d14624 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -355,19 +355,21 @@ function mediaFN($id, $rev=''){ } /** - * Returns the full filepath to a localized textfile if local + * Returns the full filepath to a localized file if local * version isn't found the english one is returned * + * @param string $id The id of the local file + * @param string $ext The file extension (usually txt) * @author Andreas Gohr <andi@splitbrain.org> */ -function localeFN($id){ +function localeFN($id,$ext='txt'){ global $conf; - $file = DOKU_CONF.'/lang/'.$conf['lang'].'/'.$id.'.txt'; + $file = DOKU_CONF.'/lang/'.$conf['lang'].'/'.$id.'.'.$ext; if(!@file_exists($file)){ - $file = DOKU_INC.'inc/lang/'.$conf['lang'].'/'.$id.'.txt'; + $file = DOKU_INC.'inc/lang/'.$conf['lang'].'/'.$id.'.'.$ext; if(!@file_exists($file)){ //fall back to english - $file = DOKU_INC.'inc/lang/en/'.$id.'.txt'; + $file = DOKU_INC.'inc/lang/en/'.$id.'.'.$ext; } } return $file; diff --git a/inc/parserutils.php b/inc/parserutils.php index 9384929bf..25d7cf131 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -739,7 +739,7 @@ function p_get_first_heading($id, $render=METADATA_RENDER_USING_SIMPLE_CACHE){ * @author Andreas Gohr <andi@splitbrain.org> */ function p_xhtml_cached_geshi($code, $language, $wrapper='pre') { - global $conf, $config_cascade; + global $conf, $config_cascade, $INPUT; $language = strtolower($language); // remove any leading or trailing blank lines @@ -747,7 +747,7 @@ function p_xhtml_cached_geshi($code, $language, $wrapper='pre') { $cache = getCacheName($language.$code,".code"); $ctime = @filemtime($cache); - if($ctime && !$_REQUEST['purge'] && + if($ctime && !$INPUT->bool('purge') && $ctime > filemtime(DOKU_INC.'inc/geshi.php') && // geshi changed $ctime > @filemtime(DOKU_INC.'inc/geshi/'.$language.'.php') && // language syntax definition changed $ctime > filemtime(reset($config_cascade['main']['default']))){ // dokuwiki changed diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php index 208d7dae9..11636fb91 100644 --- a/inc/plugincontroller.class.php +++ b/inc/plugincontroller.class.php @@ -169,7 +169,7 @@ class Doku_Plugin_Controller { $plugins = array(); foreach($files as $file) { if(file_exists($file)) { - @include_once($file); + include_once($file); } } return $plugins; diff --git a/inc/subscription.php b/inc/subscription.php index c94f17ad0..d1ee0397a 100644 --- a/inc/subscription.php +++ b/inc/subscription.php @@ -377,18 +377,20 @@ function subscription_send_list($subscriber_mail, $ids, $ns_id) { */ function subscription_send($subscriber_mail, $replaces, $subject, $id, $template) { global $conf; + global $lang; $text = rawLocale($template); - $replaces = array_merge($replaces, array('TITLE' => $conf['title'], - 'DOKUWIKIURL' => DOKU_URL, - 'PAGE' => $id)); - - foreach ($replaces as $key => $substitution) { - $text = str_replace('@'.strtoupper($key).'@', $substitution, $text); - } + $trep = array_merge($replaces, array('PAGE' => $id)); - global $lang; $subject = $lang['mail_' . $subject] . ' ' . $id; - mail_send('', '['.$conf['title'].'] '. $subject, $text, - $conf['mailfrom'], '', $subscriber_mail); + $mail = new Mailer(); + $mail->bcc($subscriber_mail); + $mail->subject($subject); + $mail->setBody($text,$trep); + $mail->setHeader( + 'List-Unsubscribe', + '<'.wl($id,array('do'=>'subscribe'),true,'&').'>', + false + ); + return $mail->send(); } diff --git a/inc/template.php b/inc/template.php index 131f34020..a18d7151f 100644 --- a/inc/template.php +++ b/inc/template.php @@ -576,7 +576,7 @@ function tpl_get_action($type) { $accesskey = 'v'; } }else{ - $params = ''; + $params = array(); $type = 'show'; $accesskey = 'v'; } @@ -593,7 +593,7 @@ function tpl_get_action($type) { break; case 'top': $accesskey = 'x'; - $params = ''; + $params = array(); $id = '#dokuwiki__top'; break; case 'back': @@ -602,7 +602,7 @@ function tpl_get_action($type) { return false; } $id = $parent; - $params = ''; + $params = array(); $accesskey = 'b'; break; case 'login': diff --git a/inc/utf8.php b/inc/utf8.php index 54986e14e..7b7c19c6b 100644 --- a/inc/utf8.php +++ b/inc/utf8.php @@ -103,9 +103,9 @@ if(!function_exists('utf8_substr')){ * * @author Harry Fuecks <hfuecks@gmail.com> * @author Chris Smith <chris@jalakai.co.uk> - * @param string - * @param integer number of UTF-8 characters offset (from left) - * @param integer (optional) length in UTF-8 characters from offset + * @param string $str + * @param int $offset number of UTF-8 characters offset (from left) + * @param int $length (optional) length in UTF-8 characters from offset * @return mixed string or false if failure */ function utf8_substr($str, $offset, $length = null) { @@ -221,6 +221,8 @@ if(!function_exists('utf8_ltrim')){ * * @author Andreas Gohr <andi@splitbrain.org> * @see ltrim() + * @param string $str + * @param string $charlist * @return string */ function utf8_ltrim($str,$charlist=''){ @@ -239,6 +241,8 @@ if(!function_exists('utf8_rtrim')){ * * @author Andreas Gohr <andi@splitbrain.org> * @see rtrim() + * @param string $str + * @param string $charlist * @return string */ function utf8_rtrim($str,$charlist=''){ @@ -257,6 +261,8 @@ if(!function_exists('utf8_trim')){ * * @author Andreas Gohr <andi@splitbrain.org> * @see trim() + * @param string $str + * @param string $charlist * @return string */ function utf8_trim($str,$charlist='') { @@ -348,7 +354,7 @@ if(!function_exists('utf8_ucwords')){ * You don't need to call this yourself * * @author Harry Fuecks - * @param array of matches corresponding to a single word + * @param array $matches matches corresponding to a single word * @return string with first char of the word in uppercase * @see utf8_ucwords * @see utf8_strtoupper @@ -408,9 +414,9 @@ if(!function_exists('utf8_stripspecials')){ * @param string $string The UTF8 string to strip of special chars * @param string $repl Replace special with this string * @param string $additional Additional chars to strip (used in regexp char class) + * @return string */ function utf8_stripspecials($string,$repl='',$additional=''){ - global $UTF8_SPECIAL_CHARS; global $UTF8_SPECIAL_CHARS2; static $specials = null; @@ -493,7 +499,7 @@ if(!function_exists('utf8_unhtml')){ * @author Tom N Harris <tnharris@whoopdedo.org> * @param string $str UTF-8 encoded string * @param boolean $entities Flag controlling decoding of named entities. - * @return UTF-8 encoded string with numeric (and named) entities replaced. + * @return string UTF-8 encoded string with numeric (and named) entities replaced. */ function utf8_unhtml($str, $entities=null) { static $decoder = null; @@ -509,6 +515,12 @@ if(!function_exists('utf8_unhtml')){ } if(!function_exists('utf8_decode_numeric')){ + /** + * Decodes numeric HTML entities to their correct UTF-8 characters + * + * @param $ent string A numeric entity + * @return string + */ function utf8_decode_numeric($ent) { switch ($ent[2]) { case 'X': @@ -524,16 +536,37 @@ if(!function_exists('utf8_decode_numeric')){ } if(!class_exists('utf8_entity_decoder')){ + /** + * Encapsulate HTML entity decoding tables + */ class utf8_entity_decoder { var $table; + + /** + * Initializes the decoding tables + */ function __construct() { $table = get_html_translation_table(HTML_ENTITIES); $table = array_flip($table); $this->table = array_map(array(&$this,'makeutf8'), $table); } + + /** + * Wrapper aorund unicode_to_utf8() + * + * @param $c string + * @return mixed + */ function makeutf8($c) { return unicode_to_utf8(array(ord($c))); } + + /** + * Decodes any HTML entity to it's correct UTF-8 char equivalent + * + * @param $ent string An entity + * @return string + */ function decode($ent) { if ($ent[1] == '#') { return utf8_decode_numeric($ent); @@ -562,8 +595,8 @@ if(!function_exists('utf8_to_unicode')){ * * @author <hsivonen@iki.fi> * @author Harry Fuecks <hfuecks@gmail.com> - * @param string UTF-8 encoded string - * @param boolean Check for invalid sequences? + * @param string $str UTF-8 encoded string + * @param boolean $strict Check for invalid sequences? * @return mixed array of unicode code points or false if UTF-8 invalid * @see unicode_to_utf8 * @link http://hsivonen.iki.fi/php-utf8/ @@ -735,8 +768,8 @@ if(!function_exists('unicode_to_utf8')){ * output buffering to concatenate the UTF-8 string (faster) as well as * reference the array by it's keys * - * @param array of unicode code points representing a string - * @param boolean Check for invalid sequences? + * @param array $arr of unicode code points representing a string + * @param boolean $strict Check for invalid sequences? * @return mixed UTF-8 string or false if array contains invalid code points * @author <hsivonen@iki.fi> * @author Harry Fuecks <hfuecks@gmail.com> @@ -855,8 +888,8 @@ if(!function_exists('utf8_bad_replace')){ * * @author Harry Fuecks <hfuecks@gmail.com> * @see http://www.w3.org/International/questions/qa-forms-utf-8 - * @param string to search - * @param string to replace bad bytes with (defaults to '?') - use ASCII + * @param string $str to search + * @param string $replace to replace bad bytes with (defaults to '?') - use ASCII * @return string */ function utf8_bad_replace($str, $replace = '') { @@ -1000,7 +1033,7 @@ if(!UTF8_MBSTRING){ /** * UTF-8 Case lookup table * - * This lookuptable defines the lower case letters to their correspponding + * This lookuptable defines the lower case letters to their corresponding * upper case letter in UTF-8 * * @author Andreas Gohr <andi@splitbrain.org> |