First version of %embed nodes support. They allow to replace text in their parents with the content of that nodes.
This commit is contained in:
parent
c8afd87f54
commit
6f9f6285d5
@ -423,8 +423,8 @@ GrafoscopioBrowser >> updateSystem [
|
||||
(ConfigurationOfCitezen project latestVersion: #development) load.
|
||||
|
||||
Gofer new
|
||||
smalltalkhubUser: 'Offray' project: 'Ubakye';
|
||||
package: 'Ubakye';
|
||||
smalltalkhubUser: 'Offray' project: 'Grafoscopio';
|
||||
package: 'Grafoscopio';
|
||||
load.
|
||||
|
||||
]
|
||||
|
@ -80,7 +80,7 @@ GrafoscopioNode >> addNodeAfter [
|
||||
|
||||
]
|
||||
|
||||
{ #category : #'as yet unclassified' }
|
||||
{ #category : #exporting }
|
||||
GrafoscopioNode >> asMarkdown [
|
||||
"Exports children of the curren node as pandoc markdown, using special nodes for config options and
|
||||
bibliography."
|
||||
@ -93,7 +93,7 @@ GrafoscopioNode >> asMarkdown [
|
||||
|
||||
]
|
||||
|
||||
{ #category : #'as yet unclassified' }
|
||||
{ #category : #exporting }
|
||||
GrafoscopioNode >> asSton [
|
||||
"Exports current tree as STON format"
|
||||
| stonOutput |
|
||||
@ -104,7 +104,7 @@ GrafoscopioNode >> asSton [
|
||||
|
||||
]
|
||||
|
||||
{ #category : #'as yet unclassified' }
|
||||
{ #category : #initialization }
|
||||
GrafoscopioNode >> becomeDefaultTree [
|
||||
| node1 node2 node3 |
|
||||
self level: 0.
|
||||
@ -247,24 +247,24 @@ GrafoscopioNode >> level: anInteger [
|
||||
level := anInteger
|
||||
]
|
||||
|
||||
{ #category : #'as yet unclassified' }
|
||||
{ #category : #exporting }
|
||||
GrafoscopioNode >> markdownContent [
|
||||
"Extracts the markdown of a node using body as content, header as title and level as hierarchical level of the title.
|
||||
If special nodes types are present, converts them into proper markup to be embedded inside markdown"
|
||||
| markdown configDict specialWords embedNodes temporalBody |
|
||||
markdown := '' writeStream.
|
||||
specialWords := #('#config' '#abstract' '#invisible' '#idea' '#footnote' 'nuevoNodo' '%embed').
|
||||
specialWords := #('%config' '%abstract' '%invisible' '%idea' '%footnote' 'nuevoNodo' '%embed').
|
||||
(self level > 0) & (specialWords includes: self header) not & (specialWords includes: ((self header findTokens: $ ) at: 1)) not
|
||||
ifTrue: [
|
||||
self level timesRepeat: [ markdown nextPutAll: '#' ].
|
||||
markdown nextPutAll: ' '.
|
||||
markdown nextPutAll: (self header copyReplaceTokens: #cr with: #lf); lf; lf.
|
||||
embedNodes := self headers select: [:each | ((each findTokens: $ ) at: 1) = '%embed'].
|
||||
embedNodes := self children select: [:each | ((each header findTokens: $ ) at: 1) = '%embed'].
|
||||
temporalBody := self body.
|
||||
embedNodes ifNotNil: [ ].
|
||||
markdown nextPutAll: (self body contents withUnixLineEndings); lf; lf].
|
||||
embedNodes ifNotNil: [ embedNodes do: [ :each | temporalBody := temporalBody copyReplaceAll: (each header) with: each body]].
|
||||
markdown nextPutAll: (temporalBody contents withUnixLineEndings); lf; lf].
|
||||
|
||||
(self header = '#config')
|
||||
(self header = '%config')
|
||||
ifTrue: [
|
||||
configDict := STON fromString: (self body).
|
||||
markdown nextPutAll: '---'; lf.
|
||||
@ -273,15 +273,19 @@ GrafoscopioNode >> markdownContent [
|
||||
markdown nextPutAll: 'bibliography: ', (configDict at: 'bibliography'); lf.
|
||||
markdown nextPutAll: 'abstract: ', '|'; lf; nextPutAll: (configDict at: 'abstract'); lf.
|
||||
markdown nextPutAll: '---'; lf. ].
|
||||
((self header findString: '#idea') = 1)
|
||||
ifTrue: [markdown nextPutAll: (self body contents withInternetLineEndings); lf; lf. ].
|
||||
((self header findString: '#footnote') = 1)
|
||||
((self header findString: '%idea') = 1)
|
||||
ifTrue: ["markdown nextPutAll: (self body contents withInternetLineEndings); lf; lf."
|
||||
embedNodes := self children select: [:each | ((each header findTokens: $ ) at: 1) = '%embed'].
|
||||
temporalBody := self body.
|
||||
embedNodes ifNotNil: [ embedNodes do: [ :each | temporalBody := temporalBody copyReplaceAll: (each header) with: each body]].
|
||||
markdown nextPutAll: (temporalBody contents withUnixLineEndings); lf; lf.
|
||||
].
|
||||
((self header findString: '%footnote') = 1)
|
||||
ifTrue: [
|
||||
markdown nextPutAll: ('[^',(self header copyReplaceAll: '#footnote ' with: ''),']: ' ); lf.
|
||||
markdown nextPutAll: (self body contents withInternetLineEndings); lf; lf. ].
|
||||
((self header findString: '%embed') = 1)
|
||||
ifTrue: "[markdown nextPutAll: (self body contents withInternetLineEndings); lf; lf. ]."
|
||||
[markdown nextPutAll: (((self parent body) copyReplaceAll: (self header) with: (self body)) contents withInternetLineEndings); lf; lf. ].
|
||||
ifTrue: [ ].
|
||||
^markdown contents
|
||||
]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user