BeeSourceWriter.st
author Patrik Svestka <patrik.svestka@gmail.com>
Wed, 17 Feb 2021 15:24:09 +0100
branchjv
changeset 4568 524471ef6575
parent 4381 5f0582aa5462
permissions -rw-r--r--
Changing the encoding style header for fileOutAs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
4330
998eb03f0736 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4162
diff changeset
     2
 COPYRIGHT (c) 2015-2016 Jan Vrany
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
              All Rights Reserved
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 hereby transferred.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic3' }"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ NameSpace: Smalltalk }"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
SmalltalkChunkFileSourceWriter subclass:#BeeSourceWriter
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    17
	instanceVariableNames:'project timestamp'
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:''
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'Kernel-Classes-Support'
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!BeeSourceWriter class methodsFor:'documentation'!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
copyright
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"
4330
998eb03f0736 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4162
diff changeset
    27
 COPYRIGHT (c) 2015-2016 Jan Vrany
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
              All Rights Reserved
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
 hereby transferred.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
! !
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!BeeSourceWriter class methodsFor:'simple API'!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
fileOut:aClass on:aStream
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    self fileOut:aClass on:aStream withTimeStamp:false
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
        withInitialize:true withDefinition:true
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
        methodFilter:nil encoder:nil
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    "Created: / 14-04-2015 / 13:12:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
! !
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    49
!BeeSourceWriter methodsFor:'accessing'!
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    50
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    51
project: aString
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    52
    "Set a Bee project name used in project: part of change header"
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    53
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    54
    project := aString.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    55
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    56
    "Modified (comment): / 26-10-2018 / 11:39:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    57
! !
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    58
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
!BeeSourceWriter methodsFor:'source writing'!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
fileOut:aClass on:outStreamArg withTimeStamp:stampIt withInitialize:initIt withDefinition:withDefinition methodFilter:methodFilter encoder:encoderOrNil
4365
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    62
    | stream |
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    63
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    64
    timestamp := Timestamp now printStringIso8601.
4365
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    65
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    66
    "/ The only encoding supported by Bee Smalltalk is UTF8.
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    67
    "/ However, Bee does not like "{ Encoding: ... } pragmas.
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    68
    "/ To avoid these pragmas in output, pass down EncodedStream
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    69
    "/ and nil encoder. Bit of a hack - see SmalltalkChunkSourceWriter >>
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    70
    "/ fileOut:...
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    71
    stream := outStreamArg.
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    72
    encoderOrNil notNil ifTrue:[ 
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    73
        self assert: encoderOrNil == CharacterEncoder encoderForUTF8.
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    74
        stream isEncodedStream ifFalse:[
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    75
            stream := EncodedStream stream: outStreamArg encoder: encoderOrNil
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    76
        ].
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    77
    ].
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    78
    super fileOut:aClass on:stream withTimeStamp:stampIt withInitialize:initIt withDefinition:withDefinition methodFilter:methodFilter encoder:nil
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    "Created: / 14-04-2015 / 12:26:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4365
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    81
    "Modified: / 11-10-2018 / 19:00:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    82
!
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    83
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    84
fileOutAllDefinitionsOf:aNonMetaClass on:aStream
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    85
    self fileOutAllDefinitionsOf:aNonMetaClass on:aStream withNameSpace: false.
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    86
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    87
    "Created: / 07-09-2016 / 15:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
