@polintpro/proposit-core 0.8.7 → 0.8.8

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 (33) hide show
  1. package/dist/extensions/ieee/formatting.d.ts +2 -14
  2. package/dist/extensions/ieee/formatting.d.ts.map +1 -1
  3. package/dist/extensions/ieee/formatting.js +42 -1038
  4. package/dist/extensions/ieee/formatting.js.map +1 -1
  5. package/dist/extensions/ieee/index.d.ts +1 -0
  6. package/dist/extensions/ieee/index.d.ts.map +1 -1
  7. package/dist/extensions/ieee/index.js +1 -0
  8. package/dist/extensions/ieee/index.js.map +1 -1
  9. package/dist/extensions/ieee/segment-builder.d.ts +9 -0
  10. package/dist/extensions/ieee/segment-builder.d.ts.map +1 -0
  11. package/dist/extensions/ieee/segment-builder.js +98 -0
  12. package/dist/extensions/ieee/segment-builder.js.map +1 -0
  13. package/dist/extensions/ieee/segment-templates.d.ts +58 -0
  14. package/dist/extensions/ieee/segment-templates.d.ts.map +1 -0
  15. package/dist/extensions/ieee/segment-templates.js +1618 -0
  16. package/dist/extensions/ieee/segment-templates.js.map +1 -0
  17. package/dist/lib/core/argument-engine.d.ts +2 -19
  18. package/dist/lib/core/argument-engine.d.ts.map +1 -1
  19. package/dist/lib/core/argument-engine.js +46 -819
  20. package/dist/lib/core/argument-engine.js.map +1 -1
  21. package/dist/lib/core/argument-validation.d.ts +74 -0
  22. package/dist/lib/core/argument-validation.d.ts.map +1 -0
  23. package/dist/lib/core/argument-validation.js +315 -0
  24. package/dist/lib/core/argument-validation.js.map +1 -0
  25. package/dist/lib/core/evaluation/argument-evaluation.d.ts +53 -0
  26. package/dist/lib/core/evaluation/argument-evaluation.d.ts.map +1 -0
  27. package/dist/lib/core/evaluation/argument-evaluation.js +535 -0
  28. package/dist/lib/core/evaluation/argument-evaluation.js.map +1 -0
  29. package/dist/lib/index.d.ts +4 -0
  30. package/dist/lib/index.d.ts.map +1 -1
  31. package/dist/lib/index.js +2 -0
  32. package/dist/lib/index.js.map +1 -1
  33. package/package.json +2 -2
@@ -1,1053 +1,57 @@
1
1
  // IEEE Citation Formatting — structured segment output
2
2
  // Follows IEEE Reference Guide patterns for all 33 reference types.
3
+ import { buildSegments } from "./segment-builder.js";
4
+ import * as templates from "./segment-templates.js";
5
+ // Re-export shared helpers for backward compatibility (canonical home is segment-builder.ts)
6
+ export { formatSingleAuthor, formatNamesInCitation, formatDate, IEEE_MONTHS, } from "./segment-builder.js";
3
7
  // ---------------------------------------------------------------------------
4
- // Public functions
8
+ // Config-driven dispatch
5
9
  // ---------------------------------------------------------------------------
