gui/PPParserInspector.st
author Claus Gittinger <cg@exept.de>
Tue, 04 Mar 2014 22:14:44 +0100
changeset 332 b86b6a59e3c6
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
332
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/gui' }"
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
GLMCompositePresentation subclass:#PPParserInspector
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'PetitGui-Core'
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!PPParserInspector class methodsFor:'as yet unclassified'!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
openOn: aParserInstance
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self new openOn: aParserInstance
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!PPParserInspector methodsFor:'building'!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
compose
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	"self new openOn: PPArithmeticParser new"
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	self title: [:each | 'Parser Inspector on ', (each name ifNil: [each class name])].
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	self tabulator with: [ :browser | 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
		browser
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
			column: #sample;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
			column: #inspectors.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
		(browser transmit)
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
			fromOutsidePort: #entity;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
			fromOutsidePort: #sampleText;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
			to: #sample;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
			andShowIfNone: [ :a | self sampleIn: a ].
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
		(browser transmit) 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
			from: #sample port: #text;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
			toOutsidePort: #sampleText.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
		(browser transmit)
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
			from: #sample; "result"
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
			passivelyFrom: #sample port: #text; "sample text"
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
			from: #sample port: #stream; "parser stream"
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
			fromOutsidePort: #entity; "parser"  
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
			to: #inspectors;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
			andShow: [ :a | self inspectorsIn: a ].
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
		browser transmit 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
			from: #inspectors; 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
			to: #sample port: #selectionInterval; 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
			transformed: [:debugResult | debugResult ifNotNil: [debugResult start to: debugResult end] ] ]
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
! !
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!PPParserInspector methodsFor:'private building'!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
debuggerIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	composite tree
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		title: 'Debugger';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
		format: [:resultNode | resultNode formattedText ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
		display: [ :result :sample :stream :parser | {PPParserDebuggerResult parse: sample with: parser } ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		children: [:resultNode | resultNode children ].
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
inspectorsIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	self resultIn: composite.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	self debuggerIn: composite.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	self tallyIn: composite.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	self profileIn: composite.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	self progressIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
profileIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
	composite table 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
		title: 'Profile';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
		column: 'Parser' evaluated: [ :each | each first displayName ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
		column: 'Time (ms)' evaluated: [ :each | each second printString ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
		column: 'Percentage (%)' evaluated: [ :each | each third printString ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
		display: [ :result :sample :stream :parser  | stream asFrequencyTable ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
		noSelection;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
		showOnly: 50
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
progressChartIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	composite morph 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
		title: 'Progress';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
		display: [ :stream |
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
			| morph |
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
			morph := ScrollPane new.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
			morph color: Color white.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
			morph scroller addMorph: stream asPositionMorph.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
			morph ]
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
progressIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
	composite morph 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
		title: 'Progress';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
		display: [:result :sample :stream :parser  | 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
			| morph |
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
			morph := ScrollPane new.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
			morph color: Color white.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
			morph scroller addMorph: stream asPositionMorph.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
			morph ]
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
resultIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	(composite text)
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
		title: 'Result';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
		display: [ :result :sample :stream :parser | result ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
		act: [ :text :result :sample :stream :parser | result inspect ] icon: GLMUIThemeExtraIcons glamorousInspect entitled: 'Inspect';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
		act: [ :text :result :sample :stream :parser | result explore ] icon: GLMUIThemeExtraIcons glamorousSearch entitled: 'Explore'.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
sampleIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	(composite text)
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
		title: 'Sample';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
		display: [:parser :sample | sample ifNil: [''] ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
		allowNil;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
		populate: #selection
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
			icon: GLMUIThemeExtraIcons glamorousPlay
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
			on: $s
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
			entitled: 'Parse (s)'
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
			with: [ :presentation :parser | 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
				| stream output |
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
				stream := PPBrowserStream on: presentation text asString.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
				output := parser parse: stream.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
				output isPetitFailure
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
					ifTrue: [ presentation selectionInterval: (output position + 1 to: output position) ].
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
				(presentation pane port: #stream) value: stream.
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
				output ]
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
tallyIn: composite
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
	composite table 
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
		title: 'Tally';
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
		column: 'Parser' evaluated: [ :each | each first displayName ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
		column: 'Count' evaluated: [ :each | each second printString ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
		column: 'Percentage (%)' evaluated: [ :each | each third printString ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
		display: [:result :sample :stream :parser | stream asFrequencyTable ];
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
		noSelection;
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
		showOnly: 50
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
! !
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
!PPParserInspector class methodsFor:'documentation'!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
version
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/gui/PPParserInspector.st,v 1.1 2014-03-04 21:14:44 cg Exp $'
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
!
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
version_CVS
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/gui/PPParserInspector.st,v 1.1 2014-03-04 21:14:44 cg Exp $'
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
! !
b86b6a59e3c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147