Improving lepiter page importer from markdeep and creating-improving a pharo and text snippet importer parser.

This commit is contained in:
ruidajo 2022-09-29 18:54:23 -05:00
parent 21ee43c9df
commit 739c7298f1
3 changed files with 42 additions and 8 deletions

View File

@ -2,7 +2,17 @@ Extension { #name : #LeDatabase }
{ #category : #'*MiniDocs' }
LeDatabase >> addPageFromMarkdeep: markdeepDocTree [
| remoteMetadata page |
| remoteMetadata divSnippets snippets page |
divSnippets := (markdeepDocTree xpath: '//div[@st-class]')
asOrderedCollection collect: [ :xmlElement | xmlElement postCopy ].
snippets := divSnippets collect: [ :xmlElement |
(xmlElement attributes at: 'st-class') = 'LeTextSnippet'
ifTrue: [ LeTextSnippet new contentFrom: xmlElement ]
ifFalse: [ (xmlElement attributes at: 'st-class') = 'LePharoSnippet'
ifTrue: [ LePharoSnippet new contentFrom: xmlElement ]
]
].
remoteMetadata := Markdeep new metadataFromXML: markdeepDocTree.
page := LePage new
title: (remoteMetadata at: 'title');
@ -11,8 +21,8 @@ LeDatabase >> addPageFromMarkdeep: markdeepDocTree [
editTime: ("ZTimestamp fromString:" (remoteMetadata at: 'modified'));
createEmail: (remoteMetadata at: 'creator');
editEmail: (remoteMetadata at: 'modifier').
^ {markdeepDocTree . page }
snippets do: [ :snippet | page addSnippet: snippet ].
^ page
]
{ #category : #'*MiniDocs' }

View File

@ -8,6 +8,22 @@ LePharoSnippet >> contentAsStringCustomized [
^ thisObject perform: self detectMessage trimmed asSymbol.
]
{ #category : #'*MiniDocs' }
LePharoSnippet >> contentFrom: markdeepDiv [
| sanitizedStringText metadata |
metadata := STON fromString: (markdeepDiv attributes at: 'st-data').
sanitizedStringText := markdeepDiv contentString lines reject: [ :line | line beginsWith: '~~~' ].
sanitizedStringText := "(Character cr asString)" '' join: sanitizedStringText.
self code: sanitizedStringText;
uid: (metadata at: 'id');
parent: (metadata at: 'parent');
createTime: (metadata at: 'created');
editTime: (metadata at: 'modified');
editEmail: (metadata at: 'modifier');
createEmail: (metadata at: 'creator').
]
{ #category : #'*MiniDocs' }
LePharoSnippet >> markdeepCustomCloser [
^ String streamContents: [ :stream |

View File

@ -2,11 +2,19 @@ Extension { #name : #LeTextSnippet }
{ #category : #'*MiniDocs' }
LeTextSnippet >> contentFrom: markdeepDiv [
| sanitized |
sanitized := markdeepDiv contentString.
sanitized := sanitized allButFirst.
sanitized := sanitized allButLast.
self string: sanitized.
| sanitizedStringText metadata |
metadata := STON fromString: (markdeepDiv attributes at: 'st-data').
sanitizedStringText := markdeepDiv contentString.
sanitizedStringText := sanitizedStringText allButFirst.
sanitizedStringText := sanitizedStringText allButLast.
self string: sanitizedStringText;
uid: (metadata at: 'id');
parent: (metadata at: 'parent');
createTime: (metadata at: 'created');
editTime: (metadata at: 'modified');
editEmail: (metadata at: 'modifier');
createEmail: (metadata at: 'creator')
]
{ #category : #'*MiniDocs' }