6
- /**
7
- * Format a single structured author into IEEE citation style.
8
- * Given names are abbreviated to initials with periods: "Jane Marie" → "J. M."
9
- * Suffix is appended without comma: "W. P. Pratt Jr."
10
- */
11
- export function formatSingleAuthor(author) {
12
- const initials = author.givenNames
13
- .split(/\s+/)
14
- .map((name) => `${name.charAt(0)}.`)
15
- .join(" ");
16
- const name = `${initials} ${author.familyName}`;
17
- return author.suffix ? `${name} ${author.suffix}` : name;
18
- }
19
- /**
20
- * Format an array of structured author names into IEEE citation style.
21
- * 7+ authors → first author + " et al."
22
- * 2 authors → "A and B"
23
- * 3–6 authors → "A, B, C, and D"
24
- */
25
- export function formatNamesInCitation(authors) {
26
- if (authors.length === 0)
27
- return "";
28
- if (authors.length > 6) {
29
- return `${formatSingleAuthor(authors[0])} et al.`;
30
- }
31
- const formatted = authors.map(formatSingleAuthor);
32
- if (formatted.length === 1)
33
- return formatted[0];
34
- if (formatted.length === 2)
35
- return `${formatted[0]} and ${formatted[1]}`;
36
- return `${formatted.slice(0, -1).join(", ")}, and ${formatted[formatted.length - 1]}`;
37
- }
10
+ const TEMPLATES = {
11
+ Book: templates.BOOK_TEMPLATE,
12
+ Website: templates.WEBSITE_TEMPLATE,
13
+ BookChapter: templates.BOOK_CHAPTER_TEMPLATE,
14
+ Handbook: templates.HANDBOOK_TEMPLATE,
15
+ TechnicalReport: templates.TECHNICAL_REPORT_TEMPLATE,
16
+ Standard: templates.STANDARD_TEMPLATE,
17
+ Thesis: templates.THESIS_TEMPLATE,
18
+ Patent: templates.PATENT_TEMPLATE,
19
+ Dictionary: templates.DICTIONARY_TEMPLATE,
20
+ Encyclopedia: templates.ENCYCLOPEDIA_TEMPLATE,
21
+ JournalArticle: templates.JOURNAL_ARTICLE_TEMPLATE,
22
+ MagazineArticle: templates.MAGAZINE_ARTICLE_TEMPLATE,
23
+ NewspaperArticle: templates.NEWSPAPER_ARTICLE_TEMPLATE,
24
+ ConferencePaper: templates.CONFERENCE_PAPER_TEMPLATE,
25
+ ConferenceProceedings: templates.CONFERENCE_PROCEEDINGS_TEMPLATE,
26
+ Dataset: templates.DATASET_TEMPLATE,
27
+ Software: templates.SOFTWARE_TEMPLATE,
28
+ OnlineDocument: templates.ONLINE_DOCUMENT_TEMPLATE,
29
+ Blog: templates.BLOG_TEMPLATE,
30
+ SocialMedia: templates.SOCIAL_MEDIA_TEMPLATE,
31
+ Preprint: templates.PREPRINT_TEMPLATE,
32
+ Video: templates.VIDEO_TEMPLATE,
33
+ Podcast: templates.PODCAST_TEMPLATE,
34
+ Course: templates.COURSE_TEMPLATE,
35
+ Presentation: templates.PRESENTATION_TEMPLATE,
36
+ Interview: templates.INTERVIEW_TEMPLATE,
37
+ PersonalCommunication: templates.PERSONAL_COMMUNICATION_TEMPLATE,
38
+ Email: templates.EMAIL_TEMPLATE,
39
+ Law: templates.LAW_TEMPLATE,
40
+ CourtCase: templates.COURT_CASE_TEMPLATE,
41
+ GovernmentPublication: templates.GOVERNMENT_PUBLICATION_TEMPLATE,
42
+ Datasheet: templates.DATASHEET_TEMPLATE,
43
+ ProductManual: templates.PRODUCT_MANUAL_TEMPLATE,
44
+ };
38
45
  /**
39
46
  * Build a structured citation for any IEEE reference type.
40
47
  * Returns an array of typed segments that consumers can render into
41
48
  * plain text, HTML, or any other format.
42
49
  */
43
50
  export function formatCitationParts(ref) {
44
- const builder = BUILDERS[ref.type];
51
+ const template = TEMPLATES[ref.type];
45
52
  return {
46
53
  type: ref.type,
47
- segments: builder(ref),
54
+ segments: buildSegments(ref, template),
48
55
  };
49
56
  }
