WebKitRenderer.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 08 Jun 2011 14:12:37 +0000
changeset 11 9388b5fb34aa
parent 10 c8eeee6c945e
child 15 f46eba00e7cb
permissions -rw-r--r--
Added support for title
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:libwebkit' }"
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Object subclass:#WebKitRenderer
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
     4
	instanceVariableNames:'view pid socket channel'
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'Views-WebKit'
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    10
PeekableStream subclass:#Channel
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    11
	instanceVariableNames:'socket peekChar buffer'
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    12
	classVariableNames:''
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    13
	poolDictionaries:''
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    14
	privateIn:WebKitRenderer
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    15
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    16
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
!WebKitRenderer class methodsFor:'instance creation'!
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
for: aWebKitView
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    22
    ^self new initializeForView: aWebKitView
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    "Created: / 02-06-2011 / 23:38:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    25
    "Modified: / 06-06-2011 / 10:38:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
! !
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    28
!WebKitRenderer methodsFor:'commands'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    29
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    30
setVariable: name to: value
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    31
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    32
    channel ifNil:[^self].
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    33
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    34
    channel
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    35
        nextPutAll: #set;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    36
        space;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    37
        nextPutAll: name;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    38
        nextPut:$=;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    39
        nextPutAll: value printString;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    40
        cr
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    41
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    42
    "Created: / 07-06-2011 / 10:21:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    43
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    44
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    45
!WebKitRenderer methodsFor:'event handling'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    46
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    47
LOAD_COMMIT: event
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    48
6
14d6a7489a64 Fixes in event handling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    49
    view url value ~= event second ifTrue:
14d6a7489a64 Fixes in event handling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    50
        [view url value: event second].
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    51
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    52
    "Created: / 07-06-2011 / 11:36:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
14d6a7489a64 Fixes in event handling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    53
    "Modified: / 07-06-2011 / 19:29:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    54
!
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    55
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    56
TITLE_CHANGED: event
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    57
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    58
    event second = '(no title)' ifFalse:
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    59
        [view title value: event second].
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    60
9388b5fb34aa Added support for title
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    61
    "Created: / 08-06-2011 / 14:14:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    62
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    63
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    64
!WebKitRenderer methodsFor:'event loop'!
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    65
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    66
dispatchEvent
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    67
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    68
    | ev sym |
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    69
    ev := channel nextEvent.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    70
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    71
    (self respondsTo: (sym := (ev first , ':') asSymbol))
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    72
        ifTrue:[self perform: sym with: ev]
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    73
        ifFalse:[Transcript showCR: 'UNKNOWN EVENT: ', ev asArray printString].
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    74
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    75
    "Created: / 06-06-2011 / 18:13:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    76
    "Modified: / 07-06-2011 / 11:35:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    77
!
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    78
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    79
eventLoop
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    80
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    81
    [ channel atEnd ] whileFalse: [
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    82
        self dispatchEvent 
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    83
    ]
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    84
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    85
    "Created: / 06-06-2011 / 18:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    86
    "Modified: / 07-06-2011 / 10:52:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    87
! !
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    88
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    89
!WebKitRenderer methodsFor:'initialization & release'!
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    90
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    91
close
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    92
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    93
    "Created: / 06-06-2011 / 18:38:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    94
    "Modified: / 07-06-2011 / 10:32:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    95
!
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    96
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    97
init
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    98
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    99
    self                                                            
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   100
        setVariable: #forward_keys to: 1;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   101
        setVariable: #show_status to: 0;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   102
        setVariable: #scrollbars_visible to: 1;
7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   103
        setVariable: #uri to: view url value;
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   104
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   105
        yourself
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   106
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   107
    "Created: / 06-06-2011 / 18:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   108
    "Modified: / 07-06-2011 / 19:57:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   109
!
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
initializeForView: aWebKitView
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    view := aWebKitView.
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    "Created: / 02-06-2011 / 23:38:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
! !
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   118
!WebKitRenderer methodsFor:'private'!
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   120
startEventLoop
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   121
    
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   122
    [ 
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   123
        self waitFor; init; eventLoop; close
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   124
    ] fork
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   125
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   126
    "Created: / 06-06-2011 / 17:57:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   127
!
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   129
waitFor
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   130
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   131
    socket listenFor: 1.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   132
    channel := Channel on: socket accept.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   133
    socket port asFilename remove.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   134
    socket close.
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   135
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   136
    "Created: / 06-06-2011 / 18:00:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   137
    "Modified: / 07-06-2011 / 10:49:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   138
