@amermathsoc/texml-to-html 19.0.1 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/lib/elements/article-metadata-json.js +10 -12
  3. package/lib/elements/sec.js +4 -1
  4. package/lib/transformer.js +8 -1
  5. package/package.json +1 -1
  6. package/test/article-alttitle-meta-snapshot.json +1 -1
  7. package/test/article-meta-snapshot.json +8 -5
  8. package/test/article-nometa-meta-snapshot.json +1 -1
  9. package/test/article.xml +2 -1
  10. package/test/snapshots/article--alttitle.html +1 -1
  11. package/test/snapshots/article--nometa.html +1 -1
  12. package/test/snapshots/article.html +8 -5
  13. package/test/snapshots/texml-tests/LGR.html +1 -1
  14. package/test/snapshots/texml-tests/OT1.html +1 -1
  15. package/test/snapshots/texml-tests/OT1ti.html +1 -1
  16. package/test/snapshots/texml-tests/OT1tt.html +1 -1
  17. package/test/snapshots/texml-tests/OT2.html +1 -1
  18. package/test/snapshots/texml-tests/OT4.html +1 -1
  19. package/test/snapshots/texml-tests/OT6.html +1 -1
  20. package/test/snapshots/texml-tests/T1.html +1 -1
  21. package/test/snapshots/texml-tests/T4.html +1 -1
  22. package/test/snapshots/texml-tests/T5.html +1 -1
  23. package/test/snapshots/texml-tests/Ucharcat.html +1 -1
  24. package/test/snapshots/texml-tests/accent.html +1 -1
  25. package/test/snapshots/texml-tests/algorithm.html +1 -1
  26. package/test/snapshots/texml-tests/algorithmic.html +1 -1
  27. package/test/snapshots/texml-tests/algpseudocode.html +1 -1
  28. package/test/snapshots/texml-tests/ams_measure.html +1 -1
  29. package/test/snapshots/texml-tests/amsart.html +1 -1
  30. package/test/snapshots/texml-tests/amscyr.html +1 -1
  31. package/test/snapshots/texml-tests/amsfonts.html +1 -1
  32. package/test/snapshots/texml-tests/amsrefs.html +1 -1
  33. package/test/snapshots/texml-tests/amsthm-swap.html +1 -1
  34. package/test/snapshots/texml-tests/amsthm.html +1 -1
  35. package/test/snapshots/texml-tests/amsviet.html +1 -1
  36. package/test/snapshots/texml-tests/appendix.html +1 -1
  37. package/test/snapshots/texml-tests/array.html +1 -1
  38. package/test/snapshots/texml-tests/article.html +1 -1
  39. package/test/snapshots/texml-tests/arxiv.html +1 -1
  40. package/test/snapshots/texml-tests/arydshln.html +1 -1
  41. package/test/snapshots/texml-tests/aufm.html +1 -1
  42. package/test/snapshots/texml-tests/begincsname.html +1 -1
  43. package/test/snapshots/texml-tests/boldline.html +1 -1
  44. package/test/snapshots/texml-tests/boxes.html +1 -1
  45. package/test/snapshots/texml-tests/caption.html +1 -1
  46. package/test/snapshots/texml-tests/ccicons.html +1 -1
  47. package/test/snapshots/texml-tests/cite.html +1 -1
  48. package/test/snapshots/texml-tests/citesort.html +1 -1
  49. package/test/snapshots/texml-tests/cleveref.html +1 -1
  50. package/test/snapshots/texml-tests/colortbl.html +1 -1
  51. package/test/snapshots/texml-tests/combinetoks.html +1 -1
  52. package/test/snapshots/texml-tests/constants.html +1 -1
  53. package/test/snapshots/texml-tests/csstring.html +1 -1
  54. package/test/snapshots/texml-tests/detokenize.html +1 -1
  55. package/test/snapshots/texml-tests/diacritics.html +1 -1
  56. package/test/snapshots/texml-tests/dimexpr.html +1 -1
  57. package/test/snapshots/texml-tests/euscript.html +1 -1
  58. package/test/snapshots/texml-tests/everyeof.html +1 -1
  59. package/test/snapshots/texml-tests/expanded.html +1 -1
  60. package/test/snapshots/texml-tests/expl3.html +1 -1
  61. package/test/snapshots/texml-tests/extarrows.html +1 -1
  62. package/test/snapshots/texml-tests/framedboxes.html +1 -1
  63. package/test/snapshots/texml-tests/glueexpr.html +1 -1
  64. package/test/snapshots/texml-tests/halign.html +1 -1
  65. package/test/snapshots/texml-tests/hello.html +1 -1
  66. package/test/snapshots/texml-tests/hhline.html +1 -1
  67. package/test/snapshots/texml-tests/hline.html +1 -1
  68. package/test/snapshots/texml-tests/hyperams.html +1 -1
  69. package/test/snapshots/texml-tests/ifcondition.html +1 -1
  70. package/test/snapshots/texml-tests/ifcsname.html +1 -1
  71. package/test/snapshots/texml-tests/ifdefined.html +1 -1
  72. package/test/snapshots/texml-tests/ifdim.html +1 -1
  73. package/test/snapshots/texml-tests/ifnum.html +1 -1
  74. package/test/snapshots/texml-tests/ifprimitive.html +1 -1
  75. package/test/snapshots/texml-tests/immediateassigned.html +1 -1
  76. package/test/snapshots/texml-tests/immediateassignment.html +1 -1
  77. package/test/snapshots/texml-tests/index.html +1 -1
  78. package/test/snapshots/texml-tests/lastbox.html +1 -1
  79. package/test/snapshots/texml-tests/lastkern.html +1 -1
  80. package/test/snapshots/texml-tests/lastnamedcs.html +1 -1
  81. package/test/snapshots/texml-tests/let.html +1 -1
  82. package/test/snapshots/texml-tests/letcharcode.html +1 -1
  83. package/test/snapshots/texml-tests/ligatures.html +1 -1
  84. package/test/snapshots/texml-tests/listings.html +1 -1
  85. package/test/snapshots/texml-tests/longtable.html +1 -1
  86. package/test/snapshots/texml-tests/makecell.html +1 -1
  87. package/test/snapshots/texml-tests/maketitle.html +1 -1
  88. package/test/snapshots/texml-tests/manfnt.html +1 -1
  89. package/test/snapshots/texml-tests/mathscinet.html +1 -1
  90. package/test/snapshots/texml-tests/mathscr.html +1 -1
  91. package/test/snapshots/texml-tests/meaning.html +1 -1
  92. package/test/snapshots/texml-tests/metadata.html +1 -1
  93. package/test/snapshots/texml-tests/muexpr.html +1 -1
  94. package/test/snapshots/texml-tests/multicolumn.html +1 -1
  95. package/test/snapshots/texml-tests/multirow.html +1 -1
  96. package/test/snapshots/texml-tests/multirowcell.html +1 -1
  97. package/test/snapshots/texml-tests/multline.html +1 -1
  98. package/test/snapshots/texml-tests/nameref.html +1 -1
  99. package/test/snapshots/texml-tests/names.html +1 -1
  100. package/test/snapshots/texml-tests/noexpand.html +1 -1
  101. package/test/snapshots/texml-tests/noindent.html +1 -1
  102. package/test/snapshots/texml-tests/numexpr.html +1 -1
  103. package/test/snapshots/texml-tests/parshape.html +1 -1
  104. package/test/snapshots/texml-tests/protected.html +1 -1
  105. package/test/snapshots/texml-tests/quote.html +1 -1
  106. package/test/snapshots/texml-tests/ref.html +1 -1
  107. package/test/snapshots/texml-tests/refrange.html +1 -1
  108. package/test/snapshots/texml-tests/scantokens.html +1 -1
  109. package/test/snapshots/texml-tests/section.html +1 -1
  110. package/test/snapshots/texml-tests/showonlyrefs.html +1 -1
  111. package/test/snapshots/texml-tests/smash.html +1 -1
  112. package/test/snapshots/texml-tests/strcmp.html +1 -1
  113. package/test/snapshots/texml-tests/string.html +1 -1
  114. package/test/snapshots/texml-tests/sub_sup.html +1 -1
  115. package/test/snapshots/texml-tests/subcaption.html +1 -1
  116. package/test/snapshots/texml-tests/subfig.html +1 -1
  117. package/test/snapshots/texml-tests/subfigure.html +1 -1
  118. package/test/snapshots/texml-tests/tabular.html +1 -1
  119. package/test/snapshots/texml-tests/tcolorbox.html +1 -1
  120. package/test/snapshots/texml-tests/textequation.html +1 -1
  121. package/test/snapshots/texml-tests/thm-restate.html +1 -1
  122. package/test/snapshots/texml-tests/tracingnodes.html +1 -1
  123. package/test/snapshots/texml-tests/unexpanded.html +1 -1
  124. package/test/snapshots/texml-tests/unless.html +1 -1
  125. package/test/snapshots/texml-tests/upgreek.html +1 -1
  126. package/test/snapshots/texml-tests/url.html +1 -1
  127. package/test/snapshots/texml-tests/verb.html +1 -1
  128. package/test/snapshots/texml-tests/vlist.html +1 -1
  129. package/test/snapshots/texml-tests/xcolor.html +1 -1
  130. package/test/snapshots/texml-tests/xmllabel.html +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [20.0.0](https://github.com/AmerMathSoc/texml-to-html/compare/v19.0.1...v20.0.0) (2026-01-08)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * JSON metadata for related articles has changed (#493).
11
+
12
+ ### Features
13
+
14
+ * revise related-article handling ([3489681](https://github.com/AmerMathSoc/texml-to-html/commit/3489681fd3db9f8941bdfd8a4e4c66d1d0920dba)), closes [#493](https://github.com/AmerMathSoc/texml-to-html/issues/493)
15
+
5
16
  ## [19.0.1](https://github.com/AmerMathSoc/texml-to-html/compare/v19.0.0...v19.0.1) (2026-01-07)
6
17
 
7
18
 
@@ -95,13 +95,12 @@ export function generateArticleJson(articleMetaNode) {
95
95
  articleMetaJson.identifiers.amsref = articleMetaNode.querySelector('article-citation')?.textContent.trim();
96
96
 
97
97
  // related articles
98
- articleMetaNode.querySelectorAll('related-article').forEach(relatedArticle => {
99
- const pii = relatedArticle.querySelector('pub-id[pub-id-type="pii"]').textContent;
100
- const link = relatedArticle.querySelector('ext-link');
101
- articleMetaJson.relatedArticles[pii] = {
98
+ articleMetaJson.relatedArticles = articleMetaNode.querySelectorAll('related-article').map(relatedArticle => {
99
+ return {
102
100
  type: relatedArticle.getAttribute('related-article-type'),
103
- url: link.getAttribute('ext-link'),
104
- linkText: link.textContent,
101
+ html: relatedArticle.getAttribute('xml:lang') ?
102
+ `<span lang="${relatedArticle.getAttribute('xml:lang')}">${this.passthroughIntoHTMLString(relatedArticle)}</span>`
103
+ : this.passthroughIntoHTMLString(relatedArticle),
105
104
  };
106
105
  });
107
106
 
@@ -130,11 +129,11 @@ export function generateArticleJson(articleMetaNode) {
130
129
 
131
130
  // journal volume info
132
131
  articleMetaJson.volumeInfo = {
133
- volume: articleMetaNode.querySelector('volume')?.textContent,
134
- issue: articleMetaNode.querySelector('issue')?.textContent,
135
- pageFirst: articleMetaNode.querySelector('fpage')?.textContent,
136
- pageLast: articleMetaNode.querySelector('lpage')?.textContent,
137
- pageRange: articleMetaNode.querySelector('page-range')?.textContent,
132
+ volume: articleMetaNode.querySelector('article-meta > volume')?.textContent,
133
+ issue: articleMetaNode.querySelector('article-meta > issue')?.textContent,
134
+ pageFirst: articleMetaNode.querySelector('article-meta > fpage')?.textContent,
135
+ pageLast: articleMetaNode.querySelector('article-meta > lpage')?.textContent,
136
+ pageRange: articleMetaNode.querySelector('article-meta > page-range')?.textContent,
138
137
  }
139
138
 
140
139
  // categories
@@ -164,4 +163,3 @@ export function generateArticleJson(articleMetaNode) {
164
163
 
165
164
  return JSON.stringify(articleMetaJson, null, 4);
166
165
  };
167
-
@@ -82,7 +82,10 @@ export default function (htmlParentNode, xmlnode) {
82
82
  if (tagName === 'book-app-group') {
83
83
  section.setAttribute('data-ams-doc', 'app-group');
84
84
  }
85
- if (tagName === 'book-app' && !xmlnode.parentNode.closest('book-app')) section.setAttribute('role', 'doc-appendix'); // TODO: revisit after AmerMathSoc/texml#223
85
+ if (tagName === 'book-app' && !xmlnode.parentNode.closest('book-app')) {
86
+ section.setAttribute('role', 'doc-appendix'); // TODO: revisit after AmerMathSoc/texml#223
87
+ // section.setAttribute('data-ams-doc-level', '0')
88
+ }
86
89
 
87
90
  this.createHeading(section, xmlnode);
88
91
  this.passThrough(section, xmlnode);
@@ -143,7 +143,14 @@ export class Transformer {
143
143
  'app-group',
144
144
  'book-title-group',
145
145
  'private-char',
146
- 'article-title' // NOTE: maybe map to label (like title)
146
+ 'article-title', // NOTE: maybe map to label (like title)
147
+ 'source',
148
+ 'issn',
149
+ 'volume',
150
+ 'issue',
151
+ 'year',
152
+ 'fpage',
153
+ 'lpage',
147
154
  ].forEach(mapTag.bind(null, this.passThrough));
148
155
  }
149
156
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amermathsoc/texml-to-html",
3
- "version": "19.0.1",
3
+ "version": "20.0.0",
4
4
  "type": "module",
5
5
  "description": "A NodeJS library for converting AMS-style JATS XML to HTML",
6
6
  "scripts": {
@@ -16,7 +16,7 @@
16
16
  "amsref": "",
17
17
  "basename": "journalIdundefined"
18
18
  },
19
- "relatedArticles": {},
19
+ "relatedArticles": [],
20
20
  "publishers": [
21
21
  {
22
22
  "name": "publisher-name",
@@ -17,13 +17,16 @@
17
17
  "amsref": "",
18
18
  "basename": "journalIdmanuscriptId"
19
19
  },
20
- "relatedArticles": {
21
- "S0894-0347-2023-01025-2": {
20
+ "relatedArticles": [
21
+ {
22
22
  "type": "erratum-forward",
23
- "url": "https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/",
24
- "linkText": "J. Amer. Math. Soc. 36 (2023), 1305-1308."
23
+ "html": "<a href=\"https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/\">J. Amer. Math. Soc. 36 (2023), 1305-1308.</a>"
24
+ },
25
+ {
26
+ "type": "original-language",
27
+ "html": "<span lang=\"ru-cyrl\"><span data-ams-doc=\"stringname\">Х. А. Хачатрян</span><ams-x>,</ams-x> <span data-ams-doc=\"stringname\">А. С. Петросян</span><ams-x>,</ams-x> Однопараметрическое семейство неограниченных положительных решений для одного класса нелинейных трехмерных интегральных уравнений с оператором типа Гаммерштейна–Немыцкого<ams-x>,</ams-x> Труды Московского математического общества <ams-x>(</ams-x>0134-8663<ams-x>)</ams-x> 84<ams-x>(</ams-x>1<ams-x>)</ams-x> <ams-x>(</ams-x>2023<ams-x>)</ams-x> 37<ams-x>–</ams-x>53<ams-x>.</ams-x> URL <a href=\"http://mi.mathnet.ru/mmo681\">http://mi.mathnet.ru/mmo681</a></span>"
25
28
  }
26
- },
29
+ ],
27
30
  "publishers": [
28
31
  {
29
32
  "name": "publisher-name",
@@ -7,7 +7,7 @@
7
7
  "uri": {},
8
8
  "basename": "noti20-1Cundefined"
9
9
  },
10
- "relatedArticles": {},
10
+ "relatedArticles": [],
11
11
  "publishers": [],
12
12
  "contributors": {
13
13
  "authors": [
package/test/article.xml CHANGED
@@ -79,8 +79,9 @@
79
79
  <self-uri xlink:href="href" content-type="pdf"/>
80
80
  <related-article related-article-type="erratum-forward">
81
81
  <pub-id pub-id-type="pii">S0894-0347-2023-01025-2</pub-id>
82
- <ext-link ext-link="https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/">J. Amer. Math. Soc. 36 (2023), 1305-1308.</ext-link>
82
+ <ext-link xlink:href="https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/">J. Amer. Math. Soc. 36 (2023), 1305-1308.</ext-link>
83
83
  </related-article>
84
+ <related-article hreflang="ru-cyrl" related-article-type="original-language" xlink:href="http://mi.mathnet.ru/mmo681" xml:lang="ru-cyrl"><string-name>Х. А. Хачатрян</string-name><x>,</x> <string-name>А. С. Петросян</string-name><x>,</x> <article-title>Однопараметрическое семейство неограниченных положительных решений для одного класса нелинейных трехмерных интегральных уравнений с оператором типа Гаммерштейна–Немыцкого</article-title><x>,</x> <source>Труды Московского математического общества</source> <x>(</x><issn>0134-8663</issn><x>)</x> <volume>84</volume><x>(</x><issue>1</issue><x>)</x> <x>(</x><year>2023</year><x>)</x> <fpage>37</fpage><x>–</x><lpage>53</lpage><x>.</x> URL <ext-link hreflang="ru-cyrl" xlink:href="http://mi.mathnet.ru/mmo681">http://mi.mathnet.ru/mmo681</ext-link></related-article>
84
85
  <article-citation/>
85
86
  <kwd-group>
86
87
  <kwd>keyword</kwd>
@@ -16,7 +16,7 @@
16
16
  "basename": "journalIdundefined",
17
17
  "amsref": ""
18
18
  },
19
- "relatedArticles": {},
19
+ "relatedArticles": [],
20
20
  "publishers": [
21
21
  {
22
22
  "name": "publisher-name",
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": "noti20-1Cundefined"
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {
14
14
  "authors": [
@@ -18,13 +18,16 @@
18
18
  "basename": "journalIdmanuscriptId",
19
19
  "amsref": ""
20
20
  },
21
- "relatedArticles": {
22
- "S0894-0347-2023-01025-2": {
21
+ "relatedArticles": [
22
+ {
23
23
  "type": "erratum-forward",
24
- "url": "https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/",
25
- "linkText": "J. Amer. Math. Soc. 36 (2023), 1305-1308."
24
+ "html": "<a href=\"https://www.ams.org/jams/2023-36-04/S0894-0347-2023-01025-2/\">J. Amer. Math. Soc. 36 (2023), 1305-1308.</a>"
25
+ },
26
+ {
27
+ "type": "original-language",
28
+ "html": "<span lang=\"ru-cyrl\"><span data-ams-doc=\"stringname\">Х. А. Хачатрян</span><ams-x>,</ams-x> <span data-ams-doc=\"stringname\">А. С. Петросян</span><ams-x>,</ams-x> Однопараметрическое семейство неограниченных положительных решений для одного класса нелинейных трехмерных интегральных уравнений с оператором типа Гаммерштейна–Немыцкого<ams-x>,</ams-x> Труды Московского математического общества <ams-x>(</ams-x>0134-8663<ams-x>)</ams-x> 84<ams-x>(</ams-x>1<ams-x>)</ams-x> <ams-x>(</ams-x>2023<ams-x>)</ams-x> 37<ams-x>–</ams-x>53<ams-x>.</ams-x> URL <a href=\"http://mi.mathnet.ru/mmo681\">http://mi.mathnet.ru/mmo681</a></span>"
26
29
  }
27
- },
30
+ ],
28
31
  "publishers": [
29
32
  {
30
33
  "name": "publisher-name",
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {
14
14
  "authors": [
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {
14
14
  "authors": [
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {
14
14
  "authors": [
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},
@@ -8,7 +8,7 @@
8
8
  "uri": {},
9
9
  "basename": null
10
10
  },
11
- "relatedArticles": {},
11
+ "relatedArticles": [],
12
12
  "publishers": [],
13
13
  "contributors": {},
14
14
  "permissions": {},