SyntaxHighlighter2.st
branchjv
changeset 13173 e9da2324940d
parent 12807 ba8c5416aa28
parent 12911 6a562c9a975e
child 13175 64da878033cc
equal deleted inserted replaced
13172:06656434532b 13173:e9da2324940d
    62 OTHER DEALINGS IN THE SOFTWARE.
    62 OTHER DEALINGS IN THE SOFTWARE.
    63 "
    63 "
    64 ! !
    64 ! !
    65 
    65 
    66 !SyntaxHighlighter2 class methodsFor:'highlighting'!
    66 !SyntaxHighlighter2 class methodsFor:'highlighting'!
       
    67 
       
    68 
    67 
    69 
    68 formatClassDefinition:aString in:aClass elementsInto: elements
    70 formatClassDefinition:aString in:aClass elementsInto: elements
    69     "format (recolor) a class definition expression in a given class.
    71     "format (recolor) a class definition expression in a given class.
    70      Return the text containing font changes and color information."
    72      Return the text containing font changes and color information."
    71 
    73 
   208     "
   210     "
   209 
   211 
   210     "Modified: / 22-08-2006 / 13:32:04 / cg"
   212     "Modified: / 22-08-2006 / 13:32:04 / cg"
   211     "Created: / 05-07-2011 / 10:39:21 / cg"
   213     "Created: / 05-07-2011 / 10:39:21 / cg"
   212     "Modified: / 28-05-2013 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   214     "Modified: / 28-05-2013 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   213 ! !
   215 !
       
   216 
       
   217  !
   214 
   218 
   215 !SyntaxHighlighter2 methodsFor:'accessing'!
   219 !SyntaxHighlighter2 methodsFor:'accessing'!
   216 
   220 
   217 elements
   221 elements
   218     ^ elements
   222     ^ elements
   553 
   557 
   554     "Modified: / 19-01-2000 / 16:22:16 / cg"
   558     "Modified: / 19-01-2000 / 16:22:16 / cg"
   555     "Created: / 16-02-2012 / 21:56:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   559     "Created: / 16-02-2012 / 21:56:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   556 !
   560 !
   557 
   561 
       
   562 
       
   563 
   558 expression
   564 expression
   559     | node savedLastSelectorElement |
   565     | node savedLastSelectorElement |
   560 
   566 
   561     savedLastSelectorElement := lastSelectorElement.
   567     savedLastSelectorElement := lastSelectorElement.
   562     lastSelectorElement := nil.
   568     lastSelectorElement := nil.
   571     ^node
   577     ^node
   572 
   578 
   573     "Modified: / 19-01-2000 / 16:22:16 / cg"
   579     "Modified: / 19-01-2000 / 16:22:16 / cg"
   574     "Modified: / 16-02-2012 / 23:39:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   580     "Modified: / 16-02-2012 / 23:39:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   575 !
   581 !
       
   582 
       
   583 
   576 
   584 
   577 unaryExpressionFor:receiverArg
   585 unaryExpressionFor:receiverArg
   578     "parse a unary-expression; return a node-tree, nil or #Error"
   586     "parse a unary-expression; return a node-tree, nil or #Error"
   579 
   587 
   580     |receiver expr sel pos pos2 lNr arguments savedLastSelectorElement|
   588     |receiver expr sel pos pos2 lNr arguments savedLastSelectorElement|
   688     super markBadIdentifierFrom:pos1 to:pos2
   696     super markBadIdentifierFrom:pos1 to:pos2
   689 
   697 
   690     "Created: / 17-03-2012 / 19:02:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   698     "Created: / 17-03-2012 / 19:02:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   691 !
   699 !
   692 
   700 
       
   701 markGlobalClassIdentifierFrom:pos1 to:pos2
       
   702 
       
   703     | name env cls |
       
   704 
       
   705     super markGlobalClassIdentifierFrom:pos1 to:pos2.
       
   706 
       
   707     name := token isString ifTrue:[token asSymbolIfInterned] ifFalse:[nil].
       
   708     name notNil ifTrue:[
       
   709         env := (classToCompileFor ? UndefinedObject) theNonMetaclass environment.
       
   710         cls := env isNameSpace ifTrue:[env at: name] ifFalse:[nil].
       
   711         cls isNil ifTrue:[
       
   712             cls := Smalltalk at: name
       
   713         ]
       
   714     ].
       
   715 
       
   716     elements add: (SyntaxElementVariable from: pos1 to: pos2 type: #class value: cls)
       
   717 
       
   718     "Created: / 14-02-2010 / 14:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   719     "Modified: / 15-02-2010 / 10:53:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   720     "Modified: / 18-11-2011 / 14:54:53 / cg"
       
   721 !
       
   722 
   693 markLocalIdentifierFrom:pos1 to:pos2
   723 markLocalIdentifierFrom:pos1 to:pos2
   694     | node el prevEl |
   724     | node el prevEl |
   695 
   725 
   696     super markLocalIdentifierFrom:pos1 to:pos2.
   726     super markLocalIdentifierFrom:pos1 to:pos2.
   697     node := VariableNode methodLocalNamed:(sourceText string copyFrom: pos1 to: pos2).
   727     node := VariableNode methodLocalNamed:(sourceText string copyFrom: pos1 to: pos2).
   702     lastVariableElements at:node name put:el.
   732     lastVariableElements at:node name put:el.
   703     elements add: el.
   733     elements add: el.
   704 
   734 
   705     "Modified: / 21-08-2011 / 09:27:26 / cg"
   735     "Modified: / 21-08-2011 / 09:27:26 / cg"
   706     "Created: / 16-02-2012 / 22:36:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   736     "Created: / 16-02-2012 / 22:36:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   737 !
       
   738 
       
   739 markMethodArgumentIdentifierFrom:pos1 to:pos2
       
   740     super markMethodArgumentIdentifierFrom:pos1 to:pos2.
       
   741     self rememberVariableElementFor:tokenName type:#MethodArg from:pos1 to:pos2 assigned:false
       
   742 
       
   743     "Created: / 24-07-2010 / 09:25:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   744     "Modified: / 21-08-2011 / 09:27:26 / cg"
   707 !
   745 !
   708 
   746 
   709 markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode
   747 markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode
   710 
   748 
   711     | element selectorSymbol |
   749     | element selectorSymbol |
   739     "Modified: / 14-02-2010 / 19:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   777     "Modified: / 14-02-2010 / 19:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   740     "Modified (format): / 21-08-2011 / 09:18:21 / cg"
   778     "Modified (format): / 21-08-2011 / 09:18:21 / cg"
   741     "Modified: / 19-04-2012 / 09:53:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   779     "Modified: / 19-04-2012 / 09:53:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   742 !
   780 !
   743 
   781 
       
   782 
       
   783 
   744 markUnknownIdentifierFrom:pos1 to:pos2
   784 markUnknownIdentifierFrom:pos1 to:pos2
   745 
   785 
   746     ignoreBadIdentifier == true ifTrue:[ ^ self ].
   786     ignoreBadIdentifier == true ifTrue:[ ^ self ].
   747 
   787 
   748     super markUnknownIdentifierFrom:pos1 to:pos2
   788     super markUnknownIdentifierFrom:pos1 to:pos2
   749 
   789 
   750     "Created: / 31.3.1998 / 19:09:26 / cg"
   790     "Created: / 31.3.1998 / 19:09:26 / cg"
   751     "Modified: / 31.3.1998 / 19:10:30 / cg"
   791     "Modified: / 31.3.1998 / 19:10:30 / cg"
   752 !
   792 !
   753 
   793 
   754 rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2
   794 markVariable:v from:pos1 to:pos2 assigned:assigned
       
   795     super markVariable:v from:pos1 to:pos2 assigned:assigned.
       
   796     (v type == #GlobalVariable) ifTrue:[^self].
       
   797 
       
   798     self rememberVariableElementFor:v name type:v type from:pos1 to:pos2 assigned:assigned
       
   799 
       
   800     "Created: / 25-06-2010 / 13:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   801     "Modified: / 25-06-2010 / 14:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   802     "Modified: / 21-08-2011 / 09:26:30 / cg"
       
   803 !
       
   804 
       
   805 rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2 
       
   806     self rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2 assigned:true
       
   807 !
       
   808 
       
   809 rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2 assigned:assigned
   755     |element prev|
   810     |element prev|
   756 
   811 
   757     prev := lastVariableElements at:name ifAbsent:[nil].
   812     prev := (lastVariableElements at:typeSymbol ifAbsentPut:[Dictionary new]) at:name ifAbsent:[nil].
   758     (prev notNil and:[prev start == pos1]) ifTrue:[^ self].
   813     (prev notNil and:[prev start == pos1]) ifTrue:[^ self].
   759 
   814 
   760     element := SyntaxElement from: pos1 to: pos2 type:typeSymbol value: name.
   815     element := SyntaxElementVariable from: pos1 to: pos2 type:typeSymbol value: name assigned:assigned.
   761 
   816 
   762     prev notNil ifTrue:[prev next:element].
   817     prev notNil ifTrue:[prev next:element].
   763     lastVariableElements at:name put:element.
   818     (lastVariableElements at:typeSymbol) at:name put:element.
   764 
   819 
   765     elements add: element.
   820     elements add: element.
   766 
   821 
   767     "Created: / 21-08-2011 / 09:26:24 / cg"
   822     "Created: / 21-08-2011 / 09:26:24 / cg"
   768 ! !
   823 ! !
   769 
   824 
   770 !SyntaxHighlighter2 class methodsFor:'documentation'!
   825 !SyntaxHighlighter2 class methodsFor:'documentation'!
   771 
   826 
   772 version_CVS
   827 version_CVS
   773     ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.13 2013-04-19 09:38:13 cg Exp $'
   828     ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.14 2013-06-14 14:31:48 cg Exp $'
   774 !
   829 !
   775 
   830 
   776 version_HG
   831 version_HG
   777 
   832 
   778     ^ '$Changeset: <not expanded> $'
   833     ^ '$Changeset: <not expanded> $'
   779 !
   834 !
   780 
   835 
   781 version_SVN
   836 version_SVN
   782     ^ '§Id: SyntaxHighlighter2.st 7715 2011-04-10 16:32:58Z vranyj1 §'
   837     ^ '$Id: SyntaxHighlighter2.st,v 1.14 2013-06-14 14:31:48 cg Exp $'
   783 ! !
   838 ! !
   784 
   839