BeeProjectSourceWriter.st
author Patrik Svestka <patrik.svestka@gmail.com>
Wed, 17 Feb 2021 15:24:09 +0100
branchjv
changeset 4568 524471ef6575
parent 4381 5f0582aa5462
child 4573 ba0441fba5fe
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
3921
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    16
BeeProjectWriter subclass:#BeeProjectSourceWriter
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
    17
	instanceVariableNames:'porter classesToInitialize'
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
!BeeProjectSourceWriter 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
"
3921
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    37
!
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
3921
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    39
documentation
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    40
"
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    41
    A writer to write Smalltalk/X package in Bee Smalltalk format (.stp). Usage:
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    42
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    43
    BeeProjectSourceWriter fileOut: 'jv:calipel/s' to: '/tmp/jv-calipel-s.stp'
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
3921
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    45
    [author:]
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    46
        Jan Vrany <jan.vrany@fit.cvut.cz>
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    47
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    48
    [instance variables:]
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
3921
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    50
    [class variables:]
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    51
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    52
    [see also:]
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    53
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
    54
"
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
! !
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    57
!BeeProjectSourceWriter methodsFor:'initialization'!
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    58
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    59
initialize
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    60
    "Invoked when a new instance is created."
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    61
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    62
    super initialize.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    63
    porter := BeeSourcePorter new.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    64
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    65
    "Created: / 26-10-2018 / 11:44:05 / 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
    66