fileOutAllDefinitionsOf:aNonMetaClass on:aStream withNameSpace: withNameSpacePragma
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    "append expressions on aStream, which defines myself and all of my private classes."
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    self fileOutDefinitionOf:aNonMetaClass on:aStream withNameSpace: withNameSpacePragma.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    "/ self fileOutDefinitionOf:aNonMetaClass on:aStream.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    "/ aStream nextPutChunkSeparator. 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    aStream cr.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    "/
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    "/ optional classInstanceVariables
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "/
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    aNonMetaClass class instanceVariableString isBlank ifFalse:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
        self fileOutClassInstVarDefinitionOf:aNonMetaClass on:aStream
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    "/ here, the full nameSpace prefixes are output,
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    "/ to avoid confusing stc 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    "/ (which otherwise could not find the correct superclass)
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    "/
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    Class fileOutNameSpaceQuerySignal answer:false do:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
        Class forceNoNameSpaceQuerySignal answer:true do:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
            aNonMetaClass privateClassesSorted do:[:aClass |
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
                 self fileOutAllDefinitionsOf:aClass on:aStream withNameSpace: false
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
            ]
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
        ]
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    "Created: / 14-04-2015 / 13:02:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
fileOutCategory:aCategory of:aClass except:skippedMethods only:savedMethods methodFilter:methodFilter on:aStream
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    "file out all methods belonging to aCategory, aString onto aStream.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
     If skippedMethods is nonNil, those are not saved.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
     If savedMethods is nonNil, only those are saved.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
     If both are nil, all are saved. See version-method handling in
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
     fileOut for what this is needed."
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
    |sortedSelectors interestingMethods prjDef|
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    interestingMethods := OrderedCollection new.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    aClass methodsDo:[:each |
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
        | wanted method shadowed |
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
        method := each.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
        (methodsAlreadySaved includes:method) ifFalse:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
            (aCategory = method category) ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
                wanted := methodFilter isNil or:[methodFilter value:method].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
                wanted ifFalse:[ 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
                    "/ care for methods which have been shadowed by an extension from another package!!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
                    "/ The problem is that we cannot easily introspect the filter, so we cannot know
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
                    "/ if the filter is for package or not. In most (all?) cases it is as this method
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
                    "/ is mostly used by source code management, so if the filter filters method out,
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
                    "/ try afain for possibly shadowed method.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
                    methodFilter notNil ifTrue:[ 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
                        shadowed := method shadowedMethod.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
                        shadowed notNil ifTrue:[ 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
                            wanted := methodFilter value: shadowed.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
                        ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
                    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
                ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
                wanted ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
                    skippedMethods notNil ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
                        wanted := (skippedMethods includesIdentical:method) not
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
                    ] ifFalse:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
                        wanted := savedMethods isNil or:[ savedMethods includesIdentical:method ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
                    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
                    wanted ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
                        (method selector isSymbol) ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
                            interestingMethods add:method
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
                        ] ifFalse:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
                            Transcript showCR:'skipping non-symbol method ', method selector printString.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
                        ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
                    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
                ]
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
            ]
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
        ]
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    interestingMethods notEmpty ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
        "/
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
        "/ sort by selector
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
        "/
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
        sortedSelectors := interestingMethods collect:[:m | aClass selectorAtMethod:m].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
        sortedSelectors sortWith:interestingMethods.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
        generatingSourceForOriginal == true ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
            "/ care for methods which have been shadowed by an extension from another package!!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
            (prjDef := aClass theNonMetaclass projectDefinitionClass) notNil ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
                prjDef hasSavedOverwrittenMethods ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
                    interestingMethods := interestingMethods collect:[:m |
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
                                                |originalOrNil|
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
                                                
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
                                                (m package ~~ aClass package) ifTrue:[ 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
                                                    originalOrNil := prjDef savedOverwrittenMethodForClass:aClass selector:m selector.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
                                                    originalOrNil notNil ifTrue:[ 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
                                                        1.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
                                                        self breakPoint:#cg 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
                                                    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
                                                ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
                                                originalOrNil ? m
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
                                          ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
                ]
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
            ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
        ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
        interestingMethods do:[:eachMethod |
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
            self fileOutMethod:eachMethod on:aStream.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
            methodsAlreadySaved add:eachMethod.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
        ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    "Created: / 14-04-2015 / 13:05:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
    "Modified: / 14-04-2015 / 14:31:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
fileOutDefinitionOf:aNonMetaClass on:aStream withNameSpace: withNameSpacePragma
4376
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   208
    | revinfo author definition query |
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   209
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   210
    revinfo := aNonMetaClass revisionInfo.
4368
ae1d97e98f56 Fix `BeeProjectWriter` and `BeeSourceWriter` to work with classes with no revision info
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4366
diff changeset
   211
    author := revinfo notNil ifTrue:[ revinfo author ] ifFalse:[ UserPreferences current historyManagerSignature ].
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   212
    aStream nextPutAll: '!!ClassDefinition timeStamp:'; nextPutAll: timestamp storeString; 
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   213
                              nextPutAll: ' author: '; nextPutAll: author asString storeString; 
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   214
                            nextPutAll:' className: '; nextPutAll: aNonMetaClass nameWithoutNameSpacePrefix asString storeString.
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   215
    project notNil ifTrue:[ 
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   216
                     aStream nextPutAll: ' project: ';    nextPutAll: project asString storeString.
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   217
    ].  
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   218
    aStream nextPutAll: '!!'; cr; cr.       
4376
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   219
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   220
    definition := String streamContents:[:s |
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   221
        aNonMetaClass basicFileOutDefinitionOn:s withNameSpace: false withPackage: false.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   222
    ].
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   223
    query := AbstractSourceFileWriter classSourceRewriteQuery new.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   224
    query klass: aNonMetaClass source:definition.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   225
    definition := (query query) ? definition.            
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   226
    aStream nextPutAll: definition.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4374
diff changeset
   227
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
    aStream nextPut: $!!; cr.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
    "Created: / 14-04-2015 / 12:39:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   231
    "Modified: / 30-10-2018 / 18:49:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
fileOutMethod:aMethod on:aStream
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    "file a single method onto aStream."
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    |source possiblyRewrittenSource rewriteQuery|
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    source := aMethod source asSingleByteStringIfPossible.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
    source isNil ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
        Class fileOutErrorSignal 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
            raiseRequestWith:aMethod mclass
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
            errorString:' - no source for method: ', (aMethod displayString)
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
    ] ifFalse:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
        "/ hook to allow for just-in-time rewriting of a method's sourceCode while filing out
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
        "/ used when saving version_XXX methods in a non-XXX sourceCodeManager
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
        "/ (i.e. to rewrite all non-CVS version methods while saving into a CVS repository)
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
        "/ this is required because we cannot save an SVN version method (dollar-ID-...-dollar) into a
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
        "/ CVS repository without loosing the original string with the next checkout, because it also gets  
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
        "/ expanded by CVS. The same is true vice-versa for CVS-Ids, which get clobbered by SVN.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
        "/ also used, when generating sourcecode for another Smalltalk system (VSE fileout)
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
4366
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   253
        | history author |
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   254
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
        rewriteQuery := AbstractSourceFileWriter methodSourceRewriteQuery new.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
        rewriteQuery method:aMethod source:source.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
        possiblyRewrittenSource := (rewriteQuery query) ? source.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
4366
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   259
        history := HistoryManager getAllHistoriesFrom: source.
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   260
        history notEmptyOrNil ifTrue:[ 
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   261
            author := history last user.
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   262
        ] ifFalse:[ 
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   263
            | revInfo |
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   264
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   265
            revInfo := aMethod revisionInfo.
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   266
            revInfo notNil ifTrue:[ 
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   267
                author := revInfo author.
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   268
            ].
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   269
        ].
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   270
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
        aStream nextPutAll: '!!MethodDefinition timeStamp:'; nextPutAll: timestamp storeString; 
4366
5a3597de6ece `BeeSourceWriter`: compute method's author from method history or class author
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4365
diff changeset
   272
                nextPutAll: ' author: ';    nextPutAll: (author ? 'Unknown') storeString;
4374
806faa11e4de Fix `BeeSourceWriter` to use unqualified class name
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4368
diff changeset
   273
                nextPutAll: ' className: '; nextPutAll: aMethod mclass nameWithoutNameSpacePrefix storeString; 
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
                nextPutAll: ' selector: ';  nextPutAll: aMethod selector storeString; 
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   275
                nextPutAll: ' category: ';  nextPutAll: aMethod category storeString.
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   276
        project notNil ifTrue:[ 
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   277
        aStream nextPutAll: ' project: ';    nextPutAll: project asString storeString.
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   278
        ].
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   279
        aStream
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
                nextPutAll: '!!'.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
        aStream cr.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
        aStream nextChunkPut:possiblyRewrittenSource.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
        aStream cr.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
    "Created: / 14-04-2015 / 12:41:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   287
    "Modified: / 30-10-2018 / 18:48:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
fileOutMethods: methods on: stream
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
    methods do:[:method| 
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
        self fileOutMethod: method on: stream.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
    ]
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
    "Created: / 14-04-2015 / 12:41:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   297
!
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   298
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   299
fileOutPool: pool on: stream
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   300
    | revinfo author   |
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   301
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   302
    revinfo := pool theNonMetaclass revisionInfo.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   303
    author := revinfo notNil ifTrue:[ revinfo author ] ifFalse:[ UserPreferences current historyManagerSignature ].
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   304
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   305
    stream nextPutAll: '!!PoolDictionaryAddition';
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   306
            nextPutAll: ' timeStamp:'; nextPutAll: timestamp storeString; 
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   307
            nextPutAll: ' author: '; nextPutAll: author asString storeString.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   308
    project notNil ifTrue:[
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   309
            stream nextPutAll:'  project: '; nextPutAll: project storeString.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   310
    ].
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   311
    stream nextPut: $!!; cr.
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   312
    stream nextPutAll: '''(SmalltalkProject getProject: '''; nextPutAll: (project ? 'Default'); nextPutAll: ''') addPoolDictionary: '; nextPutAll: pool name storeString; nextPut: $!!; cr.
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   313
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   314
    stream nextPutAll: pool name; cr.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   315
    pool keysAndValuesDo:[ :name :value |
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   316
         stream tab; nextPutAll: 'at: ';nextPutAll: name asString storeString; nextPutAll: ' put: '; nextPutAll: value storeString; nextPut: $;;cr.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   317
    ].
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   318
    stream tab; nextPutAll: 'yourself!!'; cr.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   319
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   320
    "Created: / 27-10-2018 / 17:58:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   321
    "Modified: / 28-10-2018 / 14:48:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   322
!
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   323
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   324
generateHeaderWithCopyrightOn:outStream
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   325
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   326
    "/ No copyrights in Bee sources
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   327
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   328
    "Created: / 07-09-2016 / 15:37:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
! !
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
4365
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   331
!BeeSourceWriter class methodsFor:'documentation'!
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   332
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   333
version_HG
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   334
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   335
    ^ '$Changeset: <not expanded> $'
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   336
! !
edfc925ae6b1 Fix `BeeSourceWriter` to avoid writing Smalltalk/X encoding pragma
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   337