|
| 1 | +function is_empty(s) |
| 2 | + return s == nil or s == '' |
| 3 | +end |
| 4 | + |
| 5 | +function entity_en(entity, level) |
| 6 | + local result |
| 7 | + if (entity == "INBO") then |
| 8 | + result = { |
| 9 | + url = "https://www.vlaanderen.be/inbo/en", |
| 10 | + entity_name = "Research Institute for Nature and Forest (INBO)", |
| 11 | + } |
| 12 | + if is_empty(level) or tonumber(pandoc.utils.stringify(level)) < 2 then |
| 13 | + result.entity_title_logo = "inbo-en-black.jpg" |
| 14 | + else |
| 15 | + result.entity_title_logo = "inbo-en-white.png" |
| 16 | + end |
| 17 | + else |
| 18 | + result = { |
| 19 | + url = "invalid `flandersqmd.entity`" |
| 20 | + } |
| 21 | + end |
| 22 | + result.flanders_title_logo = "flanders-en-title.png" |
| 23 | + result.flanders_alt = "Flanders, state of the art" |
| 24 | + result.title_logo_style = "max-width: 205px;" |
| 25 | + return result |
| 26 | +end |
| 27 | + |
| 28 | +function entity_nl(entity, level) |
| 29 | + local result |
| 30 | + if (entity == "INBO") then |
| 31 | + result = { |
| 32 | + url = "https://www.vlaanderen.be/inbo", |
| 33 | + entity_name = "Instituut voor Natuur- en Bosonderzoek (INBO)", |
| 34 | + flanders_alt = "Vlaanderen is wetenschap" |
| 35 | + } |
| 36 | + if is_empty(level) or tonumber(pandoc.utils.stringify(level)) < 2 then |
| 37 | + result.flanders_title_logo = "flanders-nl-intermediate.jpg" |
| 38 | + result.entity_title_logo = "inbo-nl-black.png" |
| 39 | + result.title_logo_style = "max-width: 245px;" |
| 40 | + else |
| 41 | + result.flanders_title_logo = "flanders-nl-transparent.png" |
| 42 | + result.entity_title_logo = "inbo-nl-white.png" |
| 43 | + result.title_logo_style = "max-width: 250px;" |
| 44 | + end |
| 45 | + else |
| 46 | + result = { |
| 47 | + url = "invalid `flandersqmd.entity`" |
| 48 | + } |
| 49 | + end |
| 50 | + return result |
| 51 | +end |
| 52 | + |
| 53 | +function translation(lang, entity, level) |
| 54 | + if (lang == "nl-BE") then |
| 55 | + result = entity_nl(entity, level) |
| 56 | + else |
| 57 | + result = entity_en(entity, level) |
| 58 | + end |
| 59 | + return result |
| 60 | +end |
| 61 | + |
| 62 | +function display_person (person, i) |
| 63 | + res = "" |
| 64 | + if is_empty(person.name) then |
| 65 | + res = '<h1 class = "missing">!!! flandersqmd.authors element ' .. i .. ' has no name element!!!</h1>' |
| 66 | + return res |
| 67 | + end |
| 68 | + if is_empty(person.name.given) then |
| 69 | + res = '<h1 class = "missing">!!! flandersqmd.authors element ' .. i .. ' has no given element under name!!!</h1>' |
| 70 | + return res |
| 71 | + end |
| 72 | + if is_empty(person.name.family) then |
| 73 | + res = '<h1 class = "missing">!!! flandersqmd.authors element ' .. i .. ' has no given element under name!!!</h1>' |
| 74 | + return res |
| 75 | + end |
| 76 | + if is_empty(person.email) then |
| 77 | + res = pandoc.utils.stringify(person.name.given) .. ' ' .. pandoc.utils.stringify(person.name.family) |
| 78 | + else |
| 79 | + res = res .. '<a href= "mailto:' .. pandoc.utils.stringify(person.email) .. '" class = "title email">' .. pandoc.utils.stringify(person.name.given) .. ' ' .. pandoc.utils.stringify(person.name.family) .. '</a>' |
| 80 | + end |
| 81 | + if (is_empty(person.orcid)) then |
| 82 | + return res |
| 83 | + end |
| 84 | + res = res .. '<a href="https://orcid.org/' .. pandoc.utils.stringify(person.orcid) .. '" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a>' |
| 85 | + return res |
| 86 | +end |
| 87 | + |
| 88 | +function title_author(author) |
| 89 | + if is_empty(author) then |
| 90 | + return '!!! Missing flandersqmd.author !!!' |
| 91 | + end |
| 92 | + z ='' |
| 93 | + for i, person in pairs(author) do |
| 94 | + z = z .. display_person(person, i) .. ' ' |
| 95 | + end |
| 96 | + return pandoc.RawInline('html', z) |
| 97 | +end |
| 98 | + |
| 99 | +function levelcss (entity) |
| 100 | + local css |
| 101 | + css = ':root {\n' |
| 102 | + css = css .. ' --flanders-white: #FFFFFF;\n' |
| 103 | + css = css .. ' --inbo-darkblue: #282A72;\n' |
| 104 | + css = css .. ' --inbo-darkblue-40: #282A7266;\n' |
| 105 | + css = css .. ' --inbo-darkgreen: #006635;\n' |
| 106 | + css = css .. ' --inbo-darkgreen-40: #00663566;\n' |
| 107 | + css = css .. ' --inbo-orange: #EF972C;\n' |
| 108 | + css = css .. ' --inbo-orange-40: #EF972C66;\n' |
| 109 | + css = css .. ' --inbo-yellow: #FFCD34;\n' |
| 110 | + css = css .. ' --inbo-yellow-40: #FFCD3466;\n' |
| 111 | + css = css .. ' --inbo-red: #BE3254;\n' |
| 112 | + css = css .. ' --inbo-red-40: #BE325466;\n' |
| 113 | + if (entity == "inbo") then |
| 114 | + css = css .. ' --inbo-black: #000000;\n' |
| 115 | + css = css .. ' --inbo-gray: #8E9DA7;\n' |
| 116 | + css = css .. ' --inbo-fushia: #C04384;\n' |
| 117 | + css = css .. ' --inbo-blue: #356196;\n' |
| 118 | + css = css .. ' --inbo-lightblue: #BDDDD7;\n' |
| 119 | + |
| 120 | + css = css .. ' --flandersqmd-border: var(--inbo-fushia);\n' |
| 121 | + css = css .. ' --flandersqmd-callout-note-border: var(--inbo-darkblue);\n' |
| 122 | + css = css .. ' --flandersqmd-callout-note-bg: var(--inbo-darkblue-40);\n' |
| 123 | + css = css .. ' --flandersqmd-callout-tip-border: var(--inbo-darkgreen);\n' |
| 124 | + css = css .. ' --flandersqmd-callout-tip-bg: var(--inbo-darkgreen-40);\n' |
| 125 | + css = css .. ' --flandersqmd-callout-caution-border: var(--inbo-orange);\n' |
| 126 | + css = css .. ' --flandersqmd-callout-caution-bg: var(--inbo-orange-40);\n' |
| 127 | + css = css .. ' --flandersqmd-callout-warning-border: var(--inbo-yellow);\n' |
| 128 | + css = css .. ' --flandersqmd-callout-warning-bg: var(--inbo-yellow-40);\n' |
| 129 | + css = css .. ' --flandersqmd-callout-important-border: var(--inbo-red);\n' |
| 130 | + css = css .. ' --flandersqmd-callout-important-bg: var(--inbo-red-40);\n' |
| 131 | + css = css .. ' --flandersqmd-footnote: var(--inbo-gray);\n' |
| 132 | + css = css .. ' --flandersqmd-level1-colour: var(--flanders-white);\n' |
| 133 | + css = css .. ' --flandersqmd-level1-trapezium: var(--inbo-fushia);\n' |
| 134 | + css = css .. ' --flandersqmd-level2-colour: var(--inbo-fushia);\n' |
| 135 | + css = css .. ' --flandersqmd-link-colour: var(--inbo-blue);\n' |
| 136 | + css = css .. ' --flandersqmd-sidebar-bg: var(--inbo-fushia);\n' |
| 137 | + css = css .. ' --flandersqmd-sidebar-colour: var(--flanders-white);\n' |
| 138 | + css = css .. ' --flandersqmd-sidebar-tussen-colour: var(--inbo-fushia);\n' |
| 139 | + css = css .. ' --quarto-hl-fu-color: var(--inbo-black);\n' |
| 140 | + css = css .. ' --r-link-color: var(--inbo-blue);\n' |
| 141 | + css = css .. ' --r-link-color-hover: var(----inbo-lightblue);\n' |
| 142 | + css = css .. ' --r-main-color: var(--inbo-black);\n' |
| 143 | + else |
| 144 | + css = css .. ' --flanders-canary-yellow: #FFED00;\n' |
| 145 | + css = css .. ' --flanders-dark-yellow: #F0D70F;\n' |
| 146 | + css = css .. ' --flanders-black: #3C3D3C;\n' |
| 147 | + css = css .. ' --flanders-gray: #D5D5D5;\n' |
| 148 | + css = css .. ' --flanders-dark-blue: #215E9E;\n' |
| 149 | + css = css .. ' --flanders-light-blue: #32B2E9;\n' |
| 150 | + |
| 151 | + css = css .. ' --flandersqmd-border: var(--flanders-dark-yellow);\n' |
| 152 | + css = css .. ' --flandersqmd-footnote: var(--flanders-gray);\n' |
| 153 | + css = css .. ' --flandersqmd-level1-trapezium: var(--flanders-canary-yellow);\n' |
| 154 | + css = css .. ' --flandersqmd-level1-colour: var(--flanders-black);\n' |
| 155 | + css = css .. ' --flandersqmd-level2-colour: var(--flanders-dark-yellow);\n' |
| 156 | + css = css .. ' --flandersqmd-link-colour: var(--flanders-dark-blue);\n' |
| 157 | + css = css .. ' --flandersqmd-sidebar-bg: var(--flanders-canary-yellow);\n' |
| 158 | + css = css .. ' --flandersqmd-sidebar-colour: var(--flanders-black);\n' |
| 159 | + css = css .. ' --flandersqmd-sidebar-tussen-colour: var(--flanders-black);\n' |
| 160 | + css = css .. ' --quarto-hl-fu-color: var(--flanders-black);\n' |
| 161 | + css = css .. ' --r-link-color: var(--flanders-dark-blue);\n' |
| 162 | + css = css .. ' --r-link-color-hover: var(--flanders-dark-blue);\n' |
| 163 | + css = css .. ' --r-main-color: var(--flanders-black);\n' |
| 164 | + end |
| 165 | + css = css .. ' --flandersqmd-callout-note-border: var(--inbo-darkblue);\n' |
| 166 | + css = css .. ' --flandersqmd-callout-note-bg: var(--inbo-darkblue-40);\n' |
| 167 | + css = css .. ' --flandersqmd-callout-tip-border: var(--inbo-darkgreen);\n' |
| 168 | + css = css .. ' --flandersqmd-callout-tip-bg: var(--inbo-darkgreen-40);\n' |
| 169 | + css = css .. ' --flandersqmd-callout-caution-border: var(--inbo-orange);\n' |
| 170 | + css = css .. ' --flandersqmd-callout-caution-bg: var(--inbo-orange-40);\n' |
| 171 | + css = css .. ' --flandersqmd-callout-warning-border: var(--inbo-yellow);\n' |
| 172 | + css = css .. ' --flandersqmd-callout-warning-bg: var(--inbo-yellow-40);\n' |
| 173 | + css = css .. ' --flandersqmd-callout-important-border: var(--inbo-red);\n' |
| 174 | + css = css .. ' --flandersqmd-callout-important-bg: var(--inbo-red-40);\n' |
| 175 | + css = css .. ' --flandersqmd-title-colour: var(--flanders-white);\n' |
| 176 | + css = css .. ' --flandersqmd-title-border: var(--flanders-white);\n' |
| 177 | + css = css .. ' --flandersqmd-level1-bg: var(--flanders-white);\n' |
| 178 | + css = css .. ' --r-main-font: flanders_art_sanslight, Calibri, Source Sans Pro, Helvetica, sans-serif;\n' |
| 179 | + css = css .. ' --r-heading-font-weight: 400;\n' |
| 180 | + css = css .. '}\n' |
| 181 | + return css |
| 182 | +end |
| 183 | + |
| 184 | +return { |
| 185 | + { |
| 186 | + Meta = function(meta) |
| 187 | + if is_empty(meta.flandersqmd) then |
| 188 | + meta.title = "No `flandersqmd` entry found in yaml" |
| 189 | + meta.entitycolours = 'flanders' |
| 190 | + meta.translation = translation( |
| 191 | + pandoc.utils.stringify(meta.lang), "INBO" |
| 192 | + ) |
| 193 | + else |
| 194 | + if is_empty(meta.flandersqmd.entity) then |
| 195 | + meta.translation = translation( |
| 196 | + pandoc.utils.stringify(meta.lang), "INBO", meta.flandersqmd.level |
| 197 | + ) |
| 198 | + else |
| 199 | + meta.translation = translation( |
| 200 | + pandoc.utils.stringify(meta.lang), |
| 201 | + pandoc.utils.stringify(meta.flandersqmd.entity), |
| 202 | + meta.flandersqmd.level |
| 203 | + ) |
| 204 | + end |
| 205 | + if is_empty(meta.flandersqmd.title) then |
| 206 | + meta.title = "missing `flandersqmd:title`" |
| 207 | + else |
| 208 | + meta.title = pandoc.utils.stringify(meta.flandersqmd.title) |
| 209 | + end |
| 210 | + if is_empty(meta.flandersqmd.level) or tonumber(pandoc.utils.stringify(meta.flandersqmd.level)) < 2 then |
| 211 | + meta.entitycolours = 'flanders' |
| 212 | + else |
| 213 | + if is_empty(meta.flandersqmd.entity) then |
| 214 | + meta.entitycolours = 'inbo' |
| 215 | + else |
| 216 | + meta.entitycolours = pandoc.text.lower(pandoc.utils.stringify(meta.flandersqmd.entity)) |
| 217 | + end |
| 218 | + end |
| 219 | + meta.title_author = title_author(meta.flandersqmd.author) |
| 220 | + end |
| 221 | + meta.entitycss = levelcss(meta.entitycolours) |
| 222 | + return meta |
| 223 | + end, |
| 224 | + } |
| 225 | +} |
0 commit comments