rouge 3.20.0 → 3.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/rouge/demos/brightscript +6 -0
 - data/lib/rouge/demos/janet +3 -0
 - data/lib/rouge/demos/ssh +4 -0
 - data/lib/rouge/lexers/batchfile.rb +1 -1
 - data/lib/rouge/lexers/brightscript.rb +147 -0
 - data/lib/rouge/lexers/cpp.rb +5 -4
 - data/lib/rouge/lexers/css.rb +3 -1
 - data/lib/rouge/lexers/docker.rb +1 -1
 - data/lib/rouge/lexers/html.rb +6 -6
 - data/lib/rouge/lexers/janet.rb +217 -0
 - data/lib/rouge/lexers/javascript.rb +3 -1
 - data/lib/rouge/lexers/jinja.rb +22 -7
 - data/lib/rouge/lexers/julia.rb +4 -2
 - data/lib/rouge/lexers/perl.rb +21 -3
 - data/lib/rouge/lexers/powershell.rb +2 -0
 - data/lib/rouge/lexers/rego.rb +27 -12
 - data/lib/rouge/lexers/sass/common.rb +1 -0
 - data/lib/rouge/lexers/ssh.rb +33 -0
 - data/lib/rouge/lexers/twig.rb +4 -4
 - data/lib/rouge/lexers/xml.rb +5 -3
 - data/lib/rouge/lexers/yaml.rb +5 -3
 - data/lib/rouge/version.rb +1 -1
 - metadata +8 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8ef1072cc2523dba637a191d195865b0b2fb9f38c4f6d9961fb58748306f6cd1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4cd1b0d5262fa8a1d4ddb564cf4e9a185d6e8043bee0261f119e7a8ccb81e1fd
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 04a39cda7513ce8084b6cdddd3016e7ca679218688dfb2dcb6f6fd8a0e627ec189f38a31ba2c44bd2a8c5b16191e24d0f343f860db5dfbcbb7ca49b92aaff197
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 50172d87860fa9fb4b187dee66c72954ce926e0d73f3e78e1a15a7f3437e749d48b2f935fa6ad08be457a6dd317a3c5c20340a7f7cc1621825b97887e82822c1
         
     | 
    
        data/lib/rouge/demos/ssh
    ADDED
    
    
| 
         @@ -0,0 +1,147 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*- #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Rouge
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Lexers
         
     | 
| 
      
 6 
     | 
    
         
            +
                class Brightscript < RegexLexer
         
     | 
| 
      
 7 
     | 
    
         
            +
                  title "BrightScript"
         
     | 
| 
      
 8 
     | 
    
         
            +
                  desc "BrightScript Programming Language (https://developer.roku.com/en-ca/docs/references/brightscript/language/brightscript-language-reference.md)"
         
     | 
| 
      
 9 
     | 
    
         
            +
                  tag 'brightscript'
         
     | 
| 
      
 10 
     | 
    
         
            +
                  aliases 'bs', 'brs'
         
     | 
| 
      
 11 
     | 
    
         
            +
                  filenames '*.brs'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  # https://developer.roku.com/en-ca/docs/references/brightscript/language/global-utility-functions.md
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # https://developer.roku.com/en-ca/docs/references/brightscript/language/global-string-functions.md
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # https://developer.roku.com/en-ca/docs/references/brightscript/language/global-math-functions.md
         
     | 
| 
      
 16 
     | 
    
         
            +
                  def self.name_builtin
         
     | 
| 
      
 17 
     | 
    
         
            +
                    @name_builtin ||= Set.new %w(
         
     | 
| 
      
 18 
     | 
    
         
            +
                      ABS ASC ATN CDBL CHR CINT CONTROL COPYFILE COS CREATEDIRECTORY CSNG
         
     | 
| 
      
 19 
     | 
    
         
            +
                      DELETEDIRECTORY DELETEFILE EXP FINDMEMBERFUNCTION FINDNODE FIX
         
     | 
| 
      
 20 
     | 
    
         
            +
                      FORMATDRIVEFORMATJSON GETINTERFACE INSTR INT LCASE LEFT LEN LISTDIR
         
     | 
| 
      
 21 
     | 
    
         
            +
                      LOG MATCHFILES MID MOVEFILE OBSERVEFIELD PARSEJSON PARSEXML
         
     | 
| 
      
 22 
     | 
    
         
            +
                      READASCIIFILE REBOOTSYSTEM RIGHT RND RUNGARBAGECOLLECTOR SGN SIN
         
     | 
| 
      
 23 
     | 
    
         
            +
                      SLEEP SQR STR STRI STRING STRINGI STRTOI SUBSTITUTE TANTEXTTOP TEXT
         
     | 
| 
      
 24 
     | 
    
         
            +
                      TRUCASE UPTIME VALVISIBLE VISIBLE WAIT
         
     | 
| 
      
 25 
     | 
    
         
            +
                    )
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  # https://developer.roku.com/en-ca/docs/references/brightscript/language/reserved-words.md
         
     | 
| 
      
 29 
     | 
    
         
            +
                  def self.keyword_reserved
         
     | 
| 
      
 30 
     | 
    
         
            +
                    @keyword_reserved ||= Set.new %w(
         
     | 
| 
      
 31 
     | 
    
         
            +
                      BOX CREATEOBJECT DIM EACH ELSE ELSEIF END ENDFUNCTION ENDIF ENDSUB
         
     | 
| 
      
 32 
     | 
    
         
            +
                      ENDWHILE EVAL EXIT EXITWHILE FALSE FOR FUNCTION GETGLOBALAA
         
     | 
| 
      
 33 
     | 
    
         
            +
                      GETLASTRUNCOMPILEERROR GETLASTRUNRUNTIMEERROR GOTO IF IN INVALID LET
         
     | 
| 
      
 34 
     | 
    
         
            +
                      LINE_NUM M NEXT OBJFUN POS PRINT REM RETURN RUN STEP STOP SUB TAB TO
         
     | 
| 
      
 35 
     | 
    
         
            +
                      TRUE TYPE WHILE
         
     | 
| 
      
 36 
     | 
    
         
            +
                    )
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  # These keywords are present in BrightScript, but not supported in standard .brs files
         
     | 
| 
      
 40 
     | 
    
         
            +
                  def self.keyword_reserved_unsupported
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @keyword_reserved_unsupported ||= Set.new %w(
         
     | 
| 
      
 42 
     | 
    
         
            +
                      CLASS CONST IMPORT LIBRARY NAMESPACE PRIVATE PROTECTED PUBLIC
         
     | 
| 
      
 43 
     | 
    
         
            +
                    )
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  # https://developer.roku.com/en-ca/docs/references/brightscript/language/expressions-variables-types.md
         
     | 
| 
      
 47 
     | 
    
         
            +
                  def self.keyword_type
         
     | 
| 
      
 48 
     | 
    
         
            +
                    @keyword_type ||= Set.new %w(
         
     | 
| 
      
 49 
     | 
    
         
            +
                      BOOLEAN DIM DOUBLE DYNAMIC FLOAT FUNCTION INTEGER INTERFACE INVALID
         
     | 
| 
      
 50 
     | 
    
         
            +
                      LONGINTEGER OBJECT STRING VOID
         
     | 
| 
      
 51 
     | 
    
         
            +
                    )
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  # https://developer.roku.com/en-ca/docs/references/brightscript/language/expressions-variables-types.md#operators
         
     | 
| 
      
 55 
     | 
    
         
            +
                  def self.operator_word
         
     | 
| 
      
 56 
     | 
    
         
            +
                    @operator_word ||= Set.new %w(
         
     | 
| 
      
 57 
     | 
    
         
            +
                      AND AS MOD NOT OR THEN
         
     | 
| 
      
 58 
     | 
    
         
            +
                    )
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  # Scene graph components configured as builtins. See BrightScript component documentation e.g.
         
     | 
| 
      
 62 
     | 
    
         
            +
                  # https://developer.roku.com/en-ca/docs/references/brightscript/components/roappinfo.md
         
     | 
| 
      
 63 
     | 
    
         
            +
                  def self.builtins
         
     | 
| 
      
 64 
     | 
    
         
            +
                    @builtins ||= Set.new %w(
         
     | 
| 
      
 65 
     | 
    
         
            +
                      roAppendFile roAppInfo roAppManager roArray roAssociativeArray
         
     | 
| 
      
 66 
     | 
    
         
            +
                      roAudioGuide roAudioMetadata roAudioPlayer roAudioPlayerEvent
         
     | 
| 
      
 67 
     | 
    
         
            +
                      roAudioResourceroBitmap roBoolean roBoolean roBrightPackage roBrSub
         
     | 
| 
      
 68 
     | 
    
         
            +
                      roButton roByteArray roCaptionRenderer roCaptionRendererEvent
         
     | 
| 
      
 69 
     | 
    
         
            +
                      roCecInterface roCECStatusEvent roChannelStore roChannelStoreEvent
         
     | 
| 
      
 70 
     | 
    
         
            +
                      roClockWidget roCodeRegistrationScreen
         
     | 
| 
      
 71 
     | 
    
         
            +
                      roCodeRegistrationScreenEventroCompositor roControlDown roControlPort
         
     | 
| 
      
 72 
     | 
    
         
            +
                      roControlPort roControlUp roCreateFile roDatagramReceiver
         
     | 
| 
      
 73 
     | 
    
         
            +
                      roDatagramSender roDataGramSocket roDateTime roDeviceInfo
         
     | 
| 
      
 74 
     | 
    
         
            +
                      roDeviceInfoEvent roDoubleroEVPCipher roEVPDigest roFileSystem
         
     | 
| 
      
 75 
     | 
    
         
            +
                      roFileSystemEvent roFloat roFont roFontMetrics roFontRegistry
         
     | 
| 
      
 76 
     | 
    
         
            +
                      roFunction roGlobal roGpio roGridScreen roGridScreenEvent
         
     | 
| 
      
 77 
     | 
    
         
            +
                      roHdmiHotPlugEventroHdmiStatus roHdmiStatusEvent roHMAC roHttpAgent
         
     | 
| 
      
 78 
     | 
    
         
            +
                      roImageCanvas roImageCanvasEvent roImageMetadata roImagePlayer
         
     | 
| 
      
 79 
     | 
    
         
            +
                      roImageWidgetroInput roInputEvent roInt roInt roInvalid roInvalid
         
     | 
| 
      
 80 
     | 
    
         
            +
                      roIRRemote roKeyboard roKeyboardPress roKeyboardScreen
         
     | 
| 
      
 81 
     | 
    
         
            +
                      roKeyboardScreenEventroList roListScreen roListScreenEvent
         
     | 
| 
      
 82 
     | 
    
         
            +
                      roLocalization roLongInteger roMessageDialog roMessageDialogEvent
         
     | 
| 
      
 83 
     | 
    
         
            +
                      roMessagePort roMicrophone roMicrophoneEvent roNetworkConfiguration
         
     | 
| 
      
 84 
     | 
    
         
            +
                      roOneLineDialog roOneLineDialogEventroParagraphScreen
         
     | 
| 
      
 85 
     | 
    
         
            +
                      roParagraphScreenEvent roPath roPinEntryDialog roPinEntryDialogEvent
         
     | 
| 
      
 86 
     | 
    
         
            +
                      roPinentryScreen roPosterScreen roPosterScreenEventroProgramGuide
         
     | 
| 
      
 87 
     | 
    
         
            +
                      roQuadravoxButton roReadFile roRectangleroRegexroRegion roRegistry
         
     | 
| 
      
 88 
     | 
    
         
            +
                      roRegistrySection roResourceManager roRSA roRssArticle roRssParser
         
     | 
| 
      
 89 
     | 
    
         
            +
                      roScreen roSearchHistory roSearchScreen roSearchScreenEvent
         
     | 
| 
      
 90 
     | 
    
         
            +
                      roSerialPort roSGNode roSGNodeEvent roSGScreenroSGScreenEvent
         
     | 
| 
      
 91 
     | 
    
         
            +
                      roSlideShowroSlideShowEvent roSNS5 roSocketAddress roSocketEvent
         
     | 
| 
      
 92 
     | 
    
         
            +
                      roSpringboardScreen roSpringboardScreenEventroSprite roStorageInfo
         
     | 
| 
      
 93 
     | 
    
         
            +
                      roStreamSocket roStringroSystemLogroSystemLogEvent roSystemTime
         
     | 
| 
      
 94 
     | 
    
         
            +
                      roTextFieldroTextScreen roTextScreenEvent roTextToSpeech
         
     | 
| 
      
 95 
     | 
    
         
            +
                      roTextToSpeechEvent roTextureManager roTextureRequest
         
     | 
| 
      
 96 
     | 
    
         
            +
                      roTextureRequestEventroTextWidget roTimer roTimespan roTouchScreen
         
     | 
| 
      
 97 
     | 
    
         
            +
                      roTunerroTunerEvent roUniversalControlEvent roUrlEvent roUrlTransfer
         
     | 
| 
      
 98 
     | 
    
         
            +
                      roVideoEvent roVideoInput roVideoMode roVideoPlayer roVideoPlayerEvent
         
     | 
| 
      
 99 
     | 
    
         
            +
                      roVideoScreen roVideoScreenEventroWriteFile roXMLElement roXMLList
         
     | 
| 
      
 100 
     | 
    
         
            +
                    )
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                  id = /[$a-z_][a-z0-9_]*/io
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                  state :root do
         
     | 
| 
      
 106 
     | 
    
         
            +
                    rule %r/\s+/m, Text::Whitespace
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                    # https://developer.roku.com/en-ca/docs/references/brightscript/language/expressions-variables-types.md#comments
         
     | 
| 
      
 109 
     | 
    
         
            +
                    rule %r/\'.*/, Comment::Single
         
     | 
| 
      
 110 
     | 
    
         
            +
                    rule %r/REM.*/i, Comment::Single
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                    # https://developer.roku.com/en-ca/docs/references/brightscript/language/expressions-variables-types.md#operators
         
     | 
| 
      
 113 
     | 
    
         
            +
                    rule %r([~!%^&*+=\|?:<>/-]), Operator
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                    rule %r/\d*\.\d+(e-?\d+)?/i, Num::Float
         
     | 
| 
      
 116 
     | 
    
         
            +
                    rule %r/\d+[lu]*/i, Num::Integer
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
                    rule %r/".*?"/, Str::Double
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                    rule %r/#{id}(?=\s*[(])/, Name::Function
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                    rule %r/[()\[\],.;{}]/, Punctuation
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                    rule id do |m|
         
     | 
| 
      
 125 
     | 
    
         
            +
                      caseSensitiveChunk = m[0]
         
     | 
| 
      
 126 
     | 
    
         
            +
                      caseInsensitiveChunk = m[0].upcase
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                      if self.class.builtins.include?(caseSensitiveChunk)
         
     | 
| 
      
 129 
     | 
    
         
            +
                        token Keyword::Reserved
         
     | 
| 
      
 130 
     | 
    
         
            +
                      elsif self.class.keyword_reserved.include?(caseInsensitiveChunk)
         
     | 
| 
      
 131 
     | 
    
         
            +
                        token Keyword::Reserved
         
     | 
| 
      
 132 
     | 
    
         
            +
                      elsif self.class.keyword_reserved_unsupported.include?(caseInsensitiveChunk)
         
     | 
| 
      
 133 
     | 
    
         
            +
                        token Keyword::Reserved
         
     | 
| 
      
 134 
     | 
    
         
            +
                      elsif self.class.keyword_type.include?(caseInsensitiveChunk)
         
     | 
| 
      
 135 
     | 
    
         
            +
                        token Keyword::Type
         
     | 
| 
      
 136 
     | 
    
         
            +
                      elsif self.class.name_builtin.include?(caseInsensitiveChunk)
         
     | 
| 
      
 137 
     | 
    
         
            +
                        token Name::Builtin
         
     | 
| 
      
 138 
     | 
    
         
            +
                      elsif self.class.operator_word.include?(caseInsensitiveChunk)
         
     | 
| 
      
 139 
     | 
    
         
            +
                        token Operator::Word
         
     | 
| 
      
 140 
     | 
    
         
            +
                      else
         
     | 
| 
      
 141 
     | 
    
         
            +
                        token Name
         
     | 
| 
      
 142 
     | 
    
         
            +
                      end
         
     | 
| 
      
 143 
     | 
    
         
            +
                    end
         
     | 
| 
      
 144 
     | 
    
         
            +
                  end
         
     | 
| 
      
 145 
     | 
    
         
            +
                end
         
     | 
| 
      
 146 
     | 
    
         
            +
              end
         
     | 
| 
      
 147 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rouge/lexers/cpp.rb
    CHANGED
    
    | 
         @@ -75,15 +75,16 @@ module Rouge 
     | 
|
| 
       75 
75 
     | 
    
         
             
                    rule id, Name::Class, :pop!
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                    # template specification
         
     | 
| 
       78 
     | 
    
         
            -
                    rule %r/\s*(?=>)/m, Text, :pop!
         
     | 
| 
       79 
     | 
    
         
            -
                    rule %r/[.]{3}/, Operator
         
     | 
| 
       80 
78 
     | 
    
         
             
                    mixin :whitespace
         
     | 
| 
      
 79 
     | 
    
         
            +
                    rule %r/[.]{3}/, Operator
         
     | 
| 
      
 80 
     | 
    
         
            +
                    rule %r/,/, Punctuation, :pop!
         
     | 
