"""
pygments . lexers . ride
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Lexer for the Ride programming language .
: copyright : Copyright 2006 - 2023 by the Pygments team , see AUTHORS .
: license : BSD , see LICENSE for details .
"""
from pygments . lexer import RegexLexer , words , include
from pygments . token import Comment , Keyword , Name , Number , Punctuation , \
String , Text
__all__ = [ ' RideLexer ' ]
class RideLexer ( RegexLexer ) :
"""
For ` Ride < https : / / docs . wavesplatform . com / en / ride / about - ride . html > ` _
source code .
. . versionadded : : 2.6
"""
name = ' Ride '
aliases = [ ' ride ' ]
filenames = [ ' *.ride ' ]
mimetypes = [ ' text/x-ride ' ]
validName = r ' [a-zA-Z_][a-zA-Z0-9_ \' ]* '
builtinOps = (
' || ' , ' | ' , ' >= ' , ' > ' , ' == ' , ' ! ' ,
' = ' , ' <= ' , ' < ' , ' :: ' , ' :+ ' , ' : ' , ' != ' , ' / ' ,
' . ' , ' => ' , ' - ' , ' + ' , ' * ' , ' && ' , ' % ' , ' ++ ' ,
)
globalVariablesName = (
' NOALG ' , ' MD5 ' , ' SHA1 ' , ' SHA224 ' , ' SHA256 ' , ' SHA384 ' , ' SHA512 ' ,
' SHA3224 ' , ' SHA3256 ' , ' SHA3384 ' , ' SHA3512 ' , ' nil ' , ' this ' , ' unit ' ,
' height ' , ' lastBlock ' , ' Buy ' , ' Sell ' , ' CEILING ' , ' FLOOR ' , ' DOWN ' ,
' HALFDOWN ' , ' HALFEVEN ' , ' HALFUP ' , ' UP ' ,
)
typesName = (
' Unit ' , ' Int ' , ' Boolean ' , ' ByteVector ' , ' String ' , ' Address ' , ' Alias ' ,
' Transfer ' , ' AssetPair ' , ' DataEntry ' , ' Order ' , ' Transaction ' ,
' GenesisTransaction ' , ' PaymentTransaction ' , ' ReissueTransaction ' ,
' BurnTransaction ' , ' MassTransferTransaction ' , ' ExchangeTransaction ' ,
' TransferTransaction ' , ' SetAssetScriptTransaction ' ,
' InvokeScriptTransaction ' , ' IssueTransaction ' , ' LeaseTransaction ' ,
' LeaseCancelTransaction ' , ' CreateAliasTransaction ' ,
' SetScriptTransaction ' , ' SponsorFeeTransaction ' , ' DataTransaction ' ,
' WriteSet ' , ' AttachedPayment ' , ' ScriptTransfer ' , ' TransferSet ' ,
' ScriptResult ' , ' Invocation ' , ' Asset ' , ' BlockInfo ' , ' Issue ' , ' Reissue ' ,
' Burn ' , ' NoAlg ' , ' Md5 ' , ' Sha1 ' , ' Sha224 ' , ' Sha256 ' , ' Sha384 ' , ' Sha512 ' ,
' Sha3224 ' , ' Sha3256 ' , ' Sha3384 ' , ' Sha3512 ' , ' BinaryEntry ' ,
' BooleanEntry ' , ' IntegerEntry ' , ' StringEntry ' , ' List ' , ' Ceiling ' ,
' Down ' , ' Floor ' , ' HalfDown ' , ' HalfEven ' , ' HalfUp ' , ' Up ' ,
)
functionsName = (
' fraction ' , ' size ' , ' toBytes ' , ' take ' , ' drop ' , ' takeRight ' , ' dropRight ' ,
' toString ' , ' isDefined ' , ' extract ' , ' throw ' , ' getElement ' , ' value ' ,
' cons ' , ' toUtf8String ' , ' toInt ' , ' indexOf ' , ' lastIndexOf ' , ' split ' ,
' parseInt ' , ' parseIntValue ' , ' keccak256 ' , ' blake2b256 ' , ' sha256 ' ,
' sigVerify ' , ' toBase58String ' , ' fromBase58String ' , ' toBase64String ' ,
' fromBase64String ' , ' transactionById ' , ' transactionHeightById ' ,
' getInteger ' , ' getBoolean ' , ' getBinary ' , ' getString ' ,
' addressFromPublicKey ' , ' addressFromString ' , ' addressFromRecipient ' ,
' assetBalance ' , ' wavesBalance ' , ' getIntegerValue ' , ' getBooleanValue ' ,
' getBinaryValue ' , ' getStringValue ' , ' addressFromStringValue ' ,
' assetInfo ' , ' rsaVerify ' , ' checkMerkleProof ' , ' median ' ,
' valueOrElse ' , ' valueOrErrorMessage ' , ' contains ' , ' log ' , ' pow ' ,
' toBase16String ' , ' fromBase16String ' , ' blockInfoByHeight ' ,
' transferTransactionById ' ,
)
reservedWords = words ( (
' match ' , ' case ' , ' else ' , ' func ' , ' if ' ,
' let ' , ' then ' , ' @Callable ' , ' @Verifier ' ,
) , suffix = r ' \ b ' )
tokens = {
' root ' : [
# Comments
( r ' #.* ' , Comment . Single ) ,
# Whitespace
( r ' \ s+ ' , Text ) ,
# Strings
( r ' " ' , String , ' doublequote ' ) ,
( r ' utf8 \' ' , String , ' utf8quote ' ) ,
( r ' base(58|64|16) \' ' , String , ' singlequote ' ) ,
# Keywords
( reservedWords , Keyword . Reserved ) ,
( r ' \ { -#.*?#- \ } ' , Keyword . Reserved ) ,
( r ' FOLD< \ d+> ' , Keyword . Reserved ) ,
# Types
( words ( typesName ) , Keyword . Type ) ,
# Main
# (specialName, Keyword.Reserved),
# Prefix Operators
( words ( builtinOps , prefix = r ' \ ( ' , suffix = r ' \ ) ' ) , Name . Function ) ,
# Infix Operators
( words ( builtinOps ) , Name . Function ) ,
( words ( globalVariablesName ) , Name . Function ) ,
( words ( functionsName ) , Name . Function ) ,
# Numbers
include ( ' numbers ' ) ,
# Variable Names
( validName , Name . Variable ) ,
# Parens
( r ' [,() \ [ \ ] {} ] ' , Punctuation ) ,
] ,
' doublequote ' : [
( r ' \\ u[0-9a-fA-F] {4} ' , String . Escape ) ,
( r ' \\ [nrfvb \\ " ] ' , String . Escape ) ,
( r ' [^ " ] ' , String ) ,
( r ' " ' , String , ' #pop ' ) ,
] ,
' utf8quote ' : [
( r ' \\ u[0-9a-fA-F] {4} ' , String . Escape ) ,
( r ' \\ [nrfvb \\ \' ] ' , String . Escape ) ,
( r ' [^ \' ] ' , String ) ,
( r ' \' ' , String , ' #pop ' ) ,
] ,
' singlequote ' : [
( r ' [^ \' ] ' , String ) ,
( r ' \' ' , String , ' #pop ' ) ,
] ,
' numbers ' : [
( r ' _? \ d+ ' , Number . Integer ) ,
] ,
}