From 4b0227454b77c04af6511965ef691d0e659c17ba Mon Sep 17 00:00:00 2001 From: Offray Luna Date: Sun, 21 May 2023 20:30:03 -0500 Subject: [PATCH] New PubPubContent object. --- src/MiniDocs/PubPub.class.st | 7 ++++- src/MiniDocs/PubPubContent.class.st | 43 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/MiniDocs/PubPubContent.class.st diff --git a/src/MiniDocs/PubPub.class.st b/src/MiniDocs/PubPub.class.st index 3d56d13..ab4a05b 100644 --- a/src/MiniDocs/PubPub.class.st +++ b/src/MiniDocs/PubPub.class.st @@ -82,10 +82,15 @@ PubPub >> exportMarkdeepFiles [ ] { #category : #accessing } -PubPub >> extractContents [ +PubPub >> extractAllContentsRaw [ ^ self frontPage xpath: '//div[@class="layout-pubs-block"]' ] +{ #category : #accessing } +PubPub >> extractRawTableOfContents [ + ^ self extractAllContentsRaw first xpath: '//div[contains(concat(" ",normalize-space(@class)," "), " pub-preview-component ")]' +] + { #category : #accessing } PubPub >> folder [ ^ folder ensureCreateDirectory diff --git a/src/MiniDocs/PubPubContent.class.st b/src/MiniDocs/PubPubContent.class.st new file mode 100644 index 0000000..4a15f67 --- /dev/null +++ b/src/MiniDocs/PubPubContent.class.st @@ -0,0 +1,43 @@ +Class { + #name : #PubPubContent, + #superclass : #Object, + #instVars : [ + 'title', + 'language', + 'url', + 'thumbnail' + ], + #category : #'MiniDocs-Model' +} + +{ #category : #accessing } +PubPubContent >> fromXML: aXMLElement [ + | image anchor| + image := aXMLElement contentNodes first xpath: './a/div'. +image + ifNotEmpty: [|style rawUrl| + style := (image first attributeAt: 'style'). + rawUrl := (style splitOn: 'url') second. + self + thumbnail:(rawUrl copyFrom: 3 to: rawUrl size - 2) + ]. + anchor := (aXMLElement contentNodes second contentNodes first xpath: './div[@class="title-wrapper"]/a') first. + self + title: (anchor attributeAt: 'title'); + url: (anchor attributeAt: 'title'). +] + +{ #category : #accessing } +PubPubContent >> thumbnail: anURL [ + thumbnail := anURL +] + +{ #category : #accessing } +PubPubContent >> title: anObject [ + title := anObject +] + +{ #category : #accessing } +PubPubContent >> url: anObject [ + url := anObject +]