! !
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   140
!WebKitRenderer methodsFor:'spawn / terminate'!
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   141
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   142
spawn
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   143
    |path uzbl args|
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   145
    path := Filename newTemporary.
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   146
    socket := Socket newUNIXserverAt:path pathName.
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   147
    uzbl := '/home/jv/work/uzbl/uzbl-core'.
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   148
    args := (Array 
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   149
                with:'/home/jv/work/uzbl/uzbl-core'
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   150
                with:'-s'
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   151
                with:view rendererView embeddingWindowId printString
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   152
                with:'--connect-socket=' , path pathName).
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   153
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   154
    self startEventLoop.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   155
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   156
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   157
    pid := OperatingSystem
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   158
     exec: uzbl
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   159
     withArguments: args
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   160
     fork: true.
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
    "Created: / 02-06-2011 / 23:40:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   163
    "Modified: / 07-06-2011 / 10:32:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
!
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
3
32456ba40192 Starts uzbl process and connects to its control socket
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   166
terminate
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    "Created: / 02-06-2011 / 23:40:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
! !
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   170
!WebKitRenderer::Channel class methodsFor:'instance creation'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   171
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   172
on: aReadStream
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   173
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   174
    ^self basicNew initializeOn: aReadStream
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   175
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   176
    "Created: / 07-06-2011 / 10:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   177
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   178
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   179
!WebKitRenderer::Channel methodsFor:'accessing'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   180
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   181
contents
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   182
    "return the entire contents of the stream.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   183
     For a readStream, that is the rest (i.e. upToEnd),
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   184
     for a writeStream, that is the collected data. As we do not know here,
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   185
     what we are, this is the responsibility of a subclass..."
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   186
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   187
    ^ self shouldNotImplement
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   188
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   189
    "Modified: / 07-06-2011 / 10:46:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   190
!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   191
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   192
peekChar
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   193
    ^ peekChar
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   194
!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   195
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   196
peekChar:something
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   197
    peekChar := something.
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   198
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   199
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   200
!WebKitRenderer::Channel methodsFor:'initialization'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   201
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   202
initializeOn: aReadStream
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   203
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   204
    socket := aReadStream.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   205
    buffer := String new writeStream.
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   206
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   207
    "Created: / 07-06-2011 / 10:45:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   208
    "Modified: / 08-06-2011 / 13:12:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   209
! !
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   210
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   211
!WebKitRenderer::Channel methodsFor:'private'!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   212
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   213
contentsSpecies
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   214
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   215
    ^String
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   216
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   217
    "Created: / 08-06-2011 / 13:19:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   218
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   219
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   220
!WebKitRenderer::Channel methodsFor:'queries'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   221
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   222
isReadable
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   223
    "return true, if reading is supported by the recevier.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   224
     This has to be redefined in concrete subclasses."
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   225
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   226
    ^ socket isReadable
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   227
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   228
    "Modified: / 07-06-2011 / 10:46:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   229
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   230
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   231
isWritable
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   232
    "return true, if writing is supported by the recevier.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   233
     This has to be redefined in concrete subclasses."
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   234
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   235
    ^ socket isWritable
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   236
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   237
    "Modified: / 07-06-2011 / 10:46:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   238
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   239
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   240
!WebKitRenderer::Channel methodsFor:'reading'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   241
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   242
expect: aString
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   243
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   244
    | s |
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   245
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   246
    (s := self next: aString size) ~= aString
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   247
        ifTrue:[self error: 'Unexpect data in rendered channel'].
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   248
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   249
    "Created: / 07-06-2011 / 10:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   250
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   251
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   252
next
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   253
    "return the next element of the stream
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   254
     - we do not know here how to do it, it must be redefined in subclass"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   255
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   256
    | char |
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   257
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   258
    ^peekChar isNil ifFalse:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   259
        char := peekChar.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   260
        peekChar := nil.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   261
        char.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   262
    ] ifTrue:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   263
        socket next
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   264
    ]
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   265
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   266
    "Modified: / 08-06-2011 / 13:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   267
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   268
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   269
next: n
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   270
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   271
    | nextn |
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   272
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   273
    peekChar isNil ifTrue:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   274
        nextn := socket next: n
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   275
    ] ifFalse:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   276
        nextn := peekChar asString , socket next: n - 1.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   277
        peekChar := nil
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   278
    ].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   279
    ^nextn
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   280
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   281
    "Created: / 07-06-2011 / 11:01:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   282
    "Modified: / 08-06-2011 / 13:04:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   283
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   284
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   285
nextEvent
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   286
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   287
    | ev arg |
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   288
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   289
    ev := OrderedCollection new: 4.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   290
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   291
    self upTo:$E.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   292
    self expect: 'VENT ['.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   293
    self skipFor:$].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   294
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   295
    ev add: (self upTo: Character space).
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   296
    
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   297
    [ (arg := self nextStringOrSymbolOrNumber) notNil] whileTrue:
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   298
        [ev add: arg].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   299
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   300
    ^ev asArray
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   301
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   302
    "
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   303
        (WebKitRenderer::Channel on: 'EVENT [1234] LOAD_COMMIT ''http://www.smalltalk-x.de''' readStream)
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   304
            nextEvent.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   305
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   306
        (WebKitRenderer::Channel on: 'EVENT [1234] TITLE ''This is title''' readStream)
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   307
            nextEvent.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   308
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   309
        (WebKitRenderer::Channel on: 'EVENT [1234] TITLE ''rock\''n\''roll''' readStream)
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   310
            nextEvent.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   311
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   312
        (WebKitRenderer::Channel on: 'EVENT [1234] VARIABLE_SET name str ''xxx''' readStream)
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   313
            nextEvent.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   314
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   315
        (WebKitRenderer::Channel on: 'EVENT [1234] VARIABLE_SET name int 12' readStream)
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   316
            nextEvent.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   317
