Starting Internet Archive support and Brea templates and data sources.
This commit is contained in:
parent
f5c76ca62f
commit
299375a035
118
repository/Brea/ArchiveOrgItem.class.st
Normal file
118
repository/Brea/ArchiveOrgItem.class.st
Normal file
@ -0,0 +1,118 @@
|
||||
"
|
||||
I model information of the items published on Internet Archive (https://archive.org/).
|
||||
"
|
||||
Class {
|
||||
#name : #ArchiveOrgItem,
|
||||
#superclass : #Object,
|
||||
#instVars : [
|
||||
'id',
|
||||
'metadata'
|
||||
],
|
||||
#category : #Brea
|
||||
}
|
||||
|
||||
{ #category : #utility }
|
||||
ArchiveOrgItem >> archive [
|
||||
^ 'https://archive.org'
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
ArchiveOrgItem >> createHtmlImageGalleryList [
|
||||
"IMPORTANT: This is just a draft snipped. Should become a proper test o be deleted."
|
||||
self metadata ifNil: [ self getMetadata ].
|
||||
^ '
|
||||
<div id="nanogallery2"
|
||||
/* gallery settings */
|
||||
data-nanogallery2 = ''{
|
||||
"thumbnailHeight": 150,
|
||||
"thumbnailWidth": 150,
|
||||
"itemsBaseURL": "', self galleryItemsBaseUrl ,'"
|
||||
}'' >
|
||||
|
||||
<!-- gallery content -->
|
||||
<a href = "primera 3.jpg" data-ngThumb = "primera 3_thumb.jpg" > </a>
|
||||
<a href = "segunda.jpg" data-ngThumb = "segunda_thumb.jpg" > </a>
|
||||
</div>'
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
ArchiveOrgItem >> embeddedUrl [
|
||||
|
||||
^ 'https://archive.org/embed/', self id.
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
ArchiveOrgItem >> galleryItemsBaseUrl [
|
||||
"I create the place where all image would be located for creating a custom image gallery,
|
||||
according with the requirements for nanogallery2."
|
||||
|
||||
^ 'https://', (self metadata at: 'd2'), (self metadata at: 'dir'), '/'.
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
ArchiveOrgItem >> getMetadata [
|
||||
self id ifNil: [ ^ self ].
|
||||
self metadata: (NeoJSONReader fromString: (self archive, '/metadata/', self id) asUrl retrieveContents)
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
ArchiveOrgItem >> id [
|
||||
^ id
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
ArchiveOrgItem >> id: anObject [
|
||||
id := anObject
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
ArchiveOrgItem >> imagesGalleryList [
|
||||
self metadata ifNil: [ self getMetadata ].
|
||||
^ (self metadata at: 'files') select: [ :file | (file at: 'format') = 'JPEG Thumb' ]
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
ArchiveOrgItem >> imagesGalleryListAsDictionary [
|
||||
| galleryImages result |
|
||||
self imagesGalleryList ifNil: [ ^ self ].
|
||||
galleryImages := OrderedCollection new.
|
||||
self imagesGalleryList do: [ :imgMetadata |
|
||||
galleryImages
|
||||
add: (Dictionary new
|
||||
at: 'imgOriginal' put: (imgMetadata at: 'original');
|
||||
at: 'imgThumb' put: (imgMetadata at: 'name');
|
||||
yourself) ].
|
||||
result := { 'archiveItemImages' -> galleryImages } asDictionary.
|
||||
^ result
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
ArchiveOrgItem >> metadata [
|
||||
^ metadata
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
ArchiveOrgItem >> metadata: anObject [
|
||||
metadata := anObject
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
ArchiveOrgItem >> subjectTags [
|
||||
self id ifNil: [ ^ self ].
|
||||
self metadata ifNil: [ self getMetadata ].
|
||||
^ (self metadata at: 'metadata') at: 'subject'
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
ArchiveOrgItem >> subjectTagsAsDictionary [
|
||||
| tagList result |
|
||||
self imagesGalleryList ifNil: [ ^ self ].
|
||||
tagList := OrderedCollection new.
|
||||
self subjectTags do: [ :tag |
|
||||
tagList
|
||||
add: (Dictionary new
|
||||
at: 'tag' put: tag;
|
||||
yourself) ].
|
||||
result := { 'tagList' -> tagList } asDictionary.
|
||||
^ result
|
||||
]
|
31
repository/Brea/BreaDataSource.class.st
Normal file
31
repository/Brea/BreaDataSource.class.st
Normal file
@ -0,0 +1,31 @@
|
||||
Class {
|
||||
#name : #BreaDataSource,
|
||||
#superclass : #Object,
|
||||
#instVars : [
|
||||
'source',
|
||||
'queries'
|
||||
],
|
||||
#category : #Brea
|
||||
}
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaDataSource >> queries [
|
||||
^ queries
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaDataSource >> queries: anObject [
|
||||
queries := anObject
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaDataSource >> source [
|
||||
^ source
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaDataSource >> source: aDictionary [
|
||||
"Key, value pair in aDictionary contain a short name and a url pointing to a local or a remote
|
||||
resource. If is local a FileLocator should be provided."
|
||||
source := aDictionary
|
||||
]
|
89
repository/Brea/BreaTemplate.class.st
Normal file
89
repository/Brea/BreaTemplate.class.st
Normal file
@ -0,0 +1,89 @@
|
||||
"
|
||||
I define a [Mustache][1] template and how it is used to create
|
||||
derivate output files combining it with particular data sources.
|
||||
|
||||
[1]: https://mustache.github.io/
|
||||
"
|
||||
Class {
|
||||
#name : #BreaTemplate,
|
||||
#superclass : #Object,
|
||||
#instVars : [
|
||||
'template',
|
||||
'data',
|
||||
'location',
|
||||
'queries',
|
||||
'outputs'
|
||||
],
|
||||
#category : #Brea
|
||||
}
|
||||
|
||||
{ #category : #adding }
|
||||
BreaTemplate >> addDataSourceNamed: name with: source [
|
||||
self
|
||||
data at: name put: source.
|
||||
self data.
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> data [
|
||||
^ data ifNil: [ data := Dictionary new ]
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> data: aDictionary [
|
||||
"Each item in the dictionary is a unique alias (as key) and a data location (as value),
|
||||
usually on the web.
|
||||
Alias and locations are used later to define data queries to feed into templates."
|
||||
data := aDictionary
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> location [
|
||||
^ location
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> location: aFolderPath [
|
||||
"This is the place where a template and its derivate files are located.
|
||||
A shared location is an easy approach to start with and creates more explicit
|
||||
relation between derived files and templates.
|
||||
Eventually some re-mapping or re-routing could be used so templates and their outputs
|
||||
could be further apart."
|
||||
location := aFolderPath
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> outputs [
|
||||
^ outputs
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> outputs: fileNamesList [
|
||||
"fileNamesList contain the files which are derived from the template."
|
||||
outputs := fileNamesList
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> queries [
|
||||
^ queries ifNil: [ queries := Dictionary new ]
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> queries: aDictionary [
|
||||
"aDictionary contains the alias for the query as key and a block that will be executed
|
||||
on a particular data source, as value."
|
||||
queries := aDictionary
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> template [
|
||||
^ template
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
BreaTemplate >> template: aFileName [
|
||||
"I provide the name of the mustache base template.
|
||||
The file can have any name, but by convention they end in '.mus.html' 'mus.md' and
|
||||
so on."
|
||||
template := aFileName
|
||||
]
|
Loading…
Reference in New Issue
Block a user