forked from mirrors/org-cv
Social becomes a section instead of document property
First it changes the entries to categories. That is CV_ENV is now category for everything. Then cventry continues to behave as before, but CATEGORY social comes in. For the moment it creates a formatted block
This commit is contained in:
parent
30e93ab103
commit
0a20ce2b00
1 changed files with 39 additions and 23 deletions
62
ox-hugocv.el
62
ox-hugocv.el
|
@ -47,9 +47,6 @@
|
||||||
(:homepage "HOMEPAGE" nil nil parse)
|
(:homepage "HOMEPAGE" nil nil parse)
|
||||||
(:address "ADDRESS" nil nil newline)
|
(:address "ADDRESS" nil nil newline)
|
||||||
(:photo "PHOTO" nil nil parse)
|
(:photo "PHOTO" nil nil parse)
|
||||||
(:gitlab "GITLAB" nil nil parse)
|
|
||||||
(:github "GITHUB" nil nil parse)
|
|
||||||
(:linkedin "LINKEDIN" nil nil parse)
|
|
||||||
(:with-email nil "email" t t)
|
(:with-email nil "email" t t)
|
||||||
)
|
)
|
||||||
:translate-alist '((headline . org-hugocv-headline)
|
:translate-alist '((headline . org-hugocv-headline)
|
||||||
|
@ -80,6 +77,42 @@ as a communication channel."
|
||||||
contents)))
|
contents)))
|
||||||
|
|
||||||
|
|
||||||
|
(defun social-entry (icon url handle)
|
||||||
|
(let* ((nw-handle (string-trim handle))
|
||||||
|
(icon-wrap (if (org-string-nw-p icon) (concat (format "<i class=\"fa %s\"> " icon) "%s</i>") "%s"))
|
||||||
|
(link-wrap (format "<a href=\"%s/%s\">%s</a>" url nw-handle icon-wrap))
|
||||||
|
|
||||||
|
)
|
||||||
|
(format link-wrap nw-handle)))
|
||||||
|
|
||||||
|
(defun org-hugocv--format-socialchannels (headline contents info)
|
||||||
|
(let* ((channel (downcase (org-export-data (org-element-property :title headline) info)))
|
||||||
|
|
||||||
|
(entry (-any (lambda (network) (when (string-match-p channel (plist-get network :url))
|
||||||
|
(social-entry (plist-get network :icon) (plist-get network :url) contents)))
|
||||||
|
'((:url "https://www.github.com" :icon "fa-github")
|
||||||
|
(:url "https://www.gitlab.com" :icon "fa-gitlab")
|
||||||
|
(:url "https://www.linkedin.com/in" :icon "fa-linkedin")
|
||||||
|
(:url "https://www.linkedin.com/in" :icon "fa-linkedin")
|
||||||
|
(:url "https://twitter.com" :icon "fa-twitter")
|
||||||
|
(:url "https://facebook.com" :icon "fa-facebook")
|
||||||
|
(:url "https://www.instagram.com" :icon "fa-instagram"))
|
||||||
|
|
||||||
|
)))
|
||||||
|
|
||||||
|
(cond
|
||||||
|
(entry entry)
|
||||||
|
((org-element-property :URL headline)
|
||||||
|
(let ((icon (org-export-data (org-element-property :ICON headline) info))
|
||||||
|
(url (org-export-data (org-element-property :URL headline) info))
|
||||||
|
(handle (org-export-data contents info))
|
||||||
|
)
|
||||||
|
(concat (if (org-string-nw-p icon)
|
||||||
|
""
|
||||||
|
(concat (org-export-data (org-element-property :title headline) info) " : "))
|
||||||
|
(social-entry icon url handle))))
|
||||||
|
((org-export-with-backend 'hugo headline contents info)))
|
||||||
|
))
|
||||||
|
|
||||||
;;;; Headline
|
;;;; Headline
|
||||||
(defun org-hugocv-headline (headline contents info)
|
(defun org-hugocv-headline (headline contents info)
|
||||||
|
@ -87,12 +120,14 @@ contents)))
|
||||||
CONTENTS is the contents of the headline. INFO is a plist used
|
CONTENTS is the contents of the headline. INFO is a plist used
|
||||||
as a communication channel."
|
as a communication channel."
|
||||||
(unless (org-element-property :footnote-section-p headline)
|
(unless (org-element-property :footnote-section-p headline)
|
||||||
(let ((environment (let ((env (org-element-property :CV_ENV headline)))
|
(let ((environment (let ((env (org-export-get-category headline info)))
|
||||||
(or (org-string-nw-p env) "block"))))
|
(or (org-string-nw-p env) "block"))))
|
||||||
(cond
|
(cond
|
||||||
;; is a cv entry
|
;; is a cv entry
|
||||||
((equal environment "cventry")
|
((equal environment "cventry")
|
||||||
(org-hugocv--format-cventry headline contents info))
|
(org-hugocv--format-cventry headline contents info))
|
||||||
|
((equal environment "social")
|
||||||
|
(org-hugocv--format-socialchannels headline contents info))
|
||||||
((org-export-with-backend 'hugo headline contents info))))))
|
((org-export-with-backend 'hugo headline contents info))))))
|
||||||
|
|
||||||
(defun org-hugocv-inner-template (contents info)
|
(defun org-hugocv-inner-template (contents info)
|
||||||
|
@ -108,25 +143,6 @@ holding export options."
|
||||||
;; homepage
|
;; homepage
|
||||||
(let ((homepage (org-export-data (plist-get info :homepage) info)))
|
(let ((homepage (org-export-data (plist-get info :homepage) info)))
|
||||||
(when (org-string-nw-p homepage) (format "<li class=\"fa fa-globe\"><a href=\"https://%s\"> %s</a></li>\n" homepage homepage)))
|
(when (org-string-nw-p homepage) (format "<li class=\"fa fa-globe\"><a href=\"https://%s\"> %s</a></li>\n" homepage homepage)))
|
||||||
;; social media
|
|
||||||
(mapconcat (lambda (social-network)
|
|
||||||
|
|
||||||
(let ((network (org-export-data
|
|
||||||
(plist-get info (car social-network))
|
|
||||||
|
|
||||||
info)))
|
|
||||||
|
|
||||||
(when (org-string-nw-p network)
|
|
||||||
(format "<li class=\"fa fa-%s\"><a href=\"https://%s/%s\"> %s</a></li>\n"
|
|
||||||
(nth 1 social-network)
|
|
||||||
(nth 2 social-network)
|
|
||||||
network
|
|
||||||
network))))
|
|
||||||
|
|
||||||
'((:github "github" "www.github.com")
|
|
||||||
(:gitlab "gitlab" "www.gitlab.com")
|
|
||||||
(:linkedin "linkedin" "www.linkedin.com/in"))
|
|
||||||
"")
|
|
||||||
"</ul>\n\n"
|
"</ul>\n\n"
|
||||||
(org-hugo-inner-template contents info)))
|
(org-hugo-inner-template contents info)))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue