@@ -772,56 +772,55 @@ declare variable $config:PUBLICATION-COLLECTIONS :=
772772 };
773773
774774declare variable $config:OPEN_GRAPH_KEYS := ("og:type" , "twitter:card" , "twitter:site" , "og:site_name" , "og:title" , "og:description" , "og:image" , "og:url" , "citation" );
775-
775+
776776declare variable $config:OPEN_GRAPH as map (xs:string, function (*)) := map{
777- "twitter:card" : function ($node, $model) {
777+ "twitter:card" : function ($node, $model) {
778778 <meta property = 'twitter:card' content = 'summary' />
779779 },
780- "twitter:site" : function ($node, $model) {
780+ "twitter:site" : function ($node, $model) {
781781 <meta property = 'twitter:site' content = '@HistoryAtState' />
782782 },
783- "og:site_name" : function ($node, $model) {
783+ "og:site_name" : function ($node, $model) {
784784 <meta property = 'og:site_name' content = 'Office of the Historian' />
785785 },
786- "og:image" : function ($node, $model) {
787-
786+ "og:image" : function ($node, $model) {
788787 for $img in $model?data//tei:graphic
789788 return
790789 <meta property = "og:image" content = "https://static.history.state.gov/{$model?base-path} /{$img/@url} " />,
791790 <meta property = "og:image" content = "https://static.history.state.gov/images/avatar_big.jpg" />,
792791 <meta property = "og:image:width" content = "400" />,
793792 <meta property = "og:image:height" content = "400" />,
794793 <meta property = "og:image:alt" content = "Office of the Historian social media avatar" />
795-
796794 },
797- "og:type" : function ($node, $model) {
795+ "og:type" : function ($node, $model) {
798796 <meta property = "og:type" content = "{
799797 let $publication-id := $model?publication-id
800- let $pub. type := $config:PUBLICATIONS?($publication-id)?open-graph?("og:type" )
798+ let $pub- type := $config:PUBLICATIONS?($publication-id)?open-graph?("og:type" )
801799 return
802- ($pub. type! .($node, $model), 'website' )[1 ]
800+ ($pub- type ! .($node, $model), 'website' )[1 ]
803801 } " />
804802 },
805- "og:title" : function ($node, $model) {
803+ "og:title" : function ($node, $model) {
806804 <meta property = "og:title" content = "{pages:generate-short-title ($node, $model)} " />
807805 },
808- "og:description" : function ($node, $model) {
806+ "og:description" : function ($node, $model) {
809807 <meta property = "og:description" content = "Office of the Historian" />
810808 },
811- "og:url" : function ($node, $model) {
809+ "og:url" : function ($node, $model) {
812810 <meta property = "og:url" content = "{$model?url} " />
813811 },
814- "citation" : function ($node, $model) {
815- let $cls as array (*) :=
816- let $citation-meta as function (*)? := $config:PUBLICATIONS?($model?publication-id)?citation-meta
817- return if (exists ($model?citation-meta)) then
818- array { $model?citation-meta }
812+ "citation" : function ($node, $model) as element (meta)* {
813+ let $citation-meta as function (*)? := $config:PUBLICATIONS?($model?publication-id)?citation-meta
814+ let $cls as array (*) := array {
815+ if (exists ($model?citation-meta)) then
816+ $model?citation-meta
819817 else if (exists ($citation-meta)) then
820- array { $citation-meta($node, $model) }
818+ $citation-meta($node, $model)
821819 else
822- array { config:default-citation-meta ($node, $model) }
823- let $metas as element (meta)* := config:cls-to-html ($cls)
824- return $metas
820+ config:default-citation-meta ($node, $model)
821+ }
822+
823+ return config:cls-to-html ($cls)
825824 }
826825 };
827826
@@ -1044,19 +1043,24 @@ declare function config:tei-document-citation-meta($node as node()?, $model as m
10441043
10451044declare function config:tei-shared-citation-meta ($node as node ()?, $model as map (*)?, $doc as document-node ()?) as map (*) {
10461045 let $doc := $config:PUBLICATIONS?($model?publication-id)?select-document ($model?document-id)
1047- let $editors :=
1048- for $editor in $doc/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:editor[@role eq 'primary' ]
1046+
1047+ let $fileDesc := $doc/tei:TEI/tei:teiHeader/tei:fileDesc
1048+ let $editors :=
1049+ for $editor in $fileDesc/tei:titleStmt/tei:editor[@role eq 'primary' ]
10491050 let $name-parts := tokenize ($editor, '\s' )
10501051 return map{
1051- 'family' : $name-parts[last ()],
1052- 'given' : string-join ($name-parts[position () ne last ()], ' ' )
1052+ 'family' : $name-parts[last ()],
1053+ 'given' : string-join ($name-parts[position () ne last ()], ' ' )
10531054 }
1054- let $series_title := $doc/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@type ='series' ]/string (.)
1055- let $series_number := $doc/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@type ='sub-series' ]/string (.)
1056- let $volume := $doc/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@type ='volume-number' ]/string (.)
1057- let $publisher := $doc/tei:TEI/tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:publisher/string (.)
1058- let $issued := $doc/tei:TEI/tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:date[@type eq 'publication-date' ]/string (.)
1059- let $isbn := $doc/tei:TEI/tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type eq 'isbn-13' ]/string (.)
1055+
1056+ let $series_title := $fileDesc/tei:titleStmt/tei:title[@type ='series' ]/string ()
1057+ let $series_number := $fileDesc/tei:titleStmt/tei:title[@type ='sub-series' ]/string ()
1058+ let $volume := $fileDesc/tei:titleStmt/tei:title[@type ='volume-number' ]/string ()
1059+
1060+ let $publisher := $fileDesc/tei:publicationStmt/tei:publisher/string ()
1061+ let $issued := $fileDesc/tei:publicationStmt/tei:date[@type eq 'publication-date' ]/string ()
1062+ let $isbn := $fileDesc/tei:publicationStmt/tei:idno[@type eq 'isbn-13' ]/string ()
1063+
10601064 return map:merge ((
10611065 config:default-citation-meta ($node, $model),
10621066 if (exists ($editors)) then map{'editor' : array { $editors }} else (),
@@ -1109,7 +1113,7 @@ declare %templates:wrap function config:csl-json($node as node(), $model as map(
11091113 serialize (array { config:default-citation-meta ($node, $model) }, map{'method' :'json' }) => normalize-space ()
11101114};
11111115
1112- declare variable $config:cls-to-zotero as map (xs:string, function (*)) := map {
1116+ declare variable $config:cls-to-zotero as map (xs:string, function (*)) := map {
11131117 "ISBN" :
11141118 function ($value) as element (meta)*{
11151119 <meta name = "citation_isbn" content = "{$value} " />
@@ -1225,9 +1229,9 @@ declare function config:cls-name($name as map(*)) {
12251229declare function config:cls-date ($date as map (*)) {
12261230 if ($date?raw castable as xs:date or matches ($date?raw, '\d{4}(-\d{2}(-\d{2})?)?' )) then
12271231 $date?raw
1228- else if ($date?date-parts! array:size (. ) eq 1 ) then
1232+ else if (array:size ( $date?date-parts) eq 1 ) then
12291233 config:cls-date-parts ($date?date-parts?1 )
1230- else ()
1234+ else ()
12311235};
12321236
12331237declare function config:cls-date-parts ($date as array (*)) {
@@ -1239,9 +1243,9 @@ declare function config:cls-date-parts($date as array(*)) {
12391243};
12401244
12411245declare function config:cls-to-html ($json as array (map (*))) as element (meta)* {
1242- let $citation := $json?1
1243- for $key in map:keys ($citation)
1244- let $value := $citation ?($key)
1245- let $lookup as function (*)? := $config:cls-to-zotero?($key )
1246- return if ( exists ($lookup)) then $lookup($value) else ( )
1246+ map:for-each ( $json?1 , function ($key, $value) {
1247+ if ( map:contains ($config:cls-to-zotero, $key)) then
1248+ $config:cls-to-zotero ?($key)($value )
1249+ else ( )
1250+ } )
12471251};
0 commit comments