Wrapped body done in smalltalk.

Starting refactor on nodes
This commit is contained in:
Santiago Bragagnolo 2020-02-19 15:52:46 +00:00 committed by Offray Luna
parent 8ffb0c0db7
commit 2a6f96f588
3 changed files with 77 additions and 79 deletions

View File

@ -203,58 +203,6 @@ GrafoscopioNode >> asStonFromRoot [
]
{ #category : #initialization }
GrafoscopioNode >> becomeDefaultTestTree [
| node1 node2 node3 node4 |
self
created: DateAndTime now printString;
header: 'Arbol principal'.
node1 := self class new
created: DateAndTime now printString;
header: 'Markup';
body: 'I am <b>just a node with markup</b>';
tagAs: 'text';
links: 'temp.md'.
node2 := self class new
created: DateAndTime now printString;
header: '%output Code';
tagAs: 'código';
body: '(ConfigurationOfGrafoscopio>>#version14:) sourceCode'.
node3 := self class new
created: DateAndTime now printString;
header: '%invisible';
tagAs: 'text';
body: '<i>Just testing</i>'.
node1 addNode: node3.
node4 := self class new
created: DateAndTime now printString;
header: 'Something';
tagAs: 'text';
body: '<h1>else</h1>'.
node1 addNode: node4.
node1 addNode: node2.
self
addNode: node1.
]
{ #category : #initialization }
GrafoscopioNode >> becomeDefaultTree [
"I create a starting tree for all Grafoscopio notebooks with just one textual node as child."
| node1 |
self class new.
self
created: DateAndTime now printString;
header: 'Arbol principal';
tagAs: 'código'.
node1 := self class new
created: DateAndTime now printString;
header: 'Node 1';
body: '';
tagAs: 'text'.
self addNode: node1.
^ self
]
{ #category : #accessing }
GrafoscopioNode >> body [
"Returns the receivers body"
@ -1272,14 +1220,24 @@ GrafoscopioNode >> visitedGoTo: aCollection [
{ #category : #'as yet unclassified' }
GrafoscopioNode >> wrapBodyLines [
"I convert the node body from HTML format to Pandoc's Markdown."
| bodyFile |
(self isTaggedAs: 'código' ) ifTrue: [ ^self ].
bodyFile := FileLocator temp asFileReference / 'body.txt'.
bodyFile ensureCreateFile.
bodyFile writeStreamDo: [:out | out nextPutAll: self body ].
Smalltalk platformName = 'unix'
ifTrue: [ self body: (self wrapBodyLinesFor: bodyFile) ].
Smalltalk platformName = 'Win32'
ifTrue: [ self shouldBeImplemented ].
bodyFile ensureDelete.
self wrapBodyLines: 80
]
{ #category : #'as yet unclassified' }
GrafoscopioNode >> wrapBodyLines: aWidth [
"I convert the node body from HTML format to Pandoc's Markdown."
| bodyReader chunck |
(self isTaggedAs: 'código')
ifTrue: [ ^ self ].
bodyReader := body readStream.
body := String
streamContents: [ :bodyWriter |
[ bodyReader atEnd ]
whileFalse: [
chunck := bodyReader next: aWidth - 1.
bodyWriter nextPutAll: chunck.
bodyReader atEnd
ifFalse: [ bodyWriter nextPut: Character lf ] ] ]
]

View File

@ -16,10 +16,44 @@ GrafoscopioNodeTest >> dummyHtml [
^ txt
]
{ #category : #tests }
GrafoscopioNodeTest >> newTestTree [
| node0 node1 node2 node3 node4 |
node0 := GrafoscopioNode new
created: DateAndTime now printString;
header: 'Arbol principal'.
node1 := GrafoscopioNode new
created: DateAndTime now printString;
header: 'Markup';
body: 'I am <b>just a node with markup</b>';
tagAs: 'text';
links: 'temp.md'.
node2 := GrafoscopioNode new
created: DateAndTime now printString;
header: '%output Code';
tagAs: 'código';
body: '(ConfigurationOfGrafoscopio>>#version14:) sourceCode'.
node3 := GrafoscopioNode new
created: DateAndTime now printString;
header: '%invisible';
tagAs: 'text';
body: '<i>Just testing</i>'.
node1 addNode: node3.
node4 := GrafoscopioNode new
created: DateAndTime now printString;
header: 'Something';
tagAs: 'text';
body: '<h1>else</h1>'.
node1 addNode: node4.
node1 addNode: node2.
node0 addNode: node1.
^ node0
]
{ #category : #tests }
GrafoscopioNodeTest >> testAddingChildren [
| tree nnode orig |
tree := GrafoscopioNode new becomeDefaultTestTree.
tree := self newTestTree.
nnode := GrafoscopioNode new.
orig := tree children size.
tree addNode: nnode.
@ -59,7 +93,7 @@ GrafoscopioNodeTest >> testHasMarkdownSubtreesToExport [
result of this test is true.
Please see look #becomeDefaultTestTree message to see the details that makes this test true."
| tree |
tree := GrafoscopioNode new becomeDefaultTestTree.
tree := self newTestTree.
self assert: tree selectMarkupSubtreesToExport isNotEmpty equals: true.
]
@ -72,7 +106,7 @@ GrafoscopioNodeTest >> testInitializeIsOk [
{ #category : #tests }
GrafoscopioNodeTest >> testNodeSelection [
| tree child1 |
tree := GrafoscopioNode new becomeDefaultTestTree.
tree := self newTestTree..
child1 := tree preorderTraversalRootChildren at: 1.
child1 selected: true.
self assert: tree detectSelectionIndex equals: 1
@ -130,7 +164,7 @@ var links = tree.links(nodes);
{ #category : #tests }
GrafoscopioNodeTest >> testRemovingChildren [
| tree orig |
tree := GrafoscopioNode new becomeDefaultTestTree.
tree := self newTestTree..
orig := tree children size.
orig > 0 ifTrue: [ tree removeNode: (tree children at: 1) ].
self assert: tree children size equals: orig - 1.
@ -152,7 +186,7 @@ GrafoscopioNodeTest >> testToggleNodeSelection [
"I verify that a selected node can be unchosen once a new selection has been done."
| tree testNode1 testNode2 |
tree := GrafoscopioNode new becomeDefaultTestTree.
tree := self newTestTree..
testNode1 := (tree preorderTraversalRootChildren at: 1) selected: true.
self assert: tree detectSelectionIndex equals: testNode1 preorderTraversalIndex.
testNode2 := (tree preorderTraversalRootChildren at: 2).

View File

@ -154,6 +154,22 @@ GrafoscopioNotebook >> copyNodeToClipboard [
self notebookContent: notebook.
]
{ #category : #persistence }
GrafoscopioNotebook >> createNewExample [
| node0 node1 |
node0 := GrafoscopioNode new
created: DateAndTime now printString;
header: 'Arbol principal';
tagAs: 'código'.
node1 := GrafoscopioNode new
created: DateAndTime now printString;
header: 'Node 1';
body: '';
tagAs: 'text'.
node0 addNode: node1.
^ node0
]
{ #category : #operation }
GrafoscopioNotebook >> currentNode [
| currentNode |
@ -468,22 +484,12 @@ GrafoscopioNotebook >> importLinkContent [
GrafoscopioNotebook >> initialize [
super initialize.
self
notebook: (GrafoscopioNode new becomeDefaultTree);
notebook: (self createNewExample );
title: ' New | Grafoscopio notebook'.
self notebookContent: self notebook.
]
{ #category : #initialization }
GrafoscopioNotebook >> initializeDefaultTest [
super initialize.
self
notebook: (GrafoscopioNode new becomeDefaultTestTree);
title: ' New test | Grafoscopio notebook'.
self notebookContent: self notebook.
]
{ #category : #initialization }
GrafoscopioNotebook >> initializePresenter [
tree whenHighlightedItemChanged: [ :item |