10
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   318
        (WebKitRenderer::Channel on: 'EVENT [1234] VARIABLE_SET name float 1.2
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   319
EVENT [1234] VARIABLE_SET name string ''xxx''' readStream)
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   320
            nextEvent
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   321
        
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   322
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   323
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   324
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   325
    "
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   326
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   327
    "Created: / 07-06-2011 / 10:52:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   328
    "Modified: / 08-06-2011 / 13:45:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   329
!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   330
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   331
nextNumberOrSymbol
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   332
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   333
    | contents |
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   334
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   335
    buffer reset.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   336
    buffer nextPut: self next.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   337
    [self atEnd not and:[self peek isAlphaNumeric]] whileTrue:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   338
        buffer nextPut: self next.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   339
    ].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   340
    self peek == $. ifTrue:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   341
        buffer nextPut: self next.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   342
        [self atEnd not and:[self peek isAlphaNumeric]] whileTrue:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   343
            buffer nextPut: self next.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   344
        ]
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   345
    ].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   346
    contents := buffer contents.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   347
    (contents anySatisfy:[:c|c isLetter])
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   348
        ifTrue:[contents := contents asSymbol]
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   349
        ifFalse:[contents := contents asNumber].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   350
    ^contents.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   351
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   352
    "Created: / 08-06-2011 / 13:06:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   353
!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   354
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   355
nextString
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   356
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   357
    | char |
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   358
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   359
    "/eat $'
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   360
    buffer reset.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   361
    self next.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   362
    [self atEnd not and:[(char := self next) ~~ $']] whileTrue:[
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   363
        char == $\ ifTrue:[char := self next].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   364
        buffer nextPut: char.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   365
    ].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   366
    ^buffer contents.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   367
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   368
    "Created: / 08-06-2011 / 13:06:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   369
!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   370
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   371
nextStringOrSymbolOrNumber
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   372
10
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   373
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   374
    socket atEnd ifTrue:[^nil].
c8eeee6c945e Fixes in event reading
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   375
    self peek == Character cr ifTrue:[^nil]. 
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   376
    self skipSeparators.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   377
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   378
    self peek == $' ifTrue:[^self nextString].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   379
    self peek isDigit ifTrue:[^self nextNumberOrSymbol].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   380
    ^self nextSymbol
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   381
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   382
    "Created: / 08-06-2011 / 12:57:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   383
!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   384
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   385
nextSymbol
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   386
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   387
    ^super nextSymbol asSymbol
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   388
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   389
    "Created: / 08-06-2011 / 13:20:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   390
!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   391
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   392
peek
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   393
    "return the next element of the stream without advancing (i.e.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   394
     the following send of next will return this element again.)
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   395
     - we do not know here how to do it, it must be redefined in subclass"
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   396
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   397
    peekChar ifNil:[peekChar := socket next].
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   398
    ^peekChar.
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   399
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   400
    "Modified: / 08-06-2011 / 13:00:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   401
! !
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   402
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   403
!WebKitRenderer::Channel methodsFor:'reading (old)'!
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   404
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   405
old_nextEvent
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   406
5
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   407
    | ev |
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   408
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   409
    ev := OrderedCollection new: 4.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   410
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   411
    self upTo:$E.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   412
    self expect: 'VENT ['.
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   413
    self skipFor:$].
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   414
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   415
    ev add: (self upTo: Character space).
6
14d6a7489a64 Fixes in event handling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   416
    
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   417
    [ self old_nextEventArgumentIn: ev ] whileTrue.
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   418
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   419
    ^ev asArray
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   420
5
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   421
    "
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   422
        (WebKitRenderer::Channel on: 'EVENT [1234] LOAD_COMMIT ''http://www.smalltalk-x.de''' readStream)
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   423
            nextEvent.
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   424
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   425
        (WebKitRenderer::Channel on: 'EVENT [1234] VARIABLE_SET name str ''xxx''' readStream)
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   426
            nextEvent.
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   427
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   428
        (WebKitRenderer::Channel on: 'EVENT [1234] VARIABLE_SET name int 12' readStream)
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   429
            nextEvent.
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   430
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   431
        (WebKitRenderer::Channel on: 'EVENT [1234] VARIABLE_SET name float 1.2' readStream)
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   432
            nextEvent.
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   433
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   434
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   435
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   436
    "
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   437
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   438
    "Created: / 08-06-2011 / 12:57:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   439