| 
      
 81 
     | 
    
         
            +
                    rule(//) { pop! }
         
     | 
| 
       81 
82 
     | 
    
         
             
                  end
         
     | 
| 
       82 
83 
     | 
    
         | 
| 
       83 
84 
     | 
    
         
             
                  state :template do
         
     | 
| 
       84 
     | 
    
         
            -
                    rule %r 
     | 
| 
      
 85 
     | 
    
         
            +
                    rule %r/[>;]/, Punctuation, :pop!
         
     | 
| 
       85 
86 
     | 
    
         
             
                    rule %r/typename\b/, Keyword, :classname
         
     | 
| 
       86 
     | 
    
         
            -
                    mixin : 
     | 
| 
      
 87 
     | 
    
         
            +
                    mixin :statements
         
     | 
| 
       87 
88 
     | 
    
         
             
                  end
         
     | 
| 
       88 
89 
     | 
    
         | 
| 
       89 
90 
     | 
    
         
             
                  state :case do
         
     | 
    
        data/lib/rouge/lexers/css.rb
    CHANGED
    
    | 
         @@ -11,7 +11,9 @@ module Rouge 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  filenames '*.css'
         
     | 
| 
       12 
12 
     | 
    
         
             
                  mimetypes 'text/css'
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
      
 14 
     | 
    
         
            +
                  # Documentation: https://www.w3.org/TR/CSS21/syndata.html#characters
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  identifier = /[\p{L}_-][\p{Word}\p{Cf}-]*/
         
     | 
| 
       15 
17 
     | 
    
         
             
                  number = /-?(?:[0-9]+(\.[0-9]+)?|\.[0-9]+)/
         
     | 
| 
       16 
18 
     | 
    
         | 
| 
       17 
19 
     | 
    
         
             
                  def self.attributes
         
     | 
    
        data/lib/rouge/lexers/docker.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/html.rb
    CHANGED
    
    | 
         @@ -47,13 +47,13 @@ module Rouge 
     | 
|
| 
       47 
47 
     | 
    
         
             
                    rule %r(</), Name::Tag, :tag_end
         
     | 
| 
       48 
48 
     | 
    
         
             
                    rule %r/</, Name::Tag, :tag_start
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
                    rule %r(<\s*[ 
     | 
| 
       51 
     | 
    
         
            -
                    rule %r(<\s*/\s*[ 
     | 
| 
      
 50 
     | 
    
         
            +
                    rule %r(<\s*[\p{L}:_-][\p{Word}\p{Cf}:.·-]*), Name::Tag, :tag # opening tags
         
     | 
| 
      
 51 
     | 
    
         
            +
                    rule %r(<\s*/\s*[\p{L}:_-][\p{Word}\p{Cf}:.·-]*\s*>), Name::Tag # closing tags
         
     | 
| 
       52 
52 
     | 
    
         
             
                  end
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                  state :tag_end do
         
     | 
| 
       55 
55 
     | 
    
         
             
                    mixin :tag_end_end
         
     | 
| 
       56 
     | 
    
         
            -
                    rule %r/[ 
     | 
| 
      
 56 
     | 
    
         
            +
                    rule %r/[\p{L}:_-][\p{Word}\p{Cf}:.·-]*/ do
         
     | 
| 
       57 
57 
     | 
    
         
             
                      token Name::Tag
         
     | 
| 
       58 
58 
     | 
    
         
             
                      goto :tag_end_end
         
     | 
| 
       59 
59 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -67,7 +67,7 @@ module Rouge 
     | 
|
| 
       67 
67 
     | 
    
         
             
                  state :tag_start do
         
     | 
| 
       68 
68 
     | 
    
         
             
                    rule %r/\s+/, Text
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                    rule %r/[ 
     | 
| 
      
 70 
     | 
    
         
            +
                    rule %r/[\p{L}:_-][\p{Word}\p{Cf}:.·-]*/ do
         
     | 
| 
       71 
71 
     | 
    
         
             
                      token Name::Tag
         
     | 
| 
       72 
72 
     | 
    
         
             
                      goto :tag
         
     | 
| 
       73 
73 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -83,8 +83,8 @@ module Rouge 
     | 
|
| 
       83 
83 
     | 
    
         | 
| 
       84 
84 
     | 
    
         
             
                  state :tag do
         
     | 
| 
       85 
85 
     | 
    
         
             
                    rule %r/\s+/m, Text
         
     | 
| 
       86 
     | 
    
         
            -
                    rule %r/[ 
     | 
| 
       87 
     | 
    
         
            -
                    rule %r/[ 
     | 
| 
      
 86 
     | 
    
         
            +
                    rule %r/[\p{L}:_\[\]()*.-][\p{Word}\p{Cf}:.·\[\]()*-]*\s*=\s*/m, Name::Attribute, :attr
         
     | 
| 
      
 87 
     | 
    
         
            +
                    rule %r/[\p{L}:_*#-][\p{Word}\p{Cf}:.·*#-]*/, Name::Attribute
         
     | 
| 
       88 
88 
     | 
    
         
             
                    rule %r(/?\s*>)m, Name::Tag, :pop!
         
     | 
| 
       89 
89 
     | 
    
         
             
                  end
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
         @@ -0,0 +1,217 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*- #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Rouge
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Lexers
         
     | 
| 
      
 6 
     | 
    
         
            +
                class Janet < RegexLexer
         
     | 
| 
      
 7 
     | 
    
         
            +
                  title "Janet"
         
     | 
| 
      
 8 
     | 
    
         
            +
                  desc "The Janet programming language (janet-lang.org)"
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  tag 'janet'
         
     | 
| 
      
 11 
     | 
    
         
            +
                  aliases 'jdn'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  filenames '*.janet', '*.jdn'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  mimetypes 'text/x-janet', 'application/x-janet'
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  def self.specials
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @specials ||= Set.new %w(
         
     | 
| 
      
 19 
     | 
    
         
            +
                      break def do fn if quote quasiquote splice set unquote var while
         
     | 
| 
      
 20 
     | 
    
         
            +
                    )
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  def self.bundled
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @bundled ||= Set.new %w(
         
     | 
| 
      
 25 
     | 
    
         
            +
                      % %= * *= + ++ += - -- -= -> ->> -?> -?>> / /= < <= = > >=
         
     | 
| 
      
 26 
     | 
    
         
            +
                      abstract? accumulate accumulate2 all all-bindings
         
     | 
| 
      
 27 
     | 
    
         
            +
                      all-dynamics and apply array array/concat array/ensure
         
     | 
| 
      
 28 
     | 
    
         
            +
                      array/fill array/insert array/new array/new-filled
         
     | 
| 
      
 29 
     | 
    
         
            +
                      array/peek array/pop array/push array/remove array/slice
         
     | 
| 
      
 30 
     | 
    
         
            +
                      array? as-> as?-> asm assert bad-compile bad-parse band
         
     | 
| 
      
 31 
     | 
    
         
            +
                      blshift bnot boolean? bor brshift brushift buffer buffer/bit
         
     | 
| 
      
 32 
     | 
    
         
            +
                      buffer/bit-clear buffer/bit-set buffer/bit-toggle
         
     | 
| 
      
 33 
     | 
    
         
            +
                      buffer/blit buffer/clear buffer/fill buffer/format
         
     | 
| 
      
 34 
     | 
    
         
            +
                      buffer/new buffer/new-filled buffer/popn buffer/push-byte
         
     | 
| 
      
 35 
     | 
    
         
            +
                      buffer/push-string buffer/push-word buffer/slice buffer?
         
     | 
| 
      
 36 
     | 
    
         
            +
                      bxor bytes? case cfunction? chr cli-main comment comp
         
     | 
| 
      
 37 
     | 
    
         
            +
                      compare compare= compare< compare<= compare> compare>=
         
     | 
| 
      
 38 
     | 
    
         
            +
                      compile complement comptime cond coro count debug
         
     | 
| 
      
 39 
     | 
    
         
            +
                      debug/arg-stack debug/break debug/fbreak debug/lineage
         
     | 
| 
      
 40 
     | 
    
         
            +
                      debug/stack debug/stacktrace debug/step debug/unbreak
         
     | 
| 
      
 41 
     | 
    
         
            +
                      debug/unfbreak debugger-env dec deep-not= deep= default
         
     | 
| 
      
 42 
     | 
    
         
            +
                      default-peg-grammar def- defer defmacro defmacro- defn defn-
         
     | 
| 
      
 43 
     | 
    
         
            +
                      defglobal describe dictionary? disasm distinct doc doc*
         
     | 
| 
      
 44 
     | 
    
         
            +
                      doc-format dofile drop drop-until drop-while dyn each eachk
         
     | 
| 
      
 45 
     | 
    
         
            +
                      eachp eachy edefer eflush empty? env-lookup eprin eprinf
         
     | 
| 
      
 46 
     | 
    
         
            +
                      eprint eprintf error errorf eval eval-string even? every?
         
     | 
| 
      
 47 
     | 
    
         
            +
                      extreme false? fiber/can-resume? fiber/current fiber/getenv
         
     | 
| 
      
 48 
     | 
    
         
            +
                      fiber/maxstack fiber/new fiber/root fiber/setenv
         
     | 
| 
      
 49 
     | 
    
         
            +
                      fiber/setmaxstack fiber/status fiber? file/close file/flush
         
     | 
| 
      
 50 
     | 
    
         
            +
                      file/open file/popen file/read file/seek file/temp
         
     | 
| 
      
 51 
     | 
    
         
            +
                      file/write filter find find-index first flatten flatten-into
         
     | 
| 
      
 52 
     | 
    
         
            +
                      flush for forv freeze frequencies function? gccollect
         
     | 
| 
      
 53 
     | 
    
         
            +
                      gcinterval gcsetinterval generate gensym get get-in getline
         
     | 
| 
      
 54 
     | 
    
         
            +
                      hash idempotent? identity import import* if-let if-not
         
     | 
| 
      
 55 
     | 
    
         
            +
                      if-with in inc indexed? int/s64 int/u64 int? interleave
         
     | 
| 
      
 56 
     | 
    
         
            +
                      interpose invert janet/build janet/config-bits janet/version
         
     | 
| 
      
 57 
     | 
    
         
            +
                      juxt juxt* keep keys keyword keyword? kvs label last length
         
     | 
| 
      
 58 
     | 
    
         
            +
                      let load-image load-image-dict loop macex macex1 make-env
         
     | 
| 
      
 59 
     | 
    
         
            +
                      make-image make-image-dict map mapcat marshal math/-inf
         
     | 
| 
      
 60 
     | 
    
         
            +
                      math/abs math/acos math/acosh math/asin math/asinh math/atan
         
     | 
| 
      
 61 
     | 
    
         
            +
                      math/atan2 math/atanh math/cbrt math/ceil math/cos math/cosh
         
     | 
| 
      
 62 
     | 
    
         
            +
                      math/e math/erf math/erfc math/exp math/exp2 math/expm1
         
     | 
| 
      
 63 
     | 
    
         
            +
                      math/floor math/gamma math/hypot math/inf math/log
         
     | 
| 
      
 64 
     | 
    
         
            +
                      math/log10 math/log1p math/log2 math/next math/pi math/pow
         
     | 
| 
      
 65 
     | 
    
         
            +
                      math/random math/rng math/rng-buffer math/rng-int
         
     | 
| 
      
 66 
     | 
    
         
            +
                      math/rng-uniform math/round math/seedrandom math/sin
         
     | 
| 
      
 67 
     | 
    
         
            +
                      math/sinh math/sqrt math/tan math/tanh math/trunc match max
         
     | 
| 
      
 68 
     | 
    
         
            +
                      mean merge merge-into min mod module/add-paths module/cache
         
     | 
| 
      
 69 
     | 
    
         
            +
                      module/expand-path module/find module/loaders module/loading
         
     | 
| 
      
 70 
     | 
    
         
            +
                      module/paths nan? nat? native neg? net/chunk net/close
         
     | 
| 
      
 71 
     | 
    
         
            +
                      net/connect net/read net/server net/write next nil? not not=
         
     | 
| 
      
 72 
     | 
    
         
            +
                      number? odd? one? or os/arch os/cd os/chmod os/clock
         
     | 
| 
      
 73 
     | 
    
         
            +
                      os/cryptorand os/cwd os/date os/dir os/environ os/execute
         
     | 
| 
      
 74 
     | 
    
         
            +
                      os/exit os/getenv os/link os/lstat os/mkdir os/mktime
         
     | 
| 
      
 75 
     | 
    
         
            +
                      os/perm-int os/perm-string os/readlink os/realpath os/rename
         
     | 
| 
      
 76 
     | 
    
         
            +
                      os/rm os/rmdir os/setenv os/shell os/sleep os/stat
         
     | 
| 
      
 77 
     | 
    
         
            +
                      os/symlink os/time os/touch os/umask os/which pairs parse
         
     | 
| 
      
 78 
     | 
    
         
            +
                      parser/byte parser/clone parser/consume parser/eof
         
     | 
| 
      
 79 
     | 
    
         
            +
                      parser/error parser/flush parser/has-more parser/insert
         
     | 
| 
      
 80 
     | 
    
         
            +
                      parser/new parser/produce parser/state parser/status
         
     | 
| 
      
 81 
     | 
    
         
            +
                      parser/where partial partition peg/compile peg/match pos?
         
     | 
| 
      
 82 
     | 
    
         
            +
                      postwalk pp prewalk prin prinf print printf product prompt
         
     | 
| 
      
 83 
     | 
    
         
            +
                      propagate protect put put-in quit range reduce reduce2
         
     | 
| 
      
 84 
     | 
    
         
            +
                      repeat repl require resume return reverse reversed root-env
         
     | 
| 
      
 85 
     | 
    
         
            +
                      run-context scan-number seq setdyn shortfn signal slice
         
     | 
| 
      
 86 
     | 
    
         
            +
                      slurp some sort sort-by sorted sorted-by spit stderr stdin
         
     | 
| 
      
 87 
     | 
    
         
            +
                      stdout string string/ascii-lower string/ascii-upper
         
     | 
| 
      
 88 
     | 
    
         
            +
                      string/bytes string/check-set string/find string/find-all
         
     | 
| 
      
 89 
     | 
    
         
            +
                      string/format string/from-bytes string/has-prefix?
         
     | 
| 
      
 90 
     | 
    
         
            +
                      string/has-suffix? string/join string/repeat string/replace
         
     | 
| 
      
 91 
     | 
    
         
            +
                      string/replace-all string/reverse string/slice string/split
         
     | 
| 
      
 92 
     | 
    
         
            +
                      string/trim string/triml string/trimr string? struct struct?
         
     | 
| 
      
 93 
     | 
    
         
            +
                      sum symbol symbol? table table/clone table/getproto
         
     | 
| 
      
 94 
     | 
    
         
            +
                      table/new table/rawget table/setproto table/to-struct table?
         
     | 
| 
      
 95 
     | 
    
         
            +
                      take take-until take-while tarray/buffer tarray/copy-bytes
         
     | 
| 
      
 96 
     | 
    
         
            +
                      tarray/length tarray/new tarray/properties tarray/slice
         
     | 
| 
      
 97 
     | 
    
         
            +
                      tarray/swap-bytes thread/close thread/current thread/new
         
     | 
| 
      
 98 
     | 
    
         
            +
                      thread/receive thread/send trace tracev true? truthy? try
         
     | 
| 
      
 99 
     | 
    
         
            +
                      tuple tuple/brackets tuple/setmap tuple/slice
         
     | 
| 
      
 100 
     | 
    
         
            +
                      tuple/sourcemap tuple/type tuple? type unless unmarshal
         
     | 
| 
      
 101 
     | 
    
         
            +
                      untrace update update-in use values var- varfn varglobal
         
     | 
| 
      
 102 
     | 
    
         
            +
                      walk walk-ind walk-dict when when-let when-with with
         
     | 
| 
      
 103 
     | 
    
         
            +
                      with-dyns with-syms with-vars yield zero? zipcoll
         
     | 
| 
      
 104 
     | 
    
         
            +
                    )
         
     | 
| 
      
 105 
     | 
    
         
            +
                  end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                  def name_token(name)
         
     | 
| 
      
 108 
     | 
    
         
            +
                    if self.class.specials.include? name
         
     | 
| 
      
 109 
     | 
    
         
            +
                      Keyword
         
     | 
| 
      
 110 
     | 
    
         
            +
                    elsif self.class.bundled.include? name
         
     | 
| 
      
 111 
     | 
    
         
            +
                      Keyword::Reserved
         
     | 
| 
      
 112 
     | 
    
         
            +
                    else
         
     | 
| 
      
 113 
     | 
    
         
            +
                      Name::Function
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
                  end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                  punctuation = %r/[_!@$%^&*+=~<>.?\/-]/o
         
     | 
| 
      
 118 
     | 
    
         
            +
                  symbol = %r/([[:alpha:]]|#{punctuation})([[:word:]]|#{punctuation}|:)*/o
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                  state :root do
         
     | 
| 
      
 121 
     | 
    
         
            +
                    rule %r/#.*?$/, Comment::Single
         
     | 
| 
      
 122 
     | 
    
         
            +
                    rule %r/\s+/m, Text::Whitespace
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                    rule %r/(true|false|nil)\b/, Name::Constant
         
     | 
| 
      
 125 
     | 
    
         
            +
                    rule %r/(['~])(#{symbol})/ do
         
     | 
| 
      
 126 
     | 
    
         
            +
                      groups Operator, Str::Symbol
         
     | 
| 
      
 127 
     | 
    
         
            +
                    end
         
     | 
| 
      
 128 
     | 
    
         
            +
                    rule %r/:([[:word:]]|#{punctuation}|:)*/, Keyword::Constant
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                    # radix-specified numbers
         
     | 
| 
      
 131 
     | 
    
         
            +
                    rule %r/[+-]?\d{1,2}r[\w.]+(&[+-]?\w+)?/, Num::Float
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                    # hex numbers
         
     | 
| 
      
 134 
     | 
    
         
            +
                    rule %r/[+-]?0x\h[\h_]*(\.\h[\h_]*)?/, Num::Hex
         
     | 
| 
      
 135 
     | 
    
         
            +
                    rule %r/[+-]?0x\.\h[\h_]*/, Num::Hex
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                    # decimal numbers (Janet treats all decimals as floats)
         
     | 
| 
      
 138 
     | 
    
         
            +
                    rule %r/[+-]?\d[\d_]*(\.\d[\d_]*)?([e][+-]?\d+)?/i, Num::Float
         
     | 
| 
      
 139 
     | 
    
         
            +
                    rule %r/[+-]?\.\d[\d_]*([e][+-]?\d+)?/i, Num::Float
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                    rule %r/@?"/, Str::Double, :string
         
     | 
| 
      
 142 
     | 
    
         
            +
                    rule %r/@?(`+).*?\1/m, Str::Heredoc
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
                    rule %r/\(/, Punctuation, :function
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
                    rule %r/(')([\(\[])/ do
         
     | 
| 
      
 147 
     | 
    
         
            +
                      groups Operator, Punctuation
         
     | 
| 
      
 148 
     | 
    
         
            +
                      push :quote
         
     | 
| 
      
 149 
     | 
    
         
            +
                    end
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
                    rule %r/(~)([\(\[])/ do
         
     | 
| 
      
 152 
     | 
    
         
            +
                      groups Operator, Punctuation
         
     | 
| 
      
 153 
     | 
    
         
            +
                      push :quasiquote
         
     | 
| 
      
 154 
     | 
    
         
            +
                    end
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
                    rule %r/[\#~,';\|]/, Operator
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
                    rule %r/@?[({\[]/, Punctuation, :push
         
     | 
| 
      
 159 
     | 
    
         
            +
                    rule %r/[)}\]]/, Punctuation, :pop!
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                    rule symbol, Name
         
     | 
| 
      
 162 
     | 
    
         
            +
                  end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                  state :string do
         
     | 
| 
      
 165 
     | 
    
         
            +
                    rule %r/"/, Str::Double, :pop!
         
     | 
| 
      
 166 
     | 
    
         
            +
                    rule %r/\\(u\h{4}|U\h{6})/, Str::Escape
         
     | 
| 
      
 167 
     | 
    
         
            +
                    rule %r/\\./, Str::Escape
         
     | 
| 
      
 168 
     | 
    
         
            +
                    rule %r/[^"\\]+/, Str::Double
         
     | 
| 
      
 169 
     | 
    
         
            +
                  end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                  state :function do
         
     | 
| 
      
 172 
     | 
    
         
            +
                    rule symbol do |m|
         
     | 
| 
      
 173 
     | 
    
         
            +
                      case m[0]
         
     | 
| 
      
 174 
     | 
    
         
            +
                      when "quote"
         
     | 
| 
      
 175 
     | 
    
         
            +
                        token Keyword
         
     | 
| 
      
 176 
     | 
    
         
            +
                        goto :quote
         
     | 
| 
      
 177 
     | 
    
         
            +
                      when "quasiquote"
         
     | 
| 
      
 178 
     | 
    
         
            +
                        token Keyword
         
     | 
| 
      
 179 
     | 
    
         
            +
                        goto :quasiquote
         
     | 
| 
      
 180 
     | 
    
         
            +
                      else
         
     | 
| 
      
 181 
     | 
    
         
            +
                        token name_token(m[0])
         
     | 
| 
      
 182 
     | 
    
         
            +
                        goto :root
         
     | 
| 
      
 183 
     | 
    
         
            +
                      end
         
     | 
| 
      
 184 
     | 
    
         
            +
                    end
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
                    mixin :root
         
     | 
| 
      
 187 
     | 
    
         
            +
                  end
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
                  state :quote do
         
     | 
| 
      
 190 
     | 
    
         
            +
                    rule %r/[\(\[]/, Punctuation, :push
         
     | 
| 
      
 191 
     | 
    
         
            +
                    rule symbol, Str::Symbol
         
     | 
| 
      
 192 
     | 
    
         
            +
                    mixin :root
         
     | 
| 
      
 193 
     | 
    
         
            +
                  end
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
                  state :quasiquote do
         
     | 
| 
      
 196 
     | 
    
         
            +
                    rule %r/(,)(\()/ do
         
     | 
| 
      
 197 
     | 
    
         
            +
                      groups Operator, Punctuation
         
     | 
| 
      
 198 
     | 
    
         
            +
                      push :function
         
     | 
| 
      
 199 
     | 
    
         
            +
                    end
         
     | 
| 
      
 200 
     | 
    
         
            +
                    rule %r/(\()(\s*)(unquote)(\s+)(\()/ do
         
     | 
| 
      
 201 
     | 
    
         
            +
                      groups Punctuation, Text, Keyword, Text, Punctuation
         
     | 
| 
      
 202 
     | 
    
         
            +
                      push :root
         
     | 
| 
      
 203 
     | 
    
         
            +
                      push :function
         
     | 
| 
      
 204 
     | 
    
         
            +
                    end
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
                    rule %r/(,)(#{symbol})/ do
         
     | 
| 
      
 207 
     | 
    
         
            +
                      groups Operator, Name
         
     | 
| 
      
 208 
     | 
    
         
            +
                    end
         
     | 
| 
      
 209 
     | 
    
         
            +
                    rule %r/(\()(\s*)(unquote)(\s+)(#{symbol})/ do
         
     | 
| 
      
 210 
     | 
    
         
            +
                      groups Punctuation, Text, Keyword, Text, Name
         
     | 
| 
      
 211 
     | 
    
         
            +
                    end
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
                    mixin :quote
         
     | 
| 
      
 214 
     | 
    
         
            +
                  end
         
     | 
| 
      
 215 
     | 
    
         
            +
                end
         
     | 
| 
      
 216 
     | 
    
         
            +
              end
         
     | 
| 
      
 217 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -19,6 +19,8 @@ module Rouge 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  mimetypes 'application/javascript', 'application/x-javascript',
         
     | 
| 
       20 
20 
     | 
    
         
             
                            'text/javascript', 'text/x-javascript'
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
                  # Pseudo-documentation: https://stackoverflow.com/questions/1661197/what-characters-are-valid-for-javascript-variable-names
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       22 
24 
     | 
    
         
             
                  def self.detect?(text)
         
     | 
| 
       23 
25 
     | 
    
         
             
                    return 1 if text.shebang?('node')
         
     | 
| 
       24 
26 
     | 
    
         
             
                    return 1 if text.shebang?('jsc')
         
     | 
| 
         @@ -138,7 +140,7 @@ module Rouge 
     | 
|
| 
       138 
140 
     | 
    
         
             
                  end
         
     | 
| 
       139 
141 
     | 
    
         | 
| 
       140 
142 
     | 
    
         
             
                  def self.id_regex
         
     | 
| 
       141 
     | 
    
         
            -
                    /[$ 
     | 
| 
      
 143 
     | 
    
         
            +
                    /[\p{L}\p{Nl}$_][\p{Word}]*/io
         
     | 
| 
       142 
144 
     | 
    
         
             
                  end
         
     | 
| 
       143 
145 
     | 
    
         | 
| 
       144 
146 
     | 
    
         
             
                  id = self.id_regex
         
     | 
    
        data/lib/rouge/lexers/jinja.rb
    CHANGED
    
    | 
         @@ -40,6 +40,17 @@ module Rouge 
     | 
|
| 
       40 
40 
     | 
    
         
             
                    rule %r/{#/, Comment, :comment
         
     | 
| 
       41 
41 
     | 
    
         
             
                    rule %r/##.*/, Comment
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
                    # Raw and verbatim
         
     | 
| 
      
 44 
     | 
    
         
            +
                    rule %r/({%-?)(\s*)(raw|verbatim)(\s*)(-?%})/ do |m|
         
     | 
| 
      
 45 
     | 
    
         
            +
                      groups Comment::Preproc, Text, Keyword, Text, Comment::Preproc
         
     | 
| 
      
 46 
     | 
    
         
            +
                      case m[3]
         
     | 
| 
      
 47 
     | 
    
         
            +
                      when "raw"
         
     | 
| 
      
 48 
     | 
    
         
            +
                        push :raw
         
     | 
| 
      
 49 
     | 
    
         
            +
                      when "verbatim"
         
     | 
| 
      
 50 
     | 
    
         
            +
                        push :verbatim
         
     | 
| 
      
 51 
     | 
    
         
            +
                      end
         
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       43 
54 
     | 
    
         
             
                    # Statements
         
     | 
| 
       44 
55 
     | 
    
         
             
                    rule %r/\{\%/ do
         
     | 
| 
       45 
56 
     | 
    
         
             
                      token Comment::Preproc
         
     | 
| 
         @@ -114,11 +125,6 @@ module Rouge 
     | 
|
| 
       114 
125 
     | 
    
         
             
                  end
         
     | 
| 
       115 
126 
     | 
    
         | 
| 
       116 
127 
     | 
    
         
             
                  state :statement do
         
     | 
| 
       117 
     | 
    
         
            -
                    rule %r/(raw|verbatim)(\s+)(\%\})/ do
         
     | 
| 
       118 
     | 
    
         
            -
                      groups Keyword, Text, Comment::Preproc
         
     | 
| 
       119 
     | 
    
         
            -
                      goto :raw
         
     | 
| 
       120 
     | 
    
         
            -
                    end
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
128 
     | 
    
         
             
                    rule %r/(\w+\.?)/ do |m|
         
     | 
| 
       123 
129 
     | 
    
         
             
                      if self.class.keywords.include?(m[0])
         
     | 
| 
       124 
130 
     | 
    
         
             
                        groups Keyword
         
     | 
| 
         @@ -142,12 +148,21 @@ module Rouge 
     | 
|
| 
       142 
148 
     | 
    
         
             
                  end
         
     | 
| 
       143 
149 
     | 
    
         | 
| 
       144 
150 
     | 
    
         
             
                  state :raw do
         
     | 
| 
       145 
     | 
    
         
            -
                    rule %r 
     | 
| 
      
 151 
     | 
    
         
            +
                    rule %r/({%-?)(\s*)(endraw)(\s*)(-?%})/ do
         
     | 
| 
       146 
152 
     | 
    
         
             
                      groups Comment::Preproc, Text, Keyword, Text, Comment::Preproc
         
     | 
| 
       147 
153 
     | 
    
         
             
                      pop!
         
     | 
| 
       148 
154 
     | 
    
         
             
                    end
         
     | 
| 
      
 155 
     | 
    
         
            +
                    rule %r/[^{]+/, Text
         
     | 
| 
      
 156 
     | 
    
         
            +
                    rule %r/{/, Text
         
     | 
| 
      
 157 
     | 
    
         
            +
                  end
         
     | 
| 
       149 
158 
     | 
    
         | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
      
 159 
     | 
    
         
            +
                  state :verbatim do
         
     | 
| 
      
 160 
     | 
    
         
            +
                    rule %r/({%-?)(\s*)(endverbatim)(\s*)(-?%})/ do
         
     | 
| 
      
 161 
     | 
    
         
            +
                      groups Comment::Preproc, Text, Keyword, Text, Comment::Preproc
         
     | 
| 
      
 162 
     | 
    
         
            +
                      pop!
         
     | 
| 
      
 163 
     | 
    
         
            +
                    end
         
     | 
| 
      
 164 
     | 
    
         
            +
                    rule %r/[^{]+/, Text
         
     | 
| 
      
 165 
     | 
    
         
            +
                    rule %r/{/, Text
         
     | 
| 
       151 
166 
     | 
    
         
             
                  end
         
     | 
| 
       152 
167 
     | 
    
         
             
                end
         
     | 
| 
       153 
168 
     | 
    
         
             
              end
         
     | 
    
        data/lib/rouge/lexers/julia.rb
    CHANGED
    
    | 
         @@ -11,6 +11,8 @@ module Rouge 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  filenames '*.jl'
         
     | 
| 
       12 
12 
     | 
    
         
             
                  mimetypes 'text/x-julia', 'application/x-julia'
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                  # Documentation: https://docs.julialang.org/en/v1/manual/variables/#Allowed-Variable-Names-1
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       14 
16 
     | 
    
         
             
                  def self.detect?(text)
         
     | 
| 
       15 
17 
     | 
    
         
             
                    return true if text.shebang? 'julia'
         
     | 
| 
       16 
18 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -252,13 +254,13 @@ module Rouge 
     | 
|
| 
       252 
254 
     | 
    
         | 
| 
       253 
255 
     | 
    
         | 
| 
       254 
256 
     | 
    
         
             
                  state :funcname do
         
     | 
| 
       255 
     | 
    
         
            -
                    rule %r/[ 
     | 
| 
      
 257 
     | 
    
         
            +
                    rule %r/[\p{L}\p{Nl}\p{S}_][\p{Word}\p{S}\p{Po}!]*/, Name::Function, :pop!
         
     | 
| 
       256 
258 
     | 
    
         
             
                    rule %r/\([^\s\w{]{1,2}\)/, Operator, :pop!
         
     | 
| 
       257 
259 
     | 
    
         
             
                    rule %r/[^\s\w{]{1,2}/, Operator, :pop!
         
     | 
| 
       258 
260 
     | 
    
         
             
                  end
         
     | 
| 
       259 
261 
     | 
    
         | 
| 
       260 
262 
     | 
    
         
             
                  state :typename do
         
     | 
| 
       261 
     | 
    
         
            -
                    rule %r/[ 
     | 
| 
      
 263 
     | 
    
         
            +
                    rule %r/[\p{L}\p{Nl}\p{S}_][\p{Word}\p{S}\p{Po}!]*/, Name::Class, :pop!
         
     | 
| 
       262 
264 
     | 
    
         
             
                  end
         
     | 
| 
       263 
265 
     | 
    
         | 
| 
       264 
266 
     | 
    
         
             
                  state :stringescape do
         
     | 
    
        data/lib/rouge/lexers/perl.rb
    CHANGED
    
    | 
         @@ -65,7 +65,7 @@ module Rouge 
     | 
|
| 
       65 
65 
     | 
    
         
             
                  end
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
                  state :root do
         
     | 
| 
       68 
     | 
    
         
            -
                    rule %r 
     | 
| 
      
 68 
     | 
    
         
            +
                    rule %r/#.*/, Comment::Single
         
     | 
| 
       69 
69 
     | 
    
         
             
                    rule %r/^=[a-zA-Z0-9]+\s+.*?\n=cut/m, Comment::Multiline
         
     | 
| 
       70 
70 
     | 
    
         
             
                    rule %r/(?:#{keywords.join('|')})\b/, Keyword
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
         @@ -99,6 +99,9 @@ module Rouge 
     | 
|
| 
       99 
99 
     | 
    
         
             
                      re_tok, :balanced_regex
         
     | 
| 
       100 
100 
     | 
    
         | 
| 
       101 
101 
     | 
    
         
             
                    rule %r/\s+/, Text
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                    rule(/(?=[a-z_]\w*(\s*#.*\n)*\s*=>)/i) { push :fat_comma }
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
       102 
105 
     | 
    
         
             
                    rule %r/(?:#{builtins.join('|')})\b/, Name::Builtin
         
     | 
| 
       103 
106 
     | 
    
         
             
                    rule %r/((__(DIE|WARN)__)|(DATA|STD(IN|OUT|ERR)))\b/,
         
     | 
| 
       104 
107 
     | 
    
         
             
                      Name::Builtin::Pseudo
         
     | 
| 
         @@ -142,6 +145,13 @@ module Rouge 
     | 
|
| 
       142 
145 
     | 
    
         
             
                    rule %r/.*?\n/, Str::Interpol
         
     | 
| 
       143 
146 
     | 
    
         
             
                  end
         
     | 
| 
       144 
147 
     | 
    
         | 
| 
      
 148 
     | 
    
         
            +
                  state :fat_comma do
         
     | 
| 
      
 149 
     | 
    
         
            +
                    rule %r/#.*/, Comment::Single
         
     | 
| 
      
 150 
     | 
    
         
            +
                    rule %r/\w+/, Str
         
     | 
| 
      
 151 
     | 
    
         
            +
                    rule %r/\s+/, Text
         
     | 
| 
      
 152 
     | 
    
         
            +
                    rule %r/=>/, Operator, :pop!
         
     | 
| 
      
 153 
     | 
    
         
            +
                  end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
       145 
155 
     | 
    
         
             
                  state :name_common do
         
     | 
| 
       146 
156 
     | 
    
         
             
                    rule %r/\w+::/, Name::Namespace
         
     | 
| 
       147 
157 
     | 
    
         
             
                    rule %r/[\w:]+/, Name::Variable, :pop!
         
     | 
| 
         @@ -178,16 +188,24 @@ module Rouge 
     | 
|
| 
       178 
188 
     | 
    
         
             
                  end
         
     | 
| 
       179 
189 
     | 
    
         | 
| 
       180 
190 
     | 
    
         
             
                  state :sq do
         
     | 
| 
       181 
     | 
    
         
            -
                    rule %r/\\[']/, Str::Escape
         
     | 
| 
      
 191 
     | 
    
         
            +
                    rule %r/\\[\\']/, Str::Escape
         
     | 
| 
       182 
192 
     | 
    
         
             
                    rule %r/[^\\']+/, Str::Single
         
     | 
| 
       183 
193 
     | 
    
         
             
                    rule %r/'/, Punctuation, :pop!
         
     | 
| 
      
 194 
     | 
    
         
            +
                    rule %r/\\/, Str::Single
         
     | 
| 
       184 
195 
     | 
    
         
             
                  end
         
     | 
| 
       185 
196 
     | 
    
         | 
| 
       186 
197 
     | 
    
         
             
                  state :dq do
         
     | 
| 
       187 
198 
     | 
    
         
             
                    mixin :string_intp
         
     | 
| 
       188 
     | 
    
         
            -
                    rule %r/\\[\\ 
     | 
| 
      
 199 
     | 
    
         
            +
                    rule %r/\\[\\tnrabefluLUE"$@]/, Str::Escape
         
     | 
| 
      
 200 
     | 
    
         
            +
                    rule %r/\\0\d{2}/, Str::Escape
         
     | 
| 
      
 201 
     | 
    
         
            +
                    rule %r/\\o\{\d+\}/, Str::Escape
         
     | 
| 
      
 202 
     | 
    
         
            +
                    rule %r/\\x\h{2}/, Str::Escape
         
     | 
| 
      
 203 
     | 
    
         
            +
                    rule %r/\\x\{\h+\}/, Str::Escape
         
     | 
| 
      
 204 
     | 
    
         
            +
                    rule %r/\\c./, Str::Escape
         
     | 
| 
      
 205 
     | 
    
         
            +
                    rule %r/\\N\{[^\}]+\}/, Str::Escape
         
     | 
| 
       189 
206 
     | 
    
         
             
                    rule %r/[^\\"]+?/, Str::Double
         
     | 
| 
       190 
207 
     | 
    
         
             
                    rule %r/"/, Punctuation, :pop!
         
     | 
| 
      
 208 
     | 
    
         
            +
                    rule %r/\\/, Str::Escape
         
     | 
| 
       191 
209 
     | 
    
         
             
                  end
         
     | 
| 
       192 
210 
     | 
    
         | 
| 
       193 
211 
     | 
    
         
             
                  state :bq do
         
     | 
| 
         @@ -165,6 +165,7 @@ module Rouge 
     | 
|
| 
       165 
165 
     | 
    
         
             
                  end
         
     | 
| 
       166 
166 
     | 
    
         | 
| 
       167 
167 
     | 
    
         
             
                  state :parameters do
         
     | 
| 
      
 168 
     | 
    
         
            +
                    rule %r/`./m, Str::Escape
         
     | 
| 
       168 
169 
     | 
    
         
             
                    rule %r/\s*?\n/, Text::Whitespace, :pop!
         
     | 
| 
       169 
170 
     | 
    
         
             
                    rule %r/[;(){}\]]/, Punctuation, :pop!
         
     | 
| 
       170 
171 
     | 
    
         
             
                    rule %r/[|=]/, Operator, :pop!
         
     | 
| 
         @@ -217,6 +218,7 @@ module Rouge 
     | 
|
| 
       217 
218 
     | 
    
         
             
                      push :parameters unless m[3].nil?
         
     | 
| 
       218 
219 
     | 
    
         
             
                    end
         
     | 
| 
       219 
220 
     | 
    
         | 
| 
      
 221 
     | 
    
         
            +
                    rule %r/\?/, Name::Function, :parameters
         
     | 
| 
       220 
222 
     | 
    
         
             
                    rule %r/[-+*\/%=!.&|]/, Operator
         
     | 
| 
       221 
223 
     | 
    
         
             
                    rule %r/@\{/, Punctuation, :hasht
         
     | 
| 
       222 
224 
     | 
    
         
             
                    rule %r/@\(/, Punctuation, :array
         
     | 
    
        data/lib/rouge/lexers/rego.rb
    CHANGED
    
    | 
         @@ -9,36 +9,51 @@ module Rouge 
     | 
|
| 
       9 
9 
     | 
    
         
             
                        tag 'rego'
         
     | 
| 
       10 
10 
     | 
    
         
             
                        filenames '*.rego'
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                        def self.constants
         
     | 
| 
      
 13 
     | 
    
         
            +
                          @constants ||= Set.new %w(
         
     | 
| 
      
 14 
     | 
    
         
            +
                            true false null
         
     | 
| 
      
 15 
     | 
    
         
            +
                          )
         
     | 
| 
      
 16 
     | 
    
         
            +
                        end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                        def self.operators
         
     | 
| 
      
 19 
     | 
    
         
            +
                          @operators ||= Set.new %w(
         
     | 
| 
      
 20 
     | 
    
         
            +
                            as default else import not package some with
         
     | 
| 
      
 21 
     | 
    
         
            +
                          )
         
     | 
| 
      
 22 
     | 
    
         
            +
                        end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       12 
24 
     | 
    
         
             
                        state :basic do
         
     | 
| 
       13 
25 
     | 
    
         
             
                          rule %r/\s+/, Text
         
     | 
| 
       14 
26 
     | 
    
         
             
                          rule %r/#.*/, Comment::Single
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
       16 
28 
     | 
    
         
             
                          rule %r/[\[\](){}|.,;!]/, Punctuation
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
       18 
30 
     | 
    
         
             
                          rule %r/"[^"]*"/, Str::Double
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       20 
32 
     | 
    
         
             
                          rule %r/-?\d+\.\d+([eE][+-]?\d+)?/, Num::Float
         
     | 
| 
       21 
33 
     | 
    
         
             
                          rule %r/-?\d+([eE][+-]?\d+)?/, Num
         
     | 
| 
       22 
34 
     | 
    
         | 
| 
       23 
35 
     | 
    
         
             
                          rule %r/\\u[0-9a-fA-F]{4}/, Num::Hex
         
     | 
| 
       24 
36 
     | 
    
         
             
                          rule %r/\\["\/bfnrt]/, Str::Escape
         
     | 
| 
       25 
37 
     | 
    
         
             
                        end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                        state :atoms do
         
     | 
| 
       28 
     | 
    
         
            -
                          rule %r/(true|false|null)/, Keyword::Constant
         
     | 
| 
       29 
     | 
    
         
            -
                          rule %r/[[:word:]]*/, Str::Symbol
         
     | 
| 
       30 
     | 
    
         
            -
                        end
         
     | 
| 
       31 
     | 
    
         
            -
                  
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       32 
39 
     | 
    
         
             
                        state :operators do
         
     | 
| 
       33 
40 
     | 
    
         
             
                          rule %r/(=|!=|>=|<=|>|<|\+|-|\*|%|\/|\||&|:=)/, Operator
         
     | 
| 
       34 
     | 
    
         
            -
                          rule %r/(default|not|package|import|as|with|else|some)/, Operator
         
     | 
| 
       35 
41 
     | 
    
         
             
                          rule %r/[\/:?@^~]+/, Operator
         
     | 
| 
       36 
42 
     | 
    
         
             
                        end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
       38 
44 
     | 
    
         
             
                        state :root do
         
     | 
| 
       39 
45 
     | 
    
         
             
                          mixin :basic
         
     | 
| 
       40 
46 
     | 
    
         
             
                          mixin :operators
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                          rule %r/[[:word:]]+/ do |m|
         
     | 
| 
      
 49 
     | 
    
         
            +
                            if self.class.constants.include? m[0]
         
     | 
| 
      
 50 
     | 
    
         
            +
                              token Keyword::Constant
         
     | 
| 
      
 51 
     | 
    
         
            +
                            elsif self.class.operators.include? m[0]
         
     | 
| 
      
 52 
     | 
    
         
            +
                              token Operator::Word
         
     | 
| 
      
 53 
     | 
    
         
            +
                            else
         
     | 
| 
      
 54 
     | 
    
         
            +
                              token Name
         
     | 
| 
      
 55 
     | 
    
         
            +
                            end
         
     | 
| 
      
 56 
     | 
    
         
            +
                          end
         
     | 
| 
       42 
57 
     | 
    
         
             
                        end
         
     | 
| 
       43 
58 
     | 
    
         
             
                    end
         
     | 
| 
       44 
59 
     | 
    
         
             
                end
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- coding: utf-8 -*- #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Rouge
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Lexers
         
     | 
| 
      
 6 
     | 
    
         
            +
                class SSH < RegexLexer
         
     | 
| 
      
 7 
     | 
    
         
            +
                  tag 'ssh'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  title "SSH Config File"
         
     | 
| 
      
 10 
     | 
    
         
            +
                  desc 'A lexer for SSH configuration files'
         
     | 
| 
      
 11 
     | 
    
         
            +
                  filenames 'ssh_config'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  state :root do
         
     | 
| 
      
 14 
     | 
    
         
            +
                    rule %r/[a-z0-9]+/i, Keyword, :statement
         
     | 
| 
      
 15 
     | 
    
         
            +
                    mixin :base
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  state :statement do
         
     | 
| 
      
 19 
     | 
    
         
            +
                    rule %r/\n/, Text, :pop!
         
     | 
| 
      
 20 
     | 
    
         
            +
                    rule %r/(?:yes|no|confirm|ask|always|auto|none|force)\b/, Name::Constant
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                    rule %r/\d+/, Num
         
     | 
| 
      
 23 
     | 
    
         
            +
                    rule %r/[^#\s;{}$\\]+/, Text
         
     | 
| 
      
 24 
     | 
    
         
            +
                    mixin :base
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  state :base do
         
     | 
| 
      
 28 
     | 
    
         
            +
                    rule %r/\s+/, Text
         
     | 
| 
      
 29 
     | 
    
         
            +
                    rule %r/#.*/, Comment::Single
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rouge/lexers/twig.rb
    CHANGED
    
    | 
         @@ -17,10 +17,10 @@ module Rouge 
     | 
|
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                  def self.keywords
         
     | 
| 
       19 
19 
     | 
    
         
             
                    @@keywords ||= %w(as do extends flush from import include use else starts
         
     | 
| 
       20 
     | 
    
         
            -
                                      ends with without autoescape endautoescape block 
     | 
| 
       21 
     | 
    
         
            -
                                      embed endembed filter endfilter for endfor 
     | 
| 
       22 
     | 
    
         
            -
                                      macro endmacro sandbox endsandbox set endset
         
     | 
| 
       23 
     | 
    
         
            -
                                      spaceless endspaceless 
     | 
| 
      
 20 
     | 
    
         
            +
                                      ends with without autoescape endautoescape block
         
     | 
| 
      
 21 
     | 
    
         
            +
                                      endblock embed endembed filter endfilter for endfor
         
     | 
| 
      
 22 
     | 
    
         
            +
                                      if endif macro endmacro sandbox endsandbox set endset
         
     | 
| 
      
 23 
     | 
    
         
            +
                                      spaceless endspaceless)
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                  def self.tests
         
     | 
    
        data/lib/rouge/lexers/xml.rb
    CHANGED
    
    | 
         @@ -12,6 +12,8 @@ module Rouge 
     | 
|
| 
       12 
12 
     | 
    
         
             
                  mimetypes 'text/xml', 'application/xml', 'image/svg+xml',
         
     | 
| 
       13 
13 
     | 
    
         
             
                            'application/rss+xml', 'application/atom+xml'
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
      
 15 
     | 
    
         
            +
                  # Documentation: https://www.w3.org/TR/xml11/#charsets and https://www.w3.org/TR/xml11/#sec-suggested-names
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       15 
17 
     | 
    
         
             
                  def self.detect?(text)
         
     | 
| 
       16 
18 
     | 
    
         
             
                    return false if text.doctype?(/html/)
         
     | 
| 
       17 
19 
     | 
    
         
             
                    return true if text =~ /\A<\?xml\b/
         
     | 
| 
         @@ -27,10 +29,10 @@ module Rouge 
     | 
|
| 
       27 
29 
     | 
    
         
             
                    rule %r/<![^>]*>/, Comment::Preproc
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
       29 
31 
     | 
    
         
             
                    # open tags
         
     | 
| 
       30 
     | 
    
         
            -
                    rule %r(<\s*[\ 
     | 
| 
      
 32 
     | 
    
         
            +
                    rule %r(<\s*[\p{L}:_][\p{Word}\p{Cf}:.·-]*)m, Name::Tag, :tag
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
34 
     | 
    
         
             
                    # self-closing tags
         
     | 
| 
       33 
     | 
    
         
            -
                    rule %r(<\s*/\s*[\ 
     | 
| 
      
 35 
     | 
    
         
            +
                    rule %r(<\s*/\s*[\p{L}:_][\p{Word}\p{Cf}:.·-]*\s*>)m, Name::Tag
         
     | 
| 
       34 
36 
     | 
    
         
             
                  end
         
     | 
| 
       35 
37 
     | 
    
         | 
| 
       36 
38 
     | 
    
         
             
                  state :comment do
         
     | 
| 
         @@ -41,7 +43,7 @@ module Rouge 
     | 
|
| 
       41 
43 
     | 
    
         | 
| 
       42 
44 
     | 
    
         
             
                  state :tag do
         
     | 
| 
       43 
45 
     | 
    
         
             
                    rule %r/\s+/m, Text
         
     | 
| 
       44 
     | 
    
         
            -
                    rule %r/[\ 
     | 
| 
      
 46 
     | 
    
         
            +
                    rule %r/[\p{L}:_][\p{Word}\p{Cf}:.·-]*\s*=/m, Name::Attribute, :attr
         
     | 
| 
       45 
47 
     | 
    
         
             
                    rule %r(/?\s*>), Name::Tag, :pop!
         
     | 
| 
       46 
48 
     | 
    
         
             
                  end
         
     | 
| 
       47 
49 
     | 
    
         | 
    
        data/lib/rouge/lexers/yaml.rb
    CHANGED
    
    | 
         @@ -11,6 +11,8 @@ module Rouge 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  aliases 'yml'
         
     | 
| 
       12 
12 
     | 
    
         
             
                  filenames '*.yaml', '*.yml'
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                  # Documentation: https://yaml.org/spec/1.2/spec.html
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       14 
16 
     | 
    
         
             
                  def self.detect?(text)
         
     | 
| 
       15 
17 
     | 
    
         
             
                    # look for the %YAML directive
         
     | 
| 
       16 
18 
     | 
    
         
             
                    return true if text =~ /\A\s*%YAML/m
         
     | 
| 
         @@ -165,15 +167,15 @@ module Rouge 
     | 
|
| 
       165 
167 
     | 
    
         
             
                    )x, Keyword::Type
         
     | 
| 
       166 
168 
     | 
    
         | 
| 
       167 
169 
     | 
    
         
             
                    # an anchor
         
     | 
| 
       168 
     | 
    
         
            -
                    rule %r/&[\ 
     | 
| 
      
 170 
     | 
    
         
            +
                    rule %r/&[\p{L}\p{Nl}\p{Nd}_-]+/, Name::Label
         
     | 
| 
       169 
171 
     | 
    
         | 
| 
       170 
172 
     | 
    
         
             
                    # an alias
         
     | 
| 
       171 
     | 
    
         
            -
                    rule %r/\*[\ 
     | 
| 
      
 173 
     | 
    
         
            +
                    rule %r/\*[\p{L}\p{Nl}\p{Nd}_-]+/, Name::Variable
         
     | 
| 
       172 
174 
     | 
    
         
             
                  end
         
     | 
| 
       173 
175 
     | 
    
         | 
| 
       174 
176 
     | 
    
         
             
                  state :block_nodes do
         
     | 
| 
       175 
177 
     | 
    
         
             
                    # implicit key
         
     | 
| 
       176 
     | 
    
         
            -
                    rule %r/(( 
     | 
| 
      
 178 
     | 
    
         
            +
                    rule %r/((?:[\p{L}\p{Nl}\p{Nd}_][\p{L}\p{Nl}\p{Nd}\p{Blank}_-]*)?)(:)(?=\s|$)/ do |m|
         
     | 
| 
       177 
179 
     | 
    
         
             
                      groups Name::Attribute, Punctuation::Indicator
         
     | 
| 
       178 
180 
     | 
    
         
             
                      set_indent m[0], :implicit => true
         
     | 
| 
       179 
181 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/rouge/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rouge
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.21.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jeanine Adkisson
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-07-14 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
         
     | 
| 
       14 
14 
     | 
    
         
             
            email:
         
     | 
| 
         @@ -39,6 +39,7 @@ files: 
     | 
|
| 
       39 
39 
     | 
    
         
             
            - lib/rouge/demos/biml
         
     | 
| 
       40 
40 
     | 
    
         
             
            - lib/rouge/demos/bpf
         
     | 
| 
       41 
41 
     | 
    
         
             
            - lib/rouge/demos/brainfuck
         
     | 
| 
      
 42 
     | 
    
         
            +
            - lib/rouge/demos/brightscript
         
     | 
| 
       42 
43 
     | 
    
         
             
            - lib/rouge/demos/bsl
         
     | 
| 
       43 
44 
     | 
    
         
             
            - lib/rouge/demos/c
         
     | 
| 
       44 
45 
     | 
    
         
             
            - lib/rouge/demos/ceylon
         
     | 
| 
         @@ -108,6 +109,7 @@ files: 
     | 
|
| 
       108 
109 
     | 
    
         
             
            - lib/rouge/demos/irb
         
     | 
| 
       109 
110 
     | 
    
         
             
            - lib/rouge/demos/irb_output
         
     | 
| 
       110 
111 
     | 
    
         
             
            - lib/rouge/demos/isbl
         
     | 
| 
      
 112 
     | 
    
         
            +
            - lib/rouge/demos/janet
         
     | 
| 
       111 
113 
     | 
    
         
             
            - lib/rouge/demos/java
         
     | 
| 
       112 
114 
     | 
    
         
             
            - lib/rouge/demos/javascript
         
     | 
| 
       113 
115 
     | 
    
         
             
            - lib/rouge/demos/jinja
         
     | 
| 
         @@ -190,6 +192,7 @@ files: 
     | 
|
| 
       190 
192 
     | 
    
         
             
            - lib/rouge/demos/sparql
         
     | 
| 
       191 
193 
     | 
    
         
             
            - lib/rouge/demos/sqf
         
     | 
| 
       192 
194 
     | 
    
         
             
            - lib/rouge/demos/sql
         
     | 
| 
      
 195 
     | 
    
         
            +
            - lib/rouge/demos/ssh
         
     | 
| 
       193 
196 
     | 
    
         
             
            - lib/rouge/demos/supercollider
         
     | 
| 
       194 
197 
     | 
    
         
             
            - lib/rouge/demos/swift
         
     | 
| 
       195 
198 
     | 
    
         
             
            - lib/rouge/demos/tap
         
     | 
| 
         @@ -257,6 +260,7 @@ files: 
     | 
|
| 
       257 
260 
     | 
    
         
             
            - lib/rouge/lexers/biml.rb
         
     | 
| 
       258 
261 
     | 
    
         
             
            - lib/rouge/lexers/bpf.rb
         
     | 
| 
       259 
262 
     | 
    
         
             
            - lib/rouge/lexers/brainfuck.rb
         
     | 
| 
      
 263 
     | 
    
         
            +
            - lib/rouge/lexers/brightscript.rb
         
     | 
| 
       260 
264 
     | 
    
         
             
            - lib/rouge/lexers/bsl.rb
         
     | 
| 
       261 
265 
     | 
    
         
             
            - lib/rouge/lexers/c.rb
         
     | 
| 
       262 
266 
     | 
    
         
             
            - lib/rouge/lexers/ceylon.rb
         
     | 
| 
         @@ -327,6 +331,7 @@ files: 
     | 
|
| 
       327 
331 
     | 
    
         
             
            - lib/rouge/lexers/irb.rb
         
     | 
| 
       328 
332 
     | 
    
         
             
            - lib/rouge/lexers/isbl.rb
         
     | 
| 
       329 
333 
     | 
    
         
             
            - lib/rouge/lexers/isbl/builtins.rb
         
     | 
| 
      
 334 
     | 
    
         
            +
            - lib/rouge/lexers/janet.rb
         
     | 
| 
       330 
335 
     | 
    
         
             
            - lib/rouge/lexers/java.rb
         
     | 
| 
       331 
336 
     | 
    
         
             
            - lib/rouge/lexers/javascript.rb
         
     | 
| 
       332 
337 
     | 
    
         
             
            - lib/rouge/lexers/jinja.rb
         
     | 
| 
         @@ -420,6 +425,7 @@ files: 
     | 
|
| 
       420 
425 
     | 
    
         
             
            - lib/rouge/lexers/sqf.rb
         
     | 
| 
       421 
426 
     | 
    
         
             
            - lib/rouge/lexers/sqf/keywords.rb
         
     | 
| 
       422 
427 
     | 
    
         
             
            - lib/rouge/lexers/sql.rb
         
     | 
| 
      
 428 
     | 
    
         
            +
            - lib/rouge/lexers/ssh.rb
         
     | 
| 
       423 
429 
     | 
    
         
             
            - lib/rouge/lexers/supercollider.rb
         
     | 
| 
       424 
430 
     | 
    
         
             
            - lib/rouge/lexers/swift.rb
         
     | 
| 
       425 
431 
     | 
    
         
             
            - lib/rouge/lexers/tap.rb
         
     |