<?php
/*************************************************************************************
 * rust.php
 * --------
 * Author: Edward Hart (edward.dan.hart@gmail.com)
 * Copyright: (c) 2013 Edward Hart
 * Release Version: 1.0.9.0
 * Date Started: 2013/10/20
 *
 * Rust language file for GeSHi.
 *
 * CHANGES
 * -------
 * 2014/03/18
 *   -  Added support for raw strings
 *   -  Color symbols
 * 2013/10/20
 *   -  First Release
 *
 * TODO (updated 2013/10/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' => 'Rust',

    'COMMENT_SINGLE' => array('//'),
    'COMMENT_MULTI' => array('/*' => '*/'),
    'COMMENT_REGEXP' => array(
        // Raw strings
        1 => '/\\br(\\#*)".*?"\\1/'
        ),

    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
    'QUOTEMARKS' => array("'", '"'),
    'ESCAPE_CHAR' => '',
    'ESCAPE_REGEXP' => array(
        //Simple Single Char Escapes
        1 => "#\\\\[\\\\nrt\'\"?\n]#i",
        //Hexadecimal Char Specs
        2 => "#\\\\x[\da-fA-F]{2}#",
        //Hexadecimal Char Specs
        3 => "#\\\\u[\da-fA-F]{4}#",
        //Hexadecimal Char Specs
        4 => "#\\\\U[\da-fA-F]{8}#",
        //Octal Char Specs
        5 => "#\\\\[0-7]{1,3}#"
        ),
    'NUMBERS' =>
        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,

    'KEYWORDS' => array(
        // Keywords
        1 => array(
            'alt', 'as', 'assert', 'break', 'const', 'continue', 'copy', 'do',
            'else', 'enum', 'extern', 'fn', 'for', 'if',
            'impl', 'in', 'let', 'log', 'loop', 'match', 'mod', 'mut', 'of',
            'priv', 'pub', 'ref', 'return', 'self', 'static', 'struct', 'super',
            'to', 'trait', 'type', 'unsafe', 'use', 'with', 'while'
            ),
        // Boolean values
        2 => array( 'true', 'false' ),
        // Structs and built-in types
        3 => array(
            'u8', 'i8',
            'u16', 'i16',
            'u32', 'i32',
            'u64', 'i64',
            'f32', 'f64',
            'int', 'uint',
            'float',
            'bool',
            'str', 'char',
            'Argument', 'AsyncWatcher', 'BorrowRecord', 'BufReader',
            'BufWriter', 'BufferedReader', 'BufferedStream', 'BufferedWriter',
            'ByRef', 'ByteIterator', 'CFile', 'CString', 'CStringIterator',
            'Cell', 'Chain', 'Chan', 'ChanOne', 'CharIterator',
            'CharOffsetIterator', 'CharRange', 'CharSplitIterator',
            'CharSplitNIterator', 'ChunkIter', 'Condition', 'ConnectRequest',
            'Coroutine', 'Counter', 'CrateMap', 'Cycle', 'DeflateWriter',
            'Display', 'ElementSwaps', 'Enumerate', 'Exp', 'Exp1', 'FileDesc',
            'FileReader', 'FileStat', 'FileStream', 'FileWriter', 'Filter',
            'FilterMap', 'FlatMap', 'FormatSpec', 'Formatter', 'FsRequest',
            'Fuse', 'GarbageCollector', 'GetAddrInfoRequest', 'Handle',
            'HashMap', 'HashMapIterator', 'HashMapMoveIterator',
            'HashMapMutIterator', 'HashSet', 'HashSetIterator',
            'HashSetMoveIterator', 'Hint', 'IdleWatcher', 'InflateReader',
            'Info', 'Inspect', 'Invert', 'IoError', 'Isaac64Rng', 'IsaacRng',
            'LineBufferedWriter', 'Listener', 'LocalHeap', 'LocalStorage',
            'Loop', 'Map', 'MatchesIndexIterator', 'MemReader', 'MemWriter',
            'MemoryMap', 'ModEntry', 'MoveIterator', 'MovePtrAdaptor',
            'MoveRevIterator', 'NoOpRunnable', 'NonCopyable', 'Normal',
            'OSRng', 'OptionIterator', 'Parser', 'Path', 'Peekable',
            'Permutations', 'Pipe', 'PipeStream', 'PluralArm', 'Port',
            'PortOne', 'Process', 'ProcessConfig', 'ProcessOptions',
            'ProcessOutput', 'RC', 'RSplitIterator', 'RandSample', 'Range',
            'RangeInclusive', 'RangeStep', 'RangeStepInclusive', 'Rc', 'RcMut',
            'ReaderRng', 'Repeat', 'ReprVisitor', 'RequestData',
            'ReseedWithDefault', 'ReseedingRng', 'Scan', 'SchedOpts',
            'SelectArm', 'SharedChan', 'SharedPort', 'SignalWatcher',
            'SipState', 'Skip', 'SkipWhile', 'SocketAddr', 'SplitIterator',
            'StackPool', 'StackSegment', 'StandardNormal', 'StdErrLogger',
            'StdIn', 'StdOut', 'StdReader', 'StdRng', 'StdWriter',
            'StrSplitIterator', 'StreamWatcher', 'TTY', 'Take', 'TakeWhile',
            'Task', 'TaskBuilder', 'TaskOpts', 'TcpAcceptor', 'TcpListener',
            'TcpStream', 'TcpWatcher', 'Timer', 'TimerWatcher', 'TrieMap',
            'TrieMapIterator', 'TrieSet', 'TrieSetIterator', 'Tube',
            'UdpSendRequest', 'UdpSocket', 'UdpStream', 'UdpWatcher', 'Unfold',
            'UnixAcceptor', 'UnixListener', 'UnixStream', 'Unwinder',
            'UvAddrInfo', 'UvError', 'UvEventLoop', 'UvFileStream',
            'UvIoFactory', 'UvPausibleIdleCallback', 'UvPipeStream',
            'UvProcess', 'UvRemoteCallback', 'UvSignal', 'UvTTY',
            'UvTcpAcceptor', 'UvTcpListener', 'UvTcpStream', 'UvTimer',
            'UvUdpSocket', 'UvUnboundPipe', 'UvUnixAcceptor', 'UvUnixListener',
            'VecIterator', 'VecMutIterator', 'Weighted', 'WeightedChoice',
            'WindowIter', 'WriteRequest', 'XorShiftRng', 'Zip', 'addrinfo',
            'uv_buf_t', 'uv_err_data', 'uv_process_options_t', 'uv_stat_t',
            'uv_stdio_container_t', 'uv_timespec_t'
            ),
        // Enums
        4 => array(
            'Alignment', 'Count', 'Either', 'ExponentFormat', 'FPCategory',
            'FileAccess', 'FileMode', 'Flag', 'IoErrorKind', 'IpAddr',
            'KeyValue', 'MapError', 'MapOption', 'MemoryMapKind', 'Method',
            'NullByteResolution', 'Option', 'Ordering', 'PathPrefix', 'Piece',
            'PluralKeyword', 'Position', 'Protocol', 'Result', 'SchedHome',
            'SchedMode', 'SeekStyle', 'SendStr', 'SignFormat',
            'SignificantDigits', 'Signum', 'SocketType', 'StdioContainer',
            'TaskResult', 'TaskType', 'UvSocketAddr', 'Void', 'uv_handle_type',
            'uv_membership', 'uv_req_type'
            )
        ),
    'SYMBOLS' => array(
        '(', ')', '{', '}', '[', ']',
        '+', '-', '*', '/', '%',
        '&', '|', '^', '!', '<', '>', '~', '@',
        ':',
        ';', ',',
        '='
        ),

    'CASE_SENSITIVE' => array(
        GESHI_COMMENTS => false,
        1 => true,
        2 => true,
        3 => true,
        4 => true
        ),

    'STYLES' => array(
        'KEYWORDS' => array(
            1 => 'color: #708;',
            2 => 'color: #219;',
            3 => 'color: #05a;',
            4 => 'color: #800;'
            ),
        'COMMENTS' => array(
            0 => 'color: #a50; font-style: italic;',
            1 => 'color: #a11;',
            'MULTI' => 'color: #a50; font-style: italic;'
            ),
        'ESCAPE_CHAR' => array(
            0 => 'color: #000099; font-weight: bold;',
            1 => 'color: #000099; font-weight: bold;',
            2 => 'color: #660099; font-weight: bold;',
            3 => 'color: #660099; font-weight: bold;',
            4 => 'color: #660099; font-weight: bold;',
            5 => 'color: #006699; font-weight: bold;',
            'HARD' => ''
            ),
        'STRINGS' => array(
            0 => 'color: #a11;'
            ),
        'NUMBERS' => array(
            0 => 'color: #0000dd;',
            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
            ),
        'BRACKETS' => array(''),
        'METHODS' => array(
            1 => 'color: #164;'
            ),
        'SYMBOLS' => array(
            0 => 'color: #339933;'
            ),
        'REGEXPS' => array(
            ),
        'SCRIPT' => 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(
        ),
    'TAB_WIDTH' => 4
);
