[squeak-dev] The Trunk: ShoutCore-ul.49.mcz

Chris Muller asqueaker at gmail.com
Tue May 5 15:15:46 UTC 2015


Thanks guys!

On Tue, May 5, 2015 at 8:19 AM,  <commits at source.squeak.org> wrote:
> Marcel Taeumel uploaded a new version of ShoutCore to project The Trunk:
> http://source.squeak.org/trunk/ShoutCore-ul.49.mcz
>
> ==================== Summary ====================
>
> Name: ShoutCore-ul.49
> Author: ul
> Time: 5 May 2015, 1:06:58.433 am
> UUID: 965b17b5-211b-4841-903f-be90e72d003d
> Ancestors: ShoutCore-ul.48
>
> Fix styling in Inspectors and ObjectExplorers.
>
> =============== Diff against ShoutCore-ul.48 ===============
>
> Item was added:
> + ----- Method: Inspector>>aboutToStyle: (in category '*ShoutCore') -----
> + aboutToStyle: aStyler
> +
> +       aStyler
> +               classOrMetaClass: object class;
> +               parseAMethod: false.
> +       ^true!
>
> Item was added:
> + ----- Method: ObjectExplorer>>aboutToStyle: (in category '*ShoutCore') -----
> + aboutToStyle: aStyler
> +
> +       aStyler
> +               classOrMetaClass: self object class;
> +               parseAMethod: false.
> +       ^true
> +       !
>
> Item was changed:
>   Object subclass: #SHParserST80
> +       instanceVariableNames: 'classOrMetaClass source workspace arguments sourcePosition currentToken currentTokenFirst temporaries instanceVariables errorBlock currentTokenSourcePosition blockDepth bracketDepth ranges environment allowUnderscoreAssignments allowUnderscoreSelectors parseAMethod'
> -       instanceVariableNames: 'classOrMetaClass source workspace arguments sourcePosition currentToken currentTokenFirst temporaries instanceVariables errorBlock currentTokenSourcePosition blockDepth bracketDepth ranges environment allowUnderscoreAssignments allowUnderscoreSelectors'
>         classVariableNames: ''
>         poolDictionaries: ''
>         category: 'ShoutCore-Parsing'!
>
>   !SHParserST80 commentStamp: 'tween 8/16/2004 15:44' prior: 0!
>   I am a Smalltalk method / expression parser.
>
>   Rather than creating an Abstract Syntax Tree, I create a sequence of SHRanges (in my 'ranges' instance variable), which represent the tokens within the String I am parsing.
>
>   I am used by a SHTextStylerST80 to parse method source strings.
>   I am able to parse incomplete / incorrect methods, and so can be used to parse methods that are being edited.
>
>   My 'source' instance variable should be set to the string to be parsed.
>
>   My 'classOrMetaClass' instance var must be set to the class or metaClass for the method source so that I can correctly resolve identifiers within the source. If this is nil , I parse the source as an expression (i.e. a doIt expression).
>
>   My 'workspace' instance variable can be set to a Workspace, so that I can resolve workspace variables.
>
>   My 'environment' instance variable is the global namespace (this is initialized to Smalltalk, but can be set to a different environment).
>
>   Example 1.
>         ranges := SHParserST80 new
>                 classOrMetaClass: Object;
>                 source: 'testMethod ^self';
>                 parse;
>                 ranges
>
>   !
>
> Item was changed:
>   ----- Method: SHParserST80>>parse (in category 'parse') -----
>   parse
>         "Parse the receiver's text as a Smalltalk method"
>
> +       self parse: (parseAMethod ifNil: [ classOrMetaClass notNil ]).
> -       self parse: classOrMetaClass notNil.
>         errorBlock := nil!
>
> Item was added:
> + ----- Method: SHParserST80>>parseAMethod: (in category 'accessing') -----
> + parseAMethod: aBoolean
> +
> +       parseAMethod := aBoolean!
>
> Item was changed:
>   SHTextStyler subclass: #SHTextStylerST80
> +       instanceVariableNames: 'classOrMetaClass workspace font parser formatAssignments environment sourceMap processedSourceMap pixelHeight attributesByPixelHeight parseAMethod'
> -       instanceVariableNames: 'classOrMetaClass workspace font parser formatAssignments environment sourceMap processedSourceMap pixelHeight attributesByPixelHeight'
>         classVariableNames: 'SubduedSyntaxHighlights SyntaxHighlightingAsYouType SyntaxHighlightingAsYouTypeAnsiAssignment SyntaxHighlightingAsYouTypeLeftArrowAssignment'
>         poolDictionaries: ''
>         category: 'ShoutCore-Styling'!
>   SHTextStylerST80 class
>         instanceVariableNames: 'styleTable textAttributesByPixelHeight'!
>
>   !SHTextStylerST80 commentStamp: 'tween 8/27/2004 10:55' prior: 0!
>   I style Smalltalk methods and expressions.
>
>   My 'styleTable' class instance var holds an array ofArrays which control how each token is styled/coloured. See my defaultStyleTable class method for its structure.
>   My styleTable can be changed by either modifying the defaultStyleTable class method and then executing SHTextStylerST80 initialize ; or by giving me a new styleTable through my #styleTable: class method.
>
>   My 'textAttributesByPixelSize' class instance var contains a dictionary of dictionaries.
>         The key is a pixelSize and the value a Dictionary from token type Symbol to TextAttribute array.
>         It is created/maintained automatically.
>
>   I also install these 3 preferences when my class initialize method is executed....
>         #syntaxHighlightingAsYouType  - controls whether methods are styled in browsers
>         #syntaxHighlightingAsYouTypeAnsiAssignment - controls whether assignments are formatted to be :=
>         #syntaxHighlightingAsYouTypeLeftArrowAssignment - controls whether assignments are formatted to be _
>
>   I reimplement #unstyledTextFrom: so that TextActions are preserved in the unstyled text
>
>
>
>
>
>
>   !
>   SHTextStylerST80 class
>         instanceVariableNames: 'styleTable textAttributesByPixelHeight'!
>
> Item was added:
> + ----- Method: SHTextStylerST80>>parseAMethod: (in category 'accessing') -----
> + parseAMethod: aBoolean
> +
> +       parseAMethod := aBoolean!
>
> Item was changed:
>   ----- Method: SHTextStylerST80>>rangesIn:setWorkspace: (in category 'private') -----
>   rangesIn: aText setWorkspace: aBoolean
>         "Answer a collection of SHRanges by parsing aText.
>         When formatting it is not necessary to set the workspace, and this can make the parse take less time, so aBoolean specifies whether the parser should be given the workspace"
>
>         | shoutParserClass |
>         "Switch parsers if we have to"
>         shoutParserClass := (classOrMetaClass ifNil:[Object]) shoutParserClass.
> +       parser class == shoutParserClass ifFalse:[parser := shoutParserClass new].
> +       parser parseAMethod: parseAMethod.
> -       parser class = shoutParserClass ifFalse:[parser := shoutParserClass new].
> -
>         ^parser
>                 rangesIn: aText asString
>                 classOrMetaClass: classOrMetaClass
>                 workspace: (aBoolean ifTrue:[workspace])
>                 environment: environment
>   !
>
>


More information about the Squeak-dev mailing list