! !
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    67
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
!BeeProjectSourceWriter 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
    69
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
fileOutClasses: classes on: stream
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
    71
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3921
diff changeset
    72
    stream nextPutAll: '"**** Class definitions ****"!!'; cr.
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3921
diff changeset
    73
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    74
    classes topologicalSort:[:a :b | b isSubclassOf:a].
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3921
diff changeset
    75
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    76
    classes do:[:cls | 
4162
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3921
diff changeset
    77
        cls isPrivate ifTrue:[
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3921
diff changeset
    78
            self error:'Cannot file out private class: ',cls name.
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3921
diff changeset
    79
        ].
e96794cd9edd Few improvements for Bee Smalltalk exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3921
diff changeset
    80
    ].  
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
    82
    classesToInitialize := classes select:[ :each | each class methodDictionary includesKey:#initialize ].
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
    83
4376
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
    84
    [
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    85
        classes do:[:class |
4367
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    86
            self activityNotification:'exporting ', class name,'...'.
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    87
            writer fileOut:class on:stream withTimeStamp:false withInitialize:false withDefinition:true methodFilter:[:m | false]
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    88
        ].
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
    89
        classes do:[:class |
4367
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    90
            self activityNotification:'exporting ', class name,'...'.
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    91
            writer fileOut:class on:stream withTimeStamp:false withInitialize:false withDefinition:false methodFilter:[:m | 
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    92
                | who |
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    93
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    94
                who := m who.
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    95
                (who methodClass isMetaclass and:[ who methodSelector == #copyright ]) not
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    96
                    and:[ (AbstractSourceCodeManager isVersionMethodSelector: who methodSelector) not ]
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    97
            ]
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
    98
        ].
4376
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
    99
    ] on: AbstractSourceFileWriter methodSourceRewriteQuery do:[:request |
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   100
        | method source |
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   101
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   102
        method := request method.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   103
        source := request source.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   104
        source := porter portMethod: method source: source.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   105
        request proceedWith: source.         
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   106
    ] on: AbstractSourceFileWriter classSourceRewriteQuery do:[:request |
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   107
        | klass source |
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   108
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   109
        klass := request klass.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   110
        source := request source.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   111
        source := porter portClass: klass source: source.
350ad64fbae9 `BeeSourcePorter` strip namespace from class names
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4367
diff changeset
   112
        request proceedWith: source.         
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    ].
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    "Created: / 14-04-2015 / 13:47:38 / 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
   116
    "Modified: / 30-10-2018 / 15:49:42 / 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
   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
fileOutExtensions: methods on:stream
4367
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   120
3850
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
    self activityNotification:'exporting extensions...'.
4367
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   122
    AbstractSourceFileWriter methodSourceRewriteQuery handle:[:request |
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   123
        | method source |
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   124
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   125
        method := request method.
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   126
        source := request source.
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   127
        source := porter portMethod: method source: source.
4367
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   128
        request proceedWith: source.         
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   129
    ] do:[
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   130
        methods do:[:eachMethod |
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   131
            writer fileOutMethods:methods on:stream.
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   132
            stream cr.
7ca6042ee443 `BeeProjectSourceWriter`: add support for automagic source code porting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4330
diff changeset
   133
        ]
3850
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
4381
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   136
    "Modified: / 30-10-2018 / 15:49:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   137
!
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   138
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   139
fileOutFooterOn:aStresm
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   140
    classesToInitialize notEmptyOrNil ifTrue:[ 
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   141
        | classMap |
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   142
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   143
        classMap := Dictionary new.
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   144
        porter collectClassRewritesFrom: (classesToInitialize collect:[:e|e name]) into: classMap. 
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   145
        aStresm nextPutAll: '"**** Initializing ****"!!'; cr.
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   146
        classesToInitialize do:[:each | 
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   147
            | name |
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   148
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   149
            name := classMap at: each name ifAbsent:[ each name ].
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   150
            aStresm nextPutAll: name; nextPutAll: ' initialize!!'; cr.
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   151
        ].
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   152
    ].
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   153
5f0582aa5462 Various fixes for Bee source / package writer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4377
diff changeset
   154
    "Created: / 30-10-2018 / 15:36:34 / 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
   155
!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
fileOutHeaderOn: aStream
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
3921
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   159
    aStream nextPutAll:(
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   160
'"
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   161
        __________________________________________________
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   162
        Author: %(AUTHOR).
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   163
        Project name: %(NAME)
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   164
        Version: %(VERSION)
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   165
        Timestamp: %(TIMESTAMP)
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   166
        Description: %(DESCRIPTION)
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   167
        __________________________________________________
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   168
"
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   169
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   170
' bindWithArguments: self mappings)
3850
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
    "Created: / 14-04-2015 / 13:42:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3921
243f926d6101 Some work on Bee project exporter
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3850
diff changeset
   173
    "Modified: / 02-11-2015 / 19:00:38 / 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
   174
!
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   175
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   176
fileOutPools: pools on: stream   
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   177
    pools do:[:pool | 
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   178
        self activityNotification:'exporting ', pool name,'...'.
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   179
        writer fileOutPool:pool on:stream.          
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   180
    ].
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   181
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   182
    "Created: / 29-10-2018 / 15:42:07 / 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
   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
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
!BeeProjectSourceWriter methodsFor:'utilities'!
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
ensureNoUnicodeInClass:aClass
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
    "/ check if we need UTF8 encoding
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
    aClass withAllPrivateClasses do:[:cls |
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
         cls instAndClassMethods contains:[:m |
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
            self ensureNoUnicodeInMethod: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
ensureNoUnicodeInMethod:aMethod
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    |src|
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    src := aMethod source.
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
    src 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
   201
        self error:'missing source in ',aMethod whoString
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
    src asSingleByteStringIfPossible isWideString ifTrue:[
461c0b054a4f Added Bee source writer (both for inidividual classes and for project sources)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
        self error:(aMethod whoString , ' contains unicode strings or character contants. Cannot be exported to VSE')
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
4377
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   208
!BeeProjectSourceWriter class methodsFor:'documentation'!
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   209
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   210
version_HG
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   211
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   212
    ^ '$Changeset: <not expanded> $'
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   213
! !
cbf86fdee06c `BeeProjectSourceWriter`: add support for shared pools
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4376
diff changeset
   214