95 lines
2.1 KiB
Smalltalk
95 lines
2.1 KiB
Smalltalk
Class {
|
|
#name : #PubPub,
|
|
#superclass : #Object,
|
|
#instVars : [
|
|
'address',
|
|
'tableOfContents',
|
|
'titles',
|
|
'folder',
|
|
'currentLanguage'
|
|
],
|
|
#category : #'MiniDocs-Model'
|
|
}
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> addTableOfContents: anOrderedDictionary [
|
|
self tableOfContents
|
|
at: (self currentLanguage) put: anOrderedDictionary;
|
|
yourself
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> addTitle: aString [
|
|
self titles
|
|
at: (self currentLanguage) put: aString
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> address [
|
|
^ address
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> address: anUrl [
|
|
address := anUrl
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> currentLanguage [
|
|
^ currentLanguage
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> currentLanguage: twoLettersInISO639_1 [
|
|
currentLanguage := twoLettersInISO639_1
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> defaultTitle [
|
|
^ self titles associations first value
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> downloadContents [
|
|
| workingDirectory |
|
|
workingDirectory := self folder / self currentLanguage / 'book'.
|
|
self tableOfContents keysAndValuesDo: [ :name :chapterAddress | |currentFileName|
|
|
currentFileName := name, '--', chapterAddress, '.md'.
|
|
(workingDirectory / currentFileName) asFileReference ensureDelete.
|
|
(workingDirectory / 'markdown') asFileReference ensureDelete.
|
|
ZnClient new
|
|
get: self address, 'pub/', chapterAddress, '/download/markdown';
|
|
downloadTo: workingDirectory .
|
|
workingDirectory / 'markdown' renameTo: currentFileName
|
|
].
|
|
^ workingDirectory
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> folder [
|
|
^ folder ensureCreateDirectory
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> folder: localDirectory [
|
|
folder := localDirectory
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> printOn: aStream [
|
|
super printOn: aStream.
|
|
aStream
|
|
nextPutAll: '(',self defaultTitle, ' | ', self address, ' )'
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> tableOfContents [
|
|
tableOfContents ifNil: [^ tableOfContents := Dictionary new].
|
|
^ tableOfContents at: self currentLanguage
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPub >> titles [
|
|
^ titles ifNil: [titles := OrderedDictionary new]
|
|
]
|