!
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   440
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   441
old_nextEventArgumentIn: event
5
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   442
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   443
    | s c conv |
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   444
    s := String new writeStream.
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   445
    [ socket atEnd not and:[(c := socket next) ~~ Character space and:[ c ~~ Character cr ] ] ] 
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   446
        whileTrue: [ 
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   447
            conv == nil ifTrue: [
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   448
                c == $' ifTrue:[conv := #asString. c := socket next.] ifFalse:[
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   449
                c isDigit ifTrue: [conv := #asNumber] ifFalse:[
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   450
                conv := #asSymbol]]
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   451
            ].
6
14d6a7489a64 Fixes in event handling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   452
            (conv == #asNumber and:[c isDigit not and:[c ~~ $.]]) ifTrue:
14d6a7489a64 Fixes in event handling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   453
                [conv := #asSymbol].
5
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   454
            s nextPut: c.
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   455
    ].
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   456
    conv ifNotNil:[
6
14d6a7489a64 Fixes in event handling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   457
        conv = #asString ifTrue:[s skip: -1].
5
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   458
        event add: (s contents perform: conv).
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   459
    ].
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   460
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   461
    ^c == Character space.
fd7b79a506cf Event parsing improved
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   462
9
267f2990f003 Event reading improved (spaces and escapes in string literals)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   463
    "Created: / 08-06-2011 / 12:47:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   464
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   465
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   466
!WebKitRenderer::Channel methodsFor:'testing'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   467
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   468
atEnd
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   469
    "return true if the end of the stream has been reached;
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   470
     - we do not know here how to do it, it must be redefined in subclass"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   471
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   472
    ^ socket atEnd
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   473
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   474
    "Modified: / 07-06-2011 / 10:46:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   475
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   476
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   477
isEmpty
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   478
    "return true, if the contents of the stream is empty"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   479
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   480
    ^ socket isEmpty
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   481
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   482
    "Modified: / 07-06-2011 / 10:46:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   483
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   484
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   485
!WebKitRenderer::Channel methodsFor:'writing'!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   486
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   487
cr
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   488
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   489
    ^ socket cr
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   490
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   491
    "Created: / 07-06-2011 / 10:51:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   492
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   493
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   494
nextPut:anObject
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   495
    "put the argument, anObject onto the receiver
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   496
     - we do not know here how to do it, it must be redefined in subclass"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   497
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   498
    ^ socket nextPut:anObject
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   499
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   500
    "Modified: / 07-06-2011 / 10:50:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   501
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   502
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   503
nextPutAll:anObject
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   504
    "put the argument, anObject onto the receiver
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   505
     - we do not know here how to do it, it must be redefined in subclass"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   506
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   507
    ^ socket nextPutAll:anObject
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   508
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   509
    "Created: / 07-06-2011 / 10:51:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   510
!
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   511
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   512
space
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   513
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   514
    ^ socket space
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   515
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   516
    "Created: / 07-06-2011 / 10:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   517
! !
385102f5bf00 Simple event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   518
2
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
!WebKitRenderer class methodsFor:'documentation'!
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
version_SVN
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
    ^ '$Id$'
7e604e6f195e Minor refactoring...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
! !