50
- // ---------------------------------------------------------------------------
51
- // Internal helpers
52
- // ---------------------------------------------------------------------------
53
- function sep(text) {
54
- return { text, role: "separator" };
55
- }
56
- const IEEE_MONTHS = [
57
- "Jan.",
58
- "Feb.",
59
- "Mar.",
60
- "Apr.",
61
- "May",
62
- "Jun.",
63
- "Jul.",
64
- "Aug.",
65
- "Sep.",
66
- "Oct.",
67
- "Nov.",
68
- "Dec.",
69
- ];
70
- function formatDate(d) {
71
- const month = IEEE_MONTHS[d.getMonth()];
72
- const day = d.getDate();
73
- const year = d.getFullYear();
74
- return `${month} ${day}, ${year}`;
75
- }
76
- function bookSegments(ref) {
77
- const segs = [];
78
- segs.push({
79
- text: formatNamesInCitation(ref.authors),
80
- role: "authors",
81
- style: "plain",
82
- });
83
- segs.push(sep(", "));
84
- segs.push({ text: ref.title, role: "title", style: "italic" });
85
- if (ref.edition !== undefined) {
86
- segs.push(sep(", "));
87
- segs.push({ text: ref.edition, role: "edition" });
88
- segs.push({ text: " ed.", role: "suffix" });
89
- }
90
- if (ref.location !== undefined) {
91
- segs.push(sep(", "));
92
- segs.push({ text: ref.location, role: "location" });
93
- }
94
- segs.push(sep(": "));
95
- segs.push({ text: ref.publisher, role: "publisher" });
96
- segs.push(sep(", "));
97
- segs.push({ text: ref.year, role: "year" });
98
- segs.push(sep("."));
99
- if (ref.isbn !== undefined) {
100
- segs.push(sep(" "));
101
- segs.push({ text: ref.isbn, role: "isbn" });
102
- }
103
- return segs;
104
- }
105
- function websiteSegments(ref) {
106
- const segs = [];
107
- segs.push({
108
- text: formatNamesInCitation(ref.authors),
109
- role: "authors",
110
- style: "plain",
111
- });
112
- segs.push(sep(". "));
113
- segs.push({
114
- text: ref.pageTitle,
115
- role: "title",
116
- style: "quoted",
117
- });
118
- segs.push(sep(". "));
119
- segs.push({
120
- text: ref.websiteTitle,
121
- role: "misc",
122
- style: "italic",
123
- });
124
- segs.push(sep(". "));
125
- segs.push({ text: "Accessed: ", role: "prefix" });
126
- segs.push({
127
- text: formatDate(ref.accessedDate),
128
- role: "accessedDate",
129
- });
130
- segs.push(sep(". "));
131
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
132
- segs.push({ text: ref.url, role: "url", style: "link" });
133
- return segs;
134
- }
135
- function bookChapterSegments(ref) {
136
- const segs = [];
137
- segs.push({
138
- text: formatNamesInCitation(ref.authors),
139
- role: "authors",
140
- style: "plain",
141
- });
142
- segs.push(sep(", "));
143
- segs.push({
144
- text: ref.chapterTitle,
145
- role: "title",
146
- style: "quoted",
147
- });
148
- segs.push(sep(", in "));
149
- segs.push({
150
- text: ref.bookTitle,
151
- role: "bookTitle",
152
- style: "italic",
153
- });
154
- if (ref.editors !== undefined) {
155
- const editors = ref.editors;
156
- if (editors.length > 0) {
157
- segs.push(sep(", "));
158
- segs.push({
159
- text: formatNamesInCitation(editors),
160
- role: "misc",
161
- });
162
- segs.push({ text: ", Eds.", role: "suffix" });
163
- }
164
- }
165
- segs.push(sep(". "));
166
- segs.push({ text: ref.location, role: "location" });
167
- segs.push(sep(": "));
168
- segs.push({ text: ref.publisher, role: "publisher" });
169
- segs.push(sep(", "));
170
- segs.push({ text: ref.year, role: "year" });
171
- if (ref.pages !== undefined) {
172
- segs.push(sep(", "));
173
- segs.push({ text: "pp. ", role: "prefix" });
174
- segs.push({ text: ref.pages, role: "pages" });
175
- }
176
- segs.push(sep("."));
177
- if (ref.isbn !== undefined) {
178
- segs.push(sep(" "));
179
- segs.push({ text: ref.isbn, role: "isbn" });
180
- }
181
- return segs;
182
- }
183
- function handbookSegments(ref) {
184
- const segs = [];
185
- segs.push({
186
- text: ref.title,
187
- role: "title",
188
- style: "italic",
189
- });
190
- if (ref.edition !== undefined) {
191
- segs.push(sep(", "));
192
- segs.push({ text: ref.edition, role: "edition" });
193
- segs.push({ text: " ed.", role: "suffix" });
194
- }
195
- segs.push(sep(". "));
196
- segs.push({ text: ref.location, role: "location" });
197
- segs.push(sep(": "));
198
- segs.push({ text: ref.publisher, role: "publisher" });
199
- segs.push(sep(", "));
200
- segs.push({ text: ref.year, role: "year" });
201
- segs.push(sep("."));
202
- if (ref.isbn !== undefined) {
203
- segs.push(sep(" "));
204
- segs.push({ text: ref.isbn, role: "isbn" });
205
- }
206
- return segs;
207
- }
208
- function technicalReportSegments(ref) {
209
- const segs = [];
210
- segs.push({
211
- text: formatNamesInCitation(ref.authors),
212
- role: "authors",
213
- style: "plain",
214
- });
215
- segs.push(sep(", "));
216
- segs.push({
217
- text: ref.title,
218
- role: "title",
219
- style: "quoted",
220
- });
221
- segs.push(sep(", "));
222
- segs.push({ text: ref.institution, role: "institution" });
223
- segs.push(sep(", "));
224
- segs.push({ text: ref.location, role: "location" });
225
- segs.push(sep(", "));
226
- segs.push({ text: "Rep. ", role: "prefix" });
227
- segs.push({ text: ref.reportNumber, role: "reportNumber" });
228
- segs.push(sep(", "));
229
- segs.push({ text: ref.year, role: "year" });
230
- segs.push(sep("."));
231
- return segs;
232
- }
233
- function standardSegments(ref) {
234
- const segs = [];
235
- segs.push({
236
- text: ref.title,
237
- role: "title",
238
- style: "italic",
239
- });
240
- segs.push(sep(", "));
241
- segs.push({
242
- text: ref.standardNumber,
243
- role: "standardNumber",
244
- });
245
- segs.push(sep(", "));
246
- segs.push({ text: ref.organization, role: "organization" });
247
- segs.push(sep(", "));
248
- segs.push({
249
- text: formatDate(ref.date),
250
- role: "date",
251
- });
252
- segs.push(sep("."));
253
- return segs;
254
- }
255
- function thesisSegments(ref) {
256
- const segs = [];
257
- segs.push({
258
- text: formatNamesInCitation(ref.authors),
259
- role: "authors",
260
- style: "plain",
261
- });
262
- segs.push(sep(", "));
263
- segs.push({
264
- text: ref.title,
265
- role: "title",
266
- style: "quoted",
267
- });
268
- segs.push(sep(", "));
269
- segs.push({ text: ref.degree, role: "degree" });
270
- segs.push({ text: " thesis", role: "suffix" });
271
- segs.push(sep(", "));
272
- segs.push({ text: ref.institution, role: "institution" });
273
- segs.push(sep(", "));
274
- segs.push({ text: ref.location, role: "location" });
275
- segs.push(sep(", "));
276
- segs.push({ text: ref.year, role: "year" });
277
- segs.push(sep("."));
278
- return segs;
279
- }
280
- function patentSegments(ref) {
281
- const segs = [];
282
- segs.push({
283
- text: formatNamesInCitation(ref.inventors),
284
- role: "authors",
285
- style: "plain",
286
- });
287
- segs.push(sep(", "));
288
- segs.push({
289
- text: ref.title,
290
- role: "title",
291
- style: "quoted",
292
- });
293
- segs.push(sep(", "));
294
- segs.push({ text: ref.country, role: "country" });
295
- segs.push({ text: " Patent ", role: "prefix" });
296
- segs.push({ text: ref.patentNumber, role: "patentNumber" });
297
- segs.push(sep(", "));
298
- segs.push({
299
- text: formatDate(ref.date),
300
- role: "date",
301
- });
302
- segs.push(sep("."));
303
- return segs;
304
- }
305
- function dictionarySegments(ref) {
306
- const segs = [];
307
- segs.push({
308
- text: ref.title,
309
- role: "title",
310
- style: "italic",
311
- });
312
- segs.push(sep(". "));
313
- segs.push({ text: ref.publisher, role: "publisher" });
314
- if (ref.edition !== undefined) {
315
- segs.push(sep(", "));
316
- segs.push({ text: ref.edition, role: "edition" });
317
- segs.push({ text: " ed.", role: "suffix" });
318
- }
319
- segs.push(sep(", "));
320
- segs.push({ text: ref.year, role: "year" });
321
- segs.push(sep("."));
322
- return segs;
323
- }
324
- function encyclopediaSegments(ref) {
325
- const segs = [];
326
- segs.push({
327
- text: ref.title,
328
- role: "title",
329
- style: "italic",
330
- });
331
- segs.push(sep(". "));
332
- segs.push({ text: ref.publisher, role: "publisher" });
333
- if (ref.edition !== undefined) {
334
- segs.push(sep(", "));
335
- segs.push({ text: ref.edition, role: "edition" });
336
- segs.push({ text: " ed.", role: "suffix" });
337
- }
338
- segs.push(sep(", "));
339
- segs.push({ text: ref.year, role: "year" });
340
- segs.push(sep("."));
341
- return segs;
342
- }
343
- function journalArticleSegments(ref) {
344
- const segs = [];
345
- segs.push({
346
- text: formatNamesInCitation(ref.authors),
347
- role: "authors",
348
- style: "plain",
349
- });
350
- segs.push(sep(", "));
351
- segs.push({
352
- text: ref.title,
353
- role: "title",
354
- style: "quoted",
355
- });
356
- segs.push(sep(", "));
357
- segs.push({
358
- text: ref.journalTitle,
359
- role: "misc",
360
- style: "italic",
361
- });
362
- if (ref.volume !== undefined) {
363
- segs.push(sep(", vol. "));
364
- segs.push({ text: ref.volume, role: "volume" });
365
- }
366
- if (ref.issue !== undefined) {
367
- segs.push(sep(", no. "));
368
- segs.push({ text: ref.issue, role: "issue" });
369
- }
370
- if (ref.pages !== undefined) {
371
- segs.push(sep(", pp. "));
372
- segs.push({ text: ref.pages, role: "pages" });
373
- }
374
- segs.push(sep(", "));
375
- segs.push({ text: ref.year, role: "year" });
376
- if (ref.doi !== undefined) {
377
- segs.push(sep(", doi: "));
378
- segs.push({ text: ref.doi, role: "doi" });
379
- }
380
- segs.push(sep("."));
381
- return segs;
382
- }
383
- function magazineArticleSegments(ref) {
384
- const segs = [];
385
- segs.push({
386
- text: formatNamesInCitation(ref.authors),
387
- role: "authors",
388
- style: "plain",
389
- });
390
- segs.push(sep(", "));
391
- segs.push({
392
- text: ref.title,
393
- role: "title",
394
- style: "quoted",
395
- });
396
- segs.push(sep(", "));
397
- segs.push({
398
- text: ref.magazineTitle,
399
- role: "misc",
400
- style: "italic",
401
- });
402
- if (ref.volume !== undefined) {
403
- segs.push(sep(", vol. "));
404
- segs.push({ text: ref.volume, role: "volume" });
405
- }
406
- if (ref.issue !== undefined) {
407
- segs.push(sep(", no. "));
408
- segs.push({ text: ref.issue, role: "issue" });
409
- }
410
- if (ref.pages !== undefined) {
411
- segs.push(sep(", pp. "));
412
- segs.push({ text: ref.pages, role: "pages" });
413
- }
414
- segs.push(sep(", "));
415
- segs.push({ text: ref.year, role: "year" });
416
- segs.push(sep("."));
417
- return segs;
418
- }
419
- function newspaperArticleSegments(ref) {
420
- const segs = [];
421
- segs.push({
422
- text: formatNamesInCitation(ref.authors),
423
- role: "authors",
424
- style: "plain",
425
- });
426
- segs.push(sep(", "));
427
- segs.push({
428
- text: ref.title,
429
- role: "title",
430
- style: "quoted",
431
- });
432
- segs.push(sep(", "));
433
- segs.push({
434
- text: ref.newspaperTitle,
435
- role: "misc",
436
- style: "italic",
437
- });
438
- segs.push(sep(", "));
439
- segs.push({
440
- text: formatDate(ref.date),
441
- role: "date",
442
- });
443
- if (ref.pages !== undefined) {
444
- segs.push(sep(", pp. "));
445
- segs.push({ text: ref.pages, role: "pages" });
446
- }
447
- segs.push(sep("."));
448
- return segs;
449
- }
450
- function conferencePaperSegments(ref) {
451
- const segs = [];
452
- segs.push({
453
- text: formatNamesInCitation(ref.authors),
454
- role: "authors",
455
- style: "plain",
456
- });
457
- segs.push(sep(", "));
458
- segs.push({
459
- text: ref.title,
460
- role: "title",
461
- style: "quoted",
462
- });
463
- segs.push(sep(", "));
464
- segs.push({ text: "presented at ", role: "prefix" });
465
- segs.push({
466
- text: ref.conferenceName,
467
- role: "misc",
468
- style: "italic",
469
- });
470
- segs.push(sep(", "));
471
- segs.push({ text: ref.location, role: "location" });
472
- segs.push(sep(", "));
473
- segs.push({
474
- text: formatDate(ref.date),
475
- role: "date",
476
- });
477
- if (ref.pages !== undefined) {
478
- segs.push(sep(", pp. "));
479
- segs.push({ text: ref.pages, role: "pages" });
480
- }
481
- if (ref.doi !== undefined) {
482
- segs.push(sep(", doi: "));
483
- segs.push({ text: ref.doi, role: "doi" });
484
- }
485
- segs.push(sep("."));
486
- return segs;
487
- }
488
- function conferenceProceedingsSegments(ref) {
489
- const segs = [];
490
- if (ref.editors !== undefined) {
491
- const editors = ref.editors;
492
- if (editors.length > 0) {
493
- segs.push({
494
- text: formatNamesInCitation(editors),
495
- role: "authors",
496
- style: "plain",
497
- });
498
- segs.push({ text: ", Eds.", role: "suffix" });
499
- segs.push(sep(", "));
500
- }
501
- }
502
- segs.push({
503
- text: ref.conferenceName,
504
- role: "title",
505
- style: "italic",
506
- });
507
- segs.push(sep(", "));
508
- segs.push({ text: ref.location, role: "location" });
509
- segs.push(sep(", "));
510
- segs.push({
511
- text: formatDate(ref.date),
512
- role: "date",
513
- });
514
- segs.push(sep(". "));
515
- segs.push({ text: ref.publisher, role: "publisher" });
516
- if (ref.isbn !== undefined) {
517
- segs.push(sep(". "));
518
- segs.push({ text: ref.isbn, role: "isbn" });
519
- }
520
- segs.push(sep("."));
521
- return segs;
522
- }
523
- function datasetSegments(ref) {
524
- const segs = [];
525
- if (ref.authors !== undefined) {
526
- const authors = ref.authors;
527
- if (authors.length > 0) {
528
- segs.push({
529
- text: formatNamesInCitation(authors),
530
- role: "authors",
531
- style: "plain",
532
- });
533
- segs.push(sep(", "));
534
- }
535
- }
536
- segs.push({
537
- text: ref.title,
538
- role: "title",
539
- style: "quoted",
540
- });
541
- segs.push(sep(", "));
542
- segs.push({ text: ref.repository, role: "misc" });
543
- if (ref.version !== undefined) {
544
- segs.push(sep(", "));
545
- segs.push({ text: "ver. ", role: "prefix" });
546
- segs.push({ text: ref.version, role: "misc" });
547
- }
548
- segs.push(sep(", "));
549
- segs.push({ text: ref.year, role: "year" });
550
- if (ref.doi !== undefined) {
551
- segs.push(sep(", doi: "));
552
- segs.push({ text: ref.doi, role: "doi" });
553
- }
554
- segs.push(sep(". "));
555
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
556
- segs.push({ text: ref.url, role: "url", style: "link" });
557
- return segs;
558
- }
559
- function softwareSegments(ref) {
560
- const segs = [];
561
- if (ref.authors !== undefined) {
562
- const authors = ref.authors;
563
- if (authors.length > 0) {
564
- segs.push({
565
- text: formatNamesInCitation(authors),
566
- role: "authors",
567
- style: "plain",
568
- });
569
- segs.push(sep(", "));
570
- }
571
- }
572
- segs.push({
573
- text: ref.title,
574
- role: "title",
575
- style: "italic",
576
- });
577
- if (ref.version !== undefined) {
578
- segs.push(sep(", "));
579
- segs.push({ text: "ver. ", role: "prefix" });
580
- segs.push({ text: ref.version, role: "misc" });
581
- }
582
- segs.push(sep(", "));
583
- segs.push({ text: ref.year, role: "year" });
584
- if (ref.publisher !== undefined) {
585
- segs.push(sep(". "));
586
- segs.push({ text: ref.publisher, role: "publisher" });
587
- }
588
- if (ref.doi !== undefined) {
589
- segs.push(sep(". "));
590
- segs.push({ text: "doi: ", role: "prefix" });
591
- segs.push({ text: ref.doi, role: "doi" });
592
- }
593
- segs.push(sep(". "));
594
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
595
- segs.push({ text: ref.url, role: "url", style: "link" });
596
- return segs;
597
- }
598
- function onlineDocumentSegments(ref) {
599
- const segs = [];
600
- if (ref.authors !== undefined) {
601
- const authors = ref.authors;
602
- if (authors.length > 0) {
603
- segs.push({
604
- text: formatNamesInCitation(authors),
605
- role: "authors",
606
- style: "plain",
607
- });
608
- segs.push(sep(". "));
609
- }
610
- }
611
- segs.push({
612
- text: ref.title,
613
- role: "title",
614
- style: "quoted",
615
- });
616
- if (ref.publisher !== undefined) {
617
- segs.push(sep(". "));
618
- segs.push({ text: ref.publisher, role: "publisher" });
619
- }
620
- segs.push(sep(". "));
621
- segs.push({ text: "Accessed: ", role: "prefix" });
622
- segs.push({
623
- text: formatDate(ref.accessedDate),
624
- role: "accessedDate",
625
- });
626
- segs.push(sep(". "));
627
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
628
- segs.push({ text: ref.url, role: "url", style: "link" });
629
- return segs;
630
- }
631
- function blogSegments(ref) {
632
- const segs = [];
633
- segs.push({
634
- text: formatSingleAuthor(ref.author),
635
- role: "authors",
636
- style: "plain",
637
- });
638
- segs.push(sep(", "));
639
- segs.push({
640
- text: ref.postTitle,
641
- role: "title",
642
- style: "quoted",
643
- });
644
- segs.push(sep(", "));
645
- segs.push({
646
- text: ref.blogName,
647
- role: "misc",
648
- style: "italic",
649
- });
650
- segs.push(sep(", "));
651
- segs.push({
652
- text: formatDate(ref.date),
653
- role: "date",
654
- });
655
- segs.push(sep(". "));
656
- segs.push({ text: "Accessed: ", role: "prefix" });
657
- segs.push({
658
- text: formatDate(ref.accessedDate),
659
- role: "accessedDate",
660
- });
661
- segs.push(sep(". "));
662
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
663
- segs.push({ text: ref.url, role: "url", style: "link" });
664
- return segs;
665
- }
666
- function socialMediaSegments(ref) {
667
- const segs = [];
668
- segs.push({
669
- text: formatSingleAuthor(ref.author),
670
- role: "authors",
671
- style: "plain",
672
- });
673
- segs.push(sep(". "));
674
- segs.push({ text: ref.platform, role: "platform" });
675
- segs.push(sep(". "));
676
- segs.push({
677
- text: formatDate(ref.postDate),
678
- role: "date",
679
- });
680
- segs.push(sep(". "));
681
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
682
- segs.push({ text: ref.url, role: "url", style: "link" });
683
- return segs;
684
- }
685
- function preprintSegments(ref) {
686
- const segs = [];
687
- segs.push({
688
- text: formatNamesInCitation(ref.authors),
689
- role: "authors",
690
- style: "plain",
691
- });
692
- segs.push(sep(", "));
693
- segs.push({
694
- text: ref.title,
695
- role: "title",
696
- style: "quoted",
697
- });
698
- segs.push(sep(", "));
699
- segs.push({ text: ref.server, role: "misc", style: "italic" });
700
- segs.push(sep(", "));
701
- segs.push({ text: ref.year, role: "year" });
702
- if (ref.doi !== undefined) {
703
- segs.push(sep(", doi: "));
704
- segs.push({ text: ref.doi, role: "doi" });
705
- }
706
- segs.push(sep(". "));
707
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
708
- segs.push({ text: ref.url, role: "url", style: "link" });
709
- return segs;
710
- }
711
- function videoSegments(ref) {
712
- const segs = [];
713
- if (ref.authors !== undefined) {
714
- const authors = ref.authors;
715
- if (authors.length > 0) {
716
- segs.push({
717
- text: formatNamesInCitation(authors),
718
- role: "authors",
719
- style: "plain",
720
- });
721
- segs.push(sep(". "));
722
- }
723
- }
724
- segs.push({
725
- text: ref.title,
726
- role: "title",
727
- style: "italic",
728
- });
729
- segs.push(sep(". "));
730
- segs.push({ text: ref.platform, role: "platform" });
731
- if (ref.releaseDate !== undefined) {
732
- segs.push(sep(". "));
733
- segs.push({
734
- text: formatDate(ref.releaseDate),
735
- role: "date",
736
- });
737
- }
738
- segs.push(sep(". "));
739
- segs.push({ text: "Accessed: ", role: "prefix" });
740
- segs.push({
741
- text: formatDate(ref.accessedDate),
742
- role: "accessedDate",
743
- });
744
- segs.push(sep(". "));
745
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
746
- segs.push({ text: ref.url, role: "url", style: "link" });
747
- return segs;
748
- }
749
- function podcastSegments(ref) {
750
- const segs = [];
751
- if (ref.authors !== undefined) {
752
- const authors = ref.authors;
753
- if (authors.length > 0) {
754
- segs.push({
755
- text: formatNamesInCitation(authors),
756
- role: "authors",
757
- style: "plain",
758
- });
759
- segs.push(sep(". "));
760
- }
761
- }
762
- segs.push({
763
- text: ref.episodeTitle,
764
- role: "title",
765
- style: "quoted",
766
- });
767
- segs.push(sep(", in "));
768
- segs.push({
769
- text: ref.seriesTitle,
770
- role: "misc",
771
- style: "italic",
772
- });
773
- segs.push(sep(". "));
774
- segs.push({ text: ref.platform, role: "platform" });
775
- segs.push(sep(". "));
776
- segs.push({ text: "Accessed: ", role: "prefix" });
777
- segs.push({
778
- text: formatDate(ref.accessedDate),
779
- role: "accessedDate",
780
- });
781
- segs.push(sep(". "));
782
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
783
- segs.push({ text: ref.url, role: "url", style: "link" });
784
- return segs;
785
- }
786
- function courseSegments(ref) {
787
- const segs = [];
788
- segs.push({
789
- text: formatSingleAuthor(ref.instructor),
790
- role: "authors",
791
- style: "plain",
792
- });
793
- segs.push(sep(", "));
794
- segs.push({
795
- text: ref.title,
796
- role: "title",
797
- style: "italic",
798
- });
799
- segs.push(sep(", "));
800
- segs.push({ text: ref.institution, role: "institution" });
801
- if (ref.courseCode !== undefined) {
802
- segs.push(sep(", "));
803
- segs.push({ text: ref.courseCode, role: "misc" });
804
- }
805
- segs.push(sep(", "));
806
- segs.push({ text: ref.term, role: "misc" });
807
- segs.push(sep(", "));
808
- segs.push({ text: ref.year, role: "year" });
809
- segs.push(sep("."));
810
- return segs;
811
- }
812
- function presentationSegments(ref) {
813
- const segs = [];
814
- segs.push({
815
- text: formatSingleAuthor(ref.presenter),
816
- role: "authors",
817
- style: "plain",
818
- });
819
- segs.push(sep(", "));
820
- segs.push({
821
- text: ref.title,
822
- role: "title",
823
- style: "quoted",
824
- });
825
- segs.push(sep(", "));
826
- segs.push({ text: "presented at ", role: "prefix" });
827
- segs.push({
828
- text: ref.eventTitle,
829
- role: "misc",
830
- style: "italic",
831
- });
832
- segs.push(sep(", "));
833
- segs.push({ text: ref.location, role: "location" });
834
- segs.push(sep(", "));
835
- segs.push({
836
- text: formatDate(ref.date),
837
- role: "date",
838
- });
839
- segs.push(sep("."));
840
- return segs;
841
- }
842
- function interviewSegments(ref) {
843
- const segs = [];
844
- segs.push({
845
- text: formatSingleAuthor(ref.interviewee),
846
- role: "authors",
847
- style: "plain",
848
- });
849
- if (ref.interviewer !== undefined) {
850
- segs.push(sep(", "));
851
- segs.push({ text: "interviewed by ", role: "prefix" });
852
- segs.push({
853
- text: formatSingleAuthor(ref.interviewer),
854
- role: "misc",
855
- });
856
- }
857
- segs.push(sep(", "));
858
- segs.push({
859
- text: formatDate(ref.date),
860
- role: "date",
861
- });
862
- segs.push(sep("."));
863
- return segs;
864
- }
865
- function personalCommunicationSegments(ref) {
866
- const segs = [];
867
- segs.push({
868
- text: formatSingleAuthor(ref.person),
869
- role: "authors",
870
- style: "plain",
871
- });
872
- segs.push(sep(", "));
873
- segs.push({ text: "personal communication", role: "misc" });
874
- segs.push(sep(", "));
875
- segs.push({
876
- text: formatDate(ref.date),
877
- role: "date",
878
- });
879
- segs.push(sep("."));
880
- return segs;
881
- }
882
- function emailSegments(ref) {
883
- const segs = [];
884
- segs.push({
885
- text: formatSingleAuthor(ref.sender),
886
- role: "authors",
887
- style: "plain",
888
- });
889
- segs.push(sep(", "));
890
- segs.push({ text: "email to ", role: "prefix" });
891
- segs.push({
892
- text: formatSingleAuthor(ref.recipient),
893
- role: "misc",
894
- });
895
- segs.push(sep(", "));
896
- segs.push({
897
- text: formatDate(ref.date),
898
- role: "date",
899
- });
900
- segs.push(sep("."));
901
- return segs;
902
- }
903
- function lawSegments(ref) {
904
- const segs = [];
905
- segs.push({
906
- text: ref.title,
907
- role: "title",
908
- style: "italic",
909
- });
910
- segs.push(sep(", "));
911
- segs.push({ text: ref.jurisdiction, role: "misc" });
912
- segs.push(sep(", "));
913
- segs.push({
914
- text: formatDate(ref.dateEnacted),
915
- role: "date",
916
- });
917
- segs.push(sep("."));
918
- return segs;
919
- }
920
- function courtCaseSegments(ref) {
921
- const segs = [];
922
- segs.push({
923
- text: ref.caseName,
924
- role: "title",
925
- style: "italic",
926
- });
927
- segs.push(sep(", "));
928
- segs.push({ text: ref.court, role: "misc" });
929
- if (ref.reporter !== undefined) {
930
- segs.push(sep(", "));
931
- segs.push({ text: ref.reporter, role: "misc" });
932
- }
933
- segs.push(sep(", "));
934
- segs.push({
935
- text: formatDate(ref.date),
936
- role: "date",
937
- });
938
- segs.push(sep("."));
939
- return segs;
940
- }
941
- function governmentPublicationSegments(ref) {
942
- const segs = [];
943
- if (ref.authors !== undefined) {
944
- const authors = ref.authors;
945
- if (authors.length > 0) {
946
- segs.push({
947
- text: formatNamesInCitation(authors),
948
- role: "authors",
949
- style: "plain",
950
- });
951
- segs.push(sep(", "));
952
- }
953
- }
954
- segs.push({
955
- text: ref.title,
956
- role: "title",
957
- style: "italic",
958
- });
959
- segs.push(sep(", "));
960
- segs.push({ text: ref.agency, role: "organization" });
961
- segs.push(sep(", "));
962
- segs.push({ text: ref.location, role: "location" });
963
- if (ref.reportNumber !== undefined) {
964
- segs.push(sep(", "));
965
- segs.push({ text: "Rep. ", role: "prefix" });
966
- segs.push({ text: ref.reportNumber, role: "reportNumber" });
967
- }
968
- segs.push(sep(", "));
969
- segs.push({
970
- text: formatDate(ref.date),
971
- role: "date",
972
- });
973
- segs.push(sep("."));
974
- return segs;
975
- }
976
- function datasheetSegments(ref) {
977
- const segs = [];
978
- segs.push({
979
- text: ref.title,
980
- role: "title",
981
- style: "italic",
982
- });
983
- segs.push(sep(", "));
984
- segs.push({ text: ref.manufacturer, role: "publisher" });
985
- segs.push(sep(", "));
986
- segs.push({ text: ref.partNumber, role: "misc" });
987
- segs.push(sep(", "));
988
- segs.push({ text: ref.year, role: "year" });
989
- segs.push(sep(". "));
990
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
991
- segs.push({ text: ref.url, role: "url", style: "link" });
992
- return segs;
993
- }
994
- function productManualSegments(ref) {
995
- const segs = [];
996
- segs.push({
997
- text: ref.title,
998
- role: "title",
999
- style: "italic",
1000
- });
1001
- segs.push(sep(", "));
1002
- segs.push({ text: ref.manufacturer, role: "publisher" });
1003
- segs.push(sep(", "));
1004
- segs.push({ text: ref.model, role: "misc" });
1005
- segs.push(sep(", "));
1006
- segs.push({ text: ref.year, role: "year" });
1007
- if (ref.url !== undefined) {
1008
- segs.push(sep(". "));
1009
- segs.push({ text: "[Online]. Available: ", role: "prefix" });
1010
- segs.push({ text: ref.url, role: "url", style: "link" });
1011
- }
1012
- segs.push(sep("."));
1013
- return segs;
1014
- }
1015
- // ---------------------------------------------------------------------------
1016
- // Builder dispatch map
1017
- // ---------------------------------------------------------------------------
1018
- const BUILDERS = {
1019
- Book: bookSegments,
1020
- Website: websiteSegments,
1021
- BookChapter: bookChapterSegments,
1022
- Handbook: handbookSegments,
1023
- TechnicalReport: technicalReportSegments,
1024
- Standard: standardSegments,
1025
- Thesis: thesisSegments,
1026
- Patent: patentSegments,
1027
- Dictionary: dictionarySegments,
1028
- Encyclopedia: encyclopediaSegments,
1029
- JournalArticle: journalArticleSegments,
1030
- MagazineArticle: magazineArticleSegments,
1031
- NewspaperArticle: newspaperArticleSegments,
1032
- ConferencePaper: conferencePaperSegments,
1033
- ConferenceProceedings: conferenceProceedingsSegments,
1034
- Dataset: datasetSegments,
1035
- Software: softwareSegments,
1036
- OnlineDocument: onlineDocumentSegments,
1037
- Blog: blogSegments,
1038
- SocialMedia: socialMediaSegments,
1039
- Preprint: preprintSegments,
1040
- Video: videoSegments,
1041
- Podcast: podcastSegments,
1042
- Course: courseSegments,
1043
- Presentation: presentationSegments,
1044
- Interview: interviewSegments,
1045
- PersonalCommunication: personalCommunicationSegments,
1046
- Email: emailSegments,
1047
- Law: lawSegments,
1048
- CourtCase: courtCaseSegments,
1049
- GovernmentPublication: governmentPublicationSegments,
1050
- Datasheet: datasheetSegments,
1051
- ProductManual: productManualSegments,
1052
- };
1053
57
  //# sourceMappingURL=formatting.js.map