diff --git a/src/MiniDocs/LeDatabase.extension.st b/src/MiniDocs/LeDatabase.extension.st new file mode 100644 index 0000000..7017951 --- /dev/null +++ b/src/MiniDocs/LeDatabase.extension.st @@ -0,0 +1,43 @@ +Extension { #name : #LeDatabase } + +{ #category : #'*MiniDocs' } +LeDatabase >> addPageFromMarkdeepUrl: aString [ + + | page | + page := self detectLocalPageForRemote: aString. + page ifNotNil: [ :arg | ^ self importErrorMessage: page ]. + self addPage: page. +] + +{ #category : #'*MiniDocs' } +LeDatabase >> detectLocalPageForRemote: markdeepDocUrl [ + | markdeepHelper id remoteMetadata docTree | + markdeepHelper := Markdeep new. + docTree := (XMLHTMLParser on: markdeepDocUrl asUrl retrieveContents) parseDocument. + remoteMetadata := markdeepHelper metadataFromXML: docTree. + id := remoteMetadata at: 'id' ifAbsent: [ ^ false ]. + ^ self pageWithID: id ifAbsent: [ nil ]. +] + +{ #category : #'*MiniDocs' } +LeDatabase >> importErrorMessage: page [ + + ^ String streamContents: [ :stream | + stream + nextPutAll: 'IMPORTATION ERROR: a page with'; + nextPut: Character lf; + nextPut: Character lf; + nextPutAll: ' id: ' , page uidString; + nextPut: Character lf; + nextPutAll: ' title: ' , page contentAsString; + nextPut: Character lf; + nextPut: Character lf; + nextPutAll: 'already exists in this database.'; + nextPut: Character lf; + nextPut: Character lf; + nextPutAll: + 'Please do one of those before retrying this procedure: + + 1) Move the existing page files (.lepiter and .bak) to another (sub)folder. + 2) Import the page url to another database